diff --git a/bin/Antlr3.Runtime.dll b/bin/Antlr3.Runtime.dll
new file mode 100644
index 0000000..b963933
Binary files /dev/null and b/bin/Antlr3.Runtime.dll differ
diff --git a/bin/AutoMapper.dll b/bin/AutoMapper.dll
new file mode 100644
index 0000000..703875e
Binary files /dev/null and b/bin/AutoMapper.dll differ
diff --git a/bin/AutoMapper.xml b/bin/AutoMapper.xml
new file mode 100644
index 0000000..d825c14
--- /dev/null
+++ b/bin/AutoMapper.xml
@@ -0,0 +1,1809 @@
+
+
+
+ AutoMapper
+
+
+
+
+ Add Action called against the IConfigurationProvider before it gets sealed
+
+
+
+
+ Add an action to be called when validating the configuration.
+
+ the validation callback
+
+
+
+ Allow the same map to exist in different profiles.
+ The default is to throw an exception, true means the maps are merged.
+
+
+
+
+ How many levels deep should AutoMapper try to inline the execution plan for child classes.
+ See the docs for details.
+
+
+
+
+ How many levels deep should recursive queries be expanded.
+ Must be zero for EF6. Can be greater than zero for EF Core.
+
+
+
+
+ Auto map to this destination type from the specified source type.
+ Discovered during scanning assembly scanning for configuration when calling
+
+
+
+
+ If set to true, construct the destination object using the service locator.
+
+
+
+
+ For self-referential types, limit recurse depth.
+
+
+
+
+ If set to true, preserve object identity. Useful for circular references.
+
+
+
+
+ If set to true, disable constructor validation.
+
+
+
+
+ If set to true, include this configuration in all derived types' maps.
+
+
+
+
+ Skip normal member mapping and convert using a instantiated during mapping.
+
+
+
+
+ Wraps mapping exceptions. Check exception.ToString() for the full error message.
+
+
+
+
+ Ignore this member for configuration validation and skip during mapping.
+
+
+ Must be used in combination with
+
+
+
+
+ Do not precompute the execution plan for this member, just map it at runtime.
+ Simplifies the execution plan by not inlining.
+
+
+ Must be used in combination with
+
+
+
+
+ Supply a custom mapping order instead of what the .NET runtime returns
+
+
+ Must be used in combination with
+
+
+
+
+ Substitute a custom value when the source member resolves as null
+
+
+ Must be used in combination with
+
+
+
+
+ Value to use if source value is null
+
+
+
+
+ Specify the source member to map from. Can only reference a member on the type
+
+
+ Must be used in combination with
+
+
+
+
+ Use the destination value instead of mapping from the source value or creating a new instance
+
+
+ Must be used in combination with
+
+
+
+
+ Specify a value converter type to convert from the matching source member to the destination member
+ Use with to specify a separate source member to supply to the value converter
+
+
+ Must be used in combination with
+
+
+
+
+ type
+
+
+
+
+ Map destination member using a custom value resolver.
+ Use with to specify an type.
+
+
+ Must be used in combination with
+
+
+
+
+ or type
+
+
+
+
+ Contains profile-specific configuration
+
+
+
+
+ Source extension methods included for search
+
+
+
+
+ Specify which properties should be mapped.
+ By default only public properties are mapped.
+
+
+
+
+ Specify which fields should be mapped.
+ By default only public fields are mapped.
+
+
+
+
+ Specify which methods, of those that are eligible (public, parameterless, and non-static or extension methods), should be mapped.
+ By default all eligible methods are mapped.
+
+
+
+
+ Specify which constructors should be considered for the destination objects.
+ By default all constructors are considered.
+
+
+
+
+ Contains member configuration relating to source members
+
+
+
+
+ if targetType is oldType, method will return newType
+ if targetType is not oldType, method will return targetType
+ if targetType is generic type with oldType arguments, method will replace all oldType arguments on newType
+
+
+
+
+
+
+
+
+ Member maps with default values. Used in dynamic/dictionary scenarios when source/destination members do not exist.
+
+
+
+
+ Gets the feature of type .
+
+ The type of the feature.
+ The feature or null if feature not exists.
+
+
+
+ Add or update the feature. Existing feature of the same type will be replaced.
+
+ The feature.
+
+
+
+ Get all configured type maps created
+
+ All configured type maps
+
+
+
+ Find the for the configured source and destination type
+
+ Configured source type
+ Configured destination type
+ Type map configuration
+
+
+
+ Find the for the configured type pair
+
+ Type pair
+ Type map configuration
+
+
+
+ Find the for the configured source and destination type
+
+ Source type
+ Destination type
+ Type map configuration
+
+
+
+ Resolve the for the configured source and destination type, checking parent types
+
+ Configured source type
+ Configured destination type
+ Type map configuration
+
+
+
+ Resolve the for the configured type pair, checking parent types
+
+ Type pair
+ Type map configuration
+
+
+
+ Dry run all configured type maps and throw for each problem
+
+
+
+
+ Dry run single type map
+
+ Type map to check
+
+
+
+ Dry run all type maps in given profile
+
+ Profile name of type maps to test
+
+
+
+ Dry run all type maps in given profile
+
+ Profile type
+
+
+
+ Get all configured mappers
+
+ List of mappers
+
+
+
+ Gets the features collection.
+
+ The feature colection.
+
+
+
+ Find a matching object mapper.
+
+ the types to match
+ the matching mapper or null
+
+
+
+ Factory method to create formatters, resolvers and type converters
+
+
+
+
+ Allows to enable null-value propagation for query mapping.
+ Some providers (such as EntityFrameworkQueryVisitor) do not work with this feature enabled!
+
+
+
+
+ Create a mapper instance based on this configuration. Mapper instances are lightweight and can be created as needed.
+
+ The mapper instance
+
+
+
+ Create a mapper instance with the specified service constructor to be used for resolvers and type converters.
+
+ Service factory to create services
+ The mapper instance
+
+
+
+ Compile all underlying mapping expressions to cached delegates.
+ Use if you want AutoMapper to compile all mappings up front instead of deferring expression compilation for each first map.
+
+
+
+
+ Builds the execution plan used to map the source to destination.
+ Useful to understand what exactly is happening during mapping.
+ See the wiki for details.
+
+ the runtime type of the source object
+ the runtime type of the destination object
+ the execution plan
+
+
+
+ Builds the execution plan used to map the source to destination.
+ Useful to understand what exactly is happening during mapping.
+ See the wiki for details.
+
+ The source/destination map request
+ the execution plan
+
+
+
+ Specify the source member(s) to map from.
+
+ Property name referencing the source member to map against. Or a dot separated member path.
+
+
+
+ Map constructor parameter from member expression
+
+ Member type
+ Member expression
+
+
+
+ Map constructor parameter from custom func that has access to
+
+ Not used for LINQ projection (ProjectTo)
+ Custom func
+
+
+
+ Ignore this member for validation and skip during mapping
+
+
+
+
+ Execute a mapping from the source object to a new destination object.
+ The source type is inferred from the source object.
+
+ Destination type to create
+ Source object to map from
+ Mapped destination object
+
+
+
+ Execute a mapping from the source object to a new destination object.
+
+ Source type to use, regardless of the runtime type
+ Destination type to create
+ Source object to map from
+ Mapped destination object
+
+
+
+ Execute a mapping from the source object to the existing destination object.
+
+ Source type to use
+ Destination type
+ Source object to map from
+ Destination object to map into
+ The mapped destination object, same instance as the object
+
+
+
+ Execute a mapping from the source object to a new destination object with explicit objects
+
+ Source object to map from
+ Source type to use
+ Destination type to create
+ Mapped destination object
+
+
+
+ Execute a mapping from the source object to existing destination object with explicit objects
+
+ Source object to map from
+ Destination object to map into
+ Source type to use
+ Destination type to use
+ Mapped destination object, same instance as the object
+
+
+
+ Execute a mapping from the source object to a new destination object with supplied mapping options.
+
+ Destination type to create
+ Source object to map from
+ Mapping options
+ Mapped destination object
+
+
+
+ Execute a mapping from the source object to a new destination object with supplied mapping options.
+
+ Source type to use
+ Destination type to create
+ Source object to map from
+ Mapping options
+ Mapped destination object
+
+
+
+ Execute a mapping from the source object to the existing destination object with supplied mapping options.
+
+ Source type to use
+ Destination type
+ Source object to map from
+ Destination object to map into
+ Mapping options
+ The mapped destination object, same instance as the object
+
+
+
+ Execute a mapping from the source object to a new destination object with explicit objects and supplied mapping options.
+
+ Source object to map from
+ Source type to use
+ Destination type to create
+ Mapping options
+ Mapped destination object
+
+
+
+ Execute a mapping from the source object to existing destination object with supplied mapping options and explicit objects
+
+ Source object to map from
+ Destination object to map into
+ Source type to use
+ Destination type to use
+ Mapping options
+ Mapped destination object, same instance as the object
+
+
+
+ Configuration provider for performing maps
+
+
+
+
+ Factory method for creating runtime instances of converters, resolvers etc.
+
+
+
+
+ Project the input queryable.
+
+ Projections are only calculated once and cached
+ Destination type
+ Queryable source
+ Optional parameter object for parameterized mapping expressions
+ Explicit members to expand
+ Queryable result, use queryable extension methods to project and execute result
+
+
+
+ Project the input queryable.
+
+ Destination type to map to
+ Queryable source
+ Optional parameter object for parameterized mapping expressions
+ Explicit members to expand
+ Queryable result, use queryable extension methods to project and execute result
+
+
+
+ Project the input queryable.
+
+ Queryable source
+ Destination type to map to
+ Optional parameter object for parameterized mapping expressions
+ Explicit members to expand
+ Queryable result, use queryable extension methods to project and execute result
+
+
+
+ Add an existing profile
+
+ Profile to add
+
+
+
+ Add an existing profile type. Profile will be instantiated and added to the configuration.
+
+ Profile type
+
+
+
+ Add an existing profile type. Profile will be instantiated and added to the configuration.
+
+ Profile type
+
+
+
+ Add profiles contained in an IEnumerable
+
+ IEnumerable of Profile
+
+
+
+ Add mapping definitions contained in assemblies.
+ Looks for definitions and classes decorated with
+
+ Assemblies containing mapping definitions
+
+
+
+ Add mapping definitions contained in assemblies.
+ Looks for definitions and classes decorated with
+
+ Assemblies containing mapping definitions
+
+
+
+ Add mapping definitions contained in assemblies.
+ Looks for definitions and classes decorated with
+
+ Assembly names to load and scan containing mapping definitions
+
+
+
+ Add mapping definitions contained in assemblies.
+ Looks for definitions and classes decorated with
+
+ Assembly names to load and scan containing mapping definitions
+
+
+
+ Add mapping definitions contained in assemblies.
+ Looks for definitions and classes decorated with
+
+ Types from assemblies containing mapping definitions
+
+
+
+ Add mapping definitions contained in assemblies.
+ Looks for definitions and classes decorated with
+
+ Types from assemblies containing mapping definitions
+
+
+
+ Supply a factory method callback for creating resolvers and type converters
+
+ Factory method
+
+
+
+ Create a named profile with the supplied configuration
+
+ Profile name, must be unique
+ Profile configuration
+
+
+
+ Get the features collection.
+
+
+
+
+ Object mappers
+
+
+
+
+ Advance Configuration
+
+
+
+
+ Custom mapping action
+
+ Source type
+ Destination type
+
+
+
+ Implementors can modify both the source and destination objects
+
+ Source object
+ Destination object
+ Resolution context
+
+
+
+ Mapping configuration options for non-generic maps
+
+
+
+
+ Add extra configuration to the current map by also mapping the specified child objects to the destination object.
+ The maps from the child types to the destination need to be created explicitly.
+
+ the names of child object properties to map to the destination
+
+
+
+
+ Create a type mapping from the destination to the source type, with validation disabled.
+ This allows for two-way mapping.
+
+ Itself
+
+
+
+ Customize configuration for all members
+
+ Callback for member options
+
+
+
+ Customize configuration for members not previously configured
+
+ Callback for member options
+
+
+
+ Customize individual members
+
+ Name of the member
+ Callback for configuring member
+ Itself
+
+
+
+ Mapping configuration options
+
+ Source type
+ Destination type
+
+
+
+ Add extra configuration to the current map by also mapping the specified child objects to the destination object.
+ The maps from the child types to the destination need to be created explicitly.
+
+ the child objects to map to the destination
+
+
+
+
+ Customize configuration for a path inside the destination object.
+
+ Expression to the destination sub object
+ Callback for member options
+ Itself
+
+
+
+ Customize configuration for members not previously configured
+
+ Callback for member options
+
+
+
+ Customize configuration for individual member
+
+ Expression to the top-level destination member. This must be a member on the TDestination type
+ Callback for member options
+ Itself
+
+
+
+ Customize configuration for individual member. Used when the name isn't known at compile-time
+
+ Destination member name
+ Callback for member options
+ Itself
+
+
+
+ Customize configuration for all members
+
+ Callback for member options
+
+
+
+ Include this configuration in derived types' maps
+
+ Derived source type
+ Derived destination type
+ Itself
+
+
+
+ Include the base type map's configuration in this map
+
+ Base source type
+ Base destination type
+ Itself
+
+
+
+ Override the destination type mapping for looking up configuration and instantiation
+
+ Destination type to use
+
+
+
+ Customize configuration for an individual source member
+
+ Expression to source member. Must be a member of the type
+ Callback for member configuration options
+ Itself
+
+
+
+ Apply a transformation function after any resolved destination member value with the given type
+
+ Value type to match and transform
+ Transformation expression
+ Itself
+
+
+
+ Create a type mapping from the destination to the source type, with validation disabled.
+ This allows for two-way mapping.
+
+ Itself
+
+
+
+ Common mapping configuration options between generic and non-generic mapping configuration
+
+ Source type
+ Destination type
+ Concrete return type for fluent interface
+
+
+
+ Construct the destination object using the service locator
+
+ Itself
+
+
+
+ For self-referential types, limit recurse depth.
+ Enables PreserveReferences.
+
+ Number of levels to limit to
+ Itself
+
+
+
+ Preserve object identity. Useful for circular references.
+
+ Itself
+
+
+
+ Disable constructor validation. During mapping this map is used against an existing destination object and never constructed itself.
+
+ Itself
+
+
+
+ Value transformers, typically configured through explicit or extenstion methods.
+
+
+
+
+ Execute a custom function to the source and/or destination types before member mapping
+
+ Not used for LINQ projection (ProjectTo)
+ Callback for the source/destination types
+ Itself
+
+
+
+ Execute a custom function to the source and/or destination types before member mapping
+
+ Not used for LINQ projection (ProjectTo)
+ Callback for the source/destination types
+ Itself
+
+
+
+ Execute a custom mapping action before member mapping
+
+ Not used for LINQ projection (ProjectTo)
+ Mapping action type instantiated during mapping
+ Itself
+
+
+
+ Execute a custom function to the source and/or destination types after member mapping
+
+ Not used for LINQ projection (ProjectTo)
+ Callback for the source/destination types
+ Itself
+
+
+
+ Execute a custom function to the source and/or destination types after member mapping
+
+ Not used for LINQ projection (ProjectTo)
+ Callback for the source/destination types
+ Itself
+
+
+
+ Execute a custom mapping action after member mapping
+
+ Not used for LINQ projection (ProjectTo)
+ Mapping action type instantiated during mapping
+ Itself
+
+
+
+ Specify which member list to validate
+
+ Member list to validate
+ Itself
+
+
+
+ Include this configuration in all derived types' maps. Works by scanning all type maps for matches during configuration.
+
+ Itself
+
+
+
+ Include this configuration in derived types' maps
+
+ Derived source type
+ Derived destination type
+ Itself
+
+
+
+ Include the base type map's configuration in this map
+
+ Base source type
+ Base destination type
+
+
+
+
+ Customize configuration for an individual source member. Member name not known until runtime
+
+ Expression to source member. Must be a member of the type
+ Callback for member configuration options
+ Itself
+
+
+
+ Ignores all properties that have either a private or protected setter, forcing the mapper to respect encapsulation (note: order matters, so place this before explicit configuration of any properties with an inaccessible setter)
+
+ Itself
+
+
+
+ When using ReverseMap, ignores all properties that have either a private or protected setter, keeping the reverse mapping consistent with the forward mapping (note: properties with an inaccessible setter may still be mapped unless IgnoreAllPropertiesWithAnInaccessibleSetter is also used)
+
+ Itself
+
+
+
+ Supply a custom instantiation expression for the destination type
+
+ Expression to create the destination type given the source object
+ Itself
+
+
+
+ Supply a custom instantiation function for the destination type, based on the entire resolution context
+
+ Not used for LINQ projection (ProjectTo)
+ Callback to create the destination type given the current resolution context
+ Itself
+
+
+
+ Customize configuration for individual constructor parameter
+
+ Constructor parameter name
+ Options
+ Itself
+
+
+
+ Override the destination type mapping for looking up configuration and instantiation
+
+
+
+
+
+ Skip normal member mapping and convert using a instantiated during mapping
+ Use this method if you need to specify the converter type at runtime
+
+ Type converter type
+
+
+
+ Skip member mapping and use a custom expression to convert to the destination type
+
+ Callback to convert from source type to destination type
+
+
+
+ Skip member mapping and use a custom function to convert to the destination type
+
+ Not used for LINQ projection (ProjectTo)
+ Callback to convert from source type to destination type, including destination object
+
+
+
+ Skip member mapping and use a custom function to convert to the destination type
+
+ Not used for LINQ projection (ProjectTo)
+ Callback to convert from source type to destination type, with source, destination and context
+
+
+
+ Skip member mapping and use a custom type converter instance to convert to the destination type
+
+ Not used for LINQ projection (ProjectTo)
+ Type converter instance
+
+
+
+ Skip member mapping and use a custom type converter instance to convert to the destination type
+
+ Not used for LINQ projection (ProjectTo)
+ Type converter type
+
+
+
+ Options for a single map operation
+
+
+
+
+ Construct services using this callback. Use this for child/nested containers
+
+
+
+
+
+ Add context items to be accessed at map time inside an or
+
+
+
+
+ Execute a custom function to the source and/or destination types before member mapping
+
+ Callback for the source/destination types
+
+
+
+ Execute a custom function to the source and/or destination types after member mapping
+
+ Callback for the source/destination types
+
+
+
+ Execute a custom function to the source and/or destination types before member mapping
+
+ Callback for the source/destination types
+
+
+
+ Execute a custom function to the source and/or destination types after member mapping
+
+ Callback for the source/destination types
+
+
+
+ Member configuration options
+
+ Source type for this member
+ Type for this member
+ Destination type for this map
+
+
+
+ Do not precompute the execution plan for this member, just map it at runtime.
+ Simplifies the execution plan by not inlining.
+
+
+
+
+ Substitute a custom value when the source member resolves as null
+
+ Value to use
+
+
+
+ Map destination member using a custom value resolver
+
+ Not used for LINQ projection (ProjectTo)
+ Value resolver type
+
+
+
+ Map destination member using a custom member value resolver supplied with a source member
+
+ Not used for LINQ projection (ProjectTo)
+ Value resolver type
+ Source member to supply
+
+
+
+ Map destination member using a custom member value resolver supplied from a source member name
+
+ Not used for LINQ projection (ProjectTo)
+ Value resolver type
+ Source member to supply
+ Source member name
+
+
+
+ Map destination member using a custom value resolver instance
+
+ Not used for LINQ projection (ProjectTo)
+ Value resolver instance to use
+
+
+
+ Map destination member using a custom value resolver instance
+
+ Not used for LINQ projection (ProjectTo)
+ Value resolver instance to use
+ Source member to supply to value resolver
+
+
+
+ Map destination member using a custom function. Access both the source and destination object.
+
+ Not used for LINQ projection (ProjectTo)
+ Function to map to destination member
+
+
+
+ Map destination member using a custom function. Access the source, destination object, and destination member.
+
+ Not used for LINQ projection (ProjectTo)
+ Function to map to destination member
+
+
+
+ Map destination member using a custom function. Access the source, destination object, destination member, and context.
+
+ Not used for LINQ projection (ProjectTo)
+ Function to map to destination member
+
+
+
+ Map destination member using a custom expression. Used in LINQ projection (ProjectTo).
+
+ Member type of the source member to use
+ Map expression
+
+
+
+ Specify the source member(s) to map from.
+
+ Property name referencing the source member to map against. Or a dot separated member path.
+
+
+
+ Ignore this member for configuration validation and skip during mapping
+
+
+
+
+ Allow this member to be null. Overrides AllowNullDestinationValues/AllowNullCollection.
+
+
+
+
+ Don't allow this member to be null. Overrides AllowNullDestinationValues/AllowNullCollection.
+
+
+
+
+ Supply a custom mapping order instead of what the .NET runtime returns
+
+ Mapping order value
+
+
+
+ Reset UseDestinationValue.
+
+
+
+
+ Use the destination value instead of mapping from the source value or creating a new instance
+
+
+
+
+ Conditionally map this member against the source, destination, source and destination members
+
+ Condition to evaluate using the source object
+
+
+
+ Conditionally map this member
+
+ Condition to evaluate using the source object
+
+
+
+ Conditionally map this member
+
+ Condition to evaluate using the source object
+
+
+
+ Conditionally map this member
+
+ Condition to evaluate using the source object
+
+
+
+ Conditionally map this member
+
+ Condition to evaluate using the source object
+
+
+
+ Conditionally map this member, evaluated before accessing the source value
+
+ Condition to evaluate using the source object
+
+
+
+ Conditionally map this member, evaluated before accessing the source value
+
+ Condition to evaluate using the current resolution context
+
+
+
+ Conditionally map this member, evaluated before accessing the source value
+
+ Condition to evaluate using the source object and the current resolution context
+
+
+
+ Conditionally map this member, evaluated before accessing the source value
+
+ Condition to evaluate using the source object, the destination object, and the current resolution context
+
+
+
+ Ignore this member for LINQ projections unless explicitly expanded during projection
+
+
+
+
+ The destination member being configured.
+
+
+
+
+ Apply a transformation function after any resolved destination member value with the given type
+
+ Transformation expression
+
+
+
+ Specify a value converter to convert from the matching source member to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Value converter type
+ Source member type
+
+
+
+ Specify a value converter to convert from the specified source member to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Value converter type
+ Source member type
+ Source member to supply to the value converter
+
+
+
+ Specify a value converter to convert from the specified source member name to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Value converter type
+ Source member type
+ Source member name to supply to the value converter
+
+
+
+ Specify a value converter instance to convert from the matching source member to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Source member type
+ Value converter instance
+
+
+
+ Specify a value converter instance from the specified source member to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Source member type
+ Value converter instance
+ Source member to supply to the value converter
+
+
+
+ Specify a value converter instance to convert from the specified source member name to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Source member type
+ Value converter instance
+ Source member name to supply to the value converter
+
+
+
+ Configuration options for an individual member
+
+
+
+
+ Map destination member using a custom value resolver. Used when the value resolver is not known at compile-time
+
+ Not used for LINQ projection (ProjectTo)
+ Value resolver type
+
+
+
+ Map destination member using a custom value resolver. Used when the value resolver is not known at compile-time
+
+ Not used for LINQ projection (ProjectTo)
+ Value resolver type
+ Member to supply to value resolver
+
+
+
+ Map destination member using a custom value resolver instance
+
+ Not used for LINQ projection (ProjectTo)
+ Value resolver instance to use
+ Source member to supply to value resolver
+
+
+
+ Specify a value converter type to convert from the matching source member to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Value converter type
+
+
+
+ Specify a value converter type to convert from the specified source member name to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Value converter type
+ Source member name to supply to the value converter
+
+
+
+ Specify a value converter instance to convert from the specified source member name to the destination member
+
+
+ Value converters are similar to type converters, but scoped to a single member. Value resolvers receive the enclosed source/destination objects as parameters.
+ Value converters do not. This makes it possible to reuse value converters across multiple members and multiple maps.
+
+ Source member type
+ Destination member type
+ Value converter instance
+ Source member name to supply to the value converter
+
+
+
+ Defines a naming convention strategy
+
+
+
+
+ Regular expression on how to tokenize a member
+
+
+
+
+ Mapping execution strategy, as a chain of responsibility
+
+
+
+
+ When true, the mapping engine will use this mapper as the strategy
+
+ Resolution context
+ Is match
+
+
+
+ Builds a mapping expression equivalent to the base Map method
+
+
+
+
+ Source parameter
+ Destination parameter
+ ResolutionContext parameter
+ Map expression
+
+
+
+ Base class for simple object mappers that don't want to use expressions.
+
+ type of the source
+ type of the destination
+
+
+
+ When true, the mapping engine will use this mapper as the strategy
+
+ Resolution context
+ Is match
+
+
+
+ Performs conversion from source to destination type
+
+ Source object
+ Destination object
+ The compile time type of the source object
+ The compile time type of the destination object
+ Resolution context
+ Destination object
+
+
+
+ Member configuration options
+
+ Source type for this member
+ Destination type for this map
+ Type for this member
+
+
+
+ Specify the source member to map from. Can only reference a member on the type
+ Any null reference exceptions in this expression will be ignored (similar to flattening behavior)
+
+ Member type of the source member to use
+ Expression referencing the source member to map against
+
+
+
+ Ignore this member for configuration validation and skip during mapping
+
+
+
+
+ Configuration for profile-specific maps
+
+
+
+
+ Disable constructor mapping. Use this if you don't intend to have AutoMapper try to map to constructors
+
+
+
+
+ Creates a mapping configuration from the type to the type
+
+ Source type
+ Destination type
+ Mapping expression for more configuration options
+
+
+
+ Creates a mapping configuration from the type to the type.
+ Specify the member list to validate against during configuration validation.
+
+ Source type
+ Destination type
+ Member list to validate
+ Mapping expression for more configuration options
+
+
+
+ Create a mapping configuration from the source type to the destination type.
+ Use this method when the source and destination type are known at runtime and not compile time.
+
+ Source type
+ Destination type
+ Mapping expression for more configuration options
+
+
+
+ Creates a mapping configuration from the source type to the destination type.
+ Specify the member list to validate against during configuration validation.
+
+ Source type
+ Destination type
+ Member list to validate
+ Mapping expression for more configuration options
+
+
+
+ Clear the list of recognized prefixes.
+
+
+
+
+ Recognize a list of prefixes to be removed from source member names when matching
+
+ List of prefixes
+
+
+
+ Recognize a list of postfixes to be removed from source member names when matching
+
+ List of postfixes
+
+
+
+ Provide an alias for a member name when matching source member names
+
+ Original member name
+ Alias to match against
+
+
+
+ Provide a new value for a part of a members name
+
+ Original member value
+ New member value
+
+
+
+ Recognize a list of prefixes to be removed from destination member names when matching
+
+ List of prefixes
+
+
+
+ Recognize a list of postfixes to be removed from destination member names when matching
+
+ List of postfixes
+
+
+
+ Add a property name to globally ignore. Matches against the beginning of the property names.
+
+ Property name to match against
+
+
+
+ Allow null destination values. If false, destination objects will be created for deep object graphs. Default true.
+
+
+
+
+ Allow null destination collections. If true, null source collections result in null destination collections. Default false.
+
+
+
+
+ Allows to enable null-value propagation for query mapping.
+ Some providers (such as EntityFrameworkQueryVisitor) do not work with this feature enabled!
+
+
+
+
+ Naming convention for source members
+
+
+
+
+ Naming convention for destination members
+
+
+
+
+ Specify common configuration for all type maps.
+
+ configuration callback
+
+
+
+ Customize configuration for all members across all maps
+
+ Condition
+ Callback for member options. Use the property map for conditional maps.
+
+
+
+ Include extension methods against source members for matching destination members to. Default source extension methods from
+
+ Static type that contains extension methods
+
+
+
+ Value transformers. Modify the list directly or use
+
+
+
+
+ Source member configuration options
+
+
+
+
+ Ignore this member when validating source members, MemberList.Source.
+ Does not affect validation for the default case, MemberList.Destination.
+
+
+
+
+ Converts source type to destination type instead of normal member mapping
+
+ Source type
+ Destination type
+
+
+
+ Performs conversion from source to destination type
+
+ Source object
+ Destination object
+ Resolution context
+ Destination object
+
+
+
+ Converts a source member value to a destination member value
+
+ Source member type
+ Destination member type
+
+
+
+ Perform conversion from source member value to destination member value
+
+ Source member object
+ Resolution context
+ Destination member value
+
+
+
+ Extension point to provide custom resolution for a destination value
+
+
+
+
+ Implementors use source object to provide a destination object.
+
+ Source object
+ Destination object, if exists
+ Destination member
+ The context of the mapping
+ Result, typically build from the source resolution result
+
+
+
+ Extension point to provide custom resolution for a destination value
+
+
+
+
+ Implementors use source object to provide a destination object.
+
+ Source object
+ Destination object, if exists
+ Source member
+ Destination member
+ The context of the mapping
+ Result, typically build from the source resolution result
+
+
+
+ Used to ensure we capture the concrete parent type. For virtual members, AutoMapper's GetMemberInfo methods will return a
+ MemberInfo whose ReflectedType is the base class - not source or destination being mapped.
+
+
+
+
+ Member list to check for configuration validation
+
+
+
+
+ Check that all destination members are mapped
+
+
+
+
+ Check that all source members are mapped
+
+
+
+
+ Check neither source nor destination members, skipping validation
+
+
+
+
+ Provides a named configuration for maps. Naming conventions become scoped per profile.
+
+
+
+
+ Queryable extensions for AutoMapper
+
+
+
+
+ Maps a queryable expression of a source type to a queryable expression of a destination type
+
+ Source type
+ Destination type
+ Source queryable
+ Destination queryable
+
+ Mapped destination queryable
+
+
+
+ Extension method to project from a queryable using the provided mapping engine
+
+ Projections are only calculated once and cached
+ Destination type
+ Queryable source
+ Mapper configuration
+ Optional parameter object for parameterized mapping expressions
+ Explicit members to expand
+ Expression to project into
+
+
+
+ Extension method to project from a queryable using the provided mapping engine
+
+ Projections are only calculated once and cached
+ Destination type
+ Queryable source
+ Mapper configuration
+ Explicit members to expand
+ Expression to project into
+
+
+
+ Projects the source type to the destination type given the mapping configuration
+
+ Destination type to map to
+ Queryable source
+ Mapper configuration
+ Optional parameter object for parameterized mapping expressions
+ Explicit members to expand
+ Queryable result, use queryable extension methods to project and execute result
+
+
+
+ Extension method to project from a queryable using the provided mapping engine
+
+ Projections are only calculated once and cached
+ Queryable source
+ Destination type
+ Mapper configuration
+ Expression to project into
+
+
+
+ Projects the source type to the destination type given the mapping configuration
+
+ Queryable source
+ Destination type to map to
+ Mapper configuration
+ Optional parameter object for parameterized mapping expressions
+ Explicit members to expand
+ Queryable result, use queryable extension methods to project and execute result
+
+
+
+ Expression visitor for making member access null-safe.
+
+
+ NullSafeQueryRewriter is copied from the NeinLinq project, licensed under the MIT license.
+ Copyright (c) 2014-2018 Axel Heer.
+ See https://github.com/axelheer/nein-linq/blob/master/src/NeinLinq/NullsafeQueryRewriter.cs
+
+
+
+
+
+
+
+
+
+
+ Context information regarding resolution of a destination value
+
+
+
+
+ Mapping operation options
+
+
+
+
+ Context items from
+
+
+
+
+ Current mapper
+
+
+
+
+ Instance cache for resolving circular references
+
+
+
+
+ Instance cache for resolving keeping track of depth
+
+
+
+
+ Contains cached reflection information for easy retrieval
+
+
+
+
+ Main configuration object holding all mapping configuration for a source and destination type
+
+
+
+
+ Apply a transformation function after any resolved destination member value with the given type
+
+ Value type to match and transform
+ Value transformer list
+ Transformation expression
+
+
+
diff --git a/bin/BouncyCastle.Cryptography.dll b/bin/BouncyCastle.Cryptography.dll
new file mode 100644
index 0000000..383c712
Binary files /dev/null and b/bin/BouncyCastle.Cryptography.dll differ
diff --git a/bin/BouncyCastle.Cryptography.xml b/bin/BouncyCastle.Cryptography.xml
new file mode 100644
index 0000000..359c0df
--- /dev/null
+++ b/bin/BouncyCastle.Cryptography.xml
@@ -0,0 +1,29451 @@
+
+
+
+ BouncyCastle.Cryptography
+
+
+
+ Elliptic curve registry for ANSSI.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+ Return a representing the contents of the BIT STRING. The final byte, if any,
+ may include pad bits. See .
+ A with its source as the BIT STRING content.
+
+
+
+ Return a representing the contents of the BIT STRING, where the content is
+ expected to be octet-aligned (this will be automatically checked during parsing).
+ A with its source as the BIT STRING content.
+
+
+
+ Return the number of pad bits, if any, in the final byte, if any, read from
+ .
+
+ This number is in the range zero to seven. That number of the least significant bits of the final byte, if
+ any, are not part of the contents and should be ignored. NOTE: Must be called AFTER the stream has been
+ fully processed. (Does not need to be called if was used instead of
+ .
+
+ The number of pad bits. In the range zero to seven.
+
+
+ Return the DER encoding of the object, null if the DER encoding can not be made.
+
+ @return a DER byte array, null otherwise.
+
+
+ Mutable class for building ASN.1 constructed objects such as SETs or SEQUENCEs.
+
+
+ GeneralizedTime ASN.1 type
+
+
+ a general purpose ASN.1 decoder - note: this class differs from the
+ others in that it returns null after it has read the last object in
+ the stream. If an ASN.1 Null is encountered a Der/BER Null object is
+ returned.
+
+
+ Create an ASN1InputStream based on the input byte array. The length of DER objects in
+ the stream is automatically limited to the length of the input array.
+
+ @param input array containing ASN.1 encoded data.
+
+
+ Create an ASN1InputStream where no DER object will be longer than limit.
+
+ @param input stream containing ASN.1 encoded data.
+ @param limit maximum size of a DER encoded object.
+
+
+ build an object given its tag and the number of bytes to construct it from.
+
+
+ A Null object.
+
+
+ Create a base ASN.1 object from a byte array.
+ The byte array to parse.
+ The base ASN.1 object represented by the byte array.
+
+ If there is a problem parsing the data, or parsing an object did not exhaust the available data.
+
+
+
+ Read a base ASN.1 object from a stream.
+ The stream to parse.
+ The base ASN.1 object represented by the byte array.
+ If there is a problem parsing the data.
+
+
+ Return an ObjectDescriptor from the passed in object.
+
+ @param obj an ASN1ObjectDescriptor or an object that can be converted into one.
+ @exception IllegalArgumentException if the object cannot be converted.
+ @return an ASN1ObjectDescriptor instance, or null.
+
+
+ Return an ObjectDescriptor from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want.
+ @param declaredExplicit true if the object is meant to be explicitly tagged, false otherwise.
+ @exception IllegalArgumentException if the tagged object cannot be converted.
+ @return an ASN1ObjectDescriptor instance, or null.
+
+
+ return an Octet string from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an octet string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want.
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ @param string the octets making up the octet string.
+
+
+ Return the content of the OCTET STRING as a .
+ A represnting the OCTET STRING's content.
+
+
+ Implementation limit on the length of the contents octets for a Relative OID.
+
+ We adopt the same value used by OpenJDK for Object Identifier. In theory there is no limit on the length of
+ the contents, or the number of subidentifiers, or the length of individual subidentifiers. In practice,
+ supporting arbitrary lengths can lead to issues, e.g. denial-of-service attacks when attempting to convert a
+ parsed value to its (decimal) string form.
+
+
+
+ return an Asn1Sequence from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Return an ASN1 sequence from a tagged object. There is a special
+ case here, if an object appears to have been explicitly tagged on
+ reading but we were expecting it to be implicitly tagged in the
+ normal course of events it indicates that we lost the surrounding
+ sequence - so we need to add it back (this will happen if the tagged
+ object is a sequence that contains other sequences). If you are
+ dealing with implicitly tagged sequences you really should
+ be using this method.
+
+ @param taggedObject the tagged object.
+ @param declaredExplicit true if the object is meant to be explicitly tagged, false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ return the object at the sequence position indicated by index.
+
+ @param index the sequence number (starting at zero) of the object
+ @return the object at the sequence position indicated by index.
+
+
+ return an ASN1Set from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Return an ASN1 set from a tagged object. There is a special
+ case here, if an object appears to have been explicitly tagged on
+ reading but we were expecting it to be implicitly tagged in the
+ normal course of events it indicates that we lost the surrounding
+ set - so we need to add it back (this will happen if the tagged
+ object is a sequence that contains other sequences). If you are
+ dealing with implicitly tagged sets you really should
+ be using this method.
+
+ @param taggedObject the tagged object.
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ return the object at the set position indicated by index.
+
+ @param index the set number (starting at zero) of the object
+ @return the object at the set position indicated by index.
+
+
+ ASN.1 TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param explicitly true if the object is explicitly tagged.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ return whether or not the object may be explicitly tagged.
+
+ Note: if the object has been read from an input stream, the only
+ time you can be sure if isExplicit is returning the true state of
+ affairs is if it returns false. An implicitly tagged object may appear
+ to be explicitly tagged, so you need to understand the context under
+ which the reading was done as well, see GetObject below.
+
+
+ Return whatever was following the tag.
+
+ Tagged objects are generally context dependent. If you're trying to extract a tagged object you should be
+ going via the appropriate GetInstance method.
+
+
+
+ Needed for open types, until we have better type-guided parsing support.
+
+ Use sparingly for other purposes, and prefer ,
+ or where possible.
+ Before using, check for matching tag class and number.
+
+
+
+ Needed for open types, until we have better type-guided parsing support.
+
+ Use sparingly for other purposes, and prefer or
+ where possible. Before using, check for matching tag
+ class and number.
+
+
+
+
+
+
+ Needed for open types, until we have better type-guided parsing support.
+
+ Use sparingly for other purposes, and prefer or
+ where possible. Before using, check for matching tag
+ class and number.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UTCTime ASN.1 type
+
+
+ return a UTC Time from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Return an adjusted date in the range of 1950 - 2049.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ iso.org.dod.internet.private.enterprise.legion-of-the-bouncy-castle
+ 1.3.6.1.4.1.22554
+
+
+ pbe(1) algorithms
+ 1.3.6.1.4.1.22554.1
+
+
+ SHA-1(1)
+ 1.3.6.1.4.1.22554.1.1
+
+
+ SHA-2.SHA-256; 1.3.6.1.4.1.22554.1.2.1
+
+
+ SHA-2.SHA-384; 1.3.6.1.4.1.22554.1.2.2
+
+
+ SHA-2.SHA-512; 1.3.6.1.4.1.22554.1.2.3
+
+
+ SHA-2.SHA-224; 1.3.6.1.4.1.22554.1.2.4
+
+
+ PKCS-5(1)|PKCS-12(2)
+ SHA-1.PKCS5; 1.3.6.1.4.1.22554.1.1.1
+
+
+ SHA-1.PKCS12; 1.3.6.1.4.1.22554.1.1.2
+
+
+ SHA-256.PKCS5; 1.3.6.1.4.1.22554.1.2.1.1
+
+
+ SHA-256.PKCS12; 1.3.6.1.4.1.22554.1.2.1.2
+
+
+ AES(1) . (CBC-128(2)|CBC-192(22)|CBC-256(42))
+ 1.3.6.1.4.1.22554.1.1.2.1.2
+
+
+ 1.3.6.1.4.1.22554.1.1.2.1.22
+
+
+ 1.3.6.1.4.1.22554.1.1.2.1.42
+
+
+ 1.3.6.1.4.1.22554.1.1.2.2.2
+
+
+ 1.3.6.1.4.1.22554.1.1.2.2.22
+
+
+ 1.3.6.1.4.1.22554.1.1.2.2.42
+
+
+ signature(2) algorithms
+
+
+ Sphincs-256
+
+
+ XMSS
+
+
+ XMSS^MT
+
+
+ qTESLA
+
+
+ SPHINCS+
+
+
+ Picnic
+
+
+ key_exchange(3) algorithms
+
+
+ NewHope
+
+
+ X.509 extension(4) values
+
+ 1.3.6.1.4.1.22554.4
+
+
+ KEM(4) algorithms
+
+
+ Classic McEliece
+
+
+ Frodo
+
+
+ SABER
+
+
+ SIKE
+
+
+ NTRU
+
+
+ Kyber
+
+
+ NTRUPrime
+
+
+ BIKE
+
+
+ HQC
+
+
+ Extension to tie an alternate certificate to the containing certificate.
+
+ LinkedCertificate := SEQUENCE {
+ digest DigestInfo, -- digest of PQC certificate
+ certLocation GeneralName, -- location of PQC certificate
+ certIssuer [0] Name OPTIONAL, -- issuer of PQC cert (if different from current certificate)
+ cACerts [1] GeneralNames OPTIONAL, -- CA certificates for PQC cert (one of more locations)
+ }
+
+
+
+ A parser for indefinite-length BIT STRINGs.
+
+
+ The caller is responsible for disposing the returned before disposing
+ this generator.
+
+
+ The caller is responsible for disposing the returned before disposing
+ this generator.
+
+
+ The caller is responsible for disposing the returned before disposing
+ this generator.
+
+
+ create an empty sequence
+
+
+ create a sequence containing one object
+
+
+ create a sequence containing two objects
+
+
+ create a sequence containing a vector of objects.
+
+
+ create an empty set
+
+
+ create a set containing one object
+
+
+ create a set containing a vector of objects.
+
+
+ BER TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ @param isExplicit true if an explicitly tagged object.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ See https://www.bsi.bund.de/cae/servlet/contentblob/471398/publicationFile/30615/BSI-TR-03111_pdf.pdf
+
+
+ 0.4.0.127.0.7.1
+
+
+ ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963 OID: 0.4.0.127.0.7.1.1.5.1.1
+
+
+ ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
+ with hash function SHA-1
+ OID: 0.4.0.127.0.7.1.1.5.1.1.1
+
+
+ ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
+ with hash function SHA224
+ OID: 0.4.0.127.0.7.1.1.5.1.1.2
+
+
+ ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
+ with hash function SHA256
+ OID: 0.4.0.127.0.7.1.1.5.1.1.3
+
+
+ ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
+ with hash function SHA384
+ OID: 0.4.0.127.0.7.1.1.5.1.1.4
+
+
+ ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
+ with hash function SHA512
+ OID: 0.4.0.127.0.7.1.1.5.1.1.5
+
+
+ ElGamal Elliptic Curve Key Agreement and Key Derivation according to X963
+ with hash function RIPEMD160
+ OID: 0.4.0.127.0.7.1.1.5.1.1.6
+
+
+ Key Derivation Function for Session Keys
+
+
+
+ CAKeyUpdAnnContent ::= SEQUENCE {
+ oldWithNew CmpCertificate, -- old pub signed with new priv
+ newWithOld CmpCertificate, -- new pub signed with old priv
+ newWithNew CmpCertificate -- new pub signed with new priv
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ CertAnnContent ::= CMPCertificate
+
+
+
+ CertConfirmContent ::= SEQUENCE OF CertStatus
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertifiedKeyPair ::= SEQUENCE {
+ certOrEncCert CertOrEncCert,
+ privateKey [0] EncryptedValue OPTIONAL,
+ -- see [CRMF] for comment on encoding
+ publicationInfo [1] PKIPublicationInfo OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertOrEncCert ::= CHOICE {
+ certificate [0] CMPCertificate,
+ encryptedCert [1] EncryptedKey
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertRepMessage ::= SEQUENCE {
+ caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
+ OPTIONAL,
+ response SEQUENCE OF CertResponse
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ GenMsg: {id-it 19}, < absent >
+ GenRep: {id-it 19}, CertReqTemplateContent | < absent >
+
+ CertReqTemplateValue ::= CertReqTemplateContent
+
+ CertReqTemplateContent ::= SEQUENCE {
+ certTemplate CertTemplate,
+ keySpec Controls OPTIONAL }
+
+ Controls ::= SEQUENCE SIZE (1..MAX) OF AttributeTypeAndValue
+
+
+
+
+ CertResponse ::= SEQUENCE {
+ certReqId INTEGER,
+ -- to match this response with corresponding request (a value
+ -- of -1 is to be used if certReqId is not specified in the
+ -- corresponding request)
+ status PKIStatusInfo,
+ certifiedKeyPair CertifiedKeyPair OPTIONAL,
+ rspInfo OCTET STRING OPTIONAL
+ -- analogous to the id-regInfo-utf8Pairs string defined
+ -- for regInfo in CertReqMsg [CRMF]
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+
+ CertStatus ::= SEQUENCE {
+ certHash OCTET STRING,
+ certReqId INTEGER,
+ statusInfo PKIStatusInfo OPTIONAL,
+ hashAlg [0] AlgorithmIdentifier{DIGEST-ALGORITHM, {...}} OPTIONAL
+ }
+
+
+
+ @return a basic ASN.1 object representation.
+
+
+
+ Challenge ::= SEQUENCE {
+ owf AlgorithmIdentifier OPTIONAL,
+
+ -- MUST be present in the first Challenge; MAY be omitted in
+ -- any subsequent Challenge in POPODecKeyChallContent (if
+ -- omitted, then the owf used in the immediately preceding
+ -- Challenge is to be used).
+
+ witness OCTET STRING,
+ -- the result of applying the one-way function (owf) to a
+ -- randomly-generated INTEGER, A. [Note that a different
+ -- INTEGER MUST be used for each Challenge.]
+ challenge OCTET STRING
+ -- the encryption (under the public key for which the cert.
+ -- request is being made) of Rand, where Rand is specified as
+ -- Rand ::= SEQUENCE {
+ -- int INTEGER,
+ -- - the randomly-generated INTEGER A (above)
+ -- sender GeneralName
+ -- - the sender's name (as included in PKIHeader)
+ -- }
+ }
+
+
+
+
+ Challenge ::= SEQUENCE {
+ owf AlgorithmIdentifier OPTIONAL,
+
+ -- MUST be present in the first Challenge; MAY be omitted in
+ -- any subsequent Challenge in POPODecKeyChallContent (if
+ -- omitted, then the owf used in the immediately preceding
+ -- Challenge is to be used).
+
+ witness OCTET STRING,
+ -- the result of applying the one-way function (owf) to a
+ -- randomly-generated INTEGER, A. [Note that a different
+ -- INTEGER MUST be used for each Challenge.]
+ challenge OCTET STRING
+ -- the encryption (under the public key for which the cert.
+ -- request is being made) of Rand, where Rand is specified as
+ -- Rand ::= SEQUENCE {
+ -- int INTEGER,
+ -- - the randomly-generated INTEGER A (above)
+ -- sender GeneralName
+ -- - the sender's name (as included in PKIHeader)
+ -- }
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Rand is the inner type
+
+
+
+ CMPCertificate ::= CHOICE {
+ x509v3PKCert Certificate
+ x509v2AttrCert [1] AttributeCertificate
+ }
+
+ Note: the addition of attribute certificates is a BC extension.
+
+ @return a basic ASN.1 object representation.
+
+
+ id-PasswordBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 13}
+
+
+ id-DHBasedMac OBJECT IDENTIFIER ::= {1 2 840 113533 7 66 30}
+
+
+ RFC 4120: id-it: PKIX.4 = 1.3.6.1.5.5.7.4
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.1
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.2
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.3
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.4
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.5
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.6
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.7
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.10
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.11
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.12
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.13
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.14
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.15
+
+
+ RFC 4120: 1.3.6.1.5.5.7.4.16
+
+
+ Update 16, RFC 4210
+ {id-it 17}
+
+
+ Update 16, RFC 4210
+ GenRep: {id-it 18}, RootCaKeyUpdateContent
+
+
+ Update 16, RFC 4210
+ {id-it 19}
+
+
+ Update 16, RFC 4210
+ GenMsg: {id-it 20}, RootCaCertValue
+
+
+ Update-16 to RFC 4210
+ id-it-certProfile OBJECT IDENTIFIER ::= {id-it 21}
+
+
+ RFC 4211: it-pkip: PKIX.5 = 1.3.6.1.5.5.7.5
+
+
+ RFC 4211: it-regCtrl: 1.3.6.1.5.5.7.5.1
+
+
+ RFC 4211: it-regInfo: 1.3.6.1.5.5.7.5.2
+
+
+ 1.3.6.1.5.5.7.5.1.1
+
+
+ 1.3.6.1.5.5.7.5.1.2
+
+
+ 1.3.6.1.5.5.7.5.1.3
+
+
+ 1.3.6.1.5.5.7.5.1.4
+
+
+ 1.3.6.1.5.5.7.5.1.5
+
+
+ 1.3.6.1.5.5.7.5.1.6
+
+
+ From RFC4210:
+ id-regCtrl-altCertTemplate OBJECT IDENTIFIER ::= {id-regCtrl 7}; 1.3.6.1.5.5.7.1.7
+
+
+ RFC 4211: it-regInfo-utf8Pairs: 1.3.6.1.5.5.7.5.2.1
+
+
+ RFC 4211: it-regInfo-certReq: 1.3.6.1.5.5.7.5.2.1
+
+
+ 1.2.840.113549.1.9.16.1.21
+
+ id-ct OBJECT IDENTIFIER ::= { id-smime 1 } -- content types
+
+ id-ct-encKeyWithID OBJECT IDENTIFIER ::= {id-ct 21}
+
+
+
+ id-regCtrl-algId OBJECT IDENTIFIER ::= { iso(1)
+ identified-organization(3) dod(6) internet(1) security(5)
+ mechanisms(5) pkix(7) pkip(5) regCtrl(1) 11 }
+
+
+ id-regCtrl-rsaKeyLen OBJECT IDENTIFIER ::= { iso(1)
+ identified-organization(3) dod(6) internet(1) security(5)
+ mechanisms(5) pkix(7) pkip(5) regCtrl(1) 12 }
+
+
+
+ CrlAnnContent ::= SEQUENCE OF CertificateList
+
+ @return a basic ASN.1 object representation.
+
+
+ GenMsg: {id-it TBD1}, SEQUENCE SIZE (1..MAX) OF CRLStatus
+ GenRep: {id-it TBD2}, SEQUENCE SIZE (1..MAX) OF
+ CertificateList | < absent >
+
+ CRLSource ::= CHOICE {
+ dpn [0] DistributionPointName,
+ issuer [1] GeneralNames }
+
+
+
+ CRLStatus ::= SEQUENCE {
+ source CRLSource,
+ thisUpdate Time OPTIONAL }
+
+
+ DHBMParameter ::= SEQUENCE {
+ owf AlgorithmIdentifier,
+ -- AlgId for a One-Way Function (SHA-1 recommended)
+ mac AlgorithmIdentifier
+ -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11],
+ } -- or HMAC [RFC2104, RFC2202])
+
+
+
+ ErrorMsgContent ::= SEQUENCE {
+ pKIStatusInfo PKIStatusInfo,
+ errorCode INTEGER OPTIONAL,
+ -- implementation-specific error codes
+ errorDetails PKIFreeText OPTIONAL
+ -- implementation-specific error details
+ }
+
+
+
+
+ ErrorMsgContent ::= SEQUENCE {
+ pKIStatusInfo PKIStatusInfo,
+ errorCode INTEGER OPTIONAL,
+ -- implementation-specific error codes
+ errorDetails PKIFreeText OPTIONAL
+ -- implementation-specific error details
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ GenMsgContent ::= SEQUENCE OF InfoTypeAndValue
+
+
+
+ GenMsgContent ::= SEQUENCE OF InfoTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+
+ GenRepContent ::= SEQUENCE OF InfoTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+ Example InfoTypeAndValue contents include, but are not limited
+ to, the following (un-comment in this ASN.1 module and use as
+ appropriate for a given environment):
+
+ id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1}
+ CAProtEncCertValue ::= CMPCertificate
+ id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2}
+ SignKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier
+ id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3}
+ EncKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier
+ id-it-preferredSymmAlg OBJECT IDENTIFIER ::= {id-it 4}
+ PreferredSymmAlgValue ::= AlgorithmIdentifier
+ id-it-caKeyUpdateInfo OBJECT IDENTIFIER ::= {id-it 5}
+ CAKeyUpdateInfoValue ::= CAKeyUpdAnnContent
+ id-it-currentCRL OBJECT IDENTIFIER ::= {id-it 6}
+ CurrentCRLValue ::= CertificateList
+ id-it-unsupportedOIDs OBJECT IDENTIFIER ::= {id-it 7}
+ UnsupportedOIDsValue ::= SEQUENCE OF OBJECT IDENTIFIER
+ id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10}
+ KeyPairParamReqValue ::= OBJECT IDENTIFIER
+ id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11}
+ KeyPairParamRepValue ::= AlgorithmIdentifer
+ id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12}
+ RevPassphraseValue ::= EncryptedValue
+ id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13}
+ ImplicitConfirmValue ::= NULL
+ id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14}
+ ConfirmWaitTimeValue ::= GeneralizedTime
+ id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15}
+ OrigPKIMessageValue ::= PKIMessages
+ id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16}
+ SuppLangTagsValue ::= SEQUENCE OF UTF8String
+
+ where
+
+ id-pkix OBJECT IDENTIFIER ::= {
+ iso(1) identified-organization(3)
+ dod(6) internet(1) security(5) mechanisms(5) pkix(7)}
+ and
+ id-it OBJECT IDENTIFIER ::= {id-pkix 4}
+
+
+
+
+ InfoTypeAndValue ::= SEQUENCE {
+ infoType OBJECT IDENTIFIER,
+ infoValue ANY DEFINED BY infoType OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ KemBMParameter ::= SEQUENCE {
+ kdf AlgorithmIdentifier{KEY-DERIVATION, {...}},
+ len INTEGER (1..MAX),
+ mac AlgorithmIdentifier{MAC-ALGORITHM, {...}}
+ }
+
+
+
+
+ KemBMParameter ::= SEQUENCE {
+ kdf AlgorithmIdentifier{KEY-DERIVATION, {...}},
+ len INTEGER (1..MAX),
+ mac AlgorithmIdentifier{MAC-ALGORITHM, {...}}
+ }
+
+
+ @return a basic ASN.1 object representation.
+
+
+
+ KemCiphertextInfo ::= SEQUENCE {
+ kem AlgorithmIdentifier{KEM-ALGORITHM, {...}},
+ ct OCTET STRING
+ }
+
+
+
+
+ KemCiphertextInfo ::= SEQUENCE {
+ kem AlgorithmIdentifier{KEM-ALGORITHM, {...}},
+ ct OCTET STRING
+ }
+
+
+ @return a basic ASN.1 object representation.
+
+
+
+ KemOtherInfo ::= SEQUENCE {
+ staticString PKIFreeText, -- MUST be "CMP-KEM"
+ transactionID [0] OCTET STRING OPTIONAL,
+ senderNonce [1] OCTET STRING OPTIONAL,
+ recipNonce [2] OCTET STRING OPTIONAL,
+ len INTEGER (1..MAX),
+ mac AlgorithmIdentifier{MAC-ALGORITHM, {...}}
+ ct OCTET STRING
+ }
+
+
+ @return a basic ASN.1 object representation.
+
+
+
+ KeyRecRepContent ::= SEQUENCE {
+ status PKIStatusInfo,
+ newSigCert [0] CMPCertificate OPTIONAL,
+ caCerts [1] SEQUENCE SIZE (1..MAX) OF
+ CMPCertificate OPTIONAL,
+ keyPairHist [2] SEQUENCE SIZE (1..MAX) OF
+ CertifiedKeyPair OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ NestedMessageContent ::= PKIMessages
+
+
+ OOBCert ::= CMPCertificate
+
+
+
+ OOBCertHash ::= SEQUENCE {
+ hashAlg [0] AlgorithmIdentifier OPTIONAL,
+ certId [1] CertId OPTIONAL,
+ hashVal BIT STRING
+ -- hashVal is calculated over the DER encoding of the
+ -- self-signed certificate with the identifier certID.
+ }
+
+
+
+
+ OobCertHash ::= SEQUENCE {
+ hashAlg [0] AlgorithmIdentifier OPTIONAL,
+ certId [1] CertId OPTIONAL,
+ hashVal BIT STRING
+ -- hashVal is calculated over the Der encoding of the
+ -- self-signed certificate with the identifier certID.
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ PBMParameter ::= SEQUENCE {
+ salt OCTET STRING,
+ -- note: implementations MAY wish to limit acceptable sizes
+ -- of this string to values appropriate for their environment
+ -- in order to reduce the risk of denial-of-service attacks
+ owf AlgorithmIdentifier,
+ -- AlgId for a One-Way Function (SHA-1 recommended)
+ iterationCount INTEGER,
+ -- number of times the OWF is applied
+ -- note: implementations MAY wish to limit acceptable sizes
+ -- of this integer to values appropriate for their environment
+ -- in order to reduce the risk of denial-of-service attacks
+ mac AlgorithmIdentifier
+ -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11],
+ } -- or HMAC [RFC2104, RFC2202])
+
+
+
+ PbmParameter ::= SEQUENCE {
+ salt OCTET STRING,
+ -- note: implementations MAY wish to limit acceptable sizes
+ -- of this string to values appropriate for their environment
+ -- in order to reduce the risk of denial-of-service attacks
+ owf AlgorithmIdentifier,
+ -- AlgId for a One-Way Function (SHA-1 recommended)
+ iterationCount INTEGER,
+ -- number of times the OWF is applied
+ -- note: implementations MAY wish to limit acceptable sizes
+ -- of this integer to values appropriate for their environment
+ -- in order to reduce the risk of denial-of-service attacks
+ mac AlgorithmIdentifier
+ -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11],
+ } -- or HMAC [RFC2104, RFC2202])
+
+ @return a basic ASN.1 object representation.
+
+
+ PKIBody ::= CHOICE { -- message-specific body elements
+ ir [0] CertReqMessages, --Initialization Request
+ ip [1] CertRepMessage, --Initialization Response
+ cr [2] CertReqMessages, --Certification Request
+ cp [3] CertRepMessage, --Certification Response
+ p10cr [4] CertificationRequest, --imported from [PKCS10]
+ popdecc [5] POPODecKeyChallContent, --pop Challenge
+ popdecr [6] POPODecKeyRespContent, --pop Response
+ kur [7] CertReqMessages, --Key Update Request
+ kup [8] CertRepMessage, --Key Update Response
+ krr [9] CertReqMessages, --Key Recovery Request
+ krp [10] KeyRecRepContent, --Key Recovery Response
+ rr [11] RevReqContent, --Revocation Request
+ rp [12] RevRepContent, --Revocation Response
+ ccr [13] CertReqMessages, --Cross-Cert. Request
+ ccp [14] CertRepMessage, --Cross-Cert. Response
+ ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann.
+ cann [16] CertAnnContent, --Certificate Ann.
+ rann [17] RevAnnContent, --Revocation Ann.
+ crlann [18] CRLAnnContent, --CRL Announcement
+ pkiconf [19] PKIConfirmContent, --Confirmation
+ nested [20] NestedMessageContent, --Nested Message
+ genm [21] GenMsgContent, --General Message
+ genp [22] GenRepContent, --General Response
+ error [23] ErrorMsgContent, --Error Message
+ certConf [24] CertConfirmContent, --Certificate confirm
+ pollReq [25] PollReqContent, --Polling request
+ pollRep [26] PollRepContent --Polling response
+ }
+
+
+ Creates a new PkiBody.
+ @param type one of the TYPE_* constants
+ @param content message content
+
+
+
+ PkiBody ::= CHOICE { -- message-specific body elements
+ ir [0] CertReqMessages, --Initialization Request
+ ip [1] CertRepMessage, --Initialization Response
+ cr [2] CertReqMessages, --Certification Request
+ cp [3] CertRepMessage, --Certification Response
+ p10cr [4] CertificationRequest, --imported from [PKCS10]
+ popdecc [5] POPODecKeyChallContent, --pop Challenge
+ popdecr [6] POPODecKeyRespContent, --pop Response
+ kur [7] CertReqMessages, --Key Update Request
+ kup [8] CertRepMessage, --Key Update Response
+ krr [9] CertReqMessages, --Key Recovery Request
+ krp [10] KeyRecRepContent, --Key Recovery Response
+ rr [11] RevReqContent, --Revocation Request
+ rp [12] RevRepContent, --Revocation Response
+ ccr [13] CertReqMessages, --Cross-Cert. Request
+ ccp [14] CertRepMessage, --Cross-Cert. Response
+ ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann.
+ cann [16] CertAnnContent, --Certificate Ann.
+ rann [17] RevAnnContent, --Revocation Ann.
+ crlann [18] CRLAnnContent, --CRL Announcement
+ pkiconf [19] PKIConfirmContent, --Confirmation
+ nested [20] NestedMessageContent, --Nested Message
+ genm [21] GenMsgContent, --General Message
+ genp [22] GenRepContent, --General Response
+ error [23] ErrorMsgContent, --Error Message
+ certConf [24] CertConfirmContent, --Certificate confirm
+ pollReq [25] PollReqContent, --Polling request
+ pollRep [26] PollRepContent --Polling response
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ PKIConfirmContent ::= NULL
+
+
+
+ PkiConfirmContent ::= NULL
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PKIFailureInfo ::= BIT STRING {
+ badAlg (0),
+ -- unrecognized or unsupported Algorithm Identifier
+ badMessageCheck (1), -- integrity check failed (e.g., signature did not verify)
+ badRequest (2),
+ -- transaction not permitted or supported
+ badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy
+ badCertId (4), -- no certificate could be found matching the provided criteria
+ badDataFormat (5),
+ -- the data submitted has the wrong format
+ wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token
+ incorrectData (7), -- the requester's data is incorrect (for notary services)
+ missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy)
+ badPOP (9) -- the proof-of-possession failed
+ certRevoked (10),
+ certConfirmed (11),
+ wrongIntegrity (12),
+ badRecipientNonce (13),
+ timeNotAvailable (14),
+ -- the TSA's time source is not available
+ unacceptedPolicy (15),
+ -- the requested TSA policy is not supported by the TSA
+ unacceptedExtension (16),
+ -- the requested extension is not supported by the TSA
+ addInfoNotAvailable (17)
+ -- the additional information requested could not be understood
+ -- or is not available
+ badSenderNonce (18),
+ badCertTemplate (19),
+ signerNotTrusted (20),
+ transactionIdInUse (21),
+ unsupportedVersion (22),
+ notAuthorized (23),
+ systemUnavail (24),
+ systemFailure (25),
+ -- the request cannot be handled due to system failure
+ duplicateCertReq (26)
+
+
+
+ Basic constructor.
+
+
+ Return the UTF8STRING at index.
+
+ @param index index of the string of interest
+ @return the string at index.
+
+
+
+ PkiFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
+
+
+
+ Value for a "null" recipient or sender.
+
+
+
+ PkiHeader ::= SEQUENCE {
+ pvno INTEGER { cmp1999(1), cmp2000(2) },
+ sender GeneralName,
+ -- identifies the sender
+ recipient GeneralName,
+ -- identifies the intended recipient
+ messageTime [0] GeneralizedTime OPTIONAL,
+ -- time of production of this message (used when sender
+ -- believes that the transport will be "suitable"; i.e.,
+ -- that the time will still be meaningful upon receipt)
+ protectionAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used for calculation of protection bits
+ senderKID [2] KeyIdentifier OPTIONAL,
+ recipKID [3] KeyIdentifier OPTIONAL,
+ -- to identify specific keys used for protection
+ transactionID [4] OCTET STRING OPTIONAL,
+ -- identifies the transaction; i.e., this will be the same in
+ -- corresponding request, response, certConf, and PKIConf
+ -- messages
+ senderNonce [5] OCTET STRING OPTIONAL,
+ recipNonce [6] OCTET STRING OPTIONAL,
+ -- nonces used to provide replay protection, senderNonce
+ -- is inserted by the creator of this message; recipNonce
+ -- is a nonce previously inserted in a related message by
+ -- the intended recipient of this message
+ freeText [7] PKIFreeText OPTIONAL,
+ -- this may be used to indicate context-specific instructions
+ -- (this field is intended for human consumption)
+ generalInfo [8] SEQUENCE SIZE (1..MAX) OF
+ InfoTypeAndValue OPTIONAL
+ -- this may be used to convey context-specific information
+ -- (this field not primarily intended for human consumption)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PKIHeader ::= SEQUENCE {
+ pvno INTEGER { cmp1999(1), cmp2000(2) },
+ sender GeneralName,
+ -- identifies the sender
+ recipient GeneralName,
+ -- identifies the intended recipient
+ messageTime [0] GeneralizedTime OPTIONAL,
+ -- time of production of this message (used when sender
+ -- believes that the transport will be "suitable"; i.e.,
+ -- that the time will still be meaningful upon receipt)
+ protectionAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used for calculation of protection bits
+ senderKID [2] KeyIdentifier OPTIONAL,
+ recipKID [3] KeyIdentifier OPTIONAL,
+ -- to identify specific keys used for protection
+ transactionID [4] OCTET STRING OPTIONAL,
+ -- identifies the transaction; i.e., this will be the same in
+ -- corresponding request, response, certConf, and PKIConf
+ -- messages
+ senderNonce [5] OCTET STRING OPTIONAL,
+ recipNonce [6] OCTET STRING OPTIONAL,
+ -- nonces used to provide replay protection, senderNonce
+ -- is inserted by the creator of this message; recipNonce
+ -- is a nonce previously inserted in a related message by
+ -- the intended recipient of this message
+ freeText [7] PKIFreeText OPTIONAL,
+ -- this may be used to indicate context-specific instructions
+ -- (this field is intended for human consumption)
+ generalInfo [8] SEQUENCE SIZE (1..MAX) OF
+ InfoTypeAndValue OPTIONAL
+ -- this may be used to convey context-specific information
+ -- (this field not primarily intended for human consumption)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new PkiMessage.
+
+ @param header message header
+ @param body message body
+ @param protection message protection (may be null)
+ @param extraCerts extra certificates (may be null)
+
+
+
+ PkiMessage ::= SEQUENCE {
+ header PKIHeader,
+ body PKIBody,
+ protection [0] PKIProtection OPTIONAL,
+ extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
+ OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiMessages ::= SEQUENCE SIZE (1..MAX) OF PkiMessage
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiStatusInfo ::= SEQUENCE {
+ status PKIStatus, (INTEGER)
+ statusString PkiFreeText OPTIONAL,
+ failInfo PkiFailureInfo OPTIONAL (BIT STRING)
+ }
+
+ PKIStatus:
+ granted (0), -- you got exactly what you asked for
+ grantedWithMods (1), -- you got something like what you asked for
+ rejection (2), -- you don't get it, more information elsewhere in the message
+ waiting (3), -- the request body part has not yet been processed, expect to hear more later
+ revocationWarning (4), -- this message contains a warning that a revocation is imminent
+ revocationNotification (5), -- notification that a revocation has occurred
+ keyUpdateWarning (6) -- update already done for the oldCertId specified in CertReqMsg
+
+ PkiFailureInfo:
+ badAlg (0), -- unrecognized or unsupported Algorithm Identifier
+ badMessageCheck (1), -- integrity check failed (e.g., signature did not verify)
+ badRequest (2), -- transaction not permitted or supported
+ badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy
+ badCertId (4), -- no certificate could be found matching the provided criteria
+ badDataFormat (5), -- the data submitted has the wrong format
+ wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token
+ incorrectData (7), -- the requester's data is incorrect (for notary services)
+ missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy)
+ badPOP (9) -- the proof-of-possession failed
+
+
+
+
+ PollRepContent ::= SEQUENCE OF SEQUENCE {
+ certReqId INTEGER,
+ checkAfter INTEGER, -- time in seconds
+ reason PKIFreeText OPTIONAL }
+
+
+
+ PollRepContent ::= SEQUENCE OF SEQUENCE {
+ certReqId INTEGER,
+ checkAfter INTEGER, -- time in seconds
+ reason PKIFreeText OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Create a pollReqContent for a single certReqId.
+
+ @param certReqId the certificate request ID.
+
+
+ Create a pollReqContent for a multiple certReqIds.
+
+ @param certReqIds the certificate request IDs.
+
+
+ Create a pollReqContent for a single certReqId.
+
+ @param certReqId the certificate request ID.
+
+
+ Create a pollReqContent for a multiple certReqIds.
+
+ @param certReqIds the certificate request IDs.
+
+
+
+ PollReqContent ::= SEQUENCE OF SEQUENCE {
+ certReqId INTEGER
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoDecKeyChallContent ::= SEQUENCE OF Challenge
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoDecKeyRespContent ::= SEQUENCE OF INTEGER
+
+ @return a basic ASN.1 object representation.
+
+
+
+ ProtectedPart ::= SEQUENCE {
+ header PKIHeader,
+ body PKIBody
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevAnnContent ::= SEQUENCE {
+ status PKIStatus,
+ certId CertId,
+ willBeRevokedAt GeneralizedTime,
+ badSinceDate GeneralizedTime,
+ crlDetails Extensions OPTIONAL
+ -- extra CRL details (e.g., crl number, reason, location, etc.)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevDetails ::= SEQUENCE {
+ certDetails CertTemplate,
+ -- allows requester to specify as much as they can about
+ -- the cert. for which revocation is requested
+ -- (e.g., for cases in which serialNumber is not available)
+ crlEntryDetails Extensions OPTIONAL
+ -- requested crlEntryExtensions
+ }
+
+
+
+
+ RevDetails ::= SEQUENCE {
+ certDetails CertTemplate,
+ -- allows requester to specify as much as they can about
+ -- the cert. for which revocation is requested
+ -- (e.g., for cases in which serialNumber is not available)
+ crlEntryDetails Extensions OPTIONAL
+ -- requested crlEntryExtensions
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevRepContent ::= SEQUENCE {
+ status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo,
+ -- in same order as was sent in RevReqContent
+ revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId
+ OPTIONAL,
+ -- IDs for which revocation was requested
+ -- (same order as status)
+ crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL
+ -- the resulting CRLs (there may be more than one)
+ }
+
+
+
+
+ RevRepContent ::= SEQUENCE {
+ status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo,
+ -- in same order as was sent in RevReqContent
+ revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL,
+ -- IDs for which revocation was requested
+ -- (same order as status)
+ crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL
+ -- the resulting CRLs (there may be more than one)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevReqContent ::= SEQUENCE OF RevDetails
+
+ @return a basic ASN.1 object representation.
+
+
+ GenMsg: {id-it 20}, RootCaCertValue | < absent >
+ GenRep: {id-it 18}, RootCaKeyUpdateContent | < absent >
+
+ RootCaCertValue ::= CMPCertificate
+
+ RootCaKeyUpdateValue ::= RootCaKeyUpdateContent
+
+ RootCaKeyUpdateContent ::= SEQUENCE {
+ newWithNew CMPCertificate,
+ newWithOld [0] CMPCertificate OPTIONAL,
+ oldWithNew [1] CMPCertificate OPTIONAL
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attribute ::= SEQUENCE {
+ attrType OBJECT IDENTIFIER,
+ attrValues SET OF AttributeValue
+ }
+
+
+
+
+ Attributes ::=
+ SET SIZE(1..MAX) OF Attribute -- according to RFC 5652
+
+ @return
+
+
+ Return the first attribute matching the given OBJECT IDENTIFIER
+
+
+ Return all the attributes matching the OBJECT IDENTIFIER oid. The vector will be
+ empty if there are no attributes of the required type present.
+
+ @param oid type of attribute required.
+ @return a vector of all the attributes found of type oid.
+
+
+ Return a new table with the passed in attribute added.
+
+ @param attrType
+ @param attrValue
+ @return
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthenticatedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ macAlgorithm MessageAuthenticationCodeAlgorithm,
+ digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
+ encapContentInfo EncapsulatedContentInfo,
+ authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
+
+ AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ MessageAuthenticationCode ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthenticatedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ macAlgorithm MessageAuthenticationCodeAlgorithm,
+ digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
+ encapContentInfo EncapsulatedContentInfo,
+ authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
+
+ AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ MessageAuthenticationCode ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthEnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ authEncryptedContentInfo EncryptedContentInfo,
+ authAttrs [1] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+ AuthEnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ authEncryptedContentInfo EncryptedContentInfo,
+ authAttrs [1] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }
+
+
+
+ From RFC 6211
+
+ CMSAlgorithmProtection ::= SEQUENCE {
+ digestAlgorithm DigestAlgorithmIdentifier,
+ signatureAlgorithm [1] SignatureAlgorithmIdentifier OPTIONAL,
+ macAlgorithm [2] MessageAuthenticationCodeAlgorithm
+ OPTIONAL
+ }
+ (WITH COMPONENTS { signatureAlgorithm PRESENT,
+ macAlgorithm ABSENT } |
+ WITH COMPONENTS { signatureAlgorithm ABSENT,
+ macAlgorithm PRESENT })
+
+
+
+ The other Revocation Info arc
+ id-ri OBJECT IDENTIFIER ::= { iso(1) identified-organization(3)
+ dod(6) internet(1) security(5) mechanisms(5) pkix(7) ri(16) }
+
+
+ 1.3.6.1.5.5.7.6
+
+
+ OtherRecipientInfo types
+
+
+ RFC 3274 - CMS Compressed Data.
+
+ CompressedData ::= Sequence {
+ version CMSVersion,
+ compressionAlgorithm CompressionAlgorithmIdentifier,
+ encapContentInfo EncapsulatedContentInfo
+ }
+
+
+
+ RFC 3274 - CMS Compressed Data.
+
+ CompressedData ::= SEQUENCE {
+ version CMSVersion,
+ compressionAlgorithm CompressionAlgorithmIdentifier,
+ encapContentInfo EncapsulatedContentInfo
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= Sequence {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= SEQUENCE {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ MQVuserKeyingMaterial ::= SEQUENCE {
+ ephemeralPublicKey OriginatorPublicKey,
+ addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EncryptedContentInfo ::= Sequence {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+
+
+
+ EncryptedContentInfo ::= SEQUENCE {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+
+
+
+ EncryptedData ::= SEQUENCE {
+ version CMSVersion,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EnvelopedData ::= Sequence {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KekIdentifier ::= Sequence {
+ keyIdentifier OCTET STRING,
+ date GeneralizedTime OPTIONAL,
+ other OtherKeyAttribute OPTIONAL
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KekRecipientInfo ::= Sequence {
+ version CMSVersion, -- always set to 4
+ kekID KekIdentifier,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeyAgreeRecipientIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ rKeyId [0] IMPLICIT RecipientKeyIdentifier
+ }
+
+
+
+ * Produce an object suitable for an Asn1OutputStream.
+ *
+ * KeyAgreeRecipientInfo ::= Sequence {
+ * version CMSVersion, -- always set to 3
+ * originator [0] EXPLICIT OriginatorIdentifierOrKey,
+ * ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
+ * keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ * recipientEncryptedKeys RecipientEncryptedKeys
+ * }
+ *
+ * UserKeyingMaterial ::= OCTET STRING
+ *
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeyTransRecipientInfo ::= Sequence {
+ version CMSVersion, -- always set to 0 or 2
+ rid RecipientIdentifier,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+
+ MetaData ::= SEQUENCE {
+ hashProtected BOOLEAN,
+ fileName UTF8String OPTIONAL,
+ mediaType IA5String OPTIONAL,
+ otherMetaData Attributes OPTIONAL
+ }
+
+ @return
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorIdentifierOrKey ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier,
+ originatorKey [1] OriginatorPublicKey
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorInfo ::= Sequence {
+ certs [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorPublicKey ::= Sequence {
+ algorithm AlgorithmIdentifier,
+ publicKey BIT STRING
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherKeyAttribute ::= Sequence {
+ keyAttrId OBJECT IDENTIFIER,
+ keyAttr ANY DEFINED BY keyAttrId OPTIONAL
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherRecipientInfo ::= Sequence {
+ oriType OBJECT IDENTIFIER,
+ oriValue ANY DEFINED BY oriType }
+
+
+
+ Produce an object suitable for an ASN1OutputStream.
+
+ OtherRevocationInfoFormat ::= SEQUENCE {
+ otherRevInfoFormat OBJECT IDENTIFIER,
+ otherRevInfo ANY DEFINED BY otherRevInfoFormat }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ PasswordRecipientInfo ::= Sequence {
+ version CMSVersion, -- Always set to 0
+ keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier
+ OPTIONAL,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientEncryptedKey ::= SEQUENCE {
+ rid KeyAgreeRecipientIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientInfo ::= CHOICE {
+ ktri KeyTransRecipientInfo,
+ kari [1] KeyAgreeRecipientInfo,
+ kekri [2] KekRecipientInfo,
+ pwri [3] PasswordRecipientInfo,
+ ori [4] OtherRecipientInfo }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientKeyIdentifier ::= Sequence {
+ subjectKeyIdentifier SubjectKeyIdentifier,
+ date GeneralizedTime OPTIONAL,
+ other OtherKeyAttribute OPTIONAL
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+
+ ScvpReqRes ::= SEQUENCE {
+ request [0] EXPLICIT ContentInfo OPTIONAL,
+ response ContentInfo }
+
+ @return the ASN.1 primitive representation.
+
+
+ a signed data object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignedData ::= Sequence {
+ version CMSVersion,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ encapContentInfo EncapsulatedContentInfo,
+ certificates [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos
+ }
+
+
+
+
+ SignedData ::= SEQUENCE {
+ version CMSVersion,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ encapContentInfo EncapsulatedContentInfo,
+ certificates [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerInfo ::= Sequence {
+ version Version,
+ SignerIdentifier sid,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
+ digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
+ encryptedDigest EncryptedDigest,
+ unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
+ }
+
+ EncryptedDigest ::= OCTET STRING
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+
+ DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+
+
+ creates a time object from a given date - if the date is between 1950
+ and 2049 a UTCTime object is Generated, otherwise a GeneralizedTime
+ is used.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Time ::= CHOICE {
+ utcTime UTCTime,
+ generalTime GeneralizedTime }
+
+
+
+
+ TimeStampAndCRL ::= SEQUENCE {
+ timeStamp TimeStampToken, -- according to RFC 3161
+ crl CertificateList OPTIONAL -- according to RFC 5280
+ }
+
+ @return
+
+
+
+ TimeStampedData ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ dataUri IA5String OPTIONAL,
+ metaData MetaData OPTIONAL,
+ content OCTET STRING OPTIONAL,
+ temporalEvidence Evidence
+ }
+
+ @return
+
+
+
+ TimeStampTokenEvidence ::=
+ SEQUENCE SIZE(1..MAX) OF TimeStampAndCrl
+
+ @return
+
+
+
+ AttributeTypeAndValue ::= SEQUENCE {
+ type OBJECT IDENTIFIER,
+ value ANY DEFINED BY type }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertId ::= SEQUENCE {
+ issuer GeneralName,
+ serialNumber INTEGER }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertReqMessages ::= SEQUENCE SIZE (1..MAX) OF CertReqMsg
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new CertReqMsg.
+ @param certReq CertRequest
+ @param popo may be null
+ @param regInfo may be null
+
+
+
+ CertReqMsg ::= SEQUENCE {
+ certReq CertRequest,
+ pop ProofOfPossession OPTIONAL,
+ -- content depends upon key type
+ regInfo SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertRequest ::= SEQUENCE {
+ certReqId INTEGER, -- ID for matching request and reply
+ certTemplate CertTemplate, -- Selected fields of cert to be issued
+ controls Controls OPTIONAL } -- Attributes affecting issuance
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertTemplate ::= SEQUENCE {
+ version [0] Version OPTIONAL,
+ serialNumber [1] INTEGER OPTIONAL,
+ signingAlg [2] AlgorithmIdentifier OPTIONAL,
+ issuer [3] Name OPTIONAL,
+ validity [4] OptionalValidity OPTIONAL,
+ subject [5] Name OPTIONAL,
+ publicKey [6] SubjectPublicKeyInfo OPTIONAL,
+ issuerUID [7] UniqueIdentifier OPTIONAL,
+ subjectUID [8] UniqueIdentifier OPTIONAL,
+ extensions [9] Extensions OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ Sets the X.509 version. Note: for X509v3, use 2 here.
+
+
+ Sets the issuer unique ID (deprecated in X.509v3)
+
+
+ Sets the subject unique ID (deprecated in X.509v3)
+
+
+
+ CertTemplate ::= SEQUENCE {
+ version [0] Version OPTIONAL,
+ serialNumber [1] INTEGER OPTIONAL,
+ signingAlg [2] AlgorithmIdentifier OPTIONAL,
+ issuer [3] Name OPTIONAL,
+ validity [4] OptionalValidity OPTIONAL,
+ subject [5] Name OPTIONAL,
+ publicKey [6] SubjectPublicKeyInfo OPTIONAL,
+ issuerUID [7] UniqueIdentifier OPTIONAL,
+ subjectUID [8] UniqueIdentifier OPTIONAL,
+ extensions [9] Extensions OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ Controls ::= SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+
+ EncKeyWithID ::= SEQUENCE {
+ privateKey PrivateKeyInfo,
+ identifier CHOICE {
+ string UTF8String,
+ generalName GeneralName
+ } OPTIONAL
+ }
+
+ @return
+
+
+
+ EncryptedKey ::= CHOICE {
+ encryptedValue EncryptedValue, -- deprecated
+ envelopedData [0] EnvelopedData }
+ -- The encrypted private key MUST be placed in the envelopedData
+ -- encryptedContentInfo encryptedContent OCTET STRING.
+
+
+
+
+ (IMPLICIT TAGS)
+ EncryptedValue ::= SEQUENCE {
+ intendedAlg [0] AlgorithmIdentifier OPTIONAL,
+ -- the intended algorithm for which the value will be used
+ symmAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- the symmetric algorithm used to encrypt the value
+ encSymmKey [2] BIT STRING OPTIONAL,
+ -- the (encrypted) symmetric key used to encrypt the value
+ keyAlg [3] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used to encrypt the symmetric key
+ valueHint [4] OCTET STRING OPTIONAL,
+ -- a brief description or identifier of the encValue content
+ -- (may be meaningful only to the sending entity, and used only
+ -- if EncryptedValue might be re-examined by the sending entity
+ -- in the future)
+ encValue BIT STRING }
+ -- the encrypted value itself
+
+ @return a basic ASN.1 object representation.
+
+
+
+ OptionalValidity ::= SEQUENCE {
+ notBefore [0] Time OPTIONAL,
+ notAfter [1] Time OPTIONAL } --at least one MUST be present
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiArchiveOptions ::= CHOICE {
+ encryptedPrivKey [0] EncryptedKey,
+ -- the actual value of the private key
+ keyGenParameters [1] KeyGenParameters,
+ -- parameters which allow the private key to be re-generated
+ archiveRemGenPrivKey [2] BOOLEAN }
+ -- set to TRUE if sender wishes receiver to archive the private
+ -- key of a key pair that the receiver generates in response to
+ -- this request; set to FALSE if no archival is desired.
+
+
+
+
+ PKIPublicationInfo ::= SEQUENCE {
+ action INTEGER {
+ dontPublish (0),
+ pleasePublish (1) },
+ pubInfos SEQUENCE SIZE (1..MAX) OF SinglePubInfo OPTIONAL }
+ -- pubInfos MUST NOT be present if action is "dontPublish"
+ -- (if action is "pleasePublish" and pubInfos is omitted,
+ -- "dontCare" is assumed)
+
+
+
+ Constructor with a single pubInfo, assumes pleasePublish as the action.
+
+ @param pubInfo the pubInfo to be published (can be null if don't care is required).
+
+
+ Constructor with multiple pubInfo, assumes pleasePublish as the action.
+
+ @param pubInfos the pubInfos to be published (can be null if don't care is required).
+
+
+
+ PkiPublicationInfo ::= SEQUENCE {
+ action INTEGER {
+ dontPublish (0),
+ pleasePublish (1) },
+ pubInfos SEQUENCE SIZE (1..MAX) OF SinglePubInfo OPTIONAL }
+ -- pubInfos MUST NOT be present if action is "dontPublish"
+ -- (if action is "pleasePublish" and pubInfos is omitted,
+ -- "dontCare" is assumed)
+
+ @return a basic ASN.1 object representation.
+
+
+ Password-based MAC value for use with POPOSigningKeyInput.
+
+
+ Creates a new PKMACValue.
+ @param params parameters for password-based MAC
+ @param value MAC of the DER-encoded SubjectPublicKeyInfo
+
+
+ Creates a new PKMACValue.
+ @param aid CMPObjectIdentifiers.passwordBasedMAC, with PBMParameter
+ @param value MAC of the DER-encoded SubjectPublicKeyInfo
+
+
+
+ PKMACValue ::= SEQUENCE {
+ algId AlgorithmIdentifier,
+ -- algorithm value shall be PasswordBasedMac 1.2.840.113533.7.66.13
+ -- parameter value is PBMParameter
+ value BIT STRING }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoPrivKey ::= CHOICE {
+ thisMessage [0] BIT STRING, -- Deprecated
+ -- possession is proven in this message (which contains the private
+ -- key itself (encrypted for the CA))
+ subsequentMessage [1] SubsequentMessage,
+ -- possession will be proven in a subsequent message
+ dhMAC [2] BIT STRING, -- Deprecated
+ agreeMAC [3] PKMACValue,
+ encryptedKey [4] EnvelopedData }
+
+
+
+ Creates a new Proof of Possession object for a signing key.
+ @param poposkIn the PopoSigningKeyInput structure, or null if the
+ CertTemplate includes both subject and publicKey values.
+ @param aid the AlgorithmIdentifier used to sign the proof of possession.
+ @param signature a signature over the DER-encoded value of poposkIn,
+ or the DER-encoded value of certReq if poposkIn is null.
+
+
+
+ PopoSigningKey ::= SEQUENCE {
+ poposkInput [0] PopoSigningKeyInput OPTIONAL,
+ algorithmIdentifier AlgorithmIdentifier,
+ signature BIT STRING }
+ -- The signature (using "algorithmIdentifier") is on the
+ -- DER-encoded value of poposkInput. NOTE: If the CertReqMsg
+ -- certReq CertTemplate contains the subject and publicKey values,
+ -- then poposkInput MUST be omitted and the signature MUST be
+ -- computed on the DER-encoded value of CertReqMsg certReq. If
+ -- the CertReqMsg certReq CertTemplate does not contain the public
+ -- key and subject values, then poposkInput MUST be present and
+ -- MUST be signed. This strategy ensures that the public key is
+ -- not present in both the poposkInput and CertReqMsg certReq
+ -- CertTemplate fields.
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new PopoSigningKeyInput with sender name as authInfo.
+
+
+ Creates a new PopoSigningKeyInput using password-based MAC.
+
+
+ Returns the sender field, or null if authInfo is publicKeyMac
+
+
+ Returns the publicKeyMac field, or null if authInfo is sender
+
+
+
+ PopoSigningKeyInput ::= SEQUENCE {
+ authInfo CHOICE {
+ sender [0] GeneralName,
+ -- used only if an authenticated identity has been
+ -- established for the sender (e.g., a DN from a
+ -- previously-issued and currently-valid certificate
+ publicKeyMac PKMacValue },
+ -- used if no authenticated GeneralName currently exists for
+ -- the sender; publicKeyMac contains a password-based MAC
+ -- on the DER-encoded value of publicKey
+ publicKey SubjectPublicKeyInfo } -- from CertTemplate
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a ProofOfPossession with type raVerified.
+
+
+ Creates a ProofOfPossession for a signing key.
+
+
+ Creates a ProofOfPossession for key encipherment or agreement.
+ @param type one of TYPE_KEY_ENCIPHERMENT or TYPE_KEY_AGREEMENT
+
+
+
+ ProofOfPossession ::= CHOICE {
+ raVerified [0] NULL,
+ -- used if the RA has already verified that the requester is in
+ -- possession of the private key
+ signature [1] PopoSigningKey,
+ keyEncipherment [2] PopoPrivKey,
+ keyAgreement [3] PopoPrivKey }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ SinglePubInfo ::= SEQUENCE {
+ pubMethod INTEGER {
+ dontCare (0),
+ x500 (1),
+ web (2),
+ ldap (3) },
+ pubLocation GeneralName OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ Elliptic curve registry for GOST 3410-2001 / 2012.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+
+ Gost28147-89-Parameters ::=
+ SEQUENCE {
+ iv Gost28147-89-IV,
+ encryptionParamSet OBJECT IDENTIFIER
+ }
+
+ Gost28147-89-IV ::= OCTET STRING (SIZE (8))
+
+
+
+ Registry of available named parameters for GOST 3410-94.
+
+
+ Look up the for the parameter set with the given name.
+
+ The name of the parameter set.
+
+
+ Look up the for the parameter set with the given
+ OID.
+ The OID for the parameter set.
+
+
+ Look up the OID of the parameter set with the given name.
+
+ The name of the parameter set.
+
+
+ Enumerate the available parameter set names in this registry.
+
+
+ @param data the octets making up the bit string.
+ @param padBits the number of extra bits at the end of the string.
+
+
+ Return the octets contained in this BIT STRING, checking that this BIT STRING really
+ does represent an octet aligned string. Only use this method when the standard you are
+ following dictates that the BIT STRING will be octet aligned.
+
+ @return a copy of the octet aligned data.
+
+
+ @return the value of the bit string as an int (truncating if necessary)
+
+
+ Der BMPString object.
+
+
+ return a BMP string from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a BMP string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ basic constructor
+
+
+ return a bool from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Boolean from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ return an integer from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an Enumerated from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ Class representing the DER-type External
+
+
+ Creates a new instance of DerExternal
+ See X.690 for more informations about the meaning of these parameters
+ @param directReference The direct reference or null if not set.
+ @param indirectReference The indirect reference or null if not set.
+ @param dataValueDescriptor The data value descriptor or null if not set.
+ @param externalData The external data in its encoded form.
+
+
+ Creates a new instance of DerExternal.
+ See X.690 for more informations about the meaning of these parameters
+ @param directReference The direct reference or null if not set.
+ @param indirectReference The indirect reference or null if not set.
+ @param dataValueDescriptor The data value descriptor or null if not set.
+ @param encoding The encoding to be used for the external data
+ @param externalData The external data
+
+
+ The encoding of the content. Valid values are
+
+ 0 single-ASN1-type
+ 1 OCTET STRING
+ 2 BIT STRING
+
+
+
+ return a Graphic String from the passed in object
+
+ @param obj a DerGraphicString or an object that can be converted into one.
+ @exception IllegalArgumentException if the object cannot be converted.
+ @return a DerGraphicString instance, or null.
+
+
+ return a Graphic String from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception IllegalArgumentException if the tagged object cannot be converted.
+ @return a DerGraphicString instance, or null.
+
+
+ IA5String object - this is an Ascii string.
+
+
+ return an IA5 string from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an IA5 string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in an IA5String.
+
+
+ return true if the passed in String can be represented without
+ loss as an IA5String, false otherwise.
+
+ @return true if in printable set, false otherwise.
+
+
+ return an integer from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an Integer from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ in some cases positive values Get crammed into a space,
+ that's not quite big enough...
+
+
+ Apply the correct validation for an INTEGER primitive following the BER rules.
+
+ @param bytes The raw encoding of the integer.
+ @return true if the (in)put fails this validation.
+
+
+ A Null object.
+
+
+ Der NumericString object - this is an ascii string of characters {0,1,2,3,4,5,6,7,8,9, }.
+
+
+ return a numeric string from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a numeric string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in a NumericString.
+
+
+ Return true if the string can be represented as a NumericString ('0'..'9', ' ')
+
+ @param str string to validate.
+ @return true if numeric, fale otherwise.
+
+
+ Implementation limit on the length of the contents octets for an Object Identifier.
+
+ We adopt the same value used by OpenJDK. In theory there is no limit on the length of the contents, or the
+ number of subidentifiers, or the length of individual subidentifiers. In practice, supporting arbitrary
+ lengths can lead to issues, e.g. denial-of-service attacks when attempting to convert a parsed value to its
+ (decimal) string form.
+
+
+
+ return an OID from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Return true if this oid is an extension of the passed in branch, stem.
+ @param stem the arc or branch that is a possible parent.
+ @return true if the branch is on the passed in stem, false otherwise.
+
+
+ The octets making up the octet string.
+
+
+ Der PrintableString object.
+
+
+ return a printable string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a printable string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in a PrintableString.
+
+
+ return true if the passed in String can be represented without
+ loss as a PrintableString, false otherwise.
+
+ @return true if in printable set, false otherwise.
+
+
+ create an empty sequence
+
+
+ create a sequence containing one object
+
+
+ create a sequence containing two objects
+
+
+ create a sequence containing a vector of objects.
+
+
+ A Der encoded set object
+
+
+ create an empty set
+
+
+ @param obj - a single object that makes up the set.
+
+
+ @param v - a vector of objects making up the set.
+
+
+ Der T61String (also the teletex string) - 8-bit characters
+
+
+ return a T61 string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a T61 string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ DER TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param isExplicit true if an explicitly tagged object.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ UniversalString object.
+
+
+ return a universal string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a universal string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ Der UTF8String object.
+
+
+ return an UTF8 string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a UTF8 string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ return a videotex string from the passed in object
+
+ @param obj a DERVideotexString or an object that can be converted into one.
+ @exception IllegalArgumentException if the object cannot be converted.
+ @return a DERVideotexString instance, or null.
+
+
+ return a videotex string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception IllegalArgumentException if the tagged object cannot be converted.
+ @return a DERVideotexString instance, or null.
+
+
+ VisibleString object.
+
+
+ return a visible string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a visible string from a tagged object.
+
+ @param taggedObject the tagged object holding the object we want
+ @param declaredExplicit true if the object is meant to be explicitly tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot be converted.
+
+
+ A Definite length BIT STRING
+
+
+ Parser for a DL encoded BIT STRING.
+
+
+ create an empty sequence
+
+
+ create a sequence containing one object
+
+
+ create a sequence containing two objects
+
+
+ create a sequence containing a vector of objects.
+
+
+ create an empty set
+
+
+ create a set containing one object
+
+
+ create a set containing a vector of objects.
+
+
+ Parser for definite-length tagged objects.
+
+
+ Edwards Elliptic Curve Object Identifiers (RFC 8410)
+
+
+
+ RFC 3126: 4.3.1 Certificate Values Attribute Definition
+
+ CertificateValues ::= SEQUENCE OF Certificate
+
+
+
+
+
+ CommitmentTypeIndication ::= SEQUENCE {
+ commitmentTypeId CommitmentTypeIdentifier,
+ commitmentTypeQualifier SEQUENCE SIZE (1..MAX) OF
+ CommitmentTypeQualifier OPTIONAL }
+
+
+
+ Commitment type qualifiers, used in the Commitment-Type-Indication attribute (RFC3126).
+
+
+ CommitmentTypeQualifier ::= SEQUENCE {
+ commitmentTypeIdentifier CommitmentTypeIdentifier,
+ qualifier ANY DEFINED BY commitmentTypeIdentifier OPTIONAL }
+
+
+
+ Creates a new CommitmentTypeQualifier instance.
+
+ @param commitmentTypeIdentifier a CommitmentTypeIdentifier value
+
+
+ Creates a new CommitmentTypeQualifier instance.
+
+ @param commitmentTypeIdentifier a CommitmentTypeIdentifier value
+ @param qualifier the qualifier, defined by the above field.
+
+
+ Creates a new CommitmentTypeQualifier instance.
+
+ @param as CommitmentTypeQualifier structure
+ encoded as an Asn1Sequence.
+
+
+ Returns a DER-encodable representation of this instance.
+
+ @return a Asn1Object value
+
+
+
+ RFC 3126: 4.2.1 Complete Certificate Refs Attribute Definition
+
+ CompleteCertificateRefs ::= SEQUENCE OF OtherCertID
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CompleteRevocationRefs ::= SEQUENCE OF CrlOcspRef
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlIdentifier ::= SEQUENCE
+ {
+ crlissuer Name,
+ crlIssuedTime UTCTime,
+ crlNumber INTEGER OPTIONAL
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CRLListID ::= SEQUENCE
+ {
+ crls SEQUENCE OF CrlValidatedID
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlOcspRef ::= SEQUENCE {
+ crlids [0] CRLListID OPTIONAL,
+ ocspids [1] OcspListID OPTIONAL,
+ otherRev [2] OtherRevRefs OPTIONAL
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlValidatedID ::= SEQUENCE {
+ crlHash OtherHash,
+ crlIdentifier CrlIdentifier OPTIONAL}
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspIdentifier ::= SEQUENCE {
+ ocspResponderID ResponderID,
+ -- As in OCSP response data
+ producedAt GeneralizedTime
+ -- As in OCSP response data
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspListID ::= SEQUENCE {
+ ocspResponses SEQUENCE OF OcspResponsesID
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspResponsesID ::= SEQUENCE {
+ ocspIdentifier OcspIdentifier,
+ ocspRepHash OtherHash OPTIONAL
+ }
+
+
+
+
+
+
+ OtherCertID ::= SEQUENCE {
+ otherCertHash OtherHash,
+ issuerSerial IssuerSerial OPTIONAL
+ }
+
+
+
+
+
+
+ OtherHash ::= CHOICE {
+ sha1Hash OtherHashValue, -- This contains a SHA-1 hash
+ otherHash OtherHashAlgAndValue
+ }
+
+ OtherHashValue ::= OCTET STRING
+
+
+
+
+
+ Summary description for OtherHashAlgAndValue.
+
+
+
+ OtherHashAlgAndValue ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashValue OtherHashValue
+ }
+
+ OtherHashValue ::= OCTET STRING
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OtherRevRefs ::= SEQUENCE
+ {
+ otherRevRefType OtherRevRefType,
+ otherRevRefs ANY DEFINED BY otherRevRefType
+ }
+
+ OtherRevRefType ::= OBJECT IDENTIFIER
+
+
+
+
+
+ RFC 3126: 4.3.2 Revocation Values Attribute Definition
+
+ OtherRevVals ::= SEQUENCE
+ {
+ otherRevValType OtherRevValType,
+ otherRevVals ANY DEFINED BY otherRevValType
+ }
+
+ OtherRevValType ::= OBJECT IDENTIFIER
+
+
+
+
+
+
+ OtherSigningCertificate ::= SEQUENCE {
+ certs SEQUENCE OF OtherCertID,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+
+
+
+
+ RFC 5126: 6.3.4. revocation-values Attribute Definition
+
+ RevocationValues ::= SEQUENCE {
+ crlVals [0] SEQUENCE OF CertificateList OPTIONAL,
+ ocspVals [1] SEQUENCE OF BasicOCSPResponse OPTIONAL,
+ otherRevVals [2] OtherRevVals OPTIONAL
+ }
+
+
+
+
+
+
+ SignaturePolicyId ::= SEQUENCE {
+ sigPolicyIdentifier SigPolicyId,
+ sigPolicyHash SigPolicyHash,
+ sigPolicyQualifiers SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL
+ }
+
+ SigPolicyId ::= OBJECT IDENTIFIER
+
+ SigPolicyHash ::= OtherHashAlgAndValue
+
+
+
+
+
+
+ SignaturePolicyIdentifier ::= CHOICE {
+ SignaturePolicyId SignaturePolicyId,
+ SignaturePolicyImplied SignaturePolicyImplied
+ }
+
+ SignaturePolicyImplied ::= NULL
+
+
+
+
+
+
+ SignerAttribute ::= SEQUENCE OF CHOICE {
+ claimedAttributes [0] ClaimedAttributes,
+ certifiedAttributes [1] CertifiedAttributes }
+
+ ClaimedAttributes ::= SEQUENCE OF Attribute
+ CertifiedAttributes ::= AttributeCertificate -- as defined in RFC 3281: see clause 4.1.
+
+
+
+ Signer-Location attribute (RFC3126).
+
+
+ SignerLocation ::= SEQUENCE {
+ countryName [0] DirectoryString OPTIONAL,
+ localityName [1] DirectoryString OPTIONAL,
+ postalAddress [2] PostalAddress OPTIONAL }
+
+ PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString
+
+
+
+
+ SignerLocation ::= SEQUENCE {
+ countryName [0] DirectoryString OPTIONAL,
+ localityName [1] DirectoryString OPTIONAL,
+ postalAddress [2] PostalAddress OPTIONAL }
+
+ PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString
+
+ DirectoryString ::= CHOICE {
+ teletexString TeletexString (SIZE (1..MAX)),
+ printableString PrintableString (SIZE (1..MAX)),
+ universalString UniversalString (SIZE (1..MAX)),
+ utf8String UTF8String (SIZE (1.. MAX)),
+ bmpString BMPString (SIZE (1..MAX)) }
+
+
+
+
+
+ SigPolicyQualifierInfo ::= SEQUENCE {
+ sigPolicyQualifierId SigPolicyQualifierId,
+ sigQualifier ANY DEFINED BY sigPolicyQualifierId
+ }
+
+ SigPolicyQualifierId ::= OBJECT IDENTIFIER
+
+
+
+
+ constructor
+
+
+
+ ContentHints ::= SEQUENCE {
+ contentDescription UTF8String (SIZE (1..MAX)) OPTIONAL,
+ contentType ContentType }
+
+
+
+ Create from OCTET STRING whose octets represent the identifier.
+
+
+ Create from byte array representing the identifier.
+
+
+ The definition of ContentIdentifier is
+
+ ContentIdentifier ::= OCTET STRING
+
+ id-aa-contentIdentifier OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 7 }
+
+
+ constructor
+
+
+
+ EssCertID ::= SEQUENCE {
+ certHash Hash,
+ issuerSerial IssuerSerial OPTIONAL }
+
+
+
+
+ EssCertIDv2 ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier
+ DEFAULT {algorithm id-sha256},
+ certHash Hash,
+ issuerSerial IssuerSerial OPTIONAL
+ }
+
+ Hash ::= OCTET STRING
+
+ IssuerSerial ::= SEQUENCE {
+ issuer GeneralNames,
+ serialNumber CertificateSerialNumber
+ }
+
+
+
+ constructors
+
+
+ The definition of SigningCertificate is
+
+ SigningCertificate ::= SEQUENCE {
+ certs SEQUENCE OF EssCertID,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+ id-aa-signingCertificate OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 12 }
+
+
+ The definition of SigningCertificateV2 is
+
+ SigningCertificateV2 ::= SEQUENCE {
+ certs SEQUENCE OF EssCertIDv2,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+ id-aa-signingCertificateV2 OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 47 }
+
+
+ Elliptic curve registry for GM.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+ <Information security technology — Cryptographic application identifier criterion specification>
+ http://c.gb688.cn/bzgk/gb/showGb?type=online&hcno=252CF0F72A7BE339A56DEA7D774E8994,
+ Page 21 only cover from 301.1 to 301.3
+
+
+ <WAPI certificate management—Part 5: Example of certificate format (draft)>
+ http://www.chinabwips.org.cn/zqyjgs1.htm and
+ http://www.chinabwips.org.cn/doc/101.pdf,
+ Page 9 and page 10 states the OID of ECDSA-192 algorithm based on SHA-256 is 1.2.156.11235.1.1.1
+
+
+
+ 1.3.6.1.4.1.11591.15 - ellipticCurve
+
+
+ Marker interface for CHOICE objects - if you implement this in a roll-your-own
+ object, any attempt to tag the object implicitly will convert the tag to an
+ explicit one as the encoding rules require.
+
+ If you use this interface your class should also implement the getInstance
+ pattern which takes a tag object and the tagging mode used.
+
+
+
+ basic interface for Der string objects.
+
+
+ The CscaMasterList object. This object can be wrapped in a
+ CMSSignedData to be published in LDAP.
+
+
+ CscaMasterList ::= SEQUENCE {
+ version CscaMasterListVersion,
+ certList SET OF Certificate }
+
+ CscaMasterListVersion :: INTEGER {v0(0)}
+
+
+
+ The DataGroupHash object.
+
+ DataGroupHash ::= SEQUENCE {
+ dataGroupNumber DataGroupNumber,
+ dataGroupHashValue OCTET STRING }
+
+ DataGroupNumber ::= INTEGER {
+ dataGroup1 (1),
+ dataGroup1 (2),
+ dataGroup1 (3),
+ dataGroup1 (4),
+ dataGroup1 (5),
+ dataGroup1 (6),
+ dataGroup1 (7),
+ dataGroup1 (8),
+ dataGroup1 (9),
+ dataGroup1 (10),
+ dataGroup1 (11),
+ dataGroup1 (12),
+ dataGroup1 (13),
+ dataGroup1 (14),
+ dataGroup1 (15),
+ dataGroup1 (16) }
+
+
+
+
+ The LDSSecurityObject object (V1.8).
+
+ LDSSecurityObject ::= SEQUENCE {
+ version LDSSecurityObjectVersion,
+ hashAlgorithm DigestAlgorithmIdentifier,
+ dataGroupHashValues SEQUENCE SIZE (2..ub-DataGroups) OF DataHashGroup,
+ ldsVersionInfo LDSVersionInfo OPTIONAL
+ -- if present, version MUST be v1 }
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier,
+
+ LDSSecurityObjectVersion :: INTEGER {V0(0)}
+
+
+
+
+ LDSVersionInfo ::= SEQUENCE {
+ ldsVersion PRINTABLE STRING
+ unicodeVersion PRINTABLE STRING
+ }
+
+ @return
+
+
+ The id-isismtt-cp-accredited OID indicates that the certificate is a
+ qualified certificate according to Directive 1999/93/EC of the European
+ Parliament and of the Council of 13 December 1999 on a Community
+ Framework for Electronic Signatures, which additionally conforms the
+ special requirements of the SigG and has been issued by an accredited CA.
+
+
+ Certificate extensionDate of certificate generation
+
+
+ DateOfCertGenSyntax ::= GeneralizedTime
+
+
+
+ Attribute to indicate that the certificate holder may sign in the name of
+ a third person. May also be used as extension in a certificate.
+
+
+ Attribute to indicate admissions to certain professions. May be used as
+ attribute in attribute certificate or as extension in a certificate
+
+
+ Monetary limit for transactions. The QcEuMonetaryLimit QC statement MUST
+ be used in new certificates in place of the extension/attribute
+ MonetaryLimit since January 1, 2004. For the sake of backward
+ compatibility with certificates already in use, SigG conforming
+ components MUST support MonetaryLimit (as well as QcEuLimitValue).
+
+
+ A declaration of majority. May be used as attribute in attribute
+ certificate or as extension in a certificate
+
+
+
+ Serial number of the smart card containing the corresponding private key
+
+
+ ICCSNSyntax ::= OCTET STRING (SIZE(8..20))
+
+
+
+
+ Reference for a file of a smartcard that stores the public key of this
+ certificate and that is used as �security anchor�.
+
+
+ PKReferenceSyntax ::= OCTET STRING (SIZE(20))
+
+
+
+ Some other restriction regarding the usage of this certificate. May be
+ used as attribute in attribute certificate or as extension in a
+ certificate.
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.Restriction
+
+
+
+ (Single)Request extension: Clients may include this extension in a
+ (single) Request to request the responder to send the certificate in the
+ response message along with the status information. Besides the LDAP
+ service, this extension provides another mechanism for the distribution
+ of certificates, which MAY optionally be provided by certificate
+ repositories.
+
+
+ RetrieveIfAllowed ::= BOOLEAN
+
+
+
+ SingleOCSPResponse extension: The certificate requested by the client by
+ inserting the RetrieveIfAllowed extension in the request, will be
+ returned in this extension.
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.Ocsp.RequestedCertificate
+
+
+ Base ObjectIdentifier for naming authorities
+
+
+ SingleOCSPResponse extension: Date, when certificate has been published
+ in the directory and status information has become available. Currently,
+ accrediting authorities enforce that SigG-conforming OCSP servers include
+ this extension in the responses.
+
+
+ CertInDirSince ::= GeneralizedTime
+
+
+
+ Hash of a certificate in OCSP.
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.Ocsp.CertHash
+
+
+
+ NameAtBirth ::= DirectoryString(SIZE(1..64)
+
+
+ Used in
+ {@link Org.BouncyCastle.Asn1.X509.SubjectDirectoryAttributes SubjectDirectoryAttributes}
+
+
+ Some other information of non-restrictive nature regarding the usage of
+ this certificate. May be used as attribute in atribute certificate or as
+ extension in a certificate.
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdditionalInformationSyntax
+
+
+ Indicates that an attribute certificate exists, which limits the
+ usability of this public key certificate. Whenever verifying a signature
+ with the help of this certificate, the content of the corresponding
+ attribute certificate should be concerned. This extension MUST be
+ included in a PKC, if a corresponding attribute certificate (having the
+ PKC as base certificate) contains some attribute that restricts the
+ usability of the PKC too. Attribute certificates with restricting content
+ MUST always be included in the signed document.
+
+
+ LiabilityLimitationFlagSyntax ::= BOOLEAN
+
+
+
+ ISIS-MTT PROFILE: The responder may include this extension in a response to
+ send the hash of the requested certificate to the responder. This hash is
+ cryptographically bound to the certificate and serves as evidence that the
+ certificate is known to the responder (i.e. it has been issued and is present
+ in the directory). Hence, this extension is a means to provide a positive
+ statement of availability as described in T8.[8]. As explained in T13.[1],
+ clients may rely on this information to be able to validate signatures after
+ the expiry of the corresponding certificate. Hence, clients MUST support this
+ extension. If a positive statement of availability is to be delivered, this
+ extension syntax and OID MUST be used.
+
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type CertHash:
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param hashAlgorithm The hash algorithm identifier.
+ @param certificateHash The hash of the whole DER encoding of the certificate.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+ @return an Asn1Object
+
+
+ ISIS-MTT-Optional: The certificate requested by the client by inserting the
+ RetrieveIfAllowed extension in the request, will be returned in this
+ extension.
+
+ ISIS-MTT-SigG: The signature act allows publishing certificates only then,
+ when the certificate owner gives his isExplicit permission. Accordingly, there
+ may be �nondownloadable� certificates, about which the responder must provide
+ status information, but MUST NOT include them in the response. Clients may
+ get therefore the following three kind of answers on a single request
+ including the RetrieveIfAllowed extension:
+
+ - a) the responder supports the extension and is allowed to publish the
+ certificate: RequestedCertificate returned including the requested
+ certificate
+ - b) the responder supports the extension but is NOT allowed to publish
+ the certificate: RequestedCertificate returned including an empty OCTET
+ STRING
+ - c) the responder does not support the extension: RequestedCertificate is
+ not included in the response
+
+ Clients requesting RetrieveIfAllowed MUST be able to handle these cases. If
+ any of the OCTET STRING options is used, it MUST contain the DER encoding of
+ the requested certificate.
+
+
+ RequestedCertificate ::= CHOICE {
+ Certificate Certificate,
+ publicKeyCertificate [0] EXPLICIT OCTET STRING,
+ attributeCertificate [1] EXPLICIT OCTET STRING
+ }
+
+
+
+ Constructor from a given details.
+
+ Only one parameter can be given. All other must be null.
+
+ @param certificate Given as Certificate
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ RequestedCertificate ::= CHOICE {
+ Certificate Certificate,
+ publicKeyCertificate [0] EXPLICIT OCTET STRING,
+ attributeCertificate [1] EXPLICIT OCTET STRING
+ }
+
+
+ @return an Asn1Object
+
+
+ Some other information of non-restrictive nature regarding the usage of this
+ certificate.
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+
+ Constructor from a given details.
+
+ @param information The describtion of the information.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+ @return an Asn1Object
+
+
+ An Admissions structure.
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.ProfessionInfo
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.NamingAuthority
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ Parameter professionInfos is mandatory.
+
+ @param admissionAuthority The admission authority.
+ @param namingAuthority The naming authority.
+ @param professionInfos The profession infos.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+
+ @return an Asn1Object
+
+
+ Attribute to indicate admissions to certain professions.
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+
+ ISIS-MTT PROFILE: The relatively complex structure of AdmissionSyntax
+ supports the following concepts and requirements:
+
+ - External institutions (e.g. professional associations, chambers, unions,
+ administrative bodies, companies, etc.), which are responsible for granting
+ and verifying professional admissions, are indicated by means of the data
+ field admissionAuthority. An admission authority is indicated by a
+ GeneralName object. Here an X.501 directory name (distinguished name) can be
+ indicated in the field directoryName, a URL address can be indicated in the
+ field uniformResourceIdentifier, and an object identifier can be indicated in
+ the field registeredId.
+ - The names of authorities which are responsible for the administration of
+ title registers are indicated in the data field namingAuthority. The name of
+ the authority can be identified by an object identifier in the field
+ namingAuthorityId, by means of a text string in the field
+ namingAuthorityText, by means of a URL address in the field
+ namingAuthorityUrl, or by a combination of them. For example, the text string
+ can contain the name of the authority, the country and the name of the title
+ register. The URL-option refers to a web page which contains lists with
+ officially registered professions (text and possibly OID) as well as
+ further information on these professions. Object identifiers for the
+ component namingAuthorityId are grouped under the OID-branch
+ id-isis-at-namingAuthorities and must be applied for.
+ - See http://www.teletrust.de/anwend.asp?Id=30200&Sprache=E_&HomePG=0
+ for an application form and http://www.teletrust.de/links.asp?id=30220,11
+ for an overview of registered naming authorities.
+ - By means of the data type ProfessionInfo certain professions,
+ specializations, disciplines, fields of activity, etc. are identified. A
+ profession is represented by one or more text strings, resp. profession OIDs
+ in the fields professionItems and professionOIDs and by a registration number
+ in the field registrationNumber. An indication in text form must always be
+ present, whereas the other indications are optional. The component
+ addProfessionInfo may contain additional applicationspecific information in
+ DER-encoded form.
+
+
+ By means of different namingAuthority-OIDs or profession OIDs hierarchies of
+ professions, specializations, disciplines, fields of activity, etc. can be
+ expressed. The issuing admission authority should always be indicated (field
+ admissionAuthority), whenever a registration number is presented. Still,
+ information on admissions can be given without indicating an admission or a
+ naming authority by the exclusive use of the component professionItems. In
+ this case the certification authority is responsible for the verification of
+ the admission information.
+
+
+
+ This attribute is single-valued. Still, several admissions can be captured in
+ the sequence structure of the component contentsOfAdmissions of
+ AdmissionSyntax or in the component professionInfos of Admissions. The
+ component admissionAuthority of AdmissionSyntax serves as default value for
+ the component admissionAuthority of Admissions. Within the latter component
+ the default value can be overwritten, in case that another authority is
+ responsible. The component namingAuthority of Admissions serves as a default
+ value for the component namingAuthority of ProfessionInfo. Within the latter
+ component the default value can be overwritten, in case that another naming
+ authority needs to be recorded.
+
+ The length of the string objects is limited to 128 characters. It is
+ recommended to indicate a namingAuthorityURL in all issued attribute
+ certificates. If a namingAuthorityURL is indicated, the field professionItems
+ of ProfessionInfo should contain only registered titles. If the field
+ professionOIDs exists, it has to contain the OIDs of the professions listed
+ in professionItems in the same order. In general, the field professionInfos
+ should contain only one entry, unless the admissions that are to be listed
+ are logically connected (e.g. they have been issued under the same admission
+ number).
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.Admissions
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.ProfessionInfo
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.NamingAuthority
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from given details.
+
+ @param admissionAuthority The admission authority.
+ @param contentsOfAdmissions The admissions.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ @return Returns the admissionAuthority if present, null otherwise.
+
+
+ @return Returns the contentsOfAdmissions.
+
+
+ A declaration of majority.
+
+
+ DeclarationOfMajoritySyntax ::= CHOICE
+ {
+ notYoungerThan [0] IMPLICIT INTEGER,
+ fullAgeAtCountry [1] IMPLICIT SEQUENCE
+ {
+ fullAge BOOLEAN DEFAULT TRUE,
+ country PrintableString (SIZE(2))
+ }
+ dateOfBirth [2] IMPLICIT GeneralizedTime
+ }
+
+
+ fullAgeAtCountry indicates the majority of the owner with respect to the laws
+ of a specific country.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ DeclarationOfMajoritySyntax ::= CHOICE
+ {
+ notYoungerThan [0] IMPLICIT INTEGER,
+ fullAgeAtCountry [1] IMPLICIT SEQUENCE
+ {
+ fullAge BOOLEAN DEFAULT TRUE,
+ country PrintableString (SIZE(2))
+ }
+ dateOfBirth [2] IMPLICIT GeneralizedTime
+ }
+
+
+ @return an Asn1Object
+
+
+ @return notYoungerThan if that's what we are, -1 otherwise
+
+
+ Monetary limit for transactions. The QcEuMonetaryLimit QC statement MUST be
+ used in new certificates in place of the extension/attribute MonetaryLimit
+ since January 1, 2004. For the sake of backward compatibility with
+ certificates already in use, components SHOULD support MonetaryLimit (as well
+ as QcEuLimitValue).
+
+ Indicates a monetary limit within which the certificate holder is authorized
+ to act. (This value DOES NOT express a limit on the liability of the
+ certification authority).
+
+
+ MonetaryLimitSyntax ::= SEQUENCE
+ {
+ currency PrintableString (SIZE(3)),
+ amount INTEGER,
+ exponent INTEGER
+ }
+
+
+ currency must be the ISO code.
+
+ value = amount�10*exponent
+
+
+ Constructor from a given details.
+
+
+ value = amount�10^exponent
+
+ @param currency The currency. Must be the ISO code.
+ @param amount The amount
+ @param exponent The exponent
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ MonetaryLimitSyntax ::= SEQUENCE
+ {
+ currency PrintableString (SIZE(3)),
+ amount INTEGER,
+ exponent INTEGER
+ }
+
+
+ @return an Asn1Object
+
+
+ Names of authorities which are responsible for the administration of title
+ registers.
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+
+
+
+ Profession OIDs should always be defined under the OID branch of the
+ responsible naming authority. At the time of this writing, the work group
+ �Recht, Wirtschaft, Steuern� (�Law, Economy, Taxes�) is registered as the
+ first naming authority under the OID id-isismtt-at-namingAuthorities.
+
+
+ Constructor from Asn1Sequence.
+
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ @return Returns the namingAuthorityID.
+
+
+ @return Returns the namingAuthorityText.
+
+
+ @return Returns the namingAuthorityUrl.
+
+
+ Constructor from given details.
+
+ All parameters can be combined.
+
+ @param namingAuthorityID ObjectIdentifier for naming authority.
+ @param namingAuthorityUrl URL for naming authority.
+ @param namingAuthorityText Textual representation of naming authority.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ Attribute to indicate that the certificate holder may sign in the name of a
+ third person.
+
+ ISIS-MTT PROFILE: The corresponding ProcurationSyntax contains either the
+ name of the person who is represented (subcomponent thirdPerson) or a
+ reference to his/her base certificate (in the component signingFor,
+ subcomponent certRef), furthermore the optional components country and
+ typeSubstitution to indicate the country whose laws apply, and respectively
+ the type of procuration (e.g. manager, procuration, custody).
+
+
+ ISIS-MTT PROFILE: The GeneralName MUST be of type directoryName and MAY only
+ contain: - RFC3039 attributes, except pseudonym (countryName, commonName,
+ surname, givenName, serialNumber, organizationName, organizationalUnitName,
+ stateOrProvincename, localityName, postalAddress) and - SubjectDirectoryName
+ attributes (title, dateOfBirth, placeOfBirth, gender, countryOfCitizenship,
+ countryOfResidence and NameAtBirth).
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+
+ Either generalName or certRef MUST be
+ null.
+
+ @param country The country code whose laws apply.
+ @param typeOfSubstitution The type of procuration.
+ @param certRef Reference to certificate of the person who is represented.
+
+
+ Constructor from a given details.
+
+
+ Either generalName or certRef MUST be
+ null.
+
+ @param country The country code whose laws apply.
+ @param typeOfSubstitution The type of procuration.
+ @param thirdPerson The GeneralName of the person who is represented.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+ @return an Asn1Object
+
+
+ Professions, specializations, disciplines, fields of activity, etc.
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+
+
+ Rechtsanw�ltin
+
+
+ Rechtsanwalt
+
+
+ Rechtsbeistand
+
+
+ Steuerberaterin
+
+
+ Steuerberater
+
+
+ Steuerbevollm�chtigte
+
+
+ Steuerbevollm�chtigter
+
+
+ Notarin
+
+
+ Notar
+
+
+ Notarvertreterin
+
+
+ Notarvertreter
+
+
+ Notariatsverwalterin
+
+
+ Notariatsverwalter
+
+
+ Wirtschaftspr�ferin
+
+
+ Wirtschaftspr�fer
+
+
+ Vereidigte Buchpr�ferin
+
+
+ Vereidigter Buchpr�fer
+
+
+ Patentanw�ltin
+
+
+ Patentanwalt
+
+
+ Constructor from Asn1Sequence.
+
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from given details.
+
+ professionItems is mandatory, all other parameters are
+ optional.
+
+ @param namingAuthority The naming authority.
+ @param professionItems Directory strings of the profession.
+ @param professionOids DERObjectIdentfier objects for the
+ profession.
+ @param registrationNumber Registration number.
+ @param addProfessionInfo Additional infos in encoded form.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ @return Returns the addProfessionInfo.
+
+
+ @return Returns the namingAuthority.
+
+
+ @return Returns the professionItems.
+
+
+ @return Returns the professionOids.
+
+
+ @return Returns the registrationNumber.
+
+
+ Some other restriction regarding the usage of this certificate.
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+
+ Constructor from DirectoryString.
+
+ The DirectoryString is of type RestrictionSyntax:
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+ @param restriction A IAsn1String.
+
+
+ Constructor from a given details.
+
+ @param restriction The description of the restriction.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+
+ @return an Asn1Object
+
+
+ No longer provides any laziness.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ cast5CBCParameters ::= Sequence {
+ iv OCTET STRING DEFAULT 0,
+ -- Initialization vector
+ keyLength Integer
+ -- Key length, in bits
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ IDEA-CBCPar ::= Sequence {
+ iv OCTET STRING OPTIONAL -- exactly 8 octets
+ }
+
+
+
+ The NetscapeCertType object.
+
+ NetscapeCertType ::= BIT STRING {
+ SSLClient (0),
+ SSLServer (1),
+ S/MIME (2),
+ Object Signing (3),
+ Reserved (4),
+ SSL CA (5),
+ S/MIME CA (6),
+ Object Signing CA (7) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (X509NetscapeCertType.sslCA | X509NetscapeCertType.smimeCA)
+
+
+ This is designed to parse
+ the PublicKeyAndChallenge created by the KEYGEN tag included by
+ Mozilla based browsers.
+
+ PublicKeyAndChallenge ::= SEQUENCE {
+ spki SubjectPublicKeyInfo,
+ challenge IA5STRING
+ }
+
+
+
+
+
+ KMACwithSHAKE128-params ::= SEQUENCE {
+ kMACOutputLength INTEGER DEFAULT 256, -- Output length in bits
+ customizationString OCTET STRING DEFAULT ''H
+ }
+
+
+
+
+ KMACwithSHAKE256-params ::= SEQUENCE {
+ kMACOutputLength INTEGER DEFAULT 512, -- Output length in bits
+ customizationString OCTET STRING DEFAULT ''H
+ }
+
+
+
+ Elliptic curve registry for NIST curves.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of
+ the full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of
+ the full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+ From RFC 3657
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ BasicOcspResponse ::= Sequence {
+ tbsResponseData ResponseData,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT Sequence OF Certificate OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CertID ::= Sequence {
+ hashAlgorithm AlgorithmIdentifier,
+ issuerNameHash OCTET STRING, -- Hash of Issuer's DN
+ issuerKeyHash OCTET STRING, -- Hash of Issuers public key
+ serialNumber CertificateSerialNumber }
+
+
+
+ create a CertStatus object with a tag of zero.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CertStatus ::= CHOICE {
+ good [0] IMPLICIT Null,
+ revoked [1] IMPLICIT RevokedInfo,
+ unknown [2] IMPLICIT UnknownInfo }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CrlID ::= Sequence {
+ crlUrl [0] EXPLICIT IA5String OPTIONAL,
+ crlNum [1] EXPLICIT Integer OPTIONAL,
+ crlTime [2] EXPLICIT GeneralizedTime OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OcspRequest ::= Sequence {
+ tbsRequest TBSRequest,
+ optionalSignature [0] EXPLICIT Signature OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OcspResponse ::= Sequence {
+ responseStatus OcspResponseStatus,
+ responseBytes [0] EXPLICIT ResponseBytes OPTIONAL }
+
+
+
+ The OcspResponseStatus enumeration.
+
+ OcspResponseStatus ::= Enumerated {
+ successful (0), --Response has valid confirmations
+ malformedRequest (1), --Illegal confirmation request
+ internalError (2), --Internal error in issuer
+ tryLater (3), --Try again later
+ --(4) is not used
+ sigRequired (5), --Must sign the request
+ unauthorized (6) --Request unauthorized
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Request ::= Sequence {
+ reqCert CertID,
+ singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponderID ::= CHOICE {
+ byName [1] Name,
+ byKey [2] KeyHash }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponseBytes ::= Sequence {
+ responseType OBJECT IDENTIFIER,
+ response OCTET STRING }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponseData ::= Sequence {
+ version [0] EXPLICIT Version DEFAULT v1,
+ responderID ResponderID,
+ producedAt GeneralizedTime,
+ responses Sequence OF SingleResponse,
+ responseExtensions [1] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RevokedInfo ::= Sequence {
+ revocationTime GeneralizedTime,
+ revocationReason [0] EXPLICIT CRLReason OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ServiceLocator ::= Sequence {
+ issuer Name,
+ locator AuthorityInfoAccessSyntax OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Signature ::= Sequence {
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT Sequence OF Certificate OPTIONAL}
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SingleResponse ::= Sequence {
+ certID CertID,
+ certStatus CertStatus,
+ thisUpdate GeneralizedTime,
+ nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL,
+ singleExtensions [1] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ TBSRequest ::= Sequence {
+ version [0] EXPLICIT Version DEFAULT v1,
+ requestorName [1] EXPLICIT GeneralName OPTIONAL,
+ requestList Sequence OF Request,
+ requestExtensions [2] EXPLICIT Extensions OPTIONAL }
+
+
+
+ class for breaking up an Oid into it's component tokens, ala
+ java.util.StringTokenizer. We need this class as some of the
+ lightweight Java environment don't support classes like
+ StringTokenizer.
+
+
+ return an Attribute object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attr ::= Sequence {
+ attrType OBJECT IDENTIFIER,
+ attrValues Set OF AttributeValue
+ }
+
+
+
+ Pkcs10 Certfication request object.
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+
+
+ Pkcs10 CertificationRequestInfo object.
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= Sequence {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ The EncryptedData object.
+
+ EncryptedData ::= Sequence {
+ version Version,
+ encryptedContentInfo EncryptedContentInfo
+ }
+
+
+ EncryptedContentInfo ::= Sequence {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+ EncryptedContent ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EncryptedPrivateKeyInfo ::= Sequence {
+ encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}},
+ encryptedData EncryptedData
+ }
+
+ EncryptedData ::= OCTET STRING
+
+ KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= {
+ ... -- For local profiles
+ }
+
+
+
+
+ MacData ::= SEQUENCE {
+ mac DigestInfo,
+ macSalt OCTET STRING,
+ iterations INTEGER DEFAULT 1
+ -- Note: The default is for historic reasons and its use is deprecated. A
+ -- higher value, like 1024 is recommended.
+
+ @return the basic DERObject construction.
+
+
+ the infamous Pfx from Pkcs12
+
+
+ PKCS#1: 1.2.840.113549.1.1.15
+
+
+ PKCS#1: 1.2.840.113549.1.1.16
+
+
+ RFC 6211 - id-aa-cmsAlgorithmProtect OBJECT IDENTIFIER ::= {
+ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
+ pkcs9(9) 52 }
+
+
+
+ id-alg-AEADChaCha20Poly1305 OBJECT IDENTIFIER ::=
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
+ pkcs9(9) smime(16) alg(3) 18 }
+
+ AEADChaCha20Poly1305Nonce ::= OCTET STRING (SIZE(12))
+
+
+
+ id-alg-hss-lms-hashsig OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) alg(3) 17 }
+
+
+ PKCS#9: 1.2.840.113549.1.9.16.2.37 - RFC 4108
+
+
+ PKCS#9: 1.2.840.113549.1.9.16.2.38 - RFC 4108
+
+
+ PKCS#9: 1.2.840.113549.1.9.16.2.54 RFC7030
+
+
+ PKCS#9: 1.2.840.113549.1.9.16.2.43 RFC7030
+
+
+ PKCS#9: 1.2.840.113549.1.9.16.2.40 RFC7030
+
+
+ RFC 5958
+
+
+ [IMPLICIT TAGS]
+
+ OneAsymmetricKey ::= SEQUENCE {
+ version Version,
+ privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
+ privateKey PrivateKey,
+ attributes [0] Attributes OPTIONAL,
+ ...,
+ [[2: publicKey [1] PublicKey OPTIONAL ]],
+ ...
+ }
+
+ PrivateKeyInfo ::= OneAsymmetricKey
+
+ Version ::= INTEGER { v1(0), v2(1) } (v1, ..., v2)
+
+ PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
+ { PUBLIC-KEY,
+ { PrivateKeyAlgorithms } }
+
+ PrivateKey ::= OCTET STRING
+ -- Content varies based on type of key. The
+ -- algorithm identifier dictates the format of
+ -- the key.
+
+ PublicKey ::= BIT STRING
+ -- Content varies based on type of key. The
+ -- algorithm identifier dictates the format of
+ -- the key.
+
+ Attributes ::= SET OF Attribute { { OneAsymmetricKeyAttributes } }
+
+
+
+ Return true if a public key is present, false otherwise.
+
+
+ For when the public key is an ASN.1 encoding.
+
+
+ Return the public key as a raw bit string.
+
+
+ The default version
+
+
+
+ RSAES-OAEP-params ::= SEQUENCE {
+ hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1,
+ maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1,
+ pSourceAlgorithm [2] PKCS1PSourceAlgorithms DEFAULT pSpecifiedEmpty
+ }
+
+ OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-sha1 PARAMETERS NULL }|
+ { OID id-sha256 PARAMETERS NULL }|
+ { OID id-sha384 PARAMETERS NULL }|
+ { OID id-sha512 PARAMETERS NULL },
+ ... -- Allows for future expansion --
+ }
+ PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
+ ... -- Allows for future expansion --
+ }
+ PKCS1PSourceAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-pSpecified PARAMETERS OCTET STRING },
+ ... -- Allows for future expansion --
+ }
+
+ @return the asn1 primitive representing the parameters.
+
+
+ This outputs the key in Pkcs1v2 format.
+
+ RsaPrivateKey ::= Sequence {
+ version Version,
+ modulus Integer, -- n
+ publicExponent Integer, -- e
+ privateExponent Integer, -- d
+ prime1 Integer, -- p
+ prime2 Integer, -- q
+ exponent1 Integer, -- d mod (p-1)
+ exponent2 Integer, -- d mod (q-1)
+ coefficient Integer -- (inverse of q) mod p
+ }
+
+ Version ::= Integer
+
+ This routine is written to output Pkcs1 version 0, private keys.
+
+
+ The default version
+
+
+
+ RSASSA-PSS-params ::= SEQUENCE {
+ hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1,
+ maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1,
+ saltLength [2] INTEGER DEFAULT 20,
+ trailerField [3] TrailerField DEFAULT trailerFieldBC
+ }
+
+ OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-sha1 PARAMETERS NULL }|
+ { OID id-sha256 PARAMETERS NULL }|
+ { OID id-sha384 PARAMETERS NULL }|
+ { OID id-sha512 PARAMETERS NULL },
+ ... -- Allows for future expansion --
+ }
+
+ PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
+ ... -- Allows for future expansion --
+ }
+
+ TrailerField ::= INTEGER { trailerFieldBC(1) }
+
+ @return the asn1 primitive representing the parameters.
+
+
+ a Pkcs#7 signed data object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignedData ::= Sequence {
+ version Version,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ contentInfo ContentInfo,
+ certificates
+ [0] IMPLICIT ExtendedCertificatesAndCertificates
+ OPTIONAL,
+ crls
+ [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos }
+
+
+
+ a Pkcs#7 signer info object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerInfo ::= Sequence {
+ version Version,
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
+ digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
+ encryptedDigest EncryptedDigest,
+ unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
+ }
+
+ EncryptedDigest ::= OCTET STRING
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+
+ DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+
+
+ the elliptic curve private key object from SEC 1
+
+
+ ECPrivateKey ::= SEQUENCE {
+ version INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1),
+ privateKey OCTET STRING,
+ parameters [0] Parameters OPTIONAL,
+ publicKey [1] BIT STRING OPTIONAL }
+
+
+ Elliptic curve registry for the SEC standard.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+ EllipticCurve OBJECT IDENTIFIER ::= {
+ iso(1) identified-organization(3) certicom(132) curve(0)
+ }
+
+
+ Handler class for dealing with S/MIME Capabilities
+
+
+ general preferences
+
+
+ encryption algorithms preferences
+
+
+ return an Attr object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ returns an ArrayList with 0 or more objects of all the capabilities
+ matching the passed in capability Oid. If the Oid passed is null the
+ entire set is returned.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SMIMECapabilities ::= Sequence OF SMIMECapability
+
+
+
+ general preferences
+
+
+ encryption algorithms preferences
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SMIMECapability ::= Sequence {
+ capabilityID OBJECT IDENTIFIER,
+ parameters ANY DEFINED BY capabilityID OPTIONAL
+ }
+
+
+
+ Handler for creating a vector S/MIME Capabilities
+
+
+ The SmimeEncryptionKeyPreference object.
+
+ SmimeEncryptionKeyPreference ::= CHOICE {
+ issuerAndSerialNumber [0] IssuerAndSerialNumber,
+ receipentKeyId [1] RecipientKeyIdentifier,
+ subjectAltKeyIdentifier [2] SubjectKeyIdentifier
+ }
+
+
+
+ @param sKeyId the subjectKeyIdentifier value (normally the X.509 one)
+
+
+ Elliptic curve registry for curves defined in "ECC Brainpool Standard Curves and Curve Generation"
+ http://www.ecc-brainpool.org/download/draft_pkix_additional_ecc_dp.txt .
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+
+ Accuracy ::= SEQUENCE {
+ seconds INTEGER OPTIONAL,
+ millis [0] INTEGER (1..999) OPTIONAL,
+ micros [1] INTEGER (1..999) OPTIONAL
+ }
+
+
+
+ Implementation of the Archive Timestamp type defined in RFC4998.
+ @see RFC 4998
+
+ ASN.1 Archive Timestamp
+
+ ArchiveTimeStamp ::= SEQUENCE {
+ digestAlgorithm [Ø] AlgorithmIdentifier OPTIONAL,
+ attributes [1] Attributes OPTIONAL,
+ reducedHashtree [2] SEQUENCE OF PartialHashtree OPTIONAL,
+ timeStamp ContentInfo}
+
+ PartialHashtree ::= SEQUENCE OF OCTET STRING
+
+ Attributes ::= SET SIZE (1..MAX) OF Attribute
+
+
+ Return an ArchiveTimestamp from the given object.
+
+ @param obj the object we want converted.
+ @return an ArchiveTimestamp instance, or null.
+ @throws IllegalArgumentException if the object cannot be converted.
+
+
+ Return the contents of the digestAlgorithm field - null if not set.
+
+ @return the contents of the digestAlgorithm field, or null if not set.
+
+
+ Return the first node in the reduced hash tree which contains the leaf node.
+
+ @return the node containing the data hashes, null if no reduced hash tree is present.
+
+
+ Implementation of ArchiveTimeStampChain type, as defined in RFC4998 and RFC6283.
+
+ An ArchiveTimeStampChain corresponds to a SEQUENCE OF ArchiveTimeStamps, and has the following
+ ASN.1 Syntax:
+
+ ArchiveTimeStampChain ::= SEQUENCE OF ArchiveTimeStamp
+
+
+ Return an ArchiveTimeStampChain from the given object.
+
+ @param obj the object we want converted.
+ @return an ArchiveTimeStampChain instance, or null.
+ @throws IllegalArgumentException if the object cannot be converted.
+
+
+ Adds an {@link ArchiveTimeStamp} object to the archive timestamp chain.
+
+ @param archiveTimeStamp the {@link ArchiveTimeStamp} to add.
+ @return returns the modified chain.
+
+
+ Implementation of ArchiveTimeStampSequence type, as defined in RFC4998.
+
+ An ArchiveTimeStampSequence corresponds to a SEQUENCE OF ArchiveTimeStampChains and has the
+ following ASN.1 Syntax:
+
+ ArchiveTimeStampSequence ::= SEQUENCE OF ArchiveTimeStampChain
+
+
+ Return an ArchiveTimestampSequence from the given object.
+
+ @param obj the object we want converted.
+ @return an ArchiveTimeStampSequence instance, or null.
+ @throws IllegalArgumentException if the object cannot be converted.
+
+
+ Returns the sequence of ArchiveTimeStamp chains that compose the ArchiveTimeStamp sequence.
+
+ @return the {@link ASN1Sequence} containing the ArchiveTimeStamp chains.
+
+
+ Adds an {@link ArchiveTimeStampChain} to the ArchiveTimeStamp sequence.
+
+ @param chain the {@link ArchiveTimeStampChain} to add
+ @return returns the modified sequence.
+
+
+ Implementation of the CryptoInfos element defined in RFC 4998:
+
+ CryptoInfos ::= SEQUENCE SIZE (1..MAX) OF Attribute
+
+
+ Implementation of the EncryptionInfo element defined in RFC 4998:
+
+ 1988 ASN.1 EncryptionInfo
+
+ EncryptionInfo ::= SEQUENCE {
+ encryptionInfoType OBJECT IDENTIFIER,
+ encryptionInfoValue ANY DEFINED BY encryptionInfoType
+ }
+
+ 1997-ASN.1 EncryptionInfo
+
+ EncryptionInfo ::= SEQUENCE {
+ encryptionInfoType ENCINFO-TYPE.&id
+ ({SupportedEncryptionAlgorithms}),
+ encryptionInfoValue ENCINFO-TYPE.&Type
+ ({SupportedEncryptionAlgorithms}{@encryptionInfoType})
+ }
+
+ ENCINFO-TYPE ::= TYPE-IDENTIFIER
+
+ SupportedEncryptionAlgorithms ENCINFO-TYPE ::= {...}
+
+
+ The OID for EncryptionInfo type.
+
+
+ The value of EncryptionInfo
+
+
+ RFC 4998:
+ Evidence Record Syntax (ERS)
+
+
+ EvidenceRecord ::= SEQUENCE {
+ version INTEGER { v1(1) } ,
+ digestAlgorithms SEQUENCE OF AlgorithmIdentifier,
+ cryptoInfos [0] CryptoInfos OPTIONAL,
+ encryptionInfo [1] EncryptionInfo OPTIONAL,
+ archiveTimeStampSequence ArchiveTimeStampSequence
+ }
+
+ CryptoInfos ::= SEQUENCE SIZE (1..MAX) OF Attribute
+
+
+
+ ERS {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) ltans(11)
+ id-mod(0) id-mod-ers88(2) id-mod-ers88-v1(1) }
+
+
+ Return an EvidenceRecord from the given object.
+
+ @param obj the object we want converted.
+ @return an EvidenceRecord instance, or null.
+ @throws IllegalArgumentException if the object cannot be converted.
+
+
+ Build a basic evidence record from an initial
+ ArchiveTimeStamp.
+
+ @param cryptoInfos
+ @param encryptionInfo
+ @param archiveTimeStamp
+
+
+ Return a new EvidenceRecord with an added ArchiveTimeStamp
+
+ @param ats the archive timestamp to add
+ @param newChain states whether this new archive timestamp must be added as part of a
+ new sequence (i.e. in the case of hashtree renewal) or not (i.e. in the case of timestamp
+ renewal)
+ @return the new EvidenceRecord
+
+
+
+ MessageImprint ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashedMessage OCTET STRING }
+
+
+
+ Implementation of PartialHashtree, as defined in RFC 4998.
+
+ The ASN.1 notation for a PartialHashTree is:
+
+ PartialHashtree ::= SEQUENCE OF OCTET STRING
+
+
+ Return a PartialHashtree from the given object.
+
+ @param obj the object we want converted.
+ @return a PartialHashtree instance, or null.
+ @throws IllegalArgumentException if the object cannot be converted.
+
+
+ Hash values that constitute the hash tree, as ASN.1 Octet Strings.
+
+
+
+ TimeStampReq ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ messageImprint MessageImprint,
+ --a hash algorithm OID and the hash value of the data to be
+ --time-stamped
+ reqPolicy TSAPolicyId OPTIONAL,
+ nonce INTEGER OPTIONAL,
+ certReq BOOLEAN DEFAULT FALSE,
+ extensions [0] IMPLICIT Extensions OPTIONAL
+ }
+
+
+
+
+ TimeStampResp ::= SEQUENCE {
+ status PkiStatusInfo,
+ timeStampToken TimeStampToken OPTIONAL }
+
+
+
+
+
+ TstInfo ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ policy TSAPolicyId,
+ messageImprint MessageImprint,
+ -- MUST have the same value as the similar field in
+ -- TimeStampReq
+ serialNumber INTEGER,
+ -- Time-Stamping users MUST be ready to accommodate integers
+ -- up to 160 bits.
+ genTime GeneralizedTime,
+ accuracy Accuracy OPTIONAL,
+ ordering BOOLEAN DEFAULT FALSE,
+ nonce INTEGER OPTIONAL,
+ -- MUST be present if the similar field was present
+ -- in TimeStampReq. In that case it MUST have the same value.
+ tsa [0] GeneralName OPTIONAL,
+ extensions [1] IMPLICIT Extensions OPTIONAL }
+
+
+
+
+ Ukrainian object identifiers
+
+ {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) pki(1)}
+
+ { ... pki-alg(1) pki-alg-sym(3) Dstu4145WithGost34311(1) PB(1)}
+
+ DSTU4145 in polynomial basis has 2 oids, one for little-endian representation and one for big-endian
+
+
+ Base OID: 1.2.804.2.1.1.1
+
+
+ DSTU4145 Little Endian presentation. OID: 1.2.804.2.1.1.1.1.3.1.1
+
+
+ DSTU4145 Big Endian presentation. OID: 1.2.804.2.1.1.1.1.3.1.1.1
+
+
+ DSTU7564 256-bit digest presentation.
+
+
+ DSTU7564 384-bit digest presentation.
+
+
+ DSTU7564 512-bit digest presentation.
+
+
+ DSTU7564 256-bit mac presentation.
+
+
+ DSTU7564 384-bit mac presentation.
+
+
+ DSTU7564 512-bit mac presentation.
+
+
+ DSTU7624 in ECB mode with 128 bit block/key presentation
+
+
+ DSTU7624 in ECB mode with 256 bit block/key presentation
+
+
+ DSTU7624 in ECB mode with 512 bit block/key presentation
+
+
+ DSTU7624 in CTR mode with 128 bit block/key presentation
+
+
+ DSTU7624 in CTR mode with 256 bit block/key presentation
+
+
+ DSTU7624 in CTR mode with 512 bit block/key presentation
+
+
+ DSTU7624 in CFB mode with 128 bit block/key presentation
+
+
+ DSTU7624 in CFB mode with 256 bit block/key presentation
+
+
+ DSTU7624 in CFB mode with 512 bit block/key presentation
+
+
+ DSTU7624 in MAC mode with 128 bit block/key presentation
+
+
+ DSTU7624 in MAC mode with 256 bit block/key presentation
+
+
+ DSTU7624 in MAC mode with 512 bit block/key presentation
+
+
+ DSTU7624 in CBC mode with 128 bit block/key presentation
+
+
+ DSTU7624 in CBC mode with 256 bit block/key presentation
+
+
+ DSTU7624 in CBC mode with 512 bit block/key presentation
+
+
+ DSTU7624 in OFB mode with 128 bit block/key presentation
+
+
+ DSTU7624 in OFB mode with 256 bit block/key presentation
+
+
+ DSTU7624 in OFB mode with 512 bit block/key presentation
+
+
+ DSTU7624 in GMAC (GCM witout encryption) mode with 128 bit block/key presentation
+
+
+ DSTU7624 in GMAC (GCM witout encryption) mode with 256 bit block/key presentation
+
+
+ DSTU7624 in GMAC (GCM witout encryption) mode with 512 bit block/key presentation
+
+
+ DSTU7624 in CCM mode with 128 bit block/key presentation
+
+
+ DSTU7624 in CCM mode with 256 bit block/key presentation
+
+
+ DSTU7624 in CCM mode with 512 bit block/key presentation
+
+
+ DSTU7624 in XTS mode with 128 bit block/key presentation
+
+
+ DSTU7624 in XTS mode with 256 bit block/key presentation
+
+
+ DSTU7624 in XTS mode with 512 bit block/key presentation
+
+
+ DSTU7624 in key wrap (KW) mode with 128 bit block/key presentation
+
+
+ DSTU7624 in key wrap (KW) mode with 256 bit block/key presentation
+
+
+ DSTU7624 in key wrap (KW) mode with 512 bit block/key presentation
+
+
+ dump a Der object as a formatted string with indentation
+
+ @param obj the Asn1Object to be dumped out.
+
+
+ Parse ASN.1 objects from input , and write them to the output.
+
+
+ dump out a DER object as a formatted string, in non-verbose mode
+
+ @param obj the Asn1Encodable to be dumped out.
+ @return the resulting string.
+
+
+ Dump out the object as a string
+
+ @param obj the Asn1Encodable to be dumped out.
+ @param verbose if true, dump out the contents of octet and bit strings.
+ @return the resulting string.
+
+
+ Holding class for the AttributeTypeAndValue structures that make up an RDN.
+
+
+
+ AttributeTypeAndValue ::= SEQUENCE {
+ type OBJECT IDENTIFIER,
+ value ANY DEFINED BY type }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ DirectoryString ::= CHOICE {
+ teletexString TeletexString (SIZE (1..MAX)),
+ printableString PrintableString (SIZE (1..MAX)),
+ universalString UniversalString (SIZE (1..MAX)),
+ utf8String UTF8String (SIZE (1..MAX)),
+ bmpString BMPString (SIZE (1..MAX)) }
+
+
+
+ Holding class for a single Relative Distinguished Name (RDN).
+
+
+ Create a single valued RDN.
+
+ @param oid RDN type.
+ @param value RDN value.
+
+
+ Create a multi-valued RDN.
+
+ @param aAndVs attribute type/value pairs making up the RDN
+
+
+ Return the number of AttributeTypeAndValue objects in this RDN,
+
+ @return size of RDN, greater than 1 if multi-valued.
+
+
+ *
+ * RelativeDistinguishedName ::=
+ * SET OF AttributeTypeAndValue
+
+ * AttributeTypeAndValue ::= SEQUENCE {
+ * type AttributeType,
+ * value AttributeValue }
+ *
+ * @return this object as its ASN1Primitive type
+
+
+ The AccessDescription object.
+
+ AccessDescription ::= SEQUENCE {
+ accessMethod OBJECT IDENTIFIER,
+ accessLocation GeneralName }
+
+
+
+ create an AccessDescription with the oid and location provided.
+
+
+
+ @return the access method.
+
+
+
+ @return the access location
+
+
+
+ Return the OID in the Algorithm entry of this identifier.
+
+
+
+
+ Return the parameters structure in the Parameters entry of this identifier.
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AlgorithmIdentifier ::= Sequence {
+ algorithm OBJECT IDENTIFIER,
+ parameters ANY DEFINED BY algorithm OPTIONAL }
+
+
+
+ X.509 Section 9.8.3.
+
+ This extension may be used as a public-key certificate extension, a CRL extension or an AVL extension. It shall contain
+ the algorithm identifier for the alternative digital signature algorithm used by the signer when creating an alternative
+ digital signature and by the relying party when validating the alternative digital signature.
+
+ altSignatureAlgorithm EXTENSION ::= {
+ SYNTAX AltSignatureAlgorithm
+ IDENTIFIED BY id-ce-altSignatureAlgorithm }
+
+ AltSignatureAlgorithm ::= AlgorithmIdentifier{{SupportedAlgorithms}}
+
+ When the altSignatureAlgorithm extension is included in a particular value that is an instance of a data type that
+ supports extensions, the altSignatureValue extension shall also be included.
+
+ NOTE 1 – By having a separate altSignatureAlgorithm extension, instead of having it combined with the
+ altSignatureValue extension, the alternative digital signature algorithm is protected by the alternative signature.
+ This extension may be flagged either as critical or as non-critical.
+
+ NOTE 2 – It is recommended that it be flagged as non-critical. Flagging it as critical would require all relying parties to understand
+ the extension and the alternative public-key algorithms
+
+
+ X.509 Section 9.8.4.
+
+ This extension may be used as a public-key certificate extension, a CRL extension or an AVL extension.
+ This alternative signature shall be created by the issuer using its alternative private key, and it shall be verified using the
+ alternative public key of the issuer.
+
+ altSignatureValue EXTENSION ::= {
+ SYNTAX AltSignatureValue
+ IDENTIFIED BY id-ce-altSignatureValue }
+
+ AltSignatureValue ::= BIT STRING
+
+ This extension can only be created by a signer holding a multiple cryptographic algorithms public-key certificate. When
+ creating the alternative digital signature on an issued public-key certificate or CRL, the signer shall use its alternative
+ private key.
+
+ The procedures for creating and validating alternative digital signatures are specified in:
+
+ - clause 7.2.2 for public-key certificates;
+ - clause 7.10.3 for CRLs: and
+ - clause 11.4 for AVLs.
+
+
+
+
+ Don't use this one if you are trying to be RFC 3281 compliant.
+ Use it for v1 attribute certificates only.
+
+ Our GeneralNames structure
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttCertIssuer ::= CHOICE {
+ v1Form GeneralNames, -- MUST NOT be used in this
+ -- profile
+ v2Form [0] V2Form -- v2 only
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttCertValidityPeriod ::= Sequence {
+ notBeforeTime GeneralizedTime,
+ notAfterTime GeneralizedTime
+ }
+
+
+
+ return an Attr object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attr ::= Sequence {
+ attrType OBJECT IDENTIFIER,
+ attrValues Set OF AttributeValue
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttributeCertificate ::= Sequence {
+ acinfo AttributeCertificateInfo,
+ signatureAlgorithm AlgorithmIdentifier,
+ signatureValue BIT STRING
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttributeCertificateInfo ::= Sequence {
+ version AttCertVersion -- version is v2,
+ holder Holder,
+ issuer AttCertIssuer,
+ signature AlgorithmIdentifier,
+ serialNumber CertificateSerialNumber,
+ attrCertValidityPeriod AttCertValidityPeriod,
+ attributes Sequence OF Attr,
+ issuerUniqueID UniqueIdentifier OPTIONAL,
+ extensions Extensions OPTIONAL
+ }
+
+ AttCertVersion ::= Integer { v2(1) }
+
+
+
+ The AuthorityInformationAccess object.
+
+ id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
+
+ AuthorityInfoAccessSyntax ::=
+ Sequence SIZE (1..MAX) OF AccessDescription
+ AccessDescription ::= Sequence {
+ accessMethod OBJECT IDENTIFIER,
+ accessLocation GeneralName }
+
+ id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
+ id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
+ id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
+
+
+
+ create an AuthorityInformationAccess with the oid and location provided.
+
+
+ The AuthorityKeyIdentifier object.
+
+ id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }
+
+ AuthorityKeyIdentifier ::= Sequence {
+ keyIdentifier [0] IMPLICIT KeyIdentifier OPTIONAL,
+ authorityCertIssuer [1] IMPLICIT GeneralNames OPTIONAL,
+ authorityCertSerialNumber [2] IMPLICIT CertificateSerialNumber OPTIONAL }
+
+ KeyIdentifier ::= OCTET STRING
+
+
+
+
+ *
+ * Calulates the keyidentifier using a SHA1 hash over the BIT STRING
+ * from SubjectPublicKeyInfo as defined in RFC2459.
+ *
+ * Example of making a AuthorityKeyIdentifier:
+ *
+ * SubjectPublicKeyInfo apki = new SubjectPublicKeyInfo((ASN1Sequence)new ASN1InputStream(
+ * publicKey.getEncoded()).readObject());
+ * AuthorityKeyIdentifier aki = new AuthorityKeyIdentifier(apki);
+ *
+ *
+ *
+
+
+ create an AuthorityKeyIdentifier with the GeneralNames tag and
+ the serial number provided as well.
+
+
+ create an AuthorityKeyIdentifier with the GeneralNames tag and
+ the serial number provided.
+
+
+ create an AuthorityKeyIdentifier with a precomputed key identifier
+
+
+ create an AuthorityKeyIdentifier with a precomupted key identifier
+ and the GeneralNames tag and the serial number provided as well.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+ create a cA=true object for the given path length constraint.
+
+ @param pathLenConstraint
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ BasicConstraints := Sequence {
+ cA Boolean DEFAULT FALSE,
+ pathLenConstraint Integer (0..MAX) OPTIONAL
+ }
+
+
+
+ PKIX RFC-2459
+
+ The X.509 v2 CRL syntax is as follows. For signature calculation,
+ the data that is to be signed is ASN.1 Der encoded.
+
+
+ CertificateList ::= Sequence {
+ tbsCertList TbsCertList,
+ signatureAlgorithm AlgorithmIdentifier,
+ signatureValue BIT STRING }
+
+
+
+ This class helps to support crossCerfificatePairs in a LDAP directory
+ according RFC 2587
+
+
+ crossCertificatePairATTRIBUTE::={
+ WITH SYNTAX CertificatePair
+ EQUALITY MATCHING RULE certificatePairExactMatch
+ ID joint-iso-ccitt(2) ds(5) attributeType(4) crossCertificatePair(40)}
+
+
+ The forward elements of the crossCertificatePair attribute of a
+ CA's directory entry shall be used to store all, except self-issued
+ certificates issued to this CA. Optionally, the reverse elements of the
+ crossCertificatePair attribute, of a CA's directory entry may contain a
+ subset of certificates issued by this CA to other CAs. When both the forward
+ and the reverse elements are present in a single attribute value, issuer name
+ in one certificate shall match the subject name in the other and vice versa,
+ and the subject public key in one certificate shall be capable of verifying
+ the digital signature on the other certificate and vice versa.
+
+ When a reverse element is present, the forward element value and the reverse
+ element value need not be stored in the same attribute value; in other words,
+ they can be stored in either a single attribute value or two attribute
+ values.
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type CertificatePair:
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param forward Certificates issued to this CA.
+ @param reverse Certificates issued by this CA to other CAs.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+ @return a DERObject
+
+
+ @return Returns the forward.
+
+
+ @return Returns the reverse.
+
+
+ Construct a CertificatePolicies object containing one PolicyInformation.
+
+ @param name the name to be contained.
+
+
+ Produce an object suitable for an ASN1OutputStream.
+
+ CertificatePolicies ::= SEQUENCE SIZE {1..MAX} OF PolicyInformation
+
+
+
+ CertPolicyId, used in the CertificatePolicies and PolicyMappings
+ X509V3 Extensions.
+
+
+ CertPolicyId ::= OBJECT IDENTIFIER
+
+
+
+ Return the distribution points making up the sequence.
+
+ @return DistributionPoint[]
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CrlDistPoint ::= Sequence SIZE {1..MAX} OF DistributionPoint
+
+
+
+ The CRLNumber object.
+
+ CRLNumber::= Integer(0..MAX)
+
+
+
+ The CRLReason enumeration.
+
+ CRLReason ::= Enumerated {
+ unspecified (0),
+ keyCompromise (1),
+ cACompromise (2),
+ affiliationChanged (3),
+ superseded (4),
+ cessationOfOperation (5),
+ certificateHold (6),
+ removeFromCRL (8),
+ privilegeWithdrawn (9),
+ aACompromise (10)
+ }
+
+
+
+ The DigestInfo object.
+
+ DigestInfo::=Sequence{
+ digestAlgorithm AlgorithmIdentifier,
+ digest OCTET STRING }
+
+
+
+ DisplayText class, used in
+ CertificatePolicies X509 V3 extensions (in policy qualifiers).
+
+ It stores a string in a chosen encoding.
+
+ DisplayText ::= CHOICE {
+ ia5String IA5String (SIZE (1..200)),
+ visibleString VisibleString (SIZE (1..200)),
+ bmpString BMPString (SIZE (1..200)),
+ utf8String UTF8String (SIZE (1..200)) }
+
+ @see PolicyQualifierInfo
+ @see PolicyInformation
+
+
+ Constant corresponding to ia5String encoding.
+
+
+
+ Constant corresponding to bmpString encoding.
+
+
+
+ Constant corresponding to utf8String encoding.
+
+
+
+ Constant corresponding to visibleString encoding.
+
+
+
+ Describe constant DisplayTextMaximumSize here.
+
+
+
+ Creates a new DisplayText instance.
+
+ @param type the desired encoding type for the text.
+ @param text the text to store. Strings longer than 200
+ characters are truncated.
+
+
+ Creates a new DisplayText instance.
+
+ @param text the text to encapsulate. Strings longer than 200
+ characters are truncated.
+
+
+ Creates a new DisplayText instance.
+ Useful when reading back a DisplayText class
+ from it's Asn1Encodable form.
+
+ @param contents an Asn1Encodable instance.
+
+
+ Returns the stored string object.
+
+ @return the stored text as a string.
+
+
+ The DistributionPoint object.
+
+ DistributionPoint ::= Sequence {
+ distributionPoint [0] DistributionPointName OPTIONAL,
+ reasons [1] ReasonFlags OPTIONAL,
+ cRLIssuer [2] GeneralNames OPTIONAL
+ }
+
+
+
+ The DistributionPointName object.
+
+ DistributionPointName ::= CHOICE {
+ fullName [0] GeneralNames,
+ nameRelativeToCRLIssuer [1] RDN
+ }
+
+
+
+ The extendedKeyUsage object.
+
+ extendedKeyUsage ::= Sequence SIZE (1..MAX) OF KeyPurposeId
+
+
+
+ Returns all extended key usages.
+ The returned ArrayList contains DerObjectIdentifier instances.
+ @return An ArrayList with all key purposes.
+
+
+ The GeneralName object.
+
+ GeneralName ::= CHOICE {
+ otherName [0] OtherName,
+ rfc822Name [1] IA5String,
+ dNSName [2] IA5String,
+ x400Address [3] ORAddress,
+ directoryName [4] Name,
+ ediPartyName [5] EDIPartyName,
+ uniformResourceIdentifier [6] IA5String,
+ iPAddress [7] OCTET STRING,
+ registeredID [8] OBJECT IDENTIFIER}
+
+ OtherName ::= Sequence {
+ type-id OBJECT IDENTIFIER,
+ value [0] EXPLICIT ANY DEFINED BY type-id }
+
+ EDIPartyName ::= Sequence {
+ nameAssigner [0] DirectoryString OPTIONAL,
+ partyName [1] DirectoryString }
+
+
+
+ When the subjectAltName extension contains an Internet mail address,
+ the address MUST be included as an rfc822Name. The format of an
+ rfc822Name is an "addr-spec" as defined in RFC 822 [RFC 822].
+
+ When the subjectAltName extension contains a domain name service
+ label, the domain name MUST be stored in the dNSName (an IA5String).
+ The name MUST be in the "preferred name syntax," as specified by RFC
+ 1034 [RFC 1034].
+
+ When the subjectAltName extension contains a URI, the name MUST be
+ stored in the uniformResourceIdentifier (an IA5String). The name MUST
+ be a non-relative URL, and MUST follow the URL syntax and encoding
+ rules specified in [RFC 1738]. The name must include both a scheme
+ (e.g., "http" or "ftp") and a scheme-specific-part. The scheme-
+ specific-part must include a fully qualified domain name or IP
+ address as the host.
+
+ When the subjectAltName extension contains a iPAddress, the address
+ MUST be stored in the octet string in "network byte order," as
+ specified in RFC 791 [RFC 791]. The least significant bit (LSB) of
+ each octet is the LSB of the corresponding byte in the network
+ address. For IP Version 4, as specified in RFC 791, the octet string
+ MUST contain exactly four octets. For IP Version 6, as specified in
+ RFC 1883, the octet string MUST contain exactly sixteen octets [RFC
+ 1883].
+
+
+ Create a GeneralName for the given tag from the passed in string.
+
+ This constructor can handle:
+
+ - rfc822Name
+ - iPAddress
+ - directoryName
+ - dNSName
+ - uniformResourceIdentifier
+ - registeredID
+
+ For x400Address, otherName and ediPartyName there is no common string
+ format defined.
+
+ Note: A directory name can be encoded in different ways into a byte
+ representation. Be aware of this if the byte representation is used for
+ comparing results.
+
+
+ @param tag tag number
+ @param name string representation of name
+ @throws ArgumentException if the string encoding is not correct or
+ not supported.
+
+
+ Construct a GeneralNames object containing one GeneralName.
+ The name to be contained.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ GeneralNames ::= Sequence SIZE {1..MAX} OF GeneralName
+
+
+
+ Class for containing a restriction object subtrees in NameConstraints. See
+ RFC 3280.
+
+
+
+ GeneralSubtree ::= SEQUENCE
+ {
+ baseName GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.NameConstraints
+
+
+
+ Constructor from a given details.
+
+ According RFC 3280, the minimum and maximum fields are not used with any
+ name forms, thus minimum MUST be zero, and maximum MUST be absent.
+
+ If minimum is null, zero is assumed, if
+ maximum is null, maximum is absent.
+
+ @param baseName
+ A restriction.
+ @param minimum
+ Minimum
+
+ @param maximum
+ Maximum
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ GeneralSubtree ::= SEQUENCE
+ {
+ baseName GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL
+ }
+
+
+ @return a DERObject
+
+
+ The Holder object.
+
+ For an v2 attribute certificate this is:
+
+
+ Holder ::= SEQUENCE {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+ For an v1 attribute certificate this is:
+
+
+ subject CHOICE {
+ baseCertificateID [0] EXPLICIT IssuerSerial,
+ -- associated with a Public Key Certificate
+ subjectName [1] EXPLICIT GeneralNames },
+ -- associated with a name
+
+
+
+
+ Constructor for a holder for an v1 attribute certificate.
+
+ @param tagObj The ASN.1 tagged holder object.
+
+
+ Constructor for a holder for an v2 attribute certificate. *
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructs a holder from a IssuerSerial.
+ @param baseCertificateID The IssuerSerial.
+ @param version The version of the attribute certificate.
+
+
+ Returns 1 for v2 attribute certificates or 0 for v1 attribute
+ certificates.
+ @return The version of the attribute certificate.
+
+
+ Constructs a holder with an entityName for v2 attribute certificates or
+ with a subjectName for v1 attribute certificates.
+
+ @param entityName The entity or subject name.
+
+
+ Constructs a holder with an entityName for v2 attribute certificates or
+ with a subjectName for v1 attribute certificates.
+
+ @param entityName The entity or subject name.
+ @param version The version of the attribute certificate.
+
+
+ Constructs a holder from an object digest info.
+
+ @param objectDigestInfo The object digest info object.
+
+
+ Returns the entityName for an v2 attribute certificate or the subjectName
+ for an v1 attribute certificate.
+
+ @return The entityname or subjectname.
+
+
+ The Holder object.
+
+ Holder ::= Sequence {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+ Implementation of IetfAttrSyntax as specified by RFC3281.
+
+
+
+
+
+
+
+
+ IetfAttrSyntax ::= Sequence {
+ policyAuthority [0] GeneralNames OPTIONAL,
+ values Sequence OF CHOICE {
+ octets OCTET STRING,
+ oid OBJECT IDENTIFIER,
+ string UTF8String
+ }
+ }
+
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ IssuerSerial ::= Sequence {
+ issuer GeneralNames,
+ serial CertificateSerialNumber,
+ issuerUid UniqueIdentifier OPTIONAL
+ }
+
+
+
+
+ IssuingDistributionPoint ::= SEQUENCE {
+ distributionPoint [0] DistributionPointName OPTIONAL,
+ onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
+ onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
+ onlySomeReasons [3] ReasonFlags OPTIONAL,
+ indirectCRL [4] BOOLEAN DEFAULT FALSE,
+ onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
+
+
+
+ Constructor from given details.
+
+ @param distributionPoint
+ May contain an URI as pointer to most current CRL.
+ @param onlyContainsUserCerts Covers revocation information for end certificates.
+ @param onlyContainsCACerts Covers revocation information for CA certificates.
+
+ @param onlySomeReasons
+ Which revocation reasons does this point cover.
+ @param indirectCRL
+ If true then the CRL contains revocation
+ information about certificates ssued by other CAs.
+ @param onlyContainsAttributeCerts Covers revocation information for attribute certificates.
+
+
+ Constructor from Asn1Sequence
+
+
+ @return Returns the distributionPoint.
+
+
+ @return Returns the onlySomeReasons.
+
+
+ The KeyPurposeID object.
+
+ KeyPurposeID ::= OBJECT IDENTIFIER
+
+
+
+ Microsoft Server Gated Crypto (msSGC).
+ see https://www.alvestrand.no/objectid/1.3.6.1.4.1.311.10.3.3.html
+
+
+ Netscape Server Gated Crypto (nsSGC).
+ see https://www.alvestrand.no/objectid/2.16.840.1.113730.4.1.html
+
+
+ The KeyUsage object.
+
+ id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
+
+ KeyUsage ::= BIT STRING {
+ digitalSignature (0),
+ nonRepudiation (1),
+ keyEncipherment (2),
+ dataEncipherment (3),
+ keyAgreement (4),
+ keyCertSign (5),
+ cRLSign (6),
+ encipherOnly (7),
+ decipherOnly (8) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (KeyUsage.keyEncipherment | KeyUsage.dataEncipherment)
+
+
+ Constructor from a given details.
+
+ permitted and excluded are Vectors of GeneralSubtree objects.
+
+ @param permitted Permitted subtrees
+ @param excluded Excluded subtrees
+
+
+ NoticeReference class, used in
+ CertificatePolicies X509 V3 extensions
+ (in policy qualifiers).
+
+
+ NoticeReference ::= Sequence {
+ organization DisplayText,
+ noticeNumbers Sequence OF Integer }
+
+
+
+ @see PolicyQualifierInfo
+ @see PolicyInformation
+
+
+ Creates a new NoticeReference instance.
+
+ @param organization a String value
+ @param numbers a Vector value
+
+
+ Creates a new NoticeReference instance.
+
+ @param organization a String value
+ @param noticeNumbers an ASN1EncodableVector value
+
+
+ Creates a new NoticeReference instance.
+
+ @param organization displayText
+ @param noticeNumbers an ASN1EncodableVector value
+
+
+ Creates a new NoticeReference instance.
+ Useful for reconstructing a NoticeReference
+ instance from its encodable/encoded form.
+
+ @param as an Asn1Sequence value obtained from either
+ calling @{link ToAsn1Object()} for a NoticeReference
+ instance or from parsing it from a Der-encoded stream.
+
+
+ Describe ToAsn1Object method here.
+
+ @return a Asn1Object value
+
+
+ ObjectDigestInfo ASN.1 structure used in v2 attribute certificates.
+
+
+
+ ObjectDigestInfo ::= SEQUENCE {
+ digestedObjectType ENUMERATED {
+ publicKey (0),
+ publicKeyCert (1),
+ otherObjectTypes (2) },
+ -- otherObjectTypes MUST NOT
+ -- be used in this profile
+ otherObjectTypeID OBJECT IDENTIFIER OPTIONAL,
+ digestAlgorithm AlgorithmIdentifier,
+ objectDigest BIT STRING
+ }
+
+
+
+
+
+ The public key is hashed.
+
+
+ The public key certificate is hashed.
+
+
+ An other object is hashed.
+
+
+ Constructor from given details.
+
+ If digestedObjectType is not {@link #publicKeyCert} or
+ {@link #publicKey} otherObjectTypeID must be given,
+ otherwise it is ignored.
+
+ @param digestedObjectType The digest object type.
+ @param otherObjectTypeID The object type ID for
+ otherObjectDigest.
+ @param digestAlgorithm The algorithm identifier for the hash.
+ @param objectDigest The hash value.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+
+ ObjectDigestInfo ::= SEQUENCE {
+ digestedObjectType ENUMERATED {
+ publicKey (0),
+ publicKeyCert (1),
+ otherObjectTypes (2) },
+ -- otherObjectTypes MUST NOT
+ -- be used in this profile
+ otherObjectTypeID OBJECT IDENTIFIER OPTIONAL,
+ digestAlgorithm AlgorithmIdentifier,
+ objectDigest BIT STRING
+ }
+
+
+
+
+ The OtherName object.
+
+ OtherName ::= SEQUENCE {
+ type-id OBJECT IDENTIFIER,
+ value [0] EXPLICIT ANY DEFINED BY type-id }
+
+
+
+ OtherName factory method.
+ @param obj the object used to construct an instance of
+ OtherName. It must be an instance of OtherName
+ or ASN1Sequence.
+ @return the instance of OtherName built from the
+ supplied object.
+ @throws java.lang.IllegalArgumentException if the object passed
+ to the factory is not an instance of OtherName or something that
+ can be converted into an appropriate ASN1Sequence.
+
+
+ Base constructor.
+ @param typeID the type of the other name.
+ @param value the ANY object that represents the value.
+
+
+ PolicyMappings V3 extension, described in RFC3280.
+
+ PolicyMappings ::= Sequence SIZE (1..MAX) OF Sequence {
+ issuerDomainPolicy CertPolicyId,
+ subjectDomainPolicy CertPolicyId }
+
+
+ @see RFC 3280, section 4.2.1.6
+
+
+ Creates a new PolicyMappings instance.
+
+ @param seq an Asn1Sequence constructed as specified
+ in RFC 3280
+
+
+ Creates a new PolicyMappings instance.
+
+ @param mappings a HashMap value that maps
+ string oids
+ to other string oids.
+
+
+ PolicyQualifierId, used in the CertificatePolicies
+ X509V3 extension.
+
+
+ id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
+ id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 }
+ id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 }
+ PolicyQualifierId ::=
+ OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
+
+
+
+ Policy qualifiers, used in the X509V3 CertificatePolicies
+ extension.
+
+
+ PolicyQualifierInfo ::= Sequence {
+ policyQualifierId PolicyQualifierId,
+ qualifier ANY DEFINED BY policyQualifierId }
+
+
+
+ Creates a new PolicyQualifierInfo instance.
+
+ @param policyQualifierId a PolicyQualifierId value
+ @param qualifier the qualifier, defined by the above field.
+
+
+ Creates a new PolicyQualifierInfo containing a
+ cPSuri qualifier.
+
+ @param cps the CPS (certification practice statement) uri as a
+ string.
+
+
+ Creates a new PolicyQualifierInfo instance.
+
+ @param as PolicyQualifierInfo X509 structure
+ encoded as an Asn1Sequence.
+
+
+ Returns a Der-encodable representation of this instance.
+
+ @return a Asn1Object value
+
+
+
+
+ PrivateKeyUsagePeriod ::= SEQUENCE
+ {
+ notBefore [0] GeneralizedTime OPTIONAL,
+ notAfter [1] GeneralizedTime OPTIONAL }
+
+
+
+
+ The BiometricData object.
+
+ BiometricData ::= SEQUENCE {
+ typeOfBiometricData TypeOfBiometricData,
+ hashAlgorithm AlgorithmIdentifier,
+ biometricDataHash OCTET STRING,
+ sourceDataUri IA5String OPTIONAL }
+
+
+
+ The Iso4217CurrencyCode object.
+
+ Iso4217CurrencyCode ::= CHOICE {
+ alphabetic PrintableString (SIZE 3), --Recommended
+ numeric INTEGER (1..999) }
+ -- Alphabetic or numeric currency code as defined in ISO 4217
+ -- It is recommended that the Alphabetic form is used
+
+
+
+ The MonetaryValue object.
+
+ MonetaryValue ::= SEQUENCE {
+ currency Iso4217CurrencyCode,
+ amount INTEGER,
+ exponent INTEGER }
+ -- value = amount * 10^exponent
+
+
+
+ The QCStatement object.
+
+ QCStatement ::= SEQUENCE {
+ statementId OBJECT IDENTIFIER,
+ statementInfo ANY DEFINED BY statementId OPTIONAL}
+
+
+
+ The SemanticsInformation object.
+
+ SemanticsInformation ::= SEQUENCE {
+ semanticsIdentifier OBJECT IDENTIFIER OPTIONAL,
+ nameRegistrationAuthorities NameRegistrationAuthorities
+ OPTIONAL }
+ (WITH COMPONENTS {..., semanticsIdentifier PRESENT}|
+ WITH COMPONENTS {..., nameRegistrationAuthorities PRESENT})
+
+ NameRegistrationAuthorities ::= SEQUENCE SIZE (1..MAX) OF
+ GeneralName
+
+
+
+ The TypeOfBiometricData object.
+
+ TypeOfBiometricData ::= CHOICE {
+ predefinedBiometricType PredefinedBiometricType,
+ biometricDataOid OBJECT IDENTIFIER }
+
+ PredefinedBiometricType ::= INTEGER {
+ picture(0),handwritten-signature(1)}
+ (picture|handwritten-signature)
+
+
+
+ The ReasonFlags object.
+
+ ReasonFlags ::= BIT STRING {
+ unused(0),
+ keyCompromise(1),
+ cACompromise(2),
+ affiliationChanged(3),
+ superseded(4),
+ cessationOfOperation(5),
+ certficateHold(6)
+ }
+
+
+
+ @param reasons - the bitwise OR of the Key Reason flags giving the
+ allowed uses for the key.
+
+
+ Implementation of the RoleSyntax object as specified by the RFC3281.
+
+
+ RoleSyntax ::= SEQUENCE {
+ roleAuthority [0] GeneralNames OPTIONAL,
+ roleName [1] GeneralName
+ }
+
+
+
+ RoleSyntax factory method.
+ @param obj the object used to construct an instance of
+ RoleSyntax. It must be an instance of RoleSyntax
+ or Asn1Sequence.
+ @return the instance of RoleSyntax built from the
+ supplied object.
+ @throws java.lang.ArgumentException if the object passed
+ to the factory is not an instance of RoleSyntax or
+ Asn1Sequence.
+
+
+ Constructor.
+ @param roleAuthority the role authority of this RoleSyntax.
+ @param roleName the role name of this RoleSyntax.
+
+
+ Constructor. Invoking this constructor is the same as invoking
+ new RoleSyntax(null, roleName).
+ @param roleName the role name of this RoleSyntax.
+
+
+ Utility constructor. Takes a string argument representing
+ the role name, builds a GeneralName to hold the role name
+ and calls the constructor that takes a GeneralName.
+ @param roleName
+
+
+ Constructor that builds an instance of RoleSyntax by
+ extracting the encoded elements from the Asn1Sequence
+ object supplied.
+ @param seq an instance of Asn1Sequence that holds
+ the encoded elements used to build this RoleSyntax.
+
+
+ Gets the role authority of this RoleSyntax.
+ @return an instance of GeneralNames holding the
+ role authority of this RoleSyntax.
+
+
+ Gets the role name of this RoleSyntax.
+ @return an instance of GeneralName holding the
+ role name of this RoleSyntax.
+
+
+ Gets the role name as a java.lang.string object.
+ @return the role name of this RoleSyntax represented as a
+ string object.
+
+
+ Gets the role authority as a string[] object.
+ @return the role authority of this RoleSyntax represented as a
+ string[] array.
+
+
+ Implementation of the method ToAsn1Object as
+ required by the superclass ASN1Encodable.
+
+
+ RoleSyntax ::= SEQUENCE {
+ roleAuthority [0] GeneralNames OPTIONAL,
+ roleName [1] GeneralName
+ }
+
+
+
+ This outputs the key in Pkcs1v2 format.
+
+ RSAPublicKey ::= Sequence {
+ modulus Integer, -- n
+ publicExponent Integer, -- e
+ }
+
+
+
+ Structure for a name or pseudonym.
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @see org.bouncycastle.asn1.x509.sigi.PersonalData
+
+
+
+ Constructor from DERString.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+ @param pseudonym pseudonym value to use.
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param pseudonym The pseudonym.
+
+
+ Constructor from a given details.
+
+ @param surname The surname.
+ @param givenName A sequence of directory strings making up the givenName
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @return an Asn1Object
+
+
+ Contains personal data for the otherName field in the subjectAltNames
+ extension.
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.sigi.NameOrPseudonym
+ @see org.bouncycastle.asn1.x509.sigi.SigIObjectIdentifiers
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param nameOrPseudonym Name or pseudonym.
+ @param nameDistinguisher Name distinguisher.
+ @param dateOfBirth Date of birth.
+ @param placeOfBirth Place of birth.
+ @param gender Gender.
+ @param postalAddress Postal Address.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ Object Identifiers of SigI specifciation (German Signature Law
+ Interoperability specification).
+
+
+ Key purpose IDs for German SigI (Signature Interoperability
+ Specification)
+
+
+ Certificate policy IDs for German SigI (Signature Interoperability
+ Specification)
+
+
+ Other Name IDs for German SigI (Signature Interoperability Specification)
+
+
+ To be used for for the generation of directory service certificates.
+
+
+ ID for PersonalData
+
+
+ Certificate is conform to german signature law.
+
+
+ X.509 Section 9.8.2.
+
+ This public-key certificate extension, when present, shall contain the subject’s alternative public key information
+
+ subjectAltPublicKeyInfo EXTENSION ::= {
+ SYNTAX SubjectAltPublicKeyInfo
+ IDENTIFIED BY id-ce-subjectAltPublicKeyInfo }
+
+ SubjectAltPublicKeyInfo ::= SEQUENCE {
+ algorithm AlgorithmIdentifier{{SupportedAlgorithms}},
+ subjectAltPublicKey BIT STRING }
+
+ The SubjectAltPublicKeyInfo data type has the following components:
+
+ - the algorithm subcomponent, which shall hold the algorithm that this public key is an instance of
+ - the subjectAltPublicKey subcomponent, which shall hold the alternative public key
+
+ This extension may be flagged as critical or as non-critical.
+
+ NOTE – It is recommended that it be flagged as non-critical. Flagging it as critical would require relying parties to understand this
+ extension and the alternative public-key algorithm.
+
+
+ This extension may contain further X.500 attributes of the subject. See also
+ RFC 3039.
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @see org.bouncycastle.asn1.x509.X509Name for AttributeType ObjectIdentifiers.
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type SubjectDirectoryAttributes:
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @param seq
+ The ASN.1 sequence.
+
+
+ Constructor from an ArrayList of attributes.
+
+ The ArrayList consists of attributes of type {@link Attribute Attribute}
+
+ @param attributes The attributes.
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @return a DERObject
+
+
+ @return Returns the attributes.
+
+
+ The SubjectKeyIdentifier object.
+
+ SubjectKeyIdentifier::= OCTET STRING
+
+
+
+ Calculates the keyIdentifier using a SHA1 hash over the BIT STRING
+ from SubjectPublicKeyInfo as defined in RFC3280.
+
+ @param spki the subject public key info.
+
+
+ Return a RFC 3280 type 1 key identifier. As in:
+
+ (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the
+ value of the BIT STRING subjectPublicKey (excluding the tag,
+ length, and number of unused bits).
+
+ @param keyInfo the key info object containing the subjectPublicKey field.
+ @return the key identifier.
+
+
+ Return a RFC 3280 type 2 key identifier. As in:
+
+ (2) The keyIdentifier is composed of a four bit type field with
+ the value 0100 followed by the least significant 60 bits of the
+ SHA-1 hash of the value of the BIT STRING subjectPublicKey.
+
+ @param keyInfo the key info object containing the subjectPublicKey field.
+ @return the key identifier.
+
+
+ The object that contains the public key stored in a certficate.
+
+ The GetEncoded() method in the public keys in the JCE produces a DER
+ encoded one of these.
+
+
+ for when the public key is an encoded object - if the bitstring
+ can't be decoded this routine raises an IOException.
+
+ @exception IOException - if the bit string doesn't represent a Der
+ encoded object.
+
+
+ Return the public key as a raw bit string.
+
+
+ Return the public key as a raw bit string.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SubjectPublicKeyInfo ::= Sequence {
+ algorithm AlgorithmIdentifier,
+ publicKey BIT STRING }
+
+
+
+ Target structure used in target information extension for attribute
+ certificates from RFC 3281.
+
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+
+
+ The targetCert field is currently not supported and must not be used
+ according to RFC 3281.
+
+
+ Creates an instance of a Target from the given object.
+
+ obj can be a Target or a {@link Asn1TaggedObject}
+
+ @param obj The object.
+ @return A Target instance.
+ @throws ArgumentException if the given object cannot be
+ interpreted as Target.
+
+
+ Constructor from Asn1TaggedObject.
+
+ @param tagObj The tagged object.
+ @throws ArgumentException if the encoding is wrong.
+
+
+ Constructor from given details.
+
+ Exactly one of the parameters must be not null.
+
+ @param type the choice type to apply to the name.
+ @param name the general name.
+ @throws ArgumentException if type is invalid.
+
+
+ @return Returns the targetGroup.
+
+
+ @return Returns the targetName.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+
+ @return an Asn1Object
+
+
+ Target information extension for attributes certificates according to RFC
+ 3281.
+
+
+ SEQUENCE OF Targets
+
+
+
+
+ Creates an instance of a TargetInformation from the given object.
+
+ obj can be a TargetInformation or a {@link Asn1Sequence}
+
+ @param obj The object.
+ @return A TargetInformation instance.
+ @throws ArgumentException if the given object cannot be interpreted as TargetInformation.
+
+
+ Constructor from a Asn1Sequence.
+
+ @param seq The Asn1Sequence.
+ @throws ArgumentException if the sequence does not contain
+ correctly encoded Targets elements.
+
+
+ Returns the targets in this target information extension.
+
+ The ArrayList is cloned before it is returned.
+
+ @return Returns the targets.
+
+
+ Constructs a target information from a single targets element.
+ According to RFC 3281 only one targets element must be produced.
+
+ @param targets A Targets instance.
+
+
+ According to RFC 3281 only one targets element must be produced. If
+ multiple targets are given they must be merged in
+ into one targets element.
+
+ @param targets An array with {@link Targets}.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ SEQUENCE OF Targets
+
+
+
+ According to RFC 3281 only one targets element must be produced. If
+ multiple targets are given in the constructor they are merged into one
+ targets element. If this was produced from a
+ {@link Org.BouncyCastle.Asn1.Asn1Sequence} the encoding is kept.
+
+ @return an Asn1Object
+
+
+ Targets structure used in target information extension for attribute
+ certificates from RFC 3281.
+
+
+ Targets ::= SEQUENCE OF Target
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+ TargetCert ::= SEQUENCE {
+ targetCertificate IssuerSerial,
+ targetName GeneralName OPTIONAL,
+ certDigestInfo ObjectDigestInfo OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.Target
+ @see org.bouncycastle.asn1.x509.TargetInformation
+
+
+ Creates an instance of a Targets from the given object.
+
+ obj can be a Targets or a {@link Asn1Sequence}
+
+ @param obj The object.
+ @return A Targets instance.
+ @throws ArgumentException if the given object cannot be interpreted as Target.
+
+
+ Constructor from Asn1Sequence.
+
+ @param targets The ASN.1 SEQUENCE.
+ @throws ArgumentException if the contents of the sequence are
+ invalid.
+
+
+ Constructor from given targets.
+
+ The ArrayList is copied.
+
+ @param targets An ArrayList of {@link Target}s.
+ @see Target
+ @throws ArgumentException if the ArrayList contains not only Targets.
+
+
+ Returns the targets in an ArrayList.
+
+ The ArrayList is cloned before it is returned.
+
+ @return Returns the targets.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Targets ::= SEQUENCE OF Target
+
+
+ @return an Asn1Object
+
+
+ The TbsCertificate object.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ issuerUniqueID [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ subjectUniqueID [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ extensions [ 3 ] Extensions OPTIONAL
+ }
+
+
+ Note: issuerUniqueID and subjectUniqueID are both deprecated by the IETF. This class
+ will parse them, but you really shouldn't be creating new ones.
+
+
+ PKIX RFC-2459 - TbsCertList object.
+
+ TbsCertList ::= Sequence {
+ version Version OPTIONAL,
+ -- if present, shall be v2
+ signature AlgorithmIdentifier,
+ issuer Name,
+ thisUpdate Time,
+ nextUpdate Time OPTIONAL,
+ revokedCertificates Sequence OF Sequence {
+ userCertificate CertificateSerialNumber,
+ revocationDate Time,
+ crlEntryExtensions Extensions OPTIONAL
+ -- if present, shall be v2
+ } OPTIONAL,
+ crlExtensions [0] EXPLICIT Extensions OPTIONAL
+ -- if present, shall be v2
+ }
+
+
+
+ creates a time object from a given date - if the date is between 1950
+ and 2049 a UTCTime object is Generated, otherwise a GeneralizedTime
+ is used.
+
+
+
+ Return our time as DateTime.
+
+ A date time.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Time ::= CHOICE {
+ utcTime UTCTime,
+ generalTime GeneralizedTime }
+
+
+
+ UserNotice class, used in
+ CertificatePolicies X509 extensions (in policy
+ qualifiers).
+
+ UserNotice ::= Sequence {
+ noticeRef NoticeReference OPTIONAL,
+ explicitText DisplayText OPTIONAL}
+
+
+
+ @see PolicyQualifierId
+ @see PolicyInformation
+
+
+ Creates a new UserNotice instance.
+
+ @param noticeRef a NoticeReference value
+ @param explicitText a DisplayText value
+
+
+ Creates a new UserNotice instance.
+
+ @param noticeRef a NoticeReference value
+ @param str the explicitText field as a string.
+
+
+ Generator for Version 1 TbsCertificateStructures.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ }
+
+
+
+
+ Generator for Version 2 AttributeCertificateInfo
+
+ AttributeCertificateInfo ::= Sequence {
+ version AttCertVersion -- version is v2,
+ holder Holder,
+ issuer AttCertIssuer,
+ signature AlgorithmIdentifier,
+ serialNumber CertificateSerialNumber,
+ attrCertValidityPeriod AttCertValidityPeriod,
+ attributes Sequence OF Attr,
+ issuerUniqueID UniqueIdentifier OPTIONAL,
+ extensions Extensions OPTIONAL
+ }
+
+
+
+
+ @param attribute
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ V2Form ::= Sequence {
+ issuerName GeneralNames OPTIONAL,
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ objectDigestInfo [1] ObjectDigestInfo OPTIONAL
+ -- issuerName MUST be present in this profile
+ -- baseCertificateID and objectDigestInfo MUST NOT
+ -- be present in this profile
+ }
+
+
+
+ Generator for Version 2 TbsCertList structures.
+
+ TbsCertList ::= Sequence {
+ version Version OPTIONAL,
+ -- if present, shall be v2
+ signature AlgorithmIdentifier,
+ issuer Name,
+ thisUpdate Time,
+ nextUpdate Time OPTIONAL,
+ revokedCertificates Sequence OF Sequence {
+ userCertificate CertificateSerialNumber,
+ revocationDate Time,
+ crlEntryExtensions Extensions OPTIONAL
+ -- if present, shall be v2
+ } OPTIONAL,
+ crlExtensions [0] EXPLICIT Extensions OPTIONAL
+ -- if present, shall be v2
+ }
+
+
+ Note: This class may be subject to change
+
+
+ Generator for Version 3 TbsCertificateStructures.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ issuerUniqueID [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ subjectUniqueID [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ extensions [ 3 ] Extensions OPTIONAL
+ }
+
+
+
+
+ an X509Certificate structure.
+
+ Certificate ::= Sequence {
+ tbsCertificate TbsCertificate,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING
+ }
+
+
+
+ The default converter for X509 DN entries when going from their
+ string value to ASN.1 strings.
+
+
+ Apply default conversion for the given value depending on the oid
+ and the character range of the value.
+
+ @param oid the object identifier for the DN entry
+ @param value the value associated with it
+ @return the ASN.1 equivalent for the string value.
+
+
+ an object for the elements in the X.509 V3 extension block.
+
+
+ Convert the value of the passed in extension to an object.
+ The extension to parse.
+ The object the value string contains.
+ If conversion is not possible.
+
+
+ Subject Directory Attributes
+
+
+ Subject Key Identifier
+
+
+ Key Usage
+
+
+ Private Key Usage Period
+
+
+ Subject Alternative Name
+
+
+ Issuer Alternative Name
+
+
+ Basic Constraints
+
+
+ CRL Number
+
+
+ Reason code
+
+
+ Hold Instruction Code
+
+
+ Invalidity Date
+
+
+ Delta CRL indicator
+
+
+ Issuing Distribution Point
+
+
+ Certificate Issuer
+
+
+ Name Constraints
+
+
+ CRL Distribution Points
+
+
+ Certificate Policies
+
+
+ Policy Mappings
+
+
+ Authority Key Identifier
+
+
+ Policy Constraints
+
+
+ Extended Key Usage
+
+
+ Freshest CRL
+
+
+ Inhibit Any Policy
+
+
+ Authority Info Access
+
+
+ Subject Info Access
+
+
+ Logo Type
+
+
+ BiometricInfo
+
+
+ QCStatements
+
+
+ Audit identity extension in attribute certificates.
+
+
+ NoRevAvail extension in attribute certificates.
+
+
+ TargetInformation extension in attribute certificates.
+
+
+ Expired Certificates on CRL extension
+
+
+ the subject’s alternative public key information
+
+
+ the algorithm identifier for the alternative digital signature algorithm.
+
+
+ alternative signature shall be created by the issuer using its alternative private key.
+
+
+ Constructor from Asn1Sequence.
+
+ the extensions are a list of constructed sequences, either with (Oid, OctetString) or (Oid, Boolean, OctetString)
+
+
+ constructor from a table of extensions.
+
+ it's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from a table of extensions with ordering.
+
+ It's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from two vectors
+
+ @param objectIDs an ArrayList of the object identifiers.
+ @param values an ArrayList of the extension values.
+
+
+ return an Enumeration of the extension field's object ids.
+
+
+ return the extension represented by the object identifier
+ passed in.
+
+ @return the extension if it's present, null otherwise.
+
+
+ return the parsed value of the extension represented by the object identifier
+ passed in.
+
+ @return the parsed value of the extension if it's present, null otherwise.
+
+
+
+ Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
+
+ Extension ::= SEQUENCE {
+ extnId EXTENSION.&id ({ExtensionSet}),
+ critical BOOLEAN DEFAULT FALSE,
+ extnValue OCTET STRING }
+
+
+
+ Generator for X.509 extensions
+
+
+ Reset the generator
+
+
+
+ Add an extension with the given oid and the passed in value to be included
+ in the OCTET STRING associated with the extension.
+
+ OID for the extension.
+ True if critical, false otherwise.
+ The ASN.1 object to be included in the extension.
+
+
+
+ Add an extension with the given oid and the passed in byte array to be wrapped
+ in the OCTET STRING associated with the extension.
+
+ OID for the extension.
+ True if critical, false otherwise.
+ The byte array to be wrapped.
+
+
+ Return true if there are no extension present in this generator.
+ True if empty, false otherwise
+
+
+ Generate an X509Extensions object based on the current state of the generator.
+ An X509Extensions object
+
+
+
+ RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
+
+ RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue
+
+ AttributeTypeAndValue ::= SEQUENCE {
+ type OBJECT IDENTIFIER,
+ value ANY }
+
+
+
+ country code - StringType(SIZE(2))
+
+
+ organization - StringType(SIZE(1..64))
+
+
+ organizational unit name - StringType(SIZE(1..64))
+
+
+ Title
+
+
+ common name - StringType(SIZE(1..64))
+
+
+ street - StringType(SIZE(1..64))
+
+
+ device serial number name - StringType(SIZE(1..64))
+
+
+ locality name - StringType(SIZE(1..64))
+
+
+ state, or province name - StringType(SIZE(1..64))
+
+
+ Naming attributes of type X520name
+
+
+ businessCategory - DirectoryString(SIZE(1..128)
+
+
+ postalCode - DirectoryString(SIZE(1..40)
+
+
+ dnQualifier - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 Pseudonym - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 DateOfBirth - GeneralizedTime - YYYYMMDD000000Z
+
+
+ RFC 3039 PlaceOfBirth - DirectoryString(SIZE(1..128)
+
+
+ RFC 3039 DateOfBirth - PrintableString (SIZE(1)) -- "M", "F", "m" or "f"
+
+
+ RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166
+ codes only
+
+
+ RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166
+ codes only
+
+
+ ISIS-MTT NameAtBirth - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 PostalAddress - SEQUENCE SIZE (1..6) OF
+ DirectoryString(SIZE(1..30))
+
+
+ RFC 2256 dmdName
+
+
+ id-at-telephoneNumber
+
+
+ id-at-organizationIdentifier
+
+
+ id-at-name
+
+
+ Email address (RSA PKCS#9 extension) - IA5String.
+ Note: if you're trying to be ultra orthodox, don't use this! It shouldn't be in here.
+
+
+ more from PKCS#9
+
+
+ email address in Verisign certificates
+
+
+ LDAP User id.
+
+
+ determines whether or not strings should be processed and printed
+ from back to front.
+
+
+ default look up table translating OID values into their common symbols following
+ the convention in RFC 2253 with a few extras
+
+
+ look up table translating OID values into their common symbols following the convention in RFC 2253
+
+
+ look up table translating OID values into their common symbols following the convention in RFC 1779
+
+
+
+ look up table translating common symbols into their OIDS.
+
+
+ Return a X509Name based on the passed in tagged object.
+
+ @param obj tag object holding name.
+ @param explicitly true if explicitly tagged false otherwise.
+ @return the X509Name
+
+
+ Constructor from Asn1Sequence
+
+ the principal will be a list of constructed sets, each containing an (OID, string) pair.
+
+
+ Constructor from a table of attributes with ordering.
+
+ it's is assumed the table contains OID/string pairs, and the contents
+ of the table are copied into an internal table as part of the
+ construction process. The ordering ArrayList should contain the OIDs
+ in the order they are meant to be encoded or printed in ToString.
+
+
+ Constructor from a table of attributes with ordering.
+
+ it's is assumed the table contains OID/string pairs, and the contents
+ of the table are copied into an internal table as part of the
+ construction process. The ordering ArrayList should contain the OIDs
+ in the order they are meant to be encoded or printed in ToString.
+
+ The passed in converter will be used to convert the strings into their
+ ASN.1 counterparts.
+
+
+ Takes two vectors one of the oids and the other of the values.
+
+
+ Takes two vectors one of the oids and the other of the values.
+
+ The passed in converter will be used to convert the strings into their
+ ASN.1 counterparts.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes with each
+ string value being converted to its associated ASN.1 type using the passed
+ in converter.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. If reverse
+ is true, create the encoded version of the sequence starting from the
+ last element in the string.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes with each
+ string value being converted to its associated ASN.1 type using the passed
+ in converter. If reverse is true the ASN.1 sequence representing the DN will
+ be built by starting at the end of the string, rather than the start.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. lookUp
+ should provide a table of lookups, indexed by lowercase only strings and
+ yielding a DerObjectIdentifier, other than that OID. and numeric oids
+ will be processed automatically.
+
+ If reverse is true, create the encoded version of the sequence
+ starting from the last element in the string.
+ @param reverse true if we should start scanning from the end (RFC 2553).
+ @param lookUp table of names and their oids.
+ @param dirName the X.500 string to be parsed.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. lookUp
+ should provide a table of lookups, indexed by lowercase only strings and
+ yielding a DerObjectIdentifier, other than that OID. and numeric oids
+ will be processed automatically. The passed in converter is used to convert the
+ string values to the right of each equals sign to their ASN.1 counterparts.
+
+ @param reverse true if we should start scanning from the end, false otherwise.
+ @param lookUp table of names and oids.
+ @param dirName the string dirName
+ @param converter the converter to convert string values into their ASN.1 equivalents
+
+
+ return an IList of the oids in the name, in the order they were found.
+
+
+ return an IList of the values found in the name, in the order they
+ were found.
+
+
+ return an IList of the values found in the name, in the order they
+ were found, with the DN label corresponding to passed in oid.
+
+
+ The X509Name object to test equivalency against.
+ If true, the order of elements must be the same,
+ as well as the values associated with each element.
+
+
+ test for equivalence - note: case is ignored.
+
+
+ convert the structure to a string - if reverse is true the
+ oids and values are listed out starting with the last element
+ in the sequence (ala RFC 2253), otherwise the string will begin
+ with the first element of the structure. If no string definition
+ for the oid is found in oidSymbols the string value of the oid is
+ added. Two standard symbol tables are provided DefaultSymbols, and
+ RFC2253Symbols as part of this class.
+
+ @param reverse if true start at the end of the sequence and work back.
+ @param oidSymbols look up table strings for oids.
+
+
+ * It turns out that the number of standard ways the fields in a DN should be
+ * encoded into their ASN.1 counterparts is rapidly approaching the
+ * number of machines on the internet. By default the X509Name class
+ * will produce UTF8Strings in line with the current recommendations (RFC 3280).
+ *
+ * An example of an encoder look like below:
+ *
+ * public class X509DirEntryConverter
+ * : X509NameEntryConverter
+ * {
+ * public Asn1Object GetConvertedValue(
+ * DerObjectIdentifier oid,
+ * string value)
+ * {
+ * if (str.Length() != 0 && str.charAt(0) == '#')
+ * {
+ * return ConvertHexEncoded(str, 1);
+ * }
+ * if (oid.Equals(EmailAddress))
+ * {
+ * return new DerIA5String(str);
+ * }
+ * else if (CanBePrintable(str))
+ * {
+ * return new DerPrintableString(str);
+ * }
+ * else if (CanBeUTF8(str))
+ * {
+ * return new DerUtf8String(str);
+ * }
+ * else
+ * {
+ * return new DerBmpString(str);
+ * }
+ * }
+ * }
+ *
+ *
+
+
+ Convert an inline encoded hex string rendition of an ASN.1
+ object back into its corresponding ASN.1 object.
+
+ @param str the hex encoded object
+ @param off the index at which the encoding starts
+ @return the decoded object
+
+
+ return true if the passed in string can be represented without
+ loss as a PrintableString, false otherwise.
+
+
+ Convert the passed in string value into the appropriate ASN.1
+ encoded object.
+
+ @param oid the oid associated with the value in the DN.
+ @param value the value of the particular DN component.
+ @return the ASN.1 equivalent for the value.
+
+
+ class for breaking up an X500 Name into it's component tokens, ala
+ java.util.StringTokenizer. We need this class as some of the
+ lightweight Java environment don't support classes like
+ StringTokenizer.
+
+
+ A unified elliptic curve registry of the various standard-specific registries.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of
+ the full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of
+ the full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in all the registries.
+
+
+ ASN.1 def for Diffie-Hellman key exchange KeySpecificInfo structure. See
+ RFC 2631, or X9.42, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeySpecificInfo ::= Sequence {
+ algorithm OBJECT IDENTIFIER,
+ counter OCTET STRING SIZE (4..4)
+ }
+
+
+
+ ANS.1 def for Diffie-Hellman key exchange OtherInfo structure. See
+ RFC 2631, or X9.42, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherInfo ::= Sequence {
+ keyInfo KeySpecificInfo,
+ partyAInfo [0] OCTET STRING OPTIONAL,
+ suppPubInfo [2] OCTET STRING
+ }
+
+
+
+ Elliptic curve registry for the curves defined in X.962 EC-DSA.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Parameters ::= CHOICE {
+ ecParameters ECParameters,
+ namedCurve CURVES.&id({CurveNames}),
+ implicitlyCA Null
+ }
+
+
+
+ ASN.1 def for Elliptic-Curve Curve structure. See
+ X9.62, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Curve ::= Sequence {
+ a FieldElement,
+ b FieldElement,
+ seed BIT STRING OPTIONAL
+ }
+
+
+
+ ASN.1 def for Elliptic-Curve ECParameters structure. See
+ X9.62, for further details.
+
+
+ Return the ASN.1 entry representing the Curve.
+
+ @return the X9Curve for the curve in these parameters.
+
+
+ Return the ASN.1 entry representing the FieldID.
+
+ @return the X9FieldID for the FieldID in these parameters.
+
+
+ Return the ASN.1 entry representing the base point G.
+
+ @return the X9ECPoint for the base point in these parameters.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ECParameters ::= Sequence {
+ version Integer { ecpVer1(1) } (ecpVer1),
+ fieldID FieldID {{FieldTypes}},
+ curve X9Curve,
+ base X9ECPoint,
+ order Integer,
+ cofactor Integer OPTIONAL
+ }
+
+
+
+ class for describing an ECPoint as a Der object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ECPoint ::= OCTET STRING
+
+
+ Octet string produced using ECPoint.GetEncoded().
+
+
+ Class for processing an ECFieldElement as a DER object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ FieldElement ::= OCTET STRING
+
+
+
+ - if q is an odd prime then the field element is
+ processed as an Integer and converted to an octet string
+ according to x 9.62 4.3.1.
+ - if q is 2m then the bit string
+ contained in the field element is converted into an octet
+ string with the same ordering padded at the front if necessary.
+
+
+
+
+
+ ASN.1 def for Elliptic-Curve Field ID structure. See
+ X9.62, for further details.
+
+
+ Constructor for elliptic curves over prime fields
+ F2.
+ @param primeP The prime p defining the prime field.
+
+
+ Constructor for elliptic curves over binary fields
+ F2m.
+ @param m The exponent m of
+ F2m.
+ @param k1 The integer k1 where xm +
+ xk1 + 1
+ represents the reduction polynomial f(z).
+
+
+ Constructor for elliptic curves over binary fields
+ F2m.
+ @param m The exponent m of
+ F2m.
+ @param k1 The integer k1 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+ @param k2 The integer k2 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+ @param k3 The integer k3 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)..
+
+
+ Produce a Der encoding of the following structure.
+
+ FieldID ::= Sequence {
+ fieldType FIELD-ID.&id({IOSet}),
+ parameters FIELD-ID.&Type({IOSet}{@fieldType})
+ }
+
+
+
+ id-dsa-with-sha1 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+ us(840) x9-57 (10040) x9cm(4) 3 }
+
+
+ X9.63
+
+
+ X9.42
+
+
+ Packet representing AEAD encrypted data. At the moment this appears to exist in the following
+ expired draft only, but it's appearing despite this.
+
+ @ref https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-rfc4880bis-04#section-5.16
+
+
+ reader for Base64 armored objects - read the headers and then start returning
+ bytes when the data is reached. An IOException is thrown if the CRC check
+ is detected and fails.
+
+ By default a missing CRC will not cause an exception. To force CRC detection use:
+
+ ArmoredInputStream aIn = ...
+
+ aIn.setDetectMissingCRC(true);
+
+
+
+
+ decode the base 64 encoded input data.
+
+ @return the offset the data starts in out.
+
+
+ Create a stream for reading a PGP armoured message, parsing up to a header
+ and then reading the data that follows.
+
+ @param input
+
+
+ Create an armoured input stream which will assume the data starts
+ straight away, or parse for headers first depending on the value of
+ hasHeaders.
+
+ @param input
+ @param hasHeaders true if headers are to be looked for, false otherwise.
+
+
+ @return true if we are inside the clear text section of a PGP
+ signed message.
+
+
+ @return true if the stream is actually at end of file.
+
+
+ Return the armor header line (if there is one)
+ @return the armor header line, null if none present.
+
+
+ Return the armor headers (the lines after the armor header line),
+ @return an array of armor headers, null if there aren't any.
+
+
+ Change how the stream should react if it encounters missing CRC checksum.
+ The default value is false (ignore missing CRC checksums). If the behavior is set to true,
+ an {@link IOException} will be thrown if a missing CRC checksum is encountered.
+
+ @param detectMissing ignore missing CRC sums
+
+
+ Basic output stream.
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+
+ Set an additional header entry. Any current value(s) under the same name will be
+ replaced by the new one. A null value will clear the entry for name. *
+ @param name the name of the header entry.
+ @param v the value of the header entry.
+
+
+ Set an additional header entry. The current value(s) will continue to exist together
+ with the new one. Adding a null value has no effect.
+
+ @param name the name of the header entry.
+ @param value the value of the header entry.
+
+
+ Reset the headers to only contain a Version string (if one is present).
+
+
+ Start a clear text signed message.
+ @param hashAlgorithm
+
+
+ Note: Close() does not close the underlying stream. So it is possible to write
+ multiple objects using armoring to a single stream.
+
+
+ Basic type for a image attribute packet.
+
+
+ Reader for PGP objects.
+
+
+ Returns the next packet tag in the stream.
+
+
+
+ A stream that overlays our input stream, allowing the user to only read a segment of it.
+ NB: dataLength will be negative if the segment length is in the upper range above 2**31.
+
+
+
+ Base class for a PGP object.
+
+
+ Basic output stream.
+
+
+ Create a stream representing a general packet.
+ Output stream to write to.
+
+
+ Base constructor specifying whether or not to use packets in the new format wherever possible.
+
+ Output stream to write to.
+ true if use new format packets, false if backwards compatible
+ preferred.
+
+
+ Create a stream representing an old style partial object.
+ Output stream to write to.
+ The packet tag for the object.
+
+
+ Create a stream representing a general packet.
+ Output stream to write to.
+ Packet tag.
+ Size of chunks making up the packet.
+ If true, the header is written out in old format.
+
+
+ Create a new style partial input stream buffered into chunks.
+ Output stream to write to.
+ Packet tag.
+ Size of chunks making up the packet.
+
+
+ Create a new style partial input stream buffered into chunks.
+ Output stream to write to.
+ Packet tag.
+ Buffer to use for collecting chunks.
+
+
+ Flush the underlying stream.
+
+
+ Finish writing out the current packet without closing the underlying stream.
+
+
+ Generic compressed data object.
+
+
+ The algorithm tag value.
+
+
+ Basic tags for compression algorithms.
+
+
+ Basic type for a PGP packet.
+
+
+ Base class for a DSA public key.
+
+
+ The stream to read the packet from.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for a DSA secret key.
+
+
+ @param in
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ @return x
+
+
+ Base class for an ECDH Public Key.
+
+
+ The stream to read the packet from.
+
+
+ Base class for an ECDSA Public Key.
+
+
+ The stream to read the packet from.
+
+
+ Base class for an EC Public Key.
+
+
+ The stream to read the packet from.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an EC Secret Key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an ElGamal public key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an ElGamal secret key.
+
+
+ @param in
+
+
+ @param x
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Basic packet for an experimental packet.
+
+
+ Basic tags for hash algorithms.
+
+
+ Base interface for a PGP key.
+
+
+
+ The base format for this key - in the case of the symmetric keys it will generally
+ be raw indicating that the key is just a straight byte representation, for an asymmetric
+ key the format will be PGP, indicating the key is a string of MPIs encoded in PGP format.
+
+ "RAW" or "PGP".
+
+
+ Note: you can only read from this once...
+
+
+ Generic literal data packet.
+
+
+ The format tag value.
+
+
+ The modification time of the file in milli-seconds (since Jan 1, 1970 UTC)
+
+
+ Basic type for a marker packet.
+
+
+ Basic packet for a modification detection code packet.
+
+
+ A multiple precision integer
+
+
+ Generic signature object
+
+
+ The encryption algorithm tag.
+
+
+ The hash algorithm tag.
+
+
+ Basic PGP packet tag types.
+
+
+ Public Key Algorithm tag numbers.
+
+
+ Basic packet for a PGP public key.
+
+
+ Basic packet for a PGP public key.
+
+
+ Construct a version 4 public key packet.
+
+
+ Basic packet for a PGP public subkey
+
+
+ Construct a version 4 public subkey packet.
+
+
+ Base class for an RSA public key.
+
+
+ Construct an RSA public key from the passed in stream.
+
+
+ The modulus.
+ The public exponent.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an RSA secret (or priate) key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ The string to key specifier class.
+
+
+ The hash algorithm.
+
+
+ The IV for the key generation algorithm.
+
+
+ The iteration count
+
+
+ The protection mode - only if GnuDummyS2K
+
+
+ Basic packet for a PGP secret key.
+
+
+ Basic packet for a PGP secret key.
+
+
+ Generic signature packet.
+
+
+ Generate a version 4 signature packet.
+
+ @param signatureType
+ @param keyAlgorithm
+ @param hashAlgorithm
+ @param hashedData
+ @param unhashedData
+ @param fingerprint
+ @param signature
+
+
+ Generate a version 2/3 signature packet.
+
+ @param signatureType
+ @param keyAlgorithm
+ @param hashAlgorithm
+ @param fingerprint
+ @param signature
+
+
+ return the keyId
+ @return the keyId that created the signature.
+
+
+ Return the signatures fingerprint.
+ @return fingerprint (digest prefix) of the signature
+
+
+ return the signature trailer that must be included with the data
+ to reconstruct the signature
+
+ @return byte[]
+
+
+ * return the signature as a set of integers - note this is normalised to be the
+ * ASN.1 encoding of what appears in the signature packet.
+
+
+ Return the byte encoding of the signature section.
+ @return uninterpreted signature bytes.
+
+
+ Return the creation time in milliseconds since 1 Jan., 1970 UTC.
+
+
+ Basic type for a PGP Signature sub-packet.
+
+
+ Return the generic data making up the packet.
+
+
+ reader for signature sub-packets
+
+
+ Basic PGP signature sub-packet tag types.
+
+
+ Packet embedded signature
+
+
+ packet giving signature creation time.
+
+
+ packet giving signature expiration time.
+
+
+ Identifier for the Modification Detection (packets 18 and 19)
+
+
+ Identifier for the AEAD Encrypted Data Packet (packet 20) and version 5
+ Symmetric-Key Encrypted Session Key Packets (packet 3)
+
+
+ Identifier for the Version 5 Public-Key Packet format and corresponding new
+ fingerprint format
+
+
+ Returns if modification detection is supported.
+
+
+ Returns if a particular feature is supported.
+
+
+ packet giving the intended recipient fingerprint.
+
+
+ packet giving the issuer key fingerprint.
+
+
+ packet giving signature creation time.
+
+
+ packet giving time after creation at which the key expires.
+
+
+ Return the number of seconds after creation time a key is valid for.
+
+ @return second count for key validity.
+
+
+ Packet holding the key flag values.
+
+
+
+ Return the flag values contained in the first 4 octets (note: at the moment
+ the standard only uses the first one).
+
+
+
+ Class provided a NotationData object according to
+ RFC2440, Chapter 5.2.3.15. Notation Data
+
+
+ packet giving signature creation time.
+
+
+ packet giving whether or not the signature is signed using the primary user ID for the key.
+
+
+ Regexp Packet - RFC 4880 5.2.3.14. Note: the RFC says the byte encoding is to be null terminated.
+
+
+ packet giving whether or not is revocable.
+
+
+ packet giving signature creation time.
+
+
+ packet giving signature expiration time.
+
+
+ return time in seconds before signature expires after creation time.
+
+
+ RFC 4880, Section 5.2.3.25 - Signature Target subpacket.
+
+
+ packet giving the User ID of the signer.
+
+
+ packet giving trust.
+
+
+
+ Represents revocation key OpenPGP signature sub packet.
+
+
+
+
+ Represents revocation reason OpenPGP signature sub packet.
+
+
+
+ Basic type for a symmetric key encrypted packet.
+
+
+ Basic tags for symmetric key algorithms
+
+
+ Basic type for a symmetric encrypted session key packet
+
+
+ @return int
+
+
+ @return S2k
+
+
+ @return byte[]
+
+
+ @return int
+
+
+ Basic type for a trust packet.
+
+
+ Basic type for a user attribute packet.
+
+
+ Basic type for a user attribute sub-packet.
+
+
+ return the generic data making up the packet.
+
+
+ reader for user attribute sub-packets
+
+
+ Basic PGP user attribute sub-packet tag types.
+
+
+ Basic type for a user ID packet.
+
+
+ Compressed data objects
+
+
+ The algorithm used for compression
+
+
+ Get the raw input stream contained in the object.
+
+
+ Return an uncompressed input stream which allows reading of the compressed data.
+
+
+ Class for producing compressed data packets.
+
+
+
+
+ Return an output stream which will save the data being written to
+ the compressed object.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Stream to be used for output.
+ A Stream for output of the compressed data.
+
+
+
+
+
+
+
+ Return an output stream which will compress the data as it is written to it.
+ The stream will be written out in chunks according to the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+
+ Note: using this may break compatibility with RFC 1991 compliant tools.
+ Only recent OpenPGP implementations are capable of accepting these streams.
+
+
+ Stream to be used for output.
+ The buffer to use.
+ A Stream for output of the compressed data.
+
+
+
+
+
+
+ Thrown if the IV at the start of a data stream indicates the wrong key is being used.
+
+
+ Return the raw input stream for the data stream.
+
+
+ Return true if the message is integrity protected.
+ True, if there is a modification detection code namespace associated
+ with this stream.
+
+
+ Note: This can only be called after the message has been read.
+ True, if the message verifies, false otherwise
+
+
+ Generator for encrypted objects.
+
+
+ Existing SecureRandom constructor.
+ The symmetric algorithm to use.
+ Source of randomness.
+
+
+ Creates a cipher stream which will have an integrity packet associated with it.
+
+
+ Base constructor.
+ The symmetric algorithm to use.
+ Source of randomness.
+ PGP 2.6.x compatibility required.
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ Add a public key encrypted session key to the encrypted object.
+
+
+
+
+ If buffer is non null stream assumed to be partial, otherwise the length will be used
+ to output a fixed length packet.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+
+
+
+
+ Return an output stream which will encrypt the data as it is written to it.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+
+
+
+
+ Return an output stream which will encrypt the data as it is written to it.
+ The stream will be written out in chunks according to the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+
+
+
+ A holder for a list of PGP encryption method packets.
+
+
+ Generic exception class for PGP encoding/decoding problems.
+
+
+ Key flag values for the KeyFlags subpacket.
+
+
+
+ General class to handle JCA key pairs and convert them into OpenPGP ones.
+
+ A word for the unwary, the KeyId for an OpenPGP public key is calculated from
+ a hash that includes the time of creation, if you pass a different date to the
+ constructor below with the same public private key pair the KeyIs will not be the
+ same as for previous generations of the key, so ideally you only want to do
+ this once.
+
+
+
+
+ Create a key pair from a PgpPrivateKey and a PgpPublicKey.
+ The public key.
+ The private key.
+
+
+ The keyId associated with this key pair.
+
+
+
+ Generator for a PGP master and subkey ring.
+ This class will generate both the secret and public key rings
+
+
+
+
+ Create a new key ring generator.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+
+ If true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+
+ If true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+ Add a subkey to the key ring to be generated with default certification.
+
+
+
+ Add a subkey to the key ring to be generated with default certification.
+
+ The key pair.
+ The hash algorithm.
+
+
+
+ Add a signing subkey to the key ring to be generated with default certification and a primary key binding signature.
+
+ The key pair.
+ The hash algorithm.
+ The primary-key binding hash algorithm.
+
+
+
+ Add a subkey with specific hashed and unhashed packets associated with it and
+ default certification using SHA-1.
+
+ Public/private key pair.
+ Hashed packet values to be included in certification.
+ Unhashed packets values to be included in certification.
+
+
+
+
+ Add a subkey with specific hashed and unhashed packets associated with it and
+ default certification.
+
+ Public/private key pair.
+ Hashed packet values to be included in certification.
+ Unhashed packets values to be included in certification.
+ The hash algorithm.
+ exception adding subkey:
+
+
+
+
+ Add a signing subkey with specific hashed and unhashed packets associated with it and
+ default certifications, including the primary-key binding signature.
+
+ Public/private key pair.
+ Hashed packet values to be included in certification.
+ Unhashed packets values to be included in certification.
+ The hash algorithm.
+ The primary-key binding hash algorithm.
+ exception adding subkey:
+
+
+
+ Return the secret key ring.
+
+
+ Return the public key ring that corresponds to the secret key ring.
+
+
+ Thrown if the key checksum is invalid.
+
+
+ Class for processing literal data objects.
+
+
+ The special name indicating a "for your eyes only" packet.
+
+
+ The format of the data stream - Binary or Text
+
+
+ The file name that's associated with the data stream.
+
+
+ Return the file name as an unintrepreted byte array.
+
+
+ The modification time for the file.
+
+
+ The raw input stream for the data stream.
+
+
+ The input stream representing the data stream.
+
+
+ Class for producing literal data packets.
+
+
+ The special name indicating a "for your eyes only" packet.
+
+
+
+ Generates literal data objects in the old format.
+ This is important if you need compatibility with PGP 2.6.x.
+
+ If true, uses old format.
+
+
+
+
+ Open a literal data packet, returning a stream to store the data inside the packet.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ The stream we want the packet in.
+ The format we are using.
+ The name of the 'file'.
+ The length of the data we will write.
+ The time of last modification we want stored.
+
+
+
+
+ Open a literal data packet, returning a stream to store the data inside the packet,
+ as an indefinite length stream. The stream is written out as a series of partial
+ packets with a chunk size determined by the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+ The stream we want the packet in.
+ The format we are using.
+ The name of the 'file'.
+ The time of last modification we want stored.
+ The buffer to use for collecting data to put into chunks.
+
+
+
+
+ Open a literal data packet for the passed in FileInfo object, returning
+ an output stream for saving the file contents.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ The stream we want the packet in.
+ The format we are using.
+ The FileInfo object containg the packet details.
+
+
+
+ A PGP marker packet - in general these should be ignored other than where
+ the idea is to preserve the original input stream.
+
+
+
+
+ General class for reading a PGP object stream.
+
+ Note: if this class finds a PgpPublicKey or a PgpSecretKey it
+ will create a PgpPublicKeyRing, or a PgpSecretKeyRing for each
+ key found. If all you are trying to do is read a key ring file use
+ either PgpPublicKeyRingBundle or PgpSecretKeyRingBundle.
+
+
+
+ Return the next object in the stream, or null if the end is reached.
+ On a parse error
+
+
+
+ Return all available objects in a list.
+
+ An IList containing all objects from this factory, in order.
+
+
+
+ Read all available objects, returning only those that are assignable to the specified type.
+
+ An containing the filtered objects from this factory, in order.
+
+
+ A one pass signature object.
+
+
+ Initialise the signature object for verification.
+
+
+ Verify the calculated signature against the passed in PgpSignature.
+
+
+ Holder for a list of PgpOnePassSignature objects.
+
+
+ Padding functions.
+
+
+ A password based encryption object.
+
+
+ Return the raw input stream for the data stream.
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ General class to contain a private key for use with other OpenPGP objects.
+
+
+
+ Create a PgpPrivateKey from a keyID, the associated public data packet, and a regular private key.
+
+ ID of the corresponding public key.
+ the public key data packet to be associated with this private key.
+ the private key data packet to be associated with this private key.
+
+
+ The keyId associated with the contained private key.
+
+
+ The public key packet associated with this private key, if available.
+
+
+ The contained private key.
+
+
+ General class to handle a PGP public key object.
+
+
+
+ Create a PgpPublicKey from the passed in lightweight one.
+
+
+ Note: the time passed in affects the value of the key's keyId, so you probably only want
+ to do this once for a lightweight key, or make sure you keep track of the time you used.
+
+ Asymmetric algorithm type representing the public key.
+ Actual public key to associate.
+ Date of creation.
+ If pubKey is not public.
+ On key creation problem.
+
+
+ Constructor for a sub-key.
+
+
+ Copy constructor.
+ The public key to copy.
+
+
+ The version of this key.
+
+
+ The creation time of this key.
+
+
+ Return the trust data associated with the public key, if present.
+ A byte array with trust data, null otherwise.
+
+
+ The number of valid seconds from creation time - zero means no expiry.
+
+
+ The key ID associated with the public key.
+
+
+ The fingerprint of the public key
+
+
+
+ Check if this key has an algorithm type that makes it suitable to use for encryption.
+
+
+ Note: with version 4 keys KeyFlags subpackets should also be considered when present for
+ determining the preferred use of the key.
+
+
+ true if this key algorithm is suitable for encryption.
+
+
+
+ True, if this could be a master key.
+
+
+ The algorithm code associated with the public key.
+
+
+ The strength of the key in bits.
+
+
+ The public key contained in the object.
+ A lightweight public key.
+ If the key algorithm is not recognised.
+
+
+ Allows enumeration of any user IDs associated with the key.
+ An IEnumerable of string objects.
+
+
+ Return any userIDs associated with the key in raw byte form.
+ No attempt is made to convert the IDs into strings.
+ An IEnumerable of byte[].
+
+
+ Allows enumeration of any user attribute vectors associated with the key.
+ An IEnumerable of PgpUserAttributeSubpacketVector objects.
+
+
+ Allows enumeration of any signatures associated with the passed in id.
+ The ID to be matched.
+ An IEnumerable of PgpSignature objects.
+
+
+ Return any signatures associated with the passed in key identifier keyID.
+ the key id to be matched.
+ An IEnumerable of PgpSignature objects issued by the key with keyID.
+
+
+ Allows enumeration of signatures associated with the passed in user attributes.
+ The vector of user attributes to be matched.
+ An IEnumerable of PgpSignature objects.
+
+
+ Allows enumeration of signatures of the passed in type that are on this key.
+ The type of the signature to be returned.
+ An IEnumerable of PgpSignature objects.
+
+
+ Allows enumeration of all signatures/certifications associated with this key.
+ An IEnumerable with all signatures/certifications.
+
+
+ Return all signatures/certifications directly associated with this key (ie, not to a user id).
+
+ @return an iterator (possibly empty) with all signatures/certifications.
+
+
+ Encode the key to outStream, with trust packets stripped out if forTransfer is true.
+
+ @param outStream stream to write the key encoding to.
+ @param forTransfer if the purpose of encoding is to send key to other users.
+ @throws IOException in case of encoding error.
+
+
+ Check whether this (sub)key has a revocation signature on it.
+ True, if this (sub)key has been revoked.
+
+
+ Add a certification for an id to the given public key.
+ The key the certification is to be added to.
+ The ID the certification is associated with.
+ The new certification.
+ The re-certified key.
+
+
+ Add a certification for the given UserAttributeSubpackets to the given public key.
+ The key the certification is to be added to.
+ The attributes the certification is associated with.
+ The new certification.
+ The re-certified key.
+
+
+
+ Remove any certifications associated with a user attribute subpacket on a key.
+
+ The key the certifications are to be removed from.
+ The attributes to be removed.
+
+ The re-certified key, or null if the user attribute subpacket was not found on the key.
+
+
+
+ Remove any certifications associated with a given ID on a key.
+ The key the certifications are to be removed from.
+ The ID that is to be removed.
+ The re-certified key, or null if the ID was not found on the key.
+
+
+ Remove any certifications associated with a given ID on a key.
+ The key the certifications are to be removed from.
+ The ID that is to be removed in raw byte form.
+ The re-certified key, or null if the ID was not found on the key.
+
+
+ Remove a certification associated with a given ID on a key.
+ The key the certifications are to be removed from.
+ The ID that the certfication is to be removed from (in its raw byte form).
+ The certfication to be removed.
+ The re-certified key, or null if the certification was not found.
+
+
+ Remove a certification associated with a given ID on a key.
+ The key the certifications are to be removed from.
+ The ID that the certfication is to be removed from.
+ The certfication to be removed.
+ The re-certified key, or null if the certification was not found.
+
+
+ Remove a certification associated with a given user attributes on a key.
+ The key the certifications are to be removed from.
+ The user attributes that the certfication is to be removed from.
+ The certification to be removed.
+ The re-certified key, or null if the certification was not found.
+
+
+ Add a revocation or some other key certification to a key.
+ The key the revocation is to be added to.
+ The key signature to be added.
+ The new changed public key object.
+
+
+ Remove a certification from the key.
+ The key the certifications are to be removed from.
+ The certfication to be removed.
+ The modified key, null if the certification was not found.
+
+
+
+ Merge the given local public key with another, potentially fresher copy. The resulting public key
+ contains the sum of both keys' user-ids and signatures.
+
+
+ If joinTrustPackets is set to true and the copy carries a trust packet, the joined key will copy the
+ trust-packet from the copy. Otherwise, it will carry the trust packet of the local key.
+
+ local public key.
+ copy of the public key (e.g. from a key server).
+ if true, trust packets from the copy are copied over into the resulting key.
+
+ if true, subkey signatures on the copy will be present in the
+ merged key, even if key was not a subkey before.
+ joined key.
+
+
+ A public key encrypted data object.
+
+
+ The key ID for the key used to encrypt the data.
+
+
+
+ Return the algorithm code for the symmetric algorithm used to encrypt the data.
+
+
+
+ Return the decrypted data stream for the packet.
+
+
+
+ Class to hold a single master public key and its subkeys.
+
+ Often PGP keyring files consist of multiple master keys, if you are trying to process
+ or construct one of these you should use the PgpPublicKeyRingBundle class.
+
+
+
+
+ Return the first public key in the ring.
+
+
+ Return the public key referred to by the passed in key ID if it is present.
+
+
+ Allows enumeration of all the public keys.
+ An IEnumerable of PgpPublicKey objects.
+
+
+
+ Returns a new key ring with the public key passed in either added or
+ replacing an existing one.
+
+ The public key ring to be modified.
+ The public key to be inserted.
+ A new PgpPublicKeyRing
+
+
+ Returns a new key ring with the public key passed in removed from the key ring.
+ The public key ring to be modified.
+ The public key to be removed.
+ A new PgpPublicKeyRing, or null if pubKey is not found.
+
+
+ Join two copies of the same certificate.
+ The certificates must have the same primary key, but may carry different subkeys, user-ids and signatures.
+ The resulting certificate will carry the sum of both certificates subkeys, user-ids and signatures.
+
+ This method will ignore trust packets on the second copy of the certificate and instead
+ copy the local certificate's trust packets to the joined certificate.
+
+ @param first local copy of the certificate
+ @param second remote copy of the certificate (e.g. from a key server)
+ @return joined key ring
+ @throws PGPException
+
+
+ Join two copies of the same certificate.
+ The certificates must have the same primary key, but may carry different subkeys, user-ids and signatures.
+ The resulting certificate will carry the sum of both certificates subkeys, user-ids and signatures.
+
+ For each subkey holds: If joinTrustPackets is set to true and the second key is carrying a trust packet,
+ the trust packet will be copied to the joined key.
+ Otherwise, the joined key will carry the trust packet of the local copy.
+
+ @param first local copy of the certificate
+ @param second remote copy of the certificate (e.g. from a key server)
+ @param joinTrustPackets if true, trust packets from the second certificate copy will be carried over into the joined certificate
+ @param allowSubkeySigsOnNonSubkey if true, the resulting joined certificate may carry subkey signatures on its primary key
+ @return joined certificate
+ @throws PGPException
+
+
+
+ Often a PGP key ring file is made up of a succession of master/sub-key key rings.
+ If you want to read an entire public key file in one hit this is the class for you.
+
+
+
+ Build a PgpPublicKeyRingBundle from the passed in input stream.
+ Input stream containing data.
+ If a problem parsing the stream occurs.
+ If an object is encountered which isn't a PgpPublicKeyRing.
+
+
+ Return the number of key rings in this collection.
+
+
+ Allow enumeration of the public key rings making up this collection.
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ If true, case is ignored in user ID comparisons.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Return the PGP public key associated with the given key id.
+ The ID of the public key to return.
+
+
+ Return the public key ring which contains the key referred to by keyId
+ key ID to match against
+
+
+
+ Return true if a key matching the passed in key ID is present, false otherwise.
+
+ key ID to look for.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle and
+ the passed in public key ring.
+
+ The PgpPublicKeyRingBundle the key ring is to be added to.
+ The key ring to be added.
+ A new PgpPublicKeyRingBundle merging the current one with the passed in key ring.
+ If the keyId for the passed in key ring is already present.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle with
+ the passed in public key ring removed.
+
+ The PgpPublicKeyRingBundle the key ring is to be removed from.
+ The key ring to be removed.
+ A new PgpPublicKeyRingBundle not containing the passed in key ring.
+ If the keyId for the passed in key ring is not present.
+
+
+ General class to handle a PGP secret key object.
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ If utf8PassPhrase is true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ If utf8PassPhrase is true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Check if this key has an algorithm type that makes it suitable to use for signing.
+
+
+ Note: with version 4 keys KeyFlags subpackets should also be considered when present for
+ determining the preferred use of the key.
+
+
+ true if this key algorithm is suitable for use with signing.
+
+
+
+ True, if this is a master key.
+
+
+ Detect if the Secret Key's Private Key is empty or not
+
+
+ The algorithm the key is encrypted with.
+
+
+ The key ID of the public key associated with this key.
+
+
+ The fingerprint of the public key associated with this key.
+
+
+ Return the S2K usage associated with this key.
+
+
+ Return the S2K used to process this key.
+
+
+ The public key associated with this key.
+
+
+ Allows enumeration of any user IDs associated with the key.
+ An IEnumerable of string objects.
+
+
+ Allows enumeration of any user attribute vectors associated with the key.
+ An IEnumerable of string objects.
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+ Replace the passed the public key on the passed in secret key.
+ Secret key to change.
+ New public key.
+ A new secret key.
+ If KeyId's do not match.
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+
+
+ Class to hold a single master secret key and its subkeys.
+
+ Often PGP keyring files consist of multiple master keys, if you are trying to process
+ or construct one of these you should use the PgpSecretKeyRingBundle class.
+
+
+
+
+ Return the public key for the master key.
+
+
+ Return any keys carrying a signature issued by the key represented by keyID.
+
+ @param keyID the key id to be matched against.
+ @return an iterator (possibly empty) of PGPPublicKey objects carrying signatures from keyID.
+
+
+ Return the master private key.
+
+
+ Allows enumeration of the secret keys.
+ An IEnumerable of PgpSecretKey objects.
+
+
+
+ Return an iterator of the public keys in the secret key ring that
+ have no matching private key. At the moment only personal certificate data
+ appears in this fashion.
+
+ An IEnumerable of unattached, or extra, public keys.
+
+
+
+ Replace the public key set on the secret ring with the corresponding key off the public ring.
+
+ Secret ring to be changed.
+ Public ring containing the new public key set.
+
+
+
+ Return a copy of the passed in secret key ring, with the master key and sub keys encrypted
+ using a new password and the passed in algorithm.
+
+ The PgpSecretKeyRing to be copied.
+ The current password for key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Returns a new key ring with the secret key passed in either added or
+ replacing an existing one with the same key ID.
+
+ The secret key ring to be modified.
+ The secret key to be inserted.
+ A new PgpSecretKeyRing
+
+
+ Returns a new key ring with the secret key passed in removed from the key ring.
+ The secret key ring to be modified.
+ The secret key to be removed.
+ A new PgpSecretKeyRing, or null if secKey is not found.
+
+
+
+ Often a PGP key ring file is made up of a succession of master/sub-key key rings.
+ If you want to read an entire secret key file in one hit this is the class for you.
+
+
+
+ Build a PgpSecretKeyRingBundle from the passed in input stream.
+ Input stream containing data.
+ If a problem parsing the stream occurs.
+ If an object is encountered which isn't a PgpSecretKeyRing.
+
+
+ Return the number of rings in this collection.
+
+
+ Allow enumeration of the secret key rings making up this collection.
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ If true, case is ignored in user ID comparisons.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Return the PGP secret key associated with the given key id.
+ The ID of the secret key to return.
+
+
+ Return the secret key ring which contains the key referred to by keyId
+ The ID of the secret key
+
+
+
+ Return true if a key matching the passed in key ID is present, false otherwise.
+
+ key ID to look for.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle and
+ the passed in secret key ring.
+
+ The PgpSecretKeyRingBundle the key ring is to be added to.
+ The key ring to be added.
+ A new PgpSecretKeyRingBundle merging the current one with the passed in key ring.
+ If the keyId for the passed in key ring is already present.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle with
+ the passed in secret key ring removed.
+
+ The PgpSecretKeyRingBundle the key ring is to be removed from.
+ The key ring to be removed.
+ A new PgpSecretKeyRingBundle not containing the passed in key ring.
+ If the keyId for the passed in key ring is not present.
+
+
+ A PGP signature object.
+
+
+ The OpenPGP version number for this signature.
+
+
+ The key algorithm associated with this signature.
+
+
+ The hash algorithm associated with this signature.
+
+
+ Return the digest prefix of the signature.
+
+
+ Return true if this signature represents a certification.
+
+
+
+ Verify the signature as certifying the passed in public key as associated
+ with the passed in user attributes.
+
+ User attributes the key was stored under.
+ The key to be verified.
+ True, if the signature matches, false otherwise.
+
+
+
+ Verify the signature as certifying the passed in public key as associated
+ with the passed in ID.
+
+ ID the key was stored under.
+ The key to be verified.
+ True, if the signature matches, false otherwise.
+
+
+ Verify a certification for the passed in key against the passed in master key.
+ The key we are verifying against.
+ The key we are verifying.
+ True, if the certification is valid, false otherwise.
+
+
+ Verify a key certification, such as revocation, for the passed in key.
+ The key we are checking.
+ True, if the certification is valid, false otherwise.
+
+
+ The ID of the key that created the signature.
+
+
+ The creation time of this signature.
+
+
+
+ Return true if the signature has either hashed or unhashed subpackets.
+
+
+
+ Encode the signature to outStream, with trust packets stripped out if forTransfer is true.
+
+ @param outStream stream to write the key encoding to.
+ @param forTransfer if the purpose of encoding is to send key to other users.
+ @throws IOException in case of encoding error.
+
+
+
+ Return true if the passed in signature type represents a certification, false if the signature type is not.
+
+
+ true if signatureType is a certification, false otherwise.
+
+
+ Generator for PGP signatures.
+
+
+ Create a generator for the passed in keyAlgorithm and hashAlgorithm codes.
+
+
+ Initialise the generator for signing.
+
+
+ Initialise the generator for signing.
+
+
+ Return the one pass header associated with the current signature.
+
+
+ Return a signature object containing the current signature state.
+
+
+ Generate a certification for the passed in ID and key.
+ The ID we are certifying against the public key.
+ The key we are certifying against the ID.
+ The certification.
+
+
+ Generate a certification for the passed in userAttributes.
+ The ID we are certifying against the public key.
+ The key we are certifying against the ID.
+ The certification.
+
+
+ Generate a certification for the passed in key against the passed in master key.
+ The key we are certifying against.
+ The key we are certifying.
+ The certification.
+
+
+ Generate a certification, such as a revocation, for the passed in key.
+ The key we are certifying.
+ The certification.
+
+
+ A list of PGP signatures - normally in the signature block after literal data.
+
+
+ Generator for signature subpackets.
+
+
+
+ Base constructor, creates an empty generator.
+
+
+
+
+ Constructor for pre-initialising the generator from an existing one.
+
+
+ sigSubV an initial set of subpackets.
+
+
+
+
+ Add a TrustSignature packet to the signature. The values for depth and trust are largely
+ installation dependent but there are some guidelines in RFC 4880 - 5.2.3.13.
+
+ true if the packet is critical.
+ depth level.
+ trust amount.
+
+
+
+ Set the number of seconds a key is valid for after the time of its creation.
+ A value of zero means the key never expires.
+
+ True, if should be treated as critical, false otherwise.
+ The number of seconds the key is valid, or zero if no expiry.
+
+
+
+ Set the number of seconds a signature is valid for after the time of its creation.
+ A value of zero means the signature never expires.
+
+ True, if should be treated as critical, false otherwise.
+ The number of seconds the signature is valid, or zero if no expiry.
+
+
+
+ Set the creation time for the signature.
+
+ Note: this overrides the generation of a creation time when the signature
+ is generated.
+
+
+
+
+ Sets revocation reason sub packet
+
+
+
+
+ Sets issuer key sub packet
+
+
+
+ Container for a list of signature subpackets.
+
+
+ Return true if a particular subpacket type exists.
+
+ @param type type to look for.
+ @return true if present, false otherwise.
+
+
+ Return all signature subpackets of the passed in type.
+ @param type subpacket type code
+ @return an array of zero or more matching subpackets.
+
+
+
+
+
+
+ Return the number of seconds a signature is valid for after its creation date.
+ A value of zero means the signature never expires.
+
+ Seconds a signature is valid for.
+
+
+
+ Return the number of seconds a key is valid for after its creation date.
+ A value of zero means the key never expires.
+
+ Seconds a signature is valid for.
+
+
+ Return the number of packets this vector contains.
+
+
+ Return a copy of the subpackets in this vector.
+
+ @return an array containing the vector subpackets in order.
+
+
+ Container for a list of user attribute subpackets.
+
+
+ Basic utility class.
+
+
+ Return the EC curve name for the passed in OID.
+
+ @param oid the EC curve object identifier in the PGP key
+ @return a string representation of the OID.
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ Write out the passed in file as a literal data packet.
+
+
+ Write out the passed in file as a literal data packet in partial packet format.
+
+
+
+ Return either an ArmoredInputStream or a BcpgInputStream based on whether
+ the initial characters of the stream are binary PGP encodings or not.
+
+
+
+ Generator for old style PGP V3 Signatures.
+
+
+ Create a generator for the passed in keyAlgorithm and hashAlgorithm codes.
+
+
+ Initialise the generator for signing.
+
+
+ Initialise the generator for signing.
+
+
+ Return the one pass header associated with the current signature.
+
+
+ Return a V3 signature object containing the current signature state.
+
+
+ Utility functions for looking a S-expression keys. This class will move when it finds a better home!
+
+ Format documented here:
+ http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=agent/keyformat.txt;h=42c4b1f06faf1bbe71ffadc2fee0fad6bec91a97;hb=refs/heads/master
+
+
+
+
+ Wrap a PKIMessage ASN.1 structure.
+
+ PKI message.
+
+
+
+ Create a PKIMessage from the passed in bytes.
+
+ BER/DER encoding of the PKIMessage
+
+
+
+ Return true if this message has protection bits on it. A return value of true
+ indicates the message can be used to construct a ProtectedPKIMessage.
+
+
+
+
+ Wrapper for a PKIMessage with protection attached to it.
+
+
+
+
+ Wrap a general message.
+
+ If the general message does not have protection.
+ The General message
+
+
+
+ Wrap a PKI message.
+
+ If the PKI message does not have protection.
+ The PKI message
+
+
+ Message header
+
+
+ Message body
+
+
+
+ Return the underlying ASN.1 structure contained in this object.
+
+ PkiMessage structure
+
+
+
+ Determine whether the message is protected by a password based MAC. Use verify(PKMACBuilder, char[])
+ to verify the message if this method returns true.
+
+ true if protection MAC PBE based, false otherwise.
+
+
+ Return the message's protection algorithm.
+
+ @return the algorithm ID for the message's protection algorithm.
+
+
+
+ Return the extra certificates associated with this message.
+
+ an array of extra certificates, zero length if none present.
+
+
+
+ Verify a message with a public key based signature attached.
+
+ a factory of signature verifiers.
+ true if the provider is able to create a verifier that validates the signature, false otherwise.
+
+
+
+ Verify a message with password based MAC protection.
+
+ MAC builder that can be used to construct the appropriate MacCalculator
+ the MAC password
+ true if the passed in password and MAC builder verify the message, false otherwise.
+ if algorithm not MAC based, or an exception is thrown verifying the MAC.
+
+
+
+ The 'Signature' parameter is only available when generating unsigned attributes.
+
+
+
+ containing class for an CMS Authenticated Data object
+
+
+ return the object identifier for the content MAC algorithm.
+
+
+ return a store of the intended recipients for this message
+
+
+ return the ContentInfo
+
+
+ return a table of the digested attributes indexed by
+ the OID of the attribute.
+
+
+ return a table of the undigested attributes indexed by
+ the OID of the attribute.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ General class for generating a CMS authenticated-data message.
+
+ A simple example of usage.
+
+
+ CMSAuthenticatedDataGenerator fact = new CMSAuthenticatedDataGenerator();
+
+ fact.addKeyTransRecipient(cert);
+
+ CMSAuthenticatedData data = fact.generate(content, algorithm, "BC");
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ generate an enveloped object that contains an CMS Enveloped Data
+ object using the given provider and the passed in key generator.
+
+
+ generate an authenticated object that contains an CMS Authenticated Data object
+
+
+ Parsing class for an CMS Authenticated Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one recipient can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ Example of use - assuming the first recipient matches the private key we have.
+
+ CMSAuthenticatedDataParser ad = new CMSAuthenticatedDataParser(inputStream);
+
+ RecipientInformationStore recipients = ad.getRecipientInfos();
+
+ Collection c = recipients.getRecipients();
+ Iterator it = c.iterator();
+
+ if (it.hasNext())
+ {
+ RecipientInformation recipient = (RecipientInformation)it.next();
+
+ CMSTypedStream recData = recipient.getContentStream(privateKey, "BC");
+
+ processDataStream(recData.getContentStream());
+
+ if (!Arrays.equals(ad.getMac(), recipient.getMac())
+ {
+ System.err.println("Data corrupted!!!!");
+ }
+ }
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CMSAuthenticatedDataParser ep = new CMSAuthenticatedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+
+ return the object identifier for the mac algorithm.
+
+
+ return the ASN.1 encoded encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a store of the intended recipients for this message
+
+
+ return a table of the unauthenticated attributes indexed by
+ the OID of the attribute.
+ @exception java.io.IOException
+
+
+ return a table of the unauthenticated attributes indexed by
+ the OID of the attribute.
+ @exception java.io.IOException
+
+
+ General class for generating a CMS authenticated-data message stream.
+
+ A simple example of usage.
+
+ CMSAuthenticatedDataStreamGenerator edGen = new CMSAuthenticatedDataStreamGenerator();
+
+ edGen.addKeyTransRecipient(cert);
+
+ ByteArrayOutputStream bOut = new ByteArrayOutputStream();
+
+ OutputStream out = edGen.open(
+ bOut, CMSAuthenticatedDataGenerator.AES128_CBC, "BC");*
+ out.write(data);
+
+ out.close();
+
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ Use a BER Set to store the recipient information
+
+
+ generate an enveloped object that contains an CMS Enveloped Data
+ object using the given provider and the passed in key generator.
+ @throws java.io.IOException
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ containing class for an CMS AuthEnveloped Data object
+
+
+ containing class for an CMS Compressed Data object
+
+
+ Return the uncompressed content.
+
+ @return the uncompressed content
+ @throws CmsException if there is an exception uncompressing the data.
+
+
+ Return the uncompressed content, throwing an exception if the data size
+ is greater than the passed in limit. If the content is exceeded getCause()
+ on the CMSException will contain a StreamOverflowException
+
+ @param limit maximum number of bytes to read
+ @return the content read
+ @throws CMSException if there is an exception uncompressing the data.
+
+
+ return the ContentInfo
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ * General class for generating a compressed CMS message.
+ *
+ * A simple example of usage.
+ *
+ *
+ * CMSCompressedDataGenerator fact = new CMSCompressedDataGenerator();
+ * CMSCompressedData data = fact.Generate(content, algorithm);
+ *
+ *
+
+
+ Generate an object that contains an CMS Compressed Data
+
+
+ Class for reading a CMS Compressed Data stream.
+
+ CMSCompressedDataParser cp = new CMSCompressedDataParser(inputStream);
+
+ process(cp.GetContent().GetContentStream());
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CMSCompressedDataParser ep = new CMSCompressedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+ General class for generating a compressed CMS message stream.
+
+ A simple example of usage.
+
+
+ CMSCompressedDataStreamGenerator gen = new CMSCompressedDataStreamGenerator();
+
+ Stream cOut = gen.Open(outputStream, CMSCompressedDataStreamGenerator.ZLIB);
+
+ cOut.Write(data);
+
+ cOut.Close();
+
+
+
+ base constructor
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ containing class for an CMS Enveloped Data object
+
+
+ return the object identifier for the content encryption algorithm.
+
+
+ return a store of the intended recipients for this message
+
+
+ return the ContentInfo
+
+
+ return a table of the unprotected attributes indexed by
+ the OID of the attribute.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+
+ General class for generating a CMS enveloped-data message.
+
+ A simple example of usage.
+
+
+ CmsEnvelopedDataGenerator fact = new CmsEnvelopedDataGenerator();
+
+ fact.AddKeyTransRecipient(cert);
+
+ CmsEnvelopedData data = fact.Generate(content, algorithm);
+
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+
+ Generate an enveloped object that contains a CMS Enveloped Data
+ object using the passed in key generator.
+
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data object.
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data object.
+
+
+ Parsing class for an CMS Enveloped Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one recipient can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ Example of use - assuming the first recipient matches the private key we have.
+
+ CmsEnvelopedDataParser ep = new CmsEnvelopedDataParser(inputStream);
+
+ RecipientInformationStore recipients = ep.GetRecipientInfos();
+
+ Collection c = recipients.getRecipients();
+ Iterator it = c.iterator();
+
+ if (it.hasNext())
+ {
+ RecipientInformation recipient = (RecipientInformation)it.next();
+
+ CMSTypedStream recData = recipient.getContentStream(privateKey);
+
+ processDataStream(recData.getContentStream());
+ }
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CmsEnvelopedDataParser ep = new CmsEnvelopedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+
+ return the object identifier for the content encryption algorithm.
+
+
+ return the ASN.1 encoded encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a store of the intended recipients for this message
+
+
+ return a table of the unprotected attributes indexed by
+ the OID of the attribute.
+ @throws IOException
+
+
+ General class for generating a CMS enveloped-data message stream.
+
+ A simple example of usage.
+
+ CmsEnvelopedDataStreamGenerator edGen = new CmsEnvelopedDataStreamGenerator();
+
+ edGen.AddKeyTransRecipient(cert);
+
+ MemoryStream bOut = new MemoryStream();
+
+ Stream out = edGen.Open(
+ bOut, CMSEnvelopedGenerator.AES128_CBC);*
+ out.Write(data);
+
+ out.Close();
+
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Set the underlying string size for encapsulated data.
+ Length of octet strings to buffer the data.
+
+
+ Use a BER Set to store the recipient information.
+
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data
+ object using the passed in key generator.
+
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+ @throws IOException
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+ @throws IOException
+
+
+ General class for generating a CMS enveloped-data message.
+
+ A simple example of usage.
+
+
+ CMSEnvelopedDataGenerator fact = new CMSEnvelopedDataGenerator();
+
+ fact.addKeyTransRecipient(cert);
+
+ CMSEnvelopedData data = fact.generate(content, algorithm, "BC");
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ add a recipient.
+
+ @param cert recipient's public key certificate
+ @exception ArgumentException if there is a problem with the certificate
+
+
+ add a recipient
+
+ @param key the public key used by the recipient
+ @param subKeyId the identifier for the recipient's public key
+ @exception ArgumentException if there is a problem with the key
+
+
+ add a KEK recipient.
+ @param key the secret key to use for wrapping
+ @param keyIdentifier the byte string that identifies the key
+
+
+ add a KEK recipient.
+ @param key the secret key to use for wrapping
+ @param keyIdentifier the byte string that identifies the key
+
+
+ Add a key agreement based recipient.
+
+ @param agreementAlgorithm key agreement algorithm to use.
+ @param senderPrivateKey private key to initialise sender side of agreement with.
+ @param senderPublicKey sender public key to include with message.
+ @param recipientCert recipient's public key certificate.
+ @param cekWrapAlgorithm OID for key wrapping algorithm to use.
+ @exception SecurityUtilityException if the algorithm requested cannot be found
+ @exception InvalidKeyException if the keys are inappropriate for the algorithm specified
+
+
+ Add multiple key agreement based recipients (sharing a single KeyAgreeRecipientInfo structure).
+
+ @param agreementAlgorithm key agreement algorithm to use.
+ @param senderPrivateKey private key to initialise sender side of agreement with.
+ @param senderPublicKey sender public key to include with message.
+ @param recipientCerts recipients' public key certificates.
+ @param cekWrapAlgorithm OID for key wrapping algorithm to use.
+ @exception SecurityUtilityException if the algorithm requested cannot be found
+ @exception InvalidKeyException if the keys are inappropriate for the algorithm specified
+
+
+
+ Add a generator to produce the recipient info required.
+
+ a generator of a recipient info object.
+
+
+
+ Generic routine to copy out the data we want processed.
+
+
+ This routine may be called multiple times.
+
+
+
+ a holding class for a byte array of data to be processed.
+
+
+ a holding class for a file of data to be processed.
+
+
+ general class for handling a pkcs7-signature message.
+
+ A simple example of usage - note, in the example below the validity of
+ the certificate isn't verified, just the fact that one of the certs
+ matches the given signer...
+
+
+ IX509Store certs = s.GetCertificates();
+ SignerInformationStore signers = s.GetSignerInfos();
+
+ foreach (SignerInformation signer in signers.GetSigners())
+ {
+ ArrayList certList = new ArrayList(certs.GetMatches(signer.SignerID));
+ X509Certificate cert = (X509Certificate) certList[0];
+
+ if (signer.Verify(cert.GetPublicKey()))
+ {
+ verified++;
+ }
+ }
+
+
+
+ Content with detached signature, digests precomputed
+
+ @param hashes a map of precomputed digests for content indexed by name of hash.
+ @param sigBlock the signature object.
+
+
+ base constructor - content with detached signature.
+
+ @param signedContent the content that was signed.
+ @param sigData the signature object.
+
+
+ base constructor - with encapsulated content
+
+
+ Return the version number for this object.
+
+
+ return the collection of signers that are associated with the
+ signatures for the message.
+
+
+ return a X509Store containing the attribute certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of attribute certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing the public key certificates, if any, contained in this message.
+
+ @return a store of public key certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing CRLs, if any, contained in this message.
+
+ @return a store of CRLs
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ Return the digest algorithm identifiers for the SignedData object
+
+ @return the set of digest algorithm identifiers
+
+
+
+ Return the DerObjectIdentifier associated with the encapsulated
+ content info structure carried in the signed data.
+
+
+
+ return the ContentInfo
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ return the ASN.1 encoded representation of this object using the specified encoding.
+
+ @param encoding the ASN.1 encoding format to use ("BER" or "DER").
+
+
+ Return a new CMSSignedData which guarantees to have the passed in digestAlgorithm
+ in it. Uses the DefaultDigestAlgorithmFinder for creating the digest sets.
+
+ @param signedData the signed data object to be used as a base.
+ @param digestAlgorithm the digest algorithm to be added to the signed data.
+ @return a new signed data object.
+
+
+ Return a new CMSSignedData which guarantees to have the passed in digestAlgorithm
+ in it. Uses the passed in IDigestAlgorithmFinder for creating the digest sets.
+
+ @param signedData the signed data object to be used as a base.
+ @param digestAlgorithm the digest algorithm to be added to the signed data.
+ @param digestAlgorithmFinder the digest algorithm finder to generate the digest set with.
+ @return a new signed data object.
+
+
+ Replace the SignerInformation store associated with this CMSSignedData object with the new one passed in
+ using the DefaultDigestAlgorithmFinder for creating the digest sets. You would probably only want
+ to do this if you wanted to change the unsigned attributes associated with a signer, or perhaps delete one.
+
+ @param signedData the signed data object to be used as a base.
+ @param signerInformationStore the new signer information store to use.
+ @return a new signed data object.
+
+
+ Replace the SignerInformation store associated with this CMSSignedData object with the new one passed in
+ using the passed in IDigestAlgorithmFinder for creating the digest sets. You would probably only
+ want to do this if you wanted to change the unsigned attributes associated with a signer, or perhaps delete
+ one.
+
+ @param signedData the signed data object to be used as a base.
+ @param signerInformationStore the new signer information store to use.
+ @param digestAlgorithmFinder the digest algorithm finder to generate the digest set with.
+ @return a new signed data object.
+
+
+ Replace the certificate and CRL information associated with this
+ CmsSignedData object with the new one passed in.
+
+ @param signedData the signed data object to be used as a base.
+ @param x509Certs the new certificates to be used.
+ @param x509Crls the new CRLs to be used.
+ @return a new signed data object.
+ @exception CmsException if there is an error processing the stores
+
+
+ * general class for generating a pkcs7-signature message.
+ *
+ * A simple example of usage.
+ *
+ *
+ * IX509Store certs...
+ * IX509Store crls...
+ * CmsSignedDataGenerator gen = new CmsSignedDataGenerator();
+ *
+ * gen.AddSigner(privKey, cert, CmsSignedGenerator.DigestSha1);
+ * gen.AddCertificates(certs);
+ * gen.AddCrls(crls);
+ *
+ * CmsSignedData data = gen.Generate(content);
+ *
+ *
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ * add a signer - no attributes other than the default ones will be
+ * provided here.
+ *
+ * @param key signing key to use
+ * @param cert certificate containing corresponding public key
+ * @param digestOID digest algorithm OID
+
+
+ add a signer, specifying the digest encryption algorithm to use - no attributes other than the default ones will be
+ provided here.
+
+ @param key signing key to use
+ @param cert certificate containing corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+
+
+ add a signer, specifying the digest encryption algorithm to use - no attributes other than the default ones will be
+ provided here.
+
+
+ * add a signer with extra signed/unsigned attributes.
+ *
+ * @param key signing key to use
+ * @param cert certificate containing corresponding public key
+ * @param digestOID digest algorithm OID
+ * @param signedAttr table of attributes to be included in signature
+ * @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes.
+
+ @param key signing key to use
+ @param cert certificate containing corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+ @param signedAttr table of attributes to be included in signature
+ @param unsignedAttr table of attributes to be included as unsigned
+
+
+ * add a signer with extra signed/unsigned attributes.
+ *
+ * @param key signing key to use
+ * @param subjectKeyID subjectKeyID of corresponding public key
+ * @param digestOID digest algorithm OID
+ * @param signedAttr table of attributes to be included in signature
+ * @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes.
+
+ @param key signing key to use
+ @param subjectKeyID subjectKeyID of corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+ @param signedAttr table of attributes to be included in signature
+ @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer with extra signed/unsigned attributes based on generators.
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes based on generators.
+
+
+ add a signer with extra signed/unsigned attributes based on generators.
+
+
+ add a signer, including digest encryption algorithm, with extra signed/unsigned attributes based on generators.
+
+
+ generate a signed object that for a CMS Signed Data object
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data".
+
+
+ generate a set of one or more SignerInformation objects representing counter signatures on
+ the passed in SignerInformation object.
+
+ @param signer the signer to be countersigned
+ @param sigProvider the provider to be used for counter signing.
+ @return a store containing the signers.
+
+
+ Parsing class for an CMS Signed Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one signer can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ A simple example of usage for an encapsulated signature.
+
+
+ Two notes: first, in the example below the validity of
+ the certificate isn't verified, just the fact that one of the certs
+ matches the given signer, and, second, because we are in a streaming
+ mode the order of the operations is important.
+
+
+ CmsSignedDataParser sp = new CmsSignedDataParser(encapSigData);
+
+ sp.GetSignedContent().Drain();
+
+ IX509Store certs = sp.GetCertificates();
+ SignerInformationStore signers = sp.GetSignerInfos();
+
+ foreach (SignerInformation signer in signers.GetSigners())
+ {
+ ArrayList certList = new ArrayList(certs.GetMatches(signer.SignerID));
+ X509Certificate cert = (X509Certificate) certList[0];
+
+ Console.WriteLine("verify returns: " + signer.Verify(cert));
+ }
+
+ Note also: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CmsSignedDataParser ep = new CmsSignedDataParser(new BufferedInputStream(encapSigData, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+ base constructor - with encapsulated content
+
+
+ base constructor
+
+ @param signedContent the content that was signed.
+ @param sigData the signature object.
+
+
+ Return the version number for the SignedData object
+
+ @return the version number
+
+
+ return the collection of signers that are associated with the
+ signatures for the message.
+ @throws CmsException
+
+
+ return a X509Store containing the attribute certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of attribute certificates
+ @exception org.bouncycastle.x509.NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing the public key certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of public key certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing CRLs, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of CRLs
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+
+ Return the DerObjectIdentifier associated with the encapsulated
+ content info structure carried in the signed data.
+
+
+
+ Replace the signerinformation store associated with the passed
+ in message contained in the stream original with the new one passed in.
+ You would probably only want to do this if you wanted to change the unsigned
+ attributes associated with a signer, or perhaps delete one.
+
+ The output stream is returned unclosed.
+
+ @param original the signed data stream to be used as a base.
+ @param signerInformationStore the new signer information store to use.
+ @param out the stream to Write the new signed data object to.
+ @return out.
+
+
+ Replace the certificate and CRL information associated with this
+ CMSSignedData object with the new one passed in.
+
+ The output stream is returned unclosed.
+
+ @param original the signed data stream to be used as a base.
+ @param certsAndCrls the new certificates and CRLs to be used.
+ @param out the stream to Write the new signed data object to.
+ @return out.
+ @exception CmsException if there is an error processing the CertStore
+
+
+ General class for generating a pkcs7-signature message stream.
+
+ A simple example of usage.
+
+
+ IX509Store certs...
+ CmsSignedDataStreamGenerator gen = new CmsSignedDataStreamGenerator();
+
+ gen.AddSigner(privateKey, cert, CmsSignedDataStreamGenerator.DIGEST_SHA1);
+
+ gen.AddCertificates(certs);
+
+ Stream sigOut = gen.Open(bOut);
+
+ sigOut.Write(Encoding.UTF8.GetBytes("Hello World!"));
+
+ sigOut.Close();
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer, specifying the digest encryption algorithm - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes - specifying digest
+ encryption algorithm.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ generate a signed object that for a CMS Signed Data object
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data".
+
+
+ generate a signed object that for a CMS Signed Data
+ object using the given provider - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data". If dataOutputStream is non null the data
+ being signed will be written to the stream as it is processed.
+ @param out stream the CMS object is to be written to.
+ @param encapsulate true if data should be encapsulated.
+ @param dataOutputStream output stream to copy the data being signed to.
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+
+
+ generate a signed object that for a CMS Signed Data
+ object using the given provider - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+ @param out stream the CMS object is to be written to.
+ @param signedContentType OID for data to be signed.
+ @param encapsulate true if data should be encapsulated.
+ @param dataOutputStream output stream to copy the data being signed to.
+
+
+ Default type for the signed data.
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Add a store of precalculated signers to the generator.
+
+ @param signerStore store of signers
+
+
+ Return a map of oids and byte arrays representing the digests calculated on the content during
+ the last generate.
+
+ @return a map of oids (as string objects) and byte[] representing digests.
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+ Return the digest encryption algorithm using one of the standard
+ JCA string representations rather than the algorithm identifier (if
+ possible).
+
+
+ Default authenticated attributes generator.
+
+
+ Initialise to use all defaults
+
+
+ Initialise with some extra attributes or overrides.
+
+ @param attributeTable initial attribute table to use.
+
+
+ Create a standard attribute table from the passed in parameters - this will
+ normally include contentType and messageDigest. If the constructor
+ using an AttributeTable was used, entries in it for contentType and
+ messageDigest will override the generated ones.
+
+ @param parameters source parameters for table generation.
+
+ @return a filled in IDictionary of attributes.
+
+
+ @param parameters source parameters
+ @return the populated attribute table
+
+
+ Default signed attributes generator.
+
+
+ Initialise to use all defaults
+
+
+ Initialise with some extra attributes or overrides.
+
+ @param attributeTable initial attribute table to use.
+
+
+ Create a standard attribute table from the passed in parameters - this will
+ normally include contentType, signingTime, and messageDigest. If the constructor
+ using an AttributeTable was used, entries in it for contentType, signingTime, and
+ messageDigest will override the generated ones.
+
+ @param parameters source parameters for table generation.
+
+ @return a filled in Dictionary of attributes.
+
+
+ @param parameters source parameters
+ @return the populated attribute table
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using a secret key known to the other side.
+
+
+ decrypt the content and return an input stream.
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using key agreement.
+
+
+ decrypt the content and return an input stream.
+
+
+ the KeyTransRecipientInformation class for a recipient who has been sent a secret
+ key encrypted using their public key that needs to be used to
+ extract the message.
+
+
+ decrypt the content and return it as a byte array.
+
+
+ Return the certificates stored in the underlying OriginatorInfo object.
+
+ @return a Store of X509CertificateHolder objects.
+
+
+ Return the CRLs stored in the underlying OriginatorInfo object.
+
+ @return a Store of X509CRLHolder objects.
+
+
+ Return the underlying ASN.1 object defining this SignerInformation object.
+
+ @return a OriginatorInfo.
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using a password.
+
+
+ return the object identifier for the key derivation algorithm, or null
+ if there is none present.
+
+ @return OID for key derivation algorithm, if present.
+
+
+ decrypt the content and return an input stream.
+
+
+
+ PKCS5 scheme-2 - password converted to bytes assuming ASCII.
+
+
+
+ PKCS5 scheme-2 - password converted to bytes using UTF-8.
+
+
+
+ Generate a RecipientInfo object for the given key.
+
+
+ A
+
+
+ A
+
+
+ A
+
+
+
+
+ * return the object identifier for the key encryption algorithm.
+ *
+ * @return OID for key encryption algorithm.
+
+
+ * return the ASN.1 encoded key encryption algorithm parameters, or null if
+ * there aren't any.
+ *
+ * @return ASN.1 encoding of key encryption algorithm parameters.
+
+
+ Return the MAC calculated for the content stream. Note: this call is only meaningful once all
+ the content has been read.
+
+ @return byte array containing the mac.
+
+
+ Return the first RecipientInformation object that matches the
+ passed in selector. Null if there are no matches.
+
+ @param selector to identify a recipient
+ @return a single RecipientInformation object. Null if none matches.
+
+
+ Return the number of recipients in the collection.
+
+ @return number of recipients identified.
+
+
+ Return all recipients in the collection
+
+ @return a collection of recipients.
+
+
+ Return possible empty collection with recipients matching the passed in RecipientID
+
+ @param selector a recipient id to select against.
+ @return a collection of RecipientInformation objects.
+
+
+ If the passed in flag is true, the signer signature will be based on the data, not
+ a collection of signed attributes, and no signed attributes will be included.
+
+ @return the builder object
+
+
+ Provide a custom signed attribute generator.
+
+ @param signedGen a generator of signed attributes.
+ @return the builder object
+
+
+ Provide a generator of unsigned attributes.
+
+ @param unsignedGen a generator for signed attributes.
+ @return the builder object
+
+
+ Build a generator with the passed in X.509 certificate issuer and serial number as the signerIdentifier.
+
+ @param contentSigner operator for generating the final signature in the SignerInfo with.
+ @param certificate X.509 certificate related to the contentSigner.
+ @return a SignerInfoGenerator
+ @throws OperatorCreationException if the generator cannot be built.
+
+
+ Build a generator with the passed in subjectKeyIdentifier as the signerIdentifier. If used you should
+ try to follow the calculation described in RFC 5280 section 4.2.1.2.
+
+ @param signerFactory operator factory for generating the final signature in the SignerInfo with.
+ @param subjectKeyIdentifier key identifier to identify the public key for verifying the signature.
+ @return a SignerInfoGenerator
+
+
+ an expanded SignerInfo block from a CMS Signed message
+
+
+ Protected constructor. In some cases clients have their own idea about how to encode
+ the signed attributes and calculate the signature. This constructor is to allow developers
+ to deal with that by extending off the class and overriding e.g. SignedAttributes property.
+
+ @param baseInfo the SignerInformation to base this one on.
+
+
+ return the version number for this objects underlying SignerInfo structure.
+
+
+ return the object identifier for the signature.
+
+
+ return the signature parameters, or null if there aren't any.
+
+
+ return the content digest that was calculated during verification.
+
+
+ return the object identifier for the signature.
+
+
+ return the signature/encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a table of the signed attributes - indexed by
+ the OID of the attribute.
+
+
+ return a table of the unsigned attributes indexed by
+ the OID of the attribute.
+
+
+ return the encoded signature
+
+
+ Return a SignerInformationStore containing the counter signatures attached to this
+ signer. If no counter signatures are present an empty store is returned.
+
+
+ return the DER encoding of the signed attributes.
+ @throws IOException if an encoding error occurs.
+
+
+ verify that the given public key successfully handles and confirms the
+ signature associated with this signer.
+
+
+ verify that the given certificate successfully handles and confirms
+ the signature associated with this signer and, if a signingTime
+ attribute is available, that the certificate was valid at the time the
+ signature was generated.
+
+
+ Return the base ASN.1 CMS structure that this object contains.
+
+ @return an object containing a CMS SignerInfo structure.
+
+
+ Return a signer information object with the passed in unsigned
+ attributes replacing the ones that are current associated with
+ the object passed in.
+
+ @param signerInformation the signerInfo to be used as the basis.
+ @param unsignedAttributes the unsigned attributes to add.
+ @return a copy of the original SignerInformationObject with the changed attributes.
+
+
+ Return a signer information object with passed in SignerInformationStore representing counter
+ signatures attached as an unsigned attribute.
+
+ @param signerInformation the signerInfo to be used as the basis.
+ @param counterSigners signer info objects carrying counter signature.
+ @return a copy of the original SignerInformationObject with the changed attributes.
+
+
+ Create a store containing a single SignerInformation object.
+
+ @param signerInfo the signer information to contain.
+
+
+ Create a store containing a collection of SignerInformation objects.
+
+ @param signerInfos a collection signer information objects to contain.
+
+
+ Return the first SignerInformation object that matches the
+ passed in selector. Null if there are no matches.
+
+ @param selector to identify a signer
+ @return a single SignerInformation object. Null if none matches.
+
+
+ The number of signers in the collection.
+
+
+ An ICollection of all signers in the collection
+
+
+ Return possible empty collection with signers matching the passed in SignerID
+
+ @param selector a signer id to select against.
+ @return a collection of SignerInformation objects.
+
+
+ Basic generator that just returns a preconstructed attribute table
+
+
+
+ Carrier for an authenticator control.
+
+
+
+
+ Basic constructor - build from a UTF-8 string representing the token.
+
+ UTF-8 string representing the token.
+
+
+
+ Basic constructor - build from a string representing the token.
+
+ string representing the token.
+
+
+
+ Return the type of this control.
+
+
+
+
+ Return the token associated with this control (a UTF8String).
+
+
+
+ Return true if the message only contains X.509 public key certificates.
+
+ @return true if only X.509 PK, false otherwise.
+
+
+ Return the actual CMP certificates - useful if the array also contains non-X509 PK certificates.
+
+ @return CMPCertificate array
+
+
+ Builder for a CertificateRepMessage.
+
+
+ Base constructor which can accept 0 or more certificates representing the CA plus its chain.
+
+ @param caCerts the CA public key and it's support certificates (optional)
+
+
+
+ Create a CertificateRequestMessage from the passed in bytes.
+
+ BER/DER encoding of the CertReqMsg structure.
+
+
+
+ Return the underlying ASN.1 object defining this CertificateRequestMessage object.
+
+ A CertReqMsg
+
+
+
+ Return the certificate request ID for this message.
+
+ the certificate request ID.
+
+
+
+ Return the certificate template contained in this message.
+
+ a CertTemplate structure.
+
+
+
+ Return whether or not this request has control values associated with it.
+
+ true if there are control values present, false otherwise.
+
+
+
+ Return whether or not this request has a specific type of control value.
+
+ the type OID for the control value we are checking for.
+ true if a control value of type is present, false otherwise.
+
+
+
+ Return a control value of the specified type.
+
+ the type OID for the control value we are checking for.
+ the control value if present, null otherwise.
+
+
+
+ Return whether or not this request message has a proof-of-possession field in it.
+
+ true if proof-of-possession is present, false otherwise.
+
+
+
+ Return the type of the proof-of-possession this request message provides.
+
+ one of: popRaVerified, popSigningKey, popKeyEncipherment, popKeyAgreement
+
+
+
+ Return whether or not the proof-of-possession (POP) is of the type popSigningKey and
+ it has a public key MAC associated with it.
+
+ true if POP is popSigningKey and a PKMAC is present, false otherwise.
+
+
+
+ Return whether or not a signing key proof-of-possession (POP) is valid.
+
+ a provider that can produce content verifiers for the signature contained in this POP.
+ true if the POP is valid, false otherwise.
+ if there is a problem in verification or content verifier creation.
+ if POP not appropriate.
+
+
+
+ Return whether or not a signing key proof-of-possession (POP), with an associated PKMAC, is valid.
+
+ a provider that can produce content verifiers for the signature contained in this POP.
+ a suitable PKMacBuilder to create the MAC verifier.
+ the password used to key the MAC calculation.
+ true if the POP is valid, false otherwise.
+ if there is a problem in verification or content verifier creation.
+ if POP not appropriate.
+
+
+
+ Return the ASN.1 encoding of the certReqMsg we wrap.
+
+ a byte array containing the binary encoding of the certReqMsg.
+
+
+ High level wrapper for the CertResponse CRMF structure.
+
+
+ Return true if the response contains an encrypted certificate.
+
+ @return true if certificate in response encrypted, false otherwise.
+
+
+ Return a CMSEnvelopedData representing the encrypted certificate contained in the response.
+
+ @return a CMEEnvelopedData if an encrypted certificate is present.
+ @throws IllegalStateException if no encrypted certificate is present, or there is an issue with the enveloped data.
+
+
+ Return the CMPCertificate representing the plaintext certificate in the response.
+
+ @return a CMPCertificate if a plaintext certificate is present.
+ @throws IllegalStateException if no plaintext certificate is present.
+
+
+ Return this object's underlying ASN.1 structure.
+
+ @return a CertResponse
+
+
+ Builder for CertificateResponse objects (the CertResponse CRMF equivalent).
+
+
+ Base constructor.
+
+ @param certReqId the request ID for the response.
+ @param statusInfo the status info to associate with the response.
+
+
+ Specify the certificate to assign to this response (in plaintext).
+
+ @param certificate the X.509 PK certificate to include.
+ @return the current builder.
+
+
+ Specify the certificate to assign to this response (in plaintext).
+
+ @param cmpCertificate the X.509 PK certificate to include.
+ @return the current builder.
+
+
+ Specify the encrypted certificate to assign to this response (in plaintext).
+
+ @param encryptedCertificate an encrypted
+ @return the current builder.
+
+
+ Specify the response info field on the response.
+
+ @param responseInfo a response info string.
+ @return the current builder.
+
+
+
+ Create a builder that makes EncryptedValue structures.
+
+ wrapper a wrapper for key used to encrypt the actual data contained in the EncryptedValue.
+ encryptor an output encryptor to encrypt the actual data contained in the EncryptedValue.
+
+
+
+
+ Create a builder that makes EncryptedValue structures with fixed length blocks padded using the passed in padder.
+
+ a wrapper for key used to encrypt the actual data contained in the EncryptedValue.
+ encryptor an output encryptor to encrypt the actual data contained in the EncryptedValue.
+ padder a padder to ensure that the EncryptedValue created will always be a constant length.
+
+
+
+
+ Build an EncryptedValue structure containing the passed in pass phrase.
+
+ a revocation pass phrase.
+ an EncryptedValue containing the encrypted pass phrase.
+
+
+
+
+ Build an EncryptedValue structure containing the certificate contained in
+ the passed in holder.
+
+ a holder containing a certificate.
+ an EncryptedValue containing the encrypted certificate.
+ on a failure to encrypt the data, or wrap the symmetric key for this value.
+
+
+
+
+ Build an EncryptedValue structure containing the private key contained in
+ the passed info structure.
+
+ a PKCS#8 private key info structure.
+ an EncryptedValue containing an EncryptedPrivateKeyInfo structure.
+ on a failure to encrypt the data, or wrap the symmetric key for this value.
+
+
+
+ Parser for EncryptedValue structures.
+
+
+ Basic constructor - create a parser to read the passed in value.
+
+ @param value the value to be parsed.
+
+
+ Create a parser to read the passed in value, assuming the padder was
+ applied to the data prior to encryption.
+
+ @param value the value to be parsed.
+ @param padder the padder to be used to remove padding from the decrypted value..
+
+
+
+ Generic interface for a CertificateRequestMessage control value.
+
+
+
+
+ Return the type of this control.
+
+
+
+
+ Return the value contained in this control object.
+
+
+
+
+ An encrypted value padder is used to make sure that prior to a value been
+ encrypted the data is padded to a standard length.
+
+
+
+
+ Return a byte array of padded data.
+
+ the data to be padded.
+ a padded byte array containing data.
+
+
+
+
+ Return a byte array of with padding removed.
+
+ the data to be padded.
+ an array containing the original unpadded data.
+
+
+
+
+ Basic constructor - build from an PKIArchiveOptions structure.
+
+ the ASN.1 structure that will underlie this control.
+
+
+
+ Return the type of this control.
+
+ CRMFObjectIdentifiers.id_regCtrl_pkiArchiveOptions
+
+
+
+ Return the underlying ASN.1 object.
+
+ a PKIArchiveOptions structure.
+
+
+
+ Return the archive control type, one of: encryptedPrivKey,keyGenParameters,or archiveRemGenPrivKey.
+
+ the archive control type.
+
+
+
+ Return whether this control contains enveloped data.
+
+ true if the control contains enveloped data, false otherwise.
+
+
+
+ Return whether this control contains enveloped data.
+
+ true if the control contains enveloped data, false otherwise.
+
+
+
+ Return the enveloped data structure contained in this control.
+
+ a CMSEnvelopedData object.
+
+
+
+ Basic constructor - specify the contents of the PKIArchiveControl structure.
+
+ the private key to be archived.
+ the general name to be associated with the private key.
+
+
+
+ Add a recipient generator to this control.
+ recipient generator created for a specific recipient.
+ this builder object.
+
+
+ Build the PKIArchiveControl using the passed in encryptor to encrypt its contents.
+ a suitable content encryptor.
+ a PKIArchiveControl object.
+
+
+
+ Default, IterationCount = 1000, OIW=IdSha1, Mac=HmacSHA1
+
+
+
+
+ Defaults with IPKMacPrimitivesProvider
+
+
+
+
+
+ Create.
+
+ The Mac provider
+ Digest Algorithm Id
+ Mac Algorithm Id
+
+
+
+ Create a PKMAC builder enforcing a ceiling on the maximum iteration count.
+
+ supporting calculator
+ max allowable value for iteration count.
+
+
+ Set the salt length in octets.
+
+ @param saltLength length in octets of the salt to be generated.
+ @return the generator
+
+
+
+ Set the iteration count.
+
+ the iteration count.
+ this
+ if iteration count is less than 100
+
+
+
+ The Secure random
+
+ The random.
+ this
+
+
+
+ Set PbmParameters
+
+ The parameters.
+ this
+
+
+
+ Build an IMacFactory.
+
+ The password.
+ IMacFactory
+
+
+
+ Basic constructor - build from a UTF-8 string representing the token.
+
+ UTF-8 string representing the token.
+
+
+
+ Basic constructor - build from a string representing the token.
+
+ string representing the token.
+
+
+
+ Return the type of this control.
+
+ CRMFObjectIdentifiers.id_regCtrl_regToken
+
+
+
+ Return the token associated with this control (a UTF8String).
+
+ a UTF8String.
+
+
+ a Diffie-Hellman key exchange engine.
+
+ note: This uses MTI/A0 key agreement in order to make the key agreement
+ secure against passive attacks. If you're doing Diffie-Hellman and both
+ parties have long term public keys you should look at using this. For
+ further information have a look at RFC 2631.
+
+ It's possible to extend this to more than two parties as well, for the moment
+ that is left as an exercise for the reader.
+
+
+ calculate our initial message.
+
+
+ given a message from a given party and the corresponding public key
+ calculate the next message in the agreement sequence. In this case
+ this will represent the shared secret.
+
+
+ a Diffie-Hellman key agreement class.
+
+ note: This is only the basic algorithm, it doesn't take advantage of
+ long term public keys if they are available. See the DHAgreement class
+ for a "better" implementation.
+
+
+ given a short term public key from a given party calculate the next
+ message in the agreement sequence.
+
+
+ Standard Diffie-Hellman groups from various IETF specifications.
+
+
+ P1363 7.2.1 ECSVDP-DH
+
+ ECSVDP-DH is Elliptic Curve Secret Value Derivation Primitive,
+ Diffie-Hellman version. It is based on the work of [DH76], [Mil86],
+ and [Kob87]. This primitive derives a shared secret value from one
+ party's private key and another party's public key, where both have
+ the same set of EC domain parameters. If two parties correctly
+ execute this primitive, they will produce the same output. This
+ primitive can be invoked by a scheme to derive a shared secret key;
+ specifically, it may be used with the schemes ECKAS-DH1 and
+ DL/ECKAS-DH2. It assumes that the input keys are valid (see also
+ Section 7.2.2).
+
+
+ P1363 7.2.2 ECSVDP-DHC
+
+ ECSVDP-DHC is Elliptic Curve Secret Value Derivation Primitive,
+ Diffie-Hellman version with cofactor multiplication. It is based on
+ the work of [DH76], [Mil86], [Kob87], [LMQ98] and [Kal98a]. This
+ primitive derives a shared secret value from one party's private key
+ and another party's public key, where both have the same set of EC
+ domain parameters. If two parties correctly execute this primitive,
+ they will produce the same output. This primitive can be invoked by a
+ scheme to derive a shared secret key; specifically, it may be used
+ with the schemes ECKAS-DH1 and DL/ECKAS-DH2. It does not assume the
+ validity of the input public key (see also Section 7.2.1).
+
+ Note: As stated P1363 compatibility mode with ECDH can be preset, and
+ in this case the implementation doesn't have a ECDH compatibility mode
+ (if you want that just use ECDHBasicAgreement and note they both implement
+ BasicAgreement!).
+
+
+
+ A participant in a Password Authenticated Key Exchange by Juggling (J-PAKE) exchange.
+
+ The J-PAKE exchange is defined by Feng Hao and Peter Ryan in the paper
+
+ "Password Authenticated Key Exchange by Juggling, 2008."
+
+ The J-PAKE protocol is symmetric.
+ There is no notion of a client or server, but rather just two participants.
+ An instance of JPakeParticipant represents one participant, and
+ is the primary interface for executing the exchange.
+
+ To execute an exchange, construct a JPakeParticipant on each end,
+ and call the following 7 methods
+ (once and only once, in the given order, for each participant, sending messages between them as described):
+
+ CreateRound1PayloadToSend() - and send the payload to the other participant
+ ValidateRound1PayloadReceived(JPakeRound1Payload) - use the payload received from the other participant
+ CreateRound2PayloadToSend() - and send the payload to the other participant
+ ValidateRound2PayloadReceived(JPakeRound2Payload) - use the payload received from the other participant
+ CalculateKeyingMaterial()
+ CreateRound3PayloadToSend(BigInteger) - and send the payload to the other participant
+ ValidateRound3PayloadReceived(JPakeRound3Payload, BigInteger) - use the payload received from the other participant
+
+ Each side should derive a session key from the keying material returned by CalculateKeyingMaterial().
+ The caller is responsible for deriving the session key using a secure key derivation function (KDF).
+
+ Round 3 is an optional key confirmation process.
+ If you do not execute round 3, then there is no assurance that both participants are using the same key.
+ (i.e. if the participants used different passwords, then their session keys will differ.)
+
+ If the round 3 validation succeeds, then the keys are guaranteed to be the same on both sides.
+
+ The symmetric design can easily support the asymmetric cases when one party initiates the communication.
+ e.g. Sometimes the round1 payload and round2 payload may be sent in one pass.
+ Also, in some cases, the key confirmation payload can be sent together with the round2 payload.
+ These are the trivial techniques to optimize the communication.
+
+ The key confirmation process is implemented as specified in
+ NIST SP 800-56A Revision 1,
+ Section 8.2 Unilateral Key Confirmation for Key Agreement Schemes.
+
+ This class is stateful and NOT threadsafe.
+ Each instance should only be used for ONE complete J-PAKE exchange
+ (i.e. a new JPakeParticipant should be constructed for each new J-PAKE exchange).
+
+
+
+
+ Convenience constructor for a new JPakeParticipant that uses
+ the JPakePrimeOrderGroups#NIST_3072 prime order group,
+ a SHA-256 digest, and a default SecureRandom implementation.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+
+
+
+ Convenience constructor for a new JPakeParticipant that uses
+ a SHA-256 digest, and a default SecureRandom implementation.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+ Prime order group. See JPakePrimeOrderGroups for standard groups.
+
+
+
+ Constructor for a new JPakeParticipant.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+ Prime order group. See JPakePrimeOrderGroups for standard groups.
+ Digest to use during zero knowledge proofs and key confirmation
+ (SHA-256 or stronger preferred).
+ Source of secure random data for x1 and x2, and for the zero knowledge proofs.
+
+
+
+ Gets the current state of this participant.
+ See the STATE_* constants for possible values.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 1.
+
+ After execution, the State state} will be STATE_ROUND_1_CREATED}.
+
+
+
+
+ Validates the payload received from the other participant during round 1.
+
+ Must be called prior to CreateRound2PayloadToSend().
+
+ After execution, the State state will be STATE_ROUND_1_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws InvalidOperationException
+ if called multiple times.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 2.
+
+ ValidateRound1PayloadReceived(JPakeRound1Payload) must be called prior to this method.
+
+ After execution, the State state will be STATE_ROUND_2_CREATED.
+
+ Throws InvalidOperationException if called prior to ValidateRound1PayloadReceived(JPakeRound1Payload), or multiple times
+
+
+
+
+ Validates the payload received from the other participant during round 2.
+ Note that this DOES NOT detect a non-common password.
+ The only indication of a non-common password is through derivation
+ of different keys (which can be detected explicitly by executing round 3 and round 4)
+
+ Must be called prior to CalculateKeyingMaterial().
+
+ After execution, the State state will be STATE_ROUND_2_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws
+ InvalidOperationException if called prior to ValidateRound1PayloadReceived(JPakeRound1Payload), or multiple times
+
+
+
+
+ Calculates and returns the key material.
+ A session key must be derived from this key material using a secure key derivation function (KDF).
+ The KDF used to derive the key is handled externally (i.e. not by JPakeParticipant).
+
+ The keying material will be identical for each participant if and only if
+ each participant's password is the same. i.e. If the participants do not
+ share the same password, then each participant will derive a different key.
+ Therefore, if you immediately start using a key derived from
+ the keying material, then you must handle detection of incorrect keys.
+ If you want to handle this detection explicitly, you can optionally perform
+ rounds 3 and 4. See JPakeParticipant for details on how to execute
+ rounds 3 and 4.
+
+ The keying material will be in the range [0, p-1].
+
+ ValidateRound2PayloadReceived(JPakeRound2Payload) must be called prior to this method.
+
+ As a side effect, the internal password array is cleared, since it is no longer needed.
+
+ After execution, the State state will be STATE_KEY_CALCULATED.
+
+ Throws InvalidOperationException if called prior to ValidateRound2PayloadReceived(JPakeRound2Payload),
+ or if called multiple times.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 3.
+
+ See JPakeParticipant for more details on round 3.
+
+ After execution, the State state} will be STATE_ROUND_3_CREATED.
+ Throws InvalidOperationException if called prior to CalculateKeyingMaterial, or multiple
+ times.
+
+ The keying material as returned from CalculateKeyingMaterial().
+
+
+
+ Validates the payload received from the other participant during round 3.
+
+ See JPakeParticipant for more details on round 3.
+
+ After execution, the State state will be STATE_ROUND_3_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws InvalidOperationException if called prior to
+ CalculateKeyingMaterial or multiple times
+
+ The round 3 payload received from the other participant.
+ The keying material as returned from CalculateKeyingMaterial().
+
+
+
+ A pre-computed prime order group for use during a J-PAKE exchange.
+
+ Typically a Schnorr group is used. In general, J-PAKE can use any prime order group
+ that is suitable for public key cryptography, including elliptic curve cryptography.
+
+ See JPakePrimeOrderGroups for convenient standard groups.
+
+ NIST publishes
+ many groups that can be used for the desired level of security.
+
+
+
+
+ Constructs a new JPakePrimeOrderGroup.
+
+ In general, you should use one of the pre-approved groups from
+ JPakePrimeOrderGroups, rather than manually constructing one.
+
+ The following basic checks are performed:
+
+ p-1 must be evenly divisible by q
+ g must be in [2, p-1]
+ g^q mod p must equal 1
+ p must be prime (within reasonably certainty)
+ q must be prime (within reasonably certainty)
+
+ The prime checks are performed using BigInteger#isProbablePrime(int),
+ and are therefore subject to the same probability guarantees.
+
+ These checks prevent trivial mistakes.
+ However, due to the small uncertainties if p and q are not prime,
+ advanced attacks are not prevented.
+ Use it at your own risk.
+
+ Throws NullReferenceException if any argument is null. Throws
+ InvalidOperationException is any of the above validations fail.
+
+
+
+
+ Constructor used by the pre-approved groups in JPakePrimeOrderGroups.
+ These pre-approved groups can avoid the expensive checks.
+ User-specified groups should not use this constructor.
+
+
+
+
+ Standard pre-computed prime order groups for use by J-PAKE.
+ (J-PAKE can use pre-computed prime order groups, same as DSA and Diffie-Hellman.)
+
+ This class contains some convenient constants for use as input for
+ constructing {@link JPAKEParticipant}s.
+
+ The prime order groups below are taken from Sun's JDK JavaDoc (docs/guide/security/CryptoSpec.html#AppB),
+ and from the prime order groups
+ published by NIST.
+
+
+
+
+ From Sun's JDK JavaDoc (docs/guide/security/CryptoSpec.html#AppB)
+ 1024-bit p, 160-bit q and 1024-bit g for 80-bit security.
+
+
+
+
+ From NIST.
+ 2048-bit p, 224-bit q and 2048-bit g for 112-bit security.
+
+
+
+
+ From NIST.
+ 3072-bit p, 256-bit q and 3072-bit g for 128-bit security.
+
+
+
+
+ The payload sent/received during the first round of a J-PAKE exchange.
+
+ Each JPAKEParticipant creates and sends an instance of this payload to
+ the other. The payload to send should be created via
+ JPAKEParticipant.CreateRound1PayloadToSend().
+
+ Each participant must also validate the payload received from the other.
+ The received payload should be validated via
+ JPAKEParticipant.ValidateRound1PayloadReceived(JPakeRound1Payload).
+
+
+
+
+ The id of the JPAKEParticipant who created/sent this payload.
+
+
+
+
+ The value of g^x1
+
+
+
+
+ The value of g^x2
+
+
+
+
+ The zero knowledge proof for x1.
+
+ This is a two element array, containing {g^v, r} for x1.
+
+
+
+
+ The zero knowledge proof for x2.
+
+ This is a two element array, containing {g^v, r} for x2.
+
+
+
+
+ The payload sent/received during the second round of a J-PAKE exchange.
+
+ Each JPAKEParticipant creates and sends an instance
+ of this payload to the other JPAKEParticipant.
+ The payload to send should be created via
+ JPAKEParticipant#createRound2PayloadToSend()
+
+ Each JPAKEParticipant must also validate the payload
+ received from the other JPAKEParticipant.
+ The received payload should be validated via
+ JPAKEParticipant#validateRound2PayloadReceived(JPakeRound2Payload)
+
+
+
+
+ The id of the JPAKEParticipant who created/sent this payload.
+
+
+
+
+ The value of A, as computed during round 2.
+
+
+
+
+ The zero knowledge proof for x2 * s.
+
+ This is a two element array, containing {g^v, r} for x2 * s.
+
+
+
+
+ The payload sent/received during the optional third round of a J-PAKE exchange,
+ which is for explicit key confirmation.
+
+ Each JPAKEParticipant creates and sends an instance
+ of this payload to the other JPAKEParticipant.
+ The payload to send should be created via
+ JPAKEParticipant#createRound3PayloadToSend(BigInteger)
+
+ Eeach JPAKEParticipant must also validate the payload
+ received from the other JPAKEParticipant.
+ The received payload should be validated via
+ JPAKEParticipant#validateRound3PayloadReceived(JPakeRound3Payload, BigInteger)
+
+
+
+
+ The id of the {@link JPAKEParticipant} who created/sent this payload.
+
+
+
+
+ The value of MacTag, as computed by round 3.
+
+ See JPAKEUtil#calculateMacTag(string, string, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, org.bouncycastle.crypto.Digest)
+
+
+
+
+ Primitives needed for a J-PAKE exchange.
+
+ The recommended way to perform a J-PAKE exchange is by using
+ two JPAKEParticipants. Internally, those participants
+ call these primitive operations in JPakeUtilities.
+
+ The primitives, however, can be used without a JPAKEParticipant if needed.
+
+
+
+
+ Return a value that can be used as x1 or x3 during round 1.
+ The returned value is a random value in the range [0, q-1].
+
+
+
+
+ Return a value that can be used as x2 or x4 during round 1.
+ The returned value is a random value in the range [1, q-1].
+
+
+
+
+ Converts the given password to a BigInteger
+ for use in arithmetic calculations.
+
+
+
+ Converts the given password to a BigInteger mod q.
+
+
+ Converts the given password (UTF8 encoded) to a BigInteger mod q.
+
+
+
+ Calculate g^x mod p as done in round 1.
+
+
+
+
+ Calculate ga as done in round 2.
+
+
+
+
+ Calculate x2 * s as done in round 2.
+
+
+
+
+ Calculate A as done in round 2.
+
+
+
+
+ Calculate a zero knowledge proof of x using Schnorr's signature.
+ The returned array has two elements {g^v, r = v-x*h} for x.
+
+
+
+
+ Validates that g^x4 is not 1.
+ throws CryptoException if g^x4 is 1
+
+
+
+
+ Validates that ga is not 1.
+
+ As described by Feng Hao...
+ Alice could simply check ga != 1 to ensure it is a generator.
+ In fact, as we will explain in Section 3, (x1 + x3 + x4 ) is random over Zq even in the face of active attacks.
+ Hence, the probability for ga = 1 is extremely small - on the order of 2^160 for 160-bit q.
+
+ throws CryptoException if ga is 1
+
+
+
+
+ Validates the zero knowledge proof (generated by
+ calculateZeroKnowledgeProof(BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, string, Digest, SecureRandom)
+ is correct.
+
+ throws CryptoException if the zero knowledge proof is not correct
+
+
+
+
+ Calculates the keying material, which can be done after round 2 has completed.
+ A session key must be derived from this key material using a secure key derivation function (KDF).
+ The KDF used to derive the key is handled externally (i.e. not by JPAKEParticipant).
+
+ KeyingMaterial = (B/g^{x2*x4*s})^x2
+
+
+
+
+ Validates that the given participant ids are not equal.
+ (For the J-PAKE exchange, each participant must use a unique id.)
+
+ Throws CryptoException if the participantId strings are equal.
+
+
+
+
+ Validates that the given participant ids are equal.
+ This is used to ensure that the payloads received from
+ each round all come from the same participant.
+
+
+
+
+ Validates that the given object is not null.
+ throws NullReferenceException if the object is null.
+
+ object in question
+ name of the object (to be used in exception message)
+
+
+
+ Calculates the MacTag (to be used for key confirmation), as defined by
+ NIST SP 800-56A Revision 1,
+ Section 8.2 Unilateral Key Confirmation for Key Agreement Schemes.
+
+ MacTag = HMAC(MacKey, MacLen, MacData)
+ MacKey = H(K || "JPAKE_KC")
+ MacData = "KC_1_U" || participantId || partnerParticipantId || gx1 || gx2 || gx3 || gx4
+
+ Note that both participants use "KC_1_U" because the sender of the round 3 message
+ is always the initiator for key confirmation.
+
+ HMAC = {@link HMac} used with the given {@link Digest}
+ H = The given {@link Digest}
+ MacLen = length of MacTag
+
+
+
+
+ Calculates the MacKey (i.e. the key to use when calculating the MagTag for key confirmation).
+
+ MacKey = H(K || "JPAKE_KC")
+
+
+
+
+ Validates the MacTag received from the partner participant.
+
+ throws CryptoException if the participantId strings are equal.
+
+
+
+ Generator for Concatenation Key Derivation Function defined in NIST SP 800-56A, Sect 5.8.1
+
+
+ the digest to be used as the source of generated bytes
+
+
+ the underlying digest.
+
+
+ Fill len bytes of the output buffer with bytes generated from the derivation function.
+
+
+
+ RFC 2631 Diffie-hellman KEK derivation function.
+
+
+ X9.63 based key derivation function for ECDH CMS.
+
+
+
+ SM2 Key Exchange protocol - based on https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02
+
+
+
+ Implements the client side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe.
+ This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper
+ "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
+
+
+ Initialises the client to begin new authentication attempt
+ @param N The safe prime associated with the client's verifier
+ @param g The group parameter associated with the client's verifier
+ @param digest The digest algorithm associated with the client's verifier
+ @param random For key generation
+
+
+ Generates client's credentials given the client's salt, identity and password
+ @param salt The salt used in the client's verifier.
+ @param identity The user's identity (eg. username)
+ @param password The user's password
+ @return Client's public value to send to server
+
+
+ Generates client's verification message given the server's credentials
+ @param serverB The server's credentials
+ @return Client's verification message for the server
+ @throws CryptoException If server's credentials are invalid
+
+
+ Computes the client evidence message M1 using the previously received values.
+ To be called after calculating the secret S.
+ @return M1: the client side generated evidence message
+ @throws CryptoException
+
+
+ Authenticates the server evidence message M2 received and saves it only if correct.
+ @param M2: the server side generated evidence message
+ @return A boolean indicating if the server message M2 was the expected one.
+ @throws CryptoException
+
+
+ Computes the final session key as a result of the SRP successful mutual authentication
+ To be called after verifying the server evidence message M2.
+ @return Key: the mutually authenticated symmetric session key
+ @throws CryptoException
+
+
+ Implements the server side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe.
+ This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper
+ "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
+
+
+ Initialises the server to accept a new client authentication attempt
+ @param N The safe prime associated with the client's verifier
+ @param g The group parameter associated with the client's verifier
+ @param v The client's verifier
+ @param digest The digest algorithm associated with the client's verifier
+ @param random For key generation
+
+
+ Generates the server's credentials that are to be sent to the client.
+ @return The server's public value to the client
+
+
+ Processes the client's credentials. If valid the shared secret is generated and returned.
+ @param clientA The client's credentials
+ @return A shared secret BigInteger
+ @throws CryptoException If client's credentials are invalid
+
+
+ Authenticates the received client evidence message M1 and saves it only if correct.
+ To be called after calculating the secret S.
+ @param M1: the client side generated evidence message
+ @return A boolean indicating if the client message M1 was the expected one.
+ @throws CryptoException
+
+
+ Computes the server evidence message M2 using the previously verified values.
+ To be called after successfully verifying the client evidence message M1.
+ @return M2: the server side generated evidence message
+ @throws CryptoException
+
+
+ Computes the final session key as a result of the SRP successful mutual authentication
+ To be called after calculating the server evidence message M2.
+ @return Key: the mutual authenticated symmetric session key
+ @throws CryptoException
+
+
+ Computes the client evidence message (M1) according to the standard routine:
+ M1 = H( A | B | S )
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param A The public client value
+ @param B The public server value
+ @param S The secret calculated by both sides
+ @return M1 The calculated client evidence message
+
+
+ Computes the server evidence message (M2) according to the standard routine:
+ M2 = H( A | M1 | S )
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param A The public client value
+ @param M1 The client evidence message
+ @param S The secret calculated by both sides
+ @return M2 The calculated server evidence message
+
+
+ Computes the final Key according to the standard routine: Key = H(S)
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param S The secret calculated by both sides
+ @return
+
+
+ Generates new SRP verifier for user
+
+
+ Initialises generator to create new verifiers
+ @param N The safe prime to use (see DHParametersGenerator)
+ @param g The group parameter to use (see DHParametersGenerator)
+ @param digest The digest to use. The same digest type will need to be used later for the actual authentication
+ attempt. Also note that the final session key size is dependent on the chosen digest.
+
+
+ Creates a new SRP verifier
+ @param salt The salt to use, generally should be large and random
+ @param identity The user's identifying information (eg. username)
+ @param password The user's password
+ @return A new verifier for use in future SRP authentication
+
+
+ a holding class for public/private parameter pairs.
+
+
+ basic constructor.
+
+ @param publicParam a public key parameters object.
+ @param privateParam the corresponding private key parameters.
+
+
+ return the public key parameters.
+
+ @return the public key parameters.
+
+
+ return the private key parameters.
+
+ @return the private key parameters.
+
+
+ The AEAD block ciphers already handle buffering internally, so this class
+ just takes care of implementing IBufferedCipher methods.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the blocksize for the underlying cipher.
+
+ @return the blocksize for the underlying cipher.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output, or the input is not block size aligned and should be.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+ @exception DataLengthException if the input is not block size
+ aligned.
+
+
+ Reset the buffer and cipher. After resetting the object is in the same
+ state as it was after the last init (if there was one).
+
+
+ The AEAD ciphers already handle buffering internally, so this class
+ just takes care of implementing IBufferedCipher methods.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the blocksize for the underlying cipher.
+
+ @return the blocksize for the underlying cipher.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output, or the input is not block size aligned and should be.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+ @exception DataLengthException if the input is not block size
+ aligned.
+
+
+ Reset the buffer and cipher. After resetting the object is in the same
+ state as it was after the last init (if there was one).
+
+
+ a buffer wrapper for an asymmetric block cipher, allowing input
+ to be accumulated in a piecemeal fashion until final processing.
+
+
+ base constructor.
+
+ @param cipher the cipher this buffering object wraps.
+
+
+ return the amount of data sitting in the buffer.
+
+ @return the amount of data sitting in the buffer.
+
+
+ initialise the buffer and the underlying cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+
+
+ process the contents of the buffer using the underlying
+ cipher.
+
+ @return the result of the encryption/decryption process on the
+ buffer.
+ @exception InvalidCipherTextException if we are given a garbage block.
+
+
+ Reset the buffer
+
+
+ A wrapper class that allows block ciphers to be used to process data in
+ a piecemeal fashion. The BufferedBlockCipher outputs a block only when the
+ buffer is full and more data is being added, or on a doFinal.
+
+ Note: in the case where the underlying cipher is either a CFB cipher or an
+ OFB one the last block may not be a multiple of the block size.
+
+
+
+ constructor for subclasses
+
+
+ Create a buffered block cipher without padding.
+
+ @param cipher the underlying block cipher this buffering object wraps.
+ false otherwise.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the blocksize for the underlying cipher.
+
+ @return the blocksize for the underlying cipher.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output, or the input is not block size aligned and should be.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+ @exception DataLengthException if the input is not block size
+ aligned.
+
+
+ Reset the buffer and cipher. After resetting the object is in the same
+ state as it was after the last init (if there was one).
+
+
+ The base class for symmetric, or secret, cipher key generators.
+
+
+ initialise the key generator.
+
+ @param param the parameters to be used for key generation
+
+
+ Generate a secret key.
+
+ @return a byte array containing the key value.
+
+
+ This exception is thrown if a buffer that is meant to have output copied into it turns out to be too
+ short, or if we've been given insufficient input.
+
+ In general this exception will get thrown rather than an .
+
+
+
+ ASCON v1.2 Hash, https://ascon.iaik.tugraz.at/ .
+
+ https://csrc.nist.gov/CSRC/media/Projects/lightweight-cryptography/documents/finalist-round/updated-spec-doc/ascon-spec-final.pdf
+ ASCON v1.2 Hash with reference to C Reference Impl from: https://github.com/ascon/ascon-c .
+
+
+
+ ASCON v1.2 XOF, https://ascon.iaik.tugraz.at/ .
+
+ https://csrc.nist.gov/CSRC/media/Projects/lightweight-cryptography/documents/finalist-round/updated-spec-doc/ascon-spec-final.pdf
+ ASCON v1.2 XOF with reference to C Reference Impl from: https://github.com/ascon/ascon-c .
+
+
+
+ Implementation of the cryptographic hash function Blake2b.
+
+ Blake2b offers a built-in keying mechanism to be used directly
+ for authentication ("Prefix-MAC") rather than a HMAC construction.
+
+ Blake2b offers a built-in support for a salt for randomized hashing
+ and a personal string for defining a unique hash function for each application.
+
+ BLAKE2b is optimized for 64-bit platforms and produces digests of any size
+ between 1 and 64 bytes.
+
+
+ Basic sized constructor - size in bits.
+
+ @param digestSize size of the digest in bits
+
+
+ Blake2b for authentication ("Prefix-MAC mode").
+ After calling the doFinal() method, the key will
+ remain to be used for further computations of
+ this instance.
+ The key can be overwritten using the clearKey() method.
+
+ @param key A key up to 64 bytes or null
+
+
+ Blake2b with key, required digest length (in bytes), salt and personalization.
+ After calling the doFinal() method, the key, the salt and the personal string
+ will remain and might be used for further computations with this instance.
+ The key can be overwritten using the clearKey() method, the salt (pepper)
+ can be overwritten using the clearSalt() method.
+
+ @param key A key up to 64 bytes or null
+ @param digestLength from 1 up to 64 bytes
+ @param salt 16 bytes or null
+ @param personalization 16 bytes or null
+
+
+ update the message digest with a single byte.
+
+ @param b the input byte to be entered.
+
+
+ update the message digest with a block of bytes.
+
+ @param message the byte array containing the data.
+ @param offset the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ close the digest, producing the final digest value. The doFinal
+ call leaves the digest reset.
+ Key, salt and personal string remain.
+
+ @param out the array the digest is to be copied into.
+ @param outOffset the offset into the out array the digest is to start at.
+
+
+ Reset the digest back to it's initial state.
+ The key, the salt and the personal string will
+ remain for further computations.
+
+
+ return the algorithm name
+
+ @return the algorithm name
+
+
+ return the size, in bytes, of the digest produced by this message digest.
+
+ @return the size, in bytes, of the digest produced by this message digest.
+
+
+ Return the size in bytes of the internal buffer the digest applies it's compression
+ function to.
+
+ @return byte length of the digests internal buffer.
+
+
+ Overwrite the key
+ if it is no longer used (zeroization)
+
+
+ Overwrite the salt (pepper) if it
+ is secret and no longer used (zeroization)
+
+
+ Implementation of the cryptographic hash function BLAKE2s.
+
+ BLAKE2s offers a built-in keying mechanism to be used directly
+ for authentication ("Prefix-MAC") rather than a HMAC construction.
+
+ BLAKE2s offers a built-in support for a salt for randomized hashing
+ and a personal string for defining a unique hash function for each application.
+
+ BLAKE2s is optimized for 32-bit platforms and produces digests of any size
+ between 1 and 32 bytes.
+
+
+ BLAKE2s Initialization Vector
+
+
+
+ Message word permutations
+
+
+
+ Whenever this buffer overflows, it will be processed in the Compress()
+ function. For performance issues, long messages will not use this buffer.
+
+
+ Position of last inserted byte
+
+
+
+ Internal state, in the BLAKE2 paper it is called v
+
+
+
+ State vector, in the BLAKE2 paper it is called h
+
+
+
+ holds least significant bits of counter
+
+
+
+ holds most significant bits of counter
+
+
+
+ finalization flag, for last block: ~0
+
+
+
+ BLAKE2s-256 for hashing.
+
+
+ BLAKE2s for hashing.
+
+ @param digestBits the desired digest length in bits. Must be a multiple of 8 and less than 256.
+
+
+ BLAKE2s for authentication ("Prefix-MAC mode").
+
+ After calling the doFinal() method, the key will remain to be used for
+ further computations of this instance. The key can be overwritten using
+ the clearKey() method.
+
+ @param key a key up to 32 bytes or null
+
+
+ BLAKE2s with key, required digest length, salt and personalization.
+
+ After calling the doFinal() method, the key, the salt and the personal
+ string will remain and might be used for further computations with this
+ instance. The key can be overwritten using the clearKey() method, the
+ salt (pepper) can be overwritten using the clearSalt() method.
+
+ @param key a key up to 32 bytes or null
+ @param digestBytes from 1 up to 32 bytes
+ @param salt 8 bytes or null
+ @param personalization 8 bytes or null
+
+
+ Update the message digest with a single byte.
+
+ @param b the input byte to be entered.
+
+
+ Update the message digest with a block of bytes.
+
+ @param message the byte array containing the data.
+ @param offset the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ Close the digest, producing the final digest value. The doFinal() call
+ leaves the digest reset. Key, salt and personal string remain.
+
+ @param out the array the digest is to be copied into.
+ @param outOffset the offset into the out array the digest is to start at.
+
+
+ Reset the digest back to its initial state. The key, the salt and the
+ personal string will remain for further computations.
+
+
+ Return the algorithm name.
+
+ @return the algorithm name
+
+
+ Return the size in bytes of the digest produced by this message digest.
+
+ @return the size in bytes of the digest produced by this message digest.
+
+
+ Return the size in bytes of the internal buffer the digest applies its
+ compression function to.
+
+ @return byte length of the digest's internal buffer.
+
+
+ Overwrite the key if it is no longer used (zeroization).
+
+
+ Overwrite the salt (pepper) if it is secret and no longer used
+ (zeroization).
+
+
+ Implementation of the eXtendable Output Function (XOF) BLAKE2xs.
+
+ BLAKE2xs offers a built-in keying mechanism to be used directly
+ for authentication ("Prefix-MAC") rather than a HMAC construction.
+
+ BLAKE2xs offers a built-in support for a salt for randomized hashing
+ and a personal string for defining a unique hash function for each application.
+
+ BLAKE2xs is optimized for 32-bit platforms and produces digests of any size
+ between 1 and 2^16-2 bytes. The length can also be unknown and then the maximum
+ length will be 2^32 blocks of 32 bytes.
+
+
+ Magic number to indicate an unknown length of digest
+
+
+ Expected digest length for the xof. It can be unknown.
+
+
+ Root hash that will take the updates
+
+
+ Digest of the root hash
+
+
+ Digest of each round of the XOF
+
+
+ Current position for a round
+
+
+ Overall position of the digest. It is useful when the length is known
+ in advance to get last block length.
+
+
+ Keep track of the round number to detect the end of the digest after
+ 2^32 blocks of 32 bytes.
+
+
+ Current node offset incremented by 1 every round.
+
+
+ BLAKE2xs for hashing with unknown digest length
+
+
+ BLAKE2xs for hashing
+
+ @param digestBytes The desired digest length in bytes. Must be above 1 and less than 2^16-1
+
+
+ BLAKE2xs with key
+
+ @param digestBytes The desired digest length in bytes. Must be above 1 and less than 2^16-1
+ @param key A key up to 32 bytes or null
+
+
+ BLAKE2xs with key, salt and personalization
+
+ @param digestBytes The desired digest length in bytes. Must be above 1 and less than 2^16-1
+ @param key A key up to 32 bytes or null
+ @param salt 8 bytes or null
+ @param personalization 8 bytes or null
+
+
+ Return the algorithm name.
+
+ @return the algorithm name
+
+
+ Return the size in bytes of the digest produced by this message digest.
+
+ @return the size in bytes of the digest produced by this message digest.
+
+
+ Return the size in bytes of the internal buffer the digest applies its
+ compression function to.
+
+ @return byte length of the digest's internal buffer.
+
+
+ Return the maximum size in bytes the digest can produce when the length
+ is unknown
+
+ @return byte length of the largest digest with unknown length
+
+
+ Update the message digest with a single byte.
+
+ @param in the input byte to be entered.
+
+
+ Update the message digest with a block of bytes.
+
+ @param in the byte array containing the data.
+ @param inOff the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ Reset the digest back to its initial state. The key, the salt and the
+ personal string will remain for further computations.
+
+
+ Close the digest, producing the final digest value. The doFinal() call
+ leaves the digest reset. Key, salt and personal string remain.
+
+ @param out the array the digest is to be copied into.
+ @param outOffset the offset into the out array the digest is to start at.
+
+
+ Close the digest, producing the final digest value. The doFinal() call
+ leaves the digest reset. Key, salt, personal string remain.
+
+ @param out output array to write the output bytes to.
+ @param outOff offset to start writing the bytes at.
+ @param outLen the number of output bytes requested.
+
+
+ Start outputting the results of the final calculation for this digest. Unlike doFinal, this method
+ will continue producing output until the Xof is explicitly reset, or signals otherwise.
+
+ @param out output array to write the output bytes to.
+ @param outOff offset to start writing the bytes at.
+ @param outLen the number of output bytes requested.
+ @return the number of bytes written
+
+
+ Already outputting error.
+
+
+ Number of Words.
+
+
+ Number of Rounds.
+
+
+ Buffer length.
+
+
+ Chunk length.
+
+
+ ChunkStart Flag.
+
+
+ ChunkEnd Flag.
+
+
+ Parent Flag.
+
+
+ Root Flag.
+
+
+ KeyedHash Flag.
+
+
+ DeriveContext Flag.
+
+
+ DeriveKey Flag.
+
+
+ Chaining0 State Locations.
+
+
+ Chaining1 State Location.
+
+
+ Chaining2 State Location.
+
+
+ Chaining3 State Location.
+
+
+ Chaining4 State Location.
+
+
+ Chaining5 State Location.
+
+
+ Chaining6 State Location.
+
+
+ Chaining7 State Location.
+
+
+ IV0 State Locations.
+
+
+ IV1 State Location.
+
+
+ IV2 State Location.
+
+
+ IV3 State Location.
+
+
+ Count0 State Location.
+
+
+ Count1 State Location.
+
+
+ DataLen State Location.
+
+
+ Flags State Location.
+
+
+ Message word permutations.
+
+
+ Blake3 Initialization Vector.
+
+
+ The byte input/output buffer.
+
+
+ The key.
+
+
+ The chaining value.
+
+
+ The state.
+
+
+ The message Buffer.
+
+
+ The indices.
+
+
+ The chainingStack.
+
+
+ The default digestLength.
+
+
+ Are we outputting?
+
+
+ How many more bytes can we output?
+
+
+ The current mode.
+
+
+ The output mode.
+
+
+ The output dataLen.
+
+
+ The block counter.
+
+
+ The # of bytes in the current block.
+
+
+ The position of the next byte in the buffer.
+
+
+ the default digest size (in bits)
+
+
+ Constructor.
+
+ @param pSource the source digest.
+
+
+ Initialise.
+
+ @param pParams the parameters.
+
+
+ Compress next block of the message.
+
+ @param pMessage the message buffer
+ @param pMsgPos the position within the message buffer
+
+
+ Initialise M from message.
+
+ @param pMessage the source message
+ @param pMsgPos the message position
+
+
+ Adjust the stack.
+
+
+ Compress final block.
+
+ @param pDataLen the data length
+
+
+ Process the stack.
+
+
+ Perform compression.
+
+
+ Perform a round.
+
+
+ Adjust Chaining after compression.
+
+
+ Mix function G.
+
+ @param msgIdx the message index
+ @param posA position A in V
+ @param posB position B in V
+ @param posC position C in V
+ @param posD poistion D in V
+
+
+ initialise the indices.
+
+
+ PermuteIndices.
+
+
+ Initialise null key.
+
+
+ Initialise key.
+
+ @param pKey the keyBytes
+
+
+ Initialise key from context.
+
+
+ Initialise chunk block.
+
+ @param pDataLen the dataLength
+ @param pFinal is this the final chunk?
+
+
+ Initialise parent block.
+
+
+ Initialise output block.
+
+
+ IncrementBlockCount.
+
+
+ ResetBlockCount.
+
+
+ Set root indication.
+
+
+
+ Customizable SHAKE function.
+
+
+
+
+ Base constructor
+
+ bit length of the underlying SHAKE function, 128 or 256.
+ the function name string, note this is reserved for use by NIST. Avoid using it if not required.
+ the customization string - available for local use.
+
+
+ implementation of Ukrainian DSTU 7564 hash function
+
+
+ base implementation of MD4 family style digest as outlined in
+ "Handbook of Applied Cryptography", pages 344 - 347.
+
+
+ implementation of GOST R 34.11-94
+
+
+ Standard constructor
+
+
+ Constructor to allow use of a particular sbox with GOST28147
+ @see GOST28147Engine#getSBox(String)
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of Keccak based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+ Return the size of block that the compression function is applied to in bytes.
+
+ @return internal byte length of a block.
+
+
+ Base class for SHA-384 and SHA-512.
+
+
+ Constructor for variable length word
+
+
+ Copy constructor. We are using copy constructors in place
+ of the object.Clone() interface as this interface is not
+ supported by J2ME.
+
+
+ adjust the byte counts so that byteCount2 represents the
+ upper long (less 3 bits) word of the byte count.
+
+
+ implementation of MD2
+ as outlined in RFC1319 by B.Kaliski from RSA Laboratories April 1992
+
+
+ return the algorithm name
+
+ @return the algorithm name
+
+
+ Close the digest, producing the final digest value. The doFinal
+ call leaves the digest reset.
+
+ @param out the array the digest is to be copied into.
+ @param outOff the offset into the out array the digest is to start at.
+
+
+ reset the digest back to it's initial state.
+
+
+ update the message digest with a single byte.
+
+ @param in the input byte to be entered.
+
+
+ update the message digest with a block of bytes.
+
+ @param in the byte array containing the data.
+ @param inOff the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ implementation of MD4 as RFC 1320 by R. Rivest, MIT Laboratory for
+ Computer Science and RSA Data Security, Inc.
+
+ NOTE: This algorithm is only included for backwards compatibility
+ with legacy applications, it's not secure, don't use it for anything new!
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of MD5 as outlined in "Handbook of Applied Cryptography", pages 346 - 347.
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ Wrapper removes exposure to the IMemoable interface on an IDigest implementation.
+
+
+ Base constructor.
+
+ @param baseDigest underlying digest to use.
+ @exception IllegalArgumentException if baseDigest is null
+
+
+
+ ParallelHash - a hash designed to support the efficient hashing of very long strings, by taking advantage,
+ of the parallelism available in modern processors with an optional XOF mode.
+
+ From NIST Special Publication 800-185 - SHA-3 Derived Functions:cSHAKE, KMAC, TupleHash and ParallelHash
+
+
+
+
+ Base constructor.
+
+ @param bitLength bit length of the underlying SHAKE function, 128 or 256.
+ @param S the customization string - available for local use.
+ @param B the blocksize (in bytes) for hashing.
+
+
+ Photon-Beetle, https://www.isical.ac.in/~lightweight/beetle/
+ https://csrc.nist.gov/CSRC/media/Projects/lightweight-cryptography/documents/readonlyist-round/updated-spec-doc/photon-beetle-spec-readonly.pdf
+
+ Photon-Beetle with reference to C Reference Impl from: https://github.com/PHOTON-Beetle/Software
+
+
+
+ implementation of RipeMD128
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of RipeMD see,
+ http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of RipeMD256.
+ Note: this algorithm offers the same level of security as RipeMD128.
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of RipeMD 320.
+ Note: this algorithm offers the same level of security as RipeMD160.
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of SHA-1 as outlined in "Handbook of Applied Cryptography", pages 346 - 349.
+
+ It is interesting to ponder why the, apart from the extra IV, the other difference here from MD5
+ is the "endianness" of the word processing!
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ SHA-224 as described in RFC 3874
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-224 512 32 224
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Draft FIPS 180-2 implementation of SHA-256. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Draft FIPS 180-2 implementation of SHA-384. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+
+ Implementation of SHA-3 based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+ Draft FIPS 180-2 implementation of SHA-512. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ FIPS 180-4 implementation of SHA-512/t
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+
+ Implementation of SHAKE based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+ Wrapper class that reduces the output length of a particular digest to
+ only the first n bytes of the digest function.
+
+
+ Base constructor.
+
+ @param baseDigest underlying digest to use.
+ @param length length in bytes of the output of doFinal.
+ @exception ArgumentException if baseDigest is null, or length is greater than baseDigest.GetDigestSize().
+
+
+
+ Implementation of the Skein parameterised hash function in 256, 512 and 1024 bit block sizes,
+ based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+
+ Constructs a Skein digest with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/digest size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Optionally initialises the Skein digest with the provided parameters.
+
+ See for details on the parameterisation of the Skein hash function.
+ the parameters to apply to this engine, or null to use no parameters.
+
+
+
+ Implementation of the Skein family of parameterised hash functions in 256, 512 and 1024 bit block
+ sizes, based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+ This implementation is the basis for and , implementing the
+ parameter based configuration system that allows Skein to be adapted to multiple applications.
+ Initialising the engine with allows standard and arbitrary parameters to
+ be applied during the Skein hash function.
+
+ Implemented:
+
+ - 256, 512 and 1024 bit internal states.
+ - Full 96 bit input length.
+ - Parameters defined in the Skein specification, and arbitrary other pre and post message
+ parameters.
+ - Arbitrary output size in 1 byte intervals.
+
+
+ Not implemented:
+
+ - Sub-byte length input (bit padding).
+ - Tree hashing.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+ The parameter type for the Skein key.
+
+
+ The parameter type for the Skein configuration block.
+
+
+ The parameter type for the message.
+
+
+ The parameter type for the output transformation.
+
+
+ Precalculated UBI(CFG) states for common state/output combinations without key or other
+ pre-message params.
+
+
+ Point at which position might overflow long, so switch to add with carry logic
+
+
+ Bit 127 = final
+
+
+ Bit 126 = first
+
+
+ UBI uses a 128 bit tweak
+
+
+ Whether 64 bit position exceeded
+
+
+ Advances the position in the tweak by the specified value.
+
+
+ The Unique Block Iteration chaining mode.
+
+
+ Buffer for the current block of message data
+
+
+ Offset into the current message block
+
+
+ Buffer for message words for feedback into encrypted block
+
+
+ Underlying Threefish tweakable block cipher
+
+
+ Size of the digest output, in bytes
+
+
+ The current chaining/state value
+
+
+ The initial state value
+
+
+ The (optional) key parameter
+
+
+ Parameters to apply prior to the message
+
+
+ Parameters to apply after the message, but prior to output
+
+
+ The current UBI operation
+
+
+ Buffer for single byte update method
+
+
+
+ Constructs a Skein digest with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/digest size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Creates a SkeinEngine as an exact copy of an existing instance.
+
+
+
+
+ Initialises the Skein engine with the provided parameters. See for
+ details on the parameterisation of the Skein hash function.
+
+ the parameters to apply to this engine, or null to use no parameters.
+
+
+ Calculate the initial (pre message block) chaining state.
+
+
+
+ Reset the engine to the initial state (with the key and any pre-message parameters , ready to
+ accept message input.
+
+
+
+
+ Implementation of Chinese SM3 digest as described at
+ http://tools.ietf.org/html/draft-shen-sm3-hash-00
+ and at .... ( Chinese PDF )
+
+
+ The specification says "process a bit stream",
+ but this is written to process bytes in blocks of 4,
+ meaning this will process 32-bit word groups.
+ But so do also most other digest specifications,
+ including the SHA-256 which was a origin for
+ this specification.
+
+
+
+
+ Standard constructor
+
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+
+ reset the chaining variables
+
+
+
+ Sparkle v1.2, based on the current round 3 submission, https://sparkle-lwc.github.io/ .
+
+ Reference C implementation: https://github.com/cryptolu/sparkle.
+ Specification:
+ https://csrc.nist.gov/CSRC/media/Projects/lightweight-cryptography/documents/finalist-round/updated-spec-doc/sparkle-spec-final.pdf .
+
+
+
+ implementation of Tiger based on:
+
+ http://www.cs.technion.ac.il/~biham/Reports/Tiger
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+
+ TupleHash - a hash designed to simply hash a tuple of input strings, any or all of which may be empty strings,
+ in an unambiguous way with an optional XOF mode.
+
+ From NIST Special Publication 800-185 - SHA-3 Derived Functions:cSHAKE, KMAC, TupleHash and ParallelHash
+
+
+
+
+ Base constructor.
+
+ @param bitLength bit length of the underlying SHAKE function, 128 or 256.
+ @param S the customization string - available for local use.
+
+
+ Implementation of WhirlpoolDigest, based on Java source published by Barreto and Rijmen.
+
+
+ Copy constructor. This will copy the state of the provided message digest.
+
+
+ Reset the chaining variables
+
+
+ Elliptic curve registry for various customized curve implementations.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of the
+ full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+ ISO 9796-1 padding. Note in the light of recent results you should
+ only use this with RSA (rather than the "simpler" Rabin keys) and you
+ should never use it with anything other than a hash (ie. even if the
+ message is small don't sign the message, sign it's hash) or some "random"
+ value. See your favorite search engine for details.
+
+
+ return the input block size. The largest message we can process
+ is (key_size_in_bits + 3)/16, which in our world comes to
+ key_size_in_bytes / 2.
+
+
+ return the maximum possible size for the output.
+
+
+ set the number of bits in the next message to be treated as
+ pad bits.
+
+
+ retrieve the number of pad bits in the last decoded message.
+
+
+ @exception InvalidCipherTextException if the decrypted block is not a valid ISO 9796 bit string
+
+
+ Optimal Asymmetric Encryption Padding (OAEP) - see PKCS 1 V 2.
+
+
+ @exception InvalidCipherTextException if the decrypted block turns out to
+ be badly formatted.
+
+
+ mask generator function, as described in PKCS1v2.
+
+
+ this does your basic Pkcs 1 v1.5 padding - whether or not you should be using this
+ depends on your application - see Pkcs1 Version 2 for details.
+
+
+ some providers fail to include the leading zero in PKCS1 encoded blocks. If you need to
+ work with one of these set the system property Org.BouncyCastle.Pkcs1.Strict to false.
+
+
+ The same effect can be achieved by setting the static property directly
+
+ The static property is checked during construction of the encoding object, it is set to
+ true by default.
+
+
+
+ Basic constructor.
+
+ @param cipher
+
+
+ Constructor for decryption with a fixed plaintext length.
+
+ @param cipher The cipher to use for cryptographic operation.
+ @param pLen Length of the expected plaintext.
+
+
+ Constructor for decryption with a fixed plaintext length and a fallback
+ value that is returned, if the padding is incorrect.
+
+ @param cipher
+ The cipher to use for cryptographic operation.
+ @param fallback
+ The fallback value, we don't to a arraycopy here.
+
+
+ Check the argument is a valid encoding with type 1. Returns the plaintext length if valid, or -1 if invalid.
+
+
+ Check the argument is a valid encoding with type 2. Returns the plaintext length if valid, or -1 if invalid.
+
+
+ Check the argument is a valid encoding with type 2 of a plaintext with the given length. Returns 0 if
+ valid, or -1 if invalid.
+
+
+ Decode PKCS#1.5 encoding, and return a random value if the padding is not correct.
+
+ @param in The encrypted block.
+ @param inOff Offset in the encrypted block.
+ @param inLen Length of the encrypted block.
+ @param pLen Length of the desired output.
+ @return The plaintext without padding, or a random value if the padding was incorrect.
+ @throws InvalidCipherTextException
+
+
+ @exception InvalidCipherTextException if the decrypted block is not in Pkcs1 format.
+
+
+ an implementation of the AES (Rijndael), from FIPS-197.
+
+ For further details see: http://csrc.nist.gov/encryption/aes/.
+
+ This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at
+ http://fp.gladman.plus.com/cryptography_technology/rijndael/
+
+ There are three levels of tradeoff of speed vs memory
+ Because java has no preprocessor, they are written as three separate classes from which to choose
+
+ The fastest uses 8Kbytes of static tables to precompute round calculations, 4 256 word tables for encryption
+ and 4 for decryption.
+
+ The middle performance version uses only one 256 word table for each, for a total of 2Kbytes,
+ adding 12 rotate operations per round to compute the values contained in the other tables from
+ the contents of the first.
+
+ The slowest version uses no static tables at all and computes the values in each round.
+
+
+ This file contains the middle performance version with 2Kbytes of static tables for round precomputation.
+
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on key size and block size
+ AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits
+ This code is written assuming those are the only possible values
+
+
+ default constructor - 128 bit block size.
+
+
+ initialise an AES cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ an implementation of the AES (Rijndael), from FIPS-197.
+
+ For further details see: http://csrc.nist.gov/encryption/aes/.
+
+ This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at
+ http://fp.gladman.plus.com/cryptography_technology/rijndael/
+
+ There are three levels of tradeoff of speed vs memory
+ Because java has no preprocessor, they are written as three separate classes from which to choose
+
+ The fastest uses 8Kbytes of static tables to precompute round calculations, 4 256 word tables for encryption
+ and 4 for decryption.
+
+ The middle performance version uses only one 256 word table for each, for a total of 2Kbytes,
+ adding 12 rotate operations per round to compute the values contained in the other tables from
+ the contents of the first
+
+ The slowest version uses no static tables at all and computes the values
+ in each round.
+
+
+ This file contains the slowest performance version with no static tables
+ for round precomputation, but it has the smallest foot print.
+
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on key size and block size
+ AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits
+ This code is written assuming those are the only possible values
+
+
+ default constructor - 128 bit block size.
+
+
+ initialise an AES cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+
+ An implementation of the AES Key Wrapper from the NIST Key Wrap Specification.
+
+ For further details see: http://csrc.nist.gov/encryption/kms/key-wrap.pdf.
+
+
+
+
+ Create a regular AesWrapEngine specifying the encrypt for wrapping, decrypt for unwrapping.
+
+
+
+
+ Create an AESWrapEngine where the underlying cipher is (optionally) set to decrypt for wrapping, encrypt for
+ unwrapping.
+
+ true if underlying cipher should be used in decryption mode, false
+ otherwise.
+
+
+ RFC 5794.
+
+ ARIA is a 128-bit block cipher with 128-, 192-, and 256-bit keys.
+
+
+
+ An implementation of the ARIA Key Wrapper from the NIST Key Wrap Specification.
+
+ For further details see: http://csrc.nist.gov/encryption/kms/key-wrap.pdf.
+
+
+
+
+ Create a regular AriaWrapEngine specifying the encrypt for wrapping, decrypt for unwrapping.
+
+
+
+
+ Create an AriaWrapEngine where the underlying cipher is (optionally) set to decrypt for wrapping, encrypt for
+ unwrapping.
+
+ true if underlying cipher should be used in decryption mode, false
+ otherwise.
+
+
+ ASCON v1.2 AEAD, https://ascon.iaik.tugraz.at/ .
+
+ https://csrc.nist.gov/CSRC/media/Projects/lightweight-cryptography/documents/finalist-round/updated-spec-doc/ascon-spec-final.pdf
+ ASCON v1.2 AEAD with reference to C Reference Impl from: https://github.com/ascon/ascon-c .
+
+
+
+ A class that provides Blowfish key encryption operations,
+ such as encoding data and generating keys.
+ All the algorithms herein are from Applied Cryptography
+ and implement a simplified cryptography interface.
+
+
+ initialise a Blowfish cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ apply the encryption cycle to each value pair in the table.
+
+
+ Camellia - based on RFC 3713.
+
+
+ Camellia - based on RFC 3713, smaller implementation, about half the size of CamelliaEngine.
+
+
+
+ An implementation of the Camellia key wrapper based on RFC 3657/RFC 3394.
+
+ For further details see: http://www.ietf.org/rfc/rfc3657.txt.
+
+
+
+ A class that provides CAST key encryption operations,
+ such as encoding data and generating keys.
+
+ All the algorithms herein are from the Internet RFC's
+
+ RFC2144 - Cast5 (64bit block, 40-128bit key)
+ RFC2612 - CAST6 (128bit block, 128-256bit key)
+
+ and implement a simplified cryptography interface.
+
+
+ initialise a CAST cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ The first of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ The second of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ The third of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ Does the 16 rounds to encrypt the block.
+
+ @param L0 the LH-32bits of the plaintext block
+ @param R0 the RH-32bits of the plaintext block
+
+
+ A class that provides CAST6 key encryption operations,
+ such as encoding data and generating keys.
+
+ All the algorithms herein are from the Internet RFC
+
+ RFC2612 - CAST6 (128bit block, 128-256bit key)
+
+ and implement a simplified cryptography interface.
+
+
+ Does the 12 quad rounds rounds to encrypt the block.
+
+ @param A the 00-31 bits of the plaintext block
+ @param B the 32-63 bits of the plaintext block
+ @param C the 64-95 bits of the plaintext block
+ @param D the 96-127 bits of the plaintext block
+ @param result the resulting ciphertext
+
+
+ Does the 12 quad rounds rounds to decrypt the block.
+
+ @param A the 00-31 bits of the ciphertext block
+ @param B the 32-63 bits of the ciphertext block
+ @param C the 64-95 bits of the ciphertext block
+ @param D the 96-127 bits of the ciphertext block
+ @param result the resulting plaintext
+
+
+
+ Implementation of Daniel J. Bernstein's ChaCha stream cipher.
+
+
+
+
+ Creates a 20 rounds ChaCha engine.
+
+
+
+
+ Implementation of Daniel J. Bernstein's ChaCha stream cipher.
+
+
+
+
+ Creates a 20 rounds ChaCha engine.
+
+
+
+
+ Creates a ChaCha engine with a specific number of rounds.
+
+ the number of rounds (must be an even number).
+
+
+ A class that provides a basic DESede (or Triple DES) engine.
+
+
+ initialise a DESede cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ * Wrap keys according to
+ *
+ * draft-ietf-smime-key-wrap-01.txt.
+ *
+ * Note:
+ *
+ * - this is based on a draft, and as such is subject to change - don't use this class for anything requiring long term storage.
+ * - if you are using this to wrap triple-des keys you need to set the
+ * parity bits on the key and, if it's a two-key triple-des key, pad it
+ * yourself.
+ *
+ *
+
+
+ Field engine
+
+
+ Field param
+
+
+ Field paramPlusIV
+
+
+ Field iv
+
+
+ Field forWrapping
+
+
+ Field IV2
+
+
+ Method init
+
+ @param forWrapping
+ @param param
+
+
+ Method GetAlgorithmName
+
+ @return
+
+
+ Method wrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+
+
+ Method unwrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+ @throws InvalidCipherTextException
+
+
+ Some key wrap algorithms make use of the Key Checksum defined
+ in CMS [CMS-Algorithms]. This is used to provide an integrity
+ check value for the key being wrapped. The algorithm is
+
+ - Compute the 20 octet SHA-1 hash on the key being wrapped.
+ - Use the first 8 octets of this hash as the checksum value.
+
+ @param key
+ @return
+ @throws Exception
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ @param key
+ @param checksum
+ @return
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ A class that provides a basic DES engine.
+
+
+ initialise a DES cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ what follows is mainly taken from "Applied Cryptography", by
+ Bruce Schneier, however it also bears great resemblance to Richard
+ Outerbridge's D3DES...
+
+
+ Generate an integer based working key based on our secret key
+ and what we processing we are planning to do.
+
+ Acknowledgements for this routine go to James Gillogly and Phil Karn.
+ (whoever, and wherever they are!).
+
+
+ implementation of DSTU 7624 (Kalyna)
+
+
+ this does your basic ElGamal algorithm.
+
+
+ initialise the ElGamal engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary ElGamal key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For ElGamal this is always one byte less than the size of P on
+ encryption, and twice the length as the size of P on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For ElGamal this is always one byte less than the size of P on
+ decryption, and twice the length as the size of P on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic ElGamal algorithm.
+
+ @param in the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param length the length of the data to be processed.
+ @return the result of the ElGamal process.
+ @exception DataLengthException the input block is too large.
+
+
+ implementation of GOST 28147-89
+
+
+ standard constructor.
+
+
+ initialise an Gost28147 cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is inappropriate.
+
+
+ Return the S-Box associated with SBoxName
+ @param sBoxName name of the S-Box
+ @return byte array representing the S-Box
+
+
+ Constants
+
+
+ Variables to hold the state of the engine during encryption and
+ decryption
+
+
+ Initialize a Grain-128AEAD cipher.
+
+ @param forEncryption Whether or not we are for encryption.
+ @param param The parameters required to set up the cipher.
+ @throws ArgumentException If the params argument is inappropriate.
+
+
+ 320 clocks initialization phase.
+
+
+ Get output from non-linear function g(x).
+
+ @return Output from NFSR.
+
+
+ Get output from linear function f(x).
+
+ @return Output from LFSR.
+
+
+ Get output from output function h(x).
+
+ @return y_t.
+
+
+ Shift array 1 bit and add val to index.Length - 1.
+
+ @param array The array to shift.
+ @param val The value to shift in.
+ @return The shifted array with val added to index.Length - 1.
+
+
+ Set keys, reset cipher.
+
+ @param keyBytes The key.
+ @param ivBytes The IV.
+
+
+ HC-128 is a software-efficient stream cipher created by Hongjun Wu. It
+ generates keystream from a 128-bit secret key and a 128-bit initialization
+ vector.
+
+ http://www.ecrypt.eu.org/stream/p3ciphers/hc/hc128_p3.pdf
+
+ It is a third phase candidate in the eStream contest, and is patent-free.
+ No attacks are known as of today (April 2007). See
+
+ http://www.ecrypt.eu.org/stream/hcp3.html
+
+
+
+ Initialise a HC-128 cipher.
+
+ @param forEncryption whether or not we are for encryption. Irrelevant, as
+ encryption and decryption are the same.
+ @param params the parameters required to set up the cipher.
+ @throws ArgumentException if the params argument is
+ inappropriate (ie. the key is not 128 bit long).
+
+
+ HC-256 is a software-efficient stream cipher created by Hongjun Wu. It
+ generates keystream from a 256-bit secret key and a 256-bit initialization
+ vector.
+
+ http://www.ecrypt.eu.org/stream/p3ciphers/hc/hc256_p3.pdf
+
+ Its brother, HC-128, is a third phase candidate in the eStream contest.
+ The algorithm is patent-free. No attacks are known as of today (April 2007).
+ See
+
+ http://www.ecrypt.eu.org/stream/hcp3.html
+
+
+
+ Initialise a HC-256 cipher.
+
+ @param forEncryption whether or not we are for encryption. Irrelevant, as
+ encryption and decryption are the same.
+ @param params the parameters required to set up the cipher.
+ @throws ArgumentException if the params argument is
+ inappropriate (ie. the key is not 256 bit long).
+
+
+ A class that provides a basic International Data Encryption Algorithm (IDEA) engine.
+
+ This implementation is based on the "HOWTO: INTERNATIONAL DATA ENCRYPTION ALGORITHM"
+ implementation summary by Fauzan Mirza (F.U.Mirza@sheffield.ac.uk). (barring 1 typo at the
+ end of the MulInv function!).
+
+
+ It can be found at ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/idea/
+
+
+ Note: This algorithm was patented in the USA, Japan and Europe. These patents expired in 2011/2012.
+
+
+
+ standard constructor.
+
+
+ initialise an IDEA cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return x = x * y where the multiplication is done modulo
+ 65537 (0x10001) (as defined in the IDEA specification) and
+ a zero input is taken to be 65536 (0x10000).
+
+ @param x the x value
+ @param y the y value
+ @return x = x * y
+
+
+ The following function is used to expand the user key to the encryption
+ subkey. The first 16 bytes are the user key, and the rest of the subkey
+ is calculated by rotating the previous 16 bytes by 25 bits to the left,
+ and so on until the subkey is completed.
+
+
+ This function computes multiplicative inverse using Euclid's Greatest
+ Common Divisor algorithm. Zero and one are self inverse.
+
+ i.e. x * MulInv(x) == 1 (modulo BASE)
+
+
+
+ Return the additive inverse of x.
+
+ i.e. x + AddInv(x) == 0
+
+
+
+ The function to invert the encryption subkey to the decryption subkey.
+ It also involves the multiplicative inverse and the additive inverse functions.
+
+
+ support class for constructing intergrated encryption ciphers
+ for doing basic message exchanges on top of key agreement ciphers
+
+
+ set up for use with stream mode, where the key derivation function
+ is used to provide a stream of bytes to xor with the message.
+
+ @param agree the key agreement used as the basis for the encryption
+ @param kdf the key derivation function used for byte generation
+ @param mac the message authentication code generator for the message
+
+
+ set up for use in conjunction with a block cipher to handle the
+ message.
+
+ @param agree the key agreement used as the basis for the encryption
+ @param kdf the key derivation function used for byte generation
+ @param mac the message authentication code generator for the message
+ @param cipher the cipher to used for encrypting the message
+
+
+ Initialise the encryptor.
+
+ @param forEncryption whether or not this is encryption/decryption.
+ @param privParam our private key parameters
+ @param pubParam the recipient's/sender's public key parameters
+ @param param encoding and derivation parameters.
+
+
+ Implementation of Bob Jenkin's ISAAC (Indirection Shift Accumulate Add and Count).
+ see: http://www.burtleburtle.net/bob/rand/isaacafa.html
+
+
+ initialise an ISAAC cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param params the parameters required to set up the cipher.
+ @exception ArgumentException if the params argument is
+ inappropriate.
+
+
+ NaccacheStern Engine. For details on this cipher, please see
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Initializes this algorithm. Must be called before all other Functions.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#init(bool,
+ org.bouncycastle.crypto.CipherParameters)
+
+
+ Returns the input block size of this algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#GetInputBlockSize()
+
+
+ Returns the output block size of this algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#GetOutputBlockSize()
+
+
+ Process a single Block using the Naccache-Stern algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#ProcessBlock(byte[],
+ int, int)
+
+
+ Encrypts a BigInteger aka Plaintext with the public key.
+
+ @param plain
+ The BigInteger to encrypt
+ @return The byte[] representation of the encrypted BigInteger (i.e.
+ crypted.toByteArray())
+
+
+ Adds the contents of two encrypted blocks mod sigma
+
+ @param block1
+ the first encrypted block
+ @param block2
+ the second encrypted block
+ @return encrypt((block1 + block2) mod sigma)
+ @throws InvalidCipherTextException
+
+
+ Convenience Method for data exchange with the cipher.
+
+ Determines blocksize and splits data to blocksize.
+
+ @param data the data to be processed
+ @return the data after it went through the NaccacheSternEngine.
+ @throws InvalidCipherTextException
+
+
+ Computes the integer x that is expressed through the given primes and the
+ congruences with the chinese remainder theorem (CRT).
+
+ @param congruences
+ the congruences c_i
+ @param primes
+ the primes p_i
+ @return an integer x for that x % p_i == c_i
+
+
+ A Noekeon engine, using direct-key mode.
+
+
+ Create an instance of the Noekeon encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @param forEncryption whether or not we are for encryption.
+ @param params the parameters required to set up the cipher.
+ @exception ArgumentException if the params argument is
+ inappropriate.
+
+
+ an implementation of RC2 as described in RFC 2268
+ "A Description of the RC2(r) Encryption Algorithm" R. Rivest.
+
+
+ initialise a RC2 cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the result rotating the 16 bit number in x left by y
+
+
+ Wrap keys according to RFC 3217 - RC2 mechanism
+
+
+ Field engine
+
+
+ Field param
+
+
+ Field paramPlusIV
+
+
+ Field iv
+
+
+ Field forWrapping
+
+
+ Field IV2
+
+
+ Method init
+
+ @param forWrapping
+ @param param
+
+
+ Method GetAlgorithmName
+
+ @return
+
+
+ Method wrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+
+
+ Method unwrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+ @throws InvalidCipherTextException
+
+
+ Some key wrap algorithms make use of the Key Checksum defined
+ in CMS [CMS-Algorithms]. This is used to provide an integrity
+ check value for the key being wrapped. The algorithm is
+
+ - Compute the 20 octet SHA-1 hash on the key being wrapped.
+ - Use the first 8 octets of this hash as the checksum value.
+
+ @param key
+ @return
+ @throws Exception
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ @param key
+ @param checksum
+ @return
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ initialise a RC4 cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ The specification for RC5 came from the RC5 Encryption Algorithm
+ publication in RSA CryptoBytes, Spring of 1995.
+ http://www.rsasecurity.com/rsalabs/cryptobytes.
+
+ This implementation has a word size of 32 bits.
+
+
+ Create an instance of the RC5 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-32 cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ The specification for RC5 came from the RC5 Encryption Algorithm
+ publication in RSA CryptoBytes, Spring of 1995.
+ http://www.rsasecurity.com/rsalabs/cryptobytes.
+
+ This implementation is set to work with a 64 bit word size.
+
+
+ Create an instance of the RC5 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-64 cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ An RC6 engine.
+
+
+ Create an instance of the RC6 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-32 cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Re-key the cipher.
+
+ @param inKey the key to be used
+
+
+ an implementation of the RFC 3211 Key Wrap
+ Specification.
+
+
+ An implementation of the AES Key Wrap with Padding specification as described in RFC 3349.
+
+ For further details see: Schaad, J. and R. Housley, "Advanced Encryption Standard (AES) Key Wrap Algorithm",
+ RFC 3394, DOI 10.17487/RFC3394, September 2002, <https://www.rfc-editor.org/info/rfc3394\>, and
+ http://csrc.nist.gov/encryption/kms/key-wrap.pdf.
+
+
+
+ An implementation of the AES Key Wrap with Padding specification as described in RFC 5649.
+
+ For further details see: Housley, R. and M. Dworkin, "Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm",
+ RFC 5649, DOI 10.17487/RFC5649, September 2009, <https://www.rfc-editor.org/info/rfc5649>, and
+ http://csrc.nist.gov/encryption/kms/key-wrap.pdf.
+
+
+
+ Performs steps 1 and 2 of the unwrap process defined in RFC 3394.
+ This code is duplicated from RFC3394WrapEngine because that class
+ will throw an error during unwrap because the IV won't match up.
+
+ @param in
+ @param inOff
+ @param inLen
+ @return Unwrapped data.
+
+
+ Pads the plaintext (i.e., the key to be wrapped)
+ as per section 4.1 of RFC 5649.
+
+ @param plaintext The key being wrapped.
+ @return The padded key.
+
+
+ an implementation of Rijndael, based on the documentation and reference implementation
+ by Paulo Barreto, Vincent Rijmen, for v2.0 August '99.
+
+ Note: this implementation is based on information prior to readonly NIST publication.
+
+
+
+ multiply two elements of GF(2^m)
+ needed for MixColumn and InvMixColumn
+
+
+ xor corresponding text input and round key input bytes
+
+
+ Row 0 remains unchanged
+ The other three rows are shifted a variable amount
+
+
+ Replace every byte of the input by the byte at that place
+ in the nonlinear S-box
+
+
+ Mix the bytes of every column in a linear way
+
+
+ Mix the bytes of every column in a linear way
+ This is the opposite operation of Mixcolumn
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on keyBits and blockBits
+
+
+ default constructor - 128 bit block size.
+
+
+ basic constructor - set the cipher up for a given blocksize
+
+ @param blocksize the blocksize in bits, must be 128, 192, or 256.
+
+
+ initialise a Rijndael cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ this does your basic RSA algorithm with blinding
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic RSA algorithm.
+
+ @param inBuf the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @exception DataLengthException the input block is too large.
+
+
+ This does your basic RSA Chaum's blinding and unblinding as outlined in
+ "Handbook of Applied Cryptography", page 475. You need to use this if you are
+ trying to get another party to generate signatures without them being aware
+ of the message they are signing.
+
+
+ Initialise the blinding engine.
+
+ @param forEncryption true if we are encrypting (blinding), false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the RSA blinding algorithm.
+
+ @param in the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @throws DataLengthException the input block is too large.
+
+
+ This does your basic RSA algorithm.
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ this does your basic RSA algorithm.
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic RSA algorithm.
+
+ @param inBuf the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @exception DataLengthException the input block is too large.
+
+
+
+ Implementation of Daniel J. Bernstein's Salsa20 stream cipher, Snuffle 2005
+
+
+
+ Constants
+
+
+
+ Creates a 20 round Salsa20 engine.
+
+
+
+
+ Creates a Salsa20 engine with a specific number of rounds.
+
+ the number of rounds (must be an even number).
+
+
+ Implementation of the SEED algorithm as described in RFC 4009
+
+
+
+ An implementation of the SEED key wrapper based on RFC 4010/RFC 3394.
+
+ For further details see: http://www.ietf.org/rfc/rfc4010.txt.
+
+
+
+ * Serpent is a 128-bit 32-round block cipher with variable key lengths,
+ * including 128, 192 and 256 bit keys conjectured to be at least as
+ * secure as three-key triple-DES.
+ *
+ * Serpent was designed by Ross Anderson, Eli Biham and Lars Knudsen as a
+ * candidate algorithm for the NIST AES Quest.
+ *
+ *
+ * For full details see The Serpent home page
+ *
+
+
+ Expand a user-supplied key material into a session key.
+
+ @param key The user-key bytes (multiples of 4) to use.
+ @exception ArgumentException
+
+
+ initialise a Serpent cipher.
+
+ @param encrypting whether or not we are for encryption.
+ @param params the parameters required to set up the cipher.
+ @throws IllegalArgumentException if the params argument is
+ inappropriate.
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @return the number of bytes processed and produced.
+ @throws DataLengthException if there isn't enough data in in, or
+ space in out.
+ @throws IllegalStateException if the cipher isn't initialised.
+
+
+ InvSO - {13, 3,11, 0,10, 6, 5,12, 1,14, 4, 7,15, 9, 8, 2 } - 15 terms.
+
+
+ S1 - {15,12, 2, 7, 9, 0, 5,10, 1,11,14, 8, 6,13, 3, 4 } - 14 terms.
+
+
+ InvS1 - { 5, 8, 2,14,15, 6,12, 3,11, 4, 7, 9, 1,13,10, 0 } - 14 steps.
+
+
+ S2 - { 8, 6, 7, 9, 3,12,10,15,13, 1,14, 4, 0,11, 5, 2 } - 16 terms.
+
+
+ InvS2 - {12, 9,15, 4,11,14, 1, 2, 0, 3, 6,13, 5, 8,10, 7 } - 16 steps.
+
+
+ S3 - { 0,15,11, 8,12, 9, 6, 3,13, 1, 2, 4,10, 7, 5,14 } - 16 terms.
+
+
+ InvS3 - { 0, 9,10, 7,11,14, 6,13, 3, 5,12, 2, 4, 8,15, 1 } - 15 terms
+
+
+ S4 - { 1,15, 8, 3,12, 0,11, 6, 2, 5, 4,10, 9,14, 7,13 } - 15 terms.
+
+
+ InvS4 - { 5, 0, 8, 3,10, 9, 7,14, 2,12,11, 6, 4,15,13, 1 } - 15 terms.
+
+
+ S5 - {15, 5, 2,11, 4,10, 9,12, 0, 3,14, 8,13, 6, 7, 1 } - 16 terms.
+
+
+ InvS5 - { 8,15, 2, 9, 4, 1,13,14,11, 6, 5, 3, 7,12,10, 0 } - 16 terms.
+
+
+ S6 - { 7, 2,12, 5, 8, 4, 6,11,14, 9, 1,15,13, 3,10, 0 } - 15 terms.
+
+
+ InvS6 - {15,10, 1,13, 5, 3, 6, 0, 4, 9,14, 7, 2,12, 8,11 } - 15 terms.
+
+
+ S7 - { 1,13,15, 0,14, 8, 2,11, 7, 4,12,10, 9, 3, 5, 6 } - 16 terms.
+
+
+ InvS7 - { 3, 0, 6,13, 9,14,15, 8, 5,12,11, 7,10, 1, 4, 2 } - 17 terms.
+
+
+ Apply the linear transformation to the register set.
+
+
+ Apply the inverse of the linear transformation to the register set.
+
+
+ a class that provides a basic SKIPJACK engine.
+
+
+ initialise a SKIPJACK cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ The G permutation
+
+
+ the inverse of the G permutation.
+
+
+
+ SM2 public key encryption engine - based on https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02.
+
+
+
+ SM4 Block Cipher - SM4 is a 128 bit block cipher with a 128 bit key.
+
+ The implementation here is based on the document http://eprint.iacr.org/2008/329.pdf
+ by Whitfield Diffie and George Ledin, which is a translation of Prof. LU Shu-wang's original standard.
+
+
+
+ Sparkle v1.2, based on the current round 3 submission, https://sparkle-lwc.github.io/ .
+
+ Reference C implementation: https://github.com/cryptolu/sparkle.
+ Specification:
+ https://csrc.nist.gov/CSRC/media/Projects/lightweight-cryptography/documents/finalist-round/updated-spec-doc/sparkle-spec-final.pdf .
+
+
+
+ An TEA engine.
+
+
+ Create an instance of the TEA encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @param forEncryption whether or not we are for encryption.
+ @param params the parameters required to set up the cipher.
+ @exception ArgumentException if the params argument is
+ inappropriate.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+
+ Implementation of the Threefish tweakable large block cipher in 256, 512 and 1024 bit block
+ sizes.
+
+
+ This is the 1.3 version of Threefish defined in the Skein hash function submission to the NIST
+ SHA-3 competition in October 2010.
+
+ Threefish was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+ This implementation inlines all round functions, unrolls 8 rounds, and uses 1.2k of static tables
+ to speed up key schedule injection.
+ 2 x block size state is retained by each cipher instance.
+
+
+
+
+ 256 bit block size - Threefish-256
+
+
+
+
+ 512 bit block size - Threefish-512
+
+
+
+
+ 1024 bit block size - Threefish-1024
+
+
+
+ Size of the tweak in bytes (always 128 bit/16 bytes)
+
+
+ Rounds in Threefish-256
+
+
+ Rounds in Threefish-512
+
+
+ Rounds in Threefish-1024
+
+
+ Max rounds of any of the variants
+
+
+ Key schedule parity constant
+
+
+ Block size in bytes
+
+
+ Block size in 64 bit words
+
+
+ Buffer for byte oriented processBytes to call internal word API
+
+
+ Tweak bytes (2 byte t1,t2, calculated t3 and repeat of t1,t2 for modulo free lookup
+
+
+ Key schedule words
+
+
+ The internal cipher implementation (varies by blocksize)
+
+
+
+ Constructs a new Threefish cipher, with a specified block size.
+
+ the block size in bits, one of , ,
+ .
+
+
+
+ Initialise the engine.
+
+ Initialise for encryption if true, for decryption if false.
+ an instance of or (to
+ use a 0 tweak)
+
+
+
+ Initialise the engine, specifying the key and tweak directly.
+
+ the cipher mode.
+ the words of the key, or null to use the current key.
+ the 2 word (128 bit) tweak, or null to use the current tweak.
+
+
+
+ Process a block of data represented as 64 bit words.
+
+ the number of 8 byte words processed (which will be the same as the block size).
+ a block sized buffer of words to process.
+ a block sized buffer of words to receive the output of the operation.
+ if either the input or output is not block sized
+ if this engine is not initialised
+
+
+ Rotate left + xor part of the mix operation.
+
+
+ Rotate xor + rotate right part of the unmix operation.
+
+
+ The extended + repeated tweak words
+
+
+ The extended + repeated key words
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Tnepres is a 128-bit 32-round block cipher with variable key lengths,
+ including 128, 192 and 256 bit keys conjectured to be at least as
+ secure as three-key triple-DES.
+
+ Tnepres is based on Serpent which was designed by Ross Anderson, Eli Biham and Lars Knudsen as a
+ candidate algorithm for the NIST AES Quest. Unfortunately there was an endianness issue
+ with test vectors in the AES submission and the resulting confusion lead to the Tnepres cipher
+ as well, which is a byte swapped version of Serpent.
+
+
+ For full details see The Serpent home page
+
+
+
+ Expand a user-supplied key material into a session key.
+
+ @param key The user-key bytes (multiples of 4) to use.
+ @exception ArgumentException
+
+
+ A class that provides Twofish encryption operations.
+
+ This Java implementation is based on the Java reference
+ implementation provided by Bruce Schneier and developed
+ by Raif S. Naffah.
+
+
+ Define the fixed p0/p1 permutations used in keyed S-box lookup.
+ By changing the following constant definitions, the S-boxes will
+ automatically Get changed in the Twofish engine.
+
+
+ gSubKeys[] and gSBox[] are eventually used in the
+ encryption and decryption methods.
+
+
+ initialise a Twofish cipher.
+
+ @param forEncryption whether or not we are for encryption.
+ @param parameters the parameters required to set up the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+ encryptBlock uses the pre-calculated gSBox[] and subKey[]
+ arrays.
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+
+ Use (12, 8) Reed-Solomon code over GF(256) to produce
+ a key S-box 32-bit entity from 2 key material 32-bit
+ entities.
+
+ @param k0 first 32-bit entity
+ @param k1 second 32-bit entity
+ @return Remainder polynomial Generated using RS code
+
+
+ * Reed-Solomon code parameters: (12,8) reversible code:
+ *
+ *
+ * G(x) = x^4 + (a+1/a)x^3 + ax^2 + (a+1/a)x + 1
+ *
+ * where a = primitive root of field generator 0x14D
+ *
+
+
+ initialise a VMPC cipher.
+
+ @param forEncryption
+ whether or not we are for encryption.
+ @param params
+ the parameters required to set up the cipher.
+ @exception ArgumentException
+ if the params argument is inappropriate.
+
+
+
+ Implementation of Daniel J. Bernstein's XSalsa20 stream cipher - Salsa20 with an extended nonce.
+
+
+ XSalsa20 requires a 256 bit key, and a 192 bit nonce.
+
+
+
+
+ XSalsa20 key generation: process 256 bit input key and 128 bits of the input nonce
+ using a core Salsa20 function without input addition to produce 256 bit working key
+ and use that with the remaining 64 bits of nonce to initialize a standard Salsa20 engine state.
+
+
+
+ An XTEA engine.
+
+
+ Create an instance of the TEA encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @param forEncryption whether or not we are for encryption.
+ @param params the parameters required to set up the cipher.
+ @exception ArgumentException if the params argument is
+ inappropriate.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ Base class for format-preserving encryption.
+
+
+
+ Process length bytes from inBuf, writing the output to outBuf.
+
+ number of bytes output.
+ input data.
+ offset in input data to start at.
+ number of bytes to process.
+ destination buffer.
+ offset to start writing at in destination buffer.
+
+
+
+ Initialize the FPE engine for encryption/decryption.
+
+ number of bytes output.
+ true if initialising for encryption, false otherwise.
+ the key and other parameters to use to set the engine up.
+
+
+ Basic KDF generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on ISO 18033/P1363a.
+
+
+ Construct a KDF Parameters generator.
+
+ @param counterStart value of counter.
+ @param digest the digest to be used as the source of derived keys.
+
+
+ return the underlying digest.
+
+
+ fill len bytes of the output buffer with bytes generated from
+ the derivation function.
+
+ @throws ArgumentException if the size of the request will cause an overflow.
+ @throws DataLengthException if the out buffer is too small.
+
+
+ Core of password hashing scheme Bcrypt,
+ designed by Niels Provos and David Mazières,
+ corresponds to the C reference implementation.
+
+ This implementation does not correspondent to the 1999 published paper
+ "A Future-Adaptable Password Scheme" of Niels Provos and David Mazières,
+ see: https://www.usenix.org/legacy/events/usenix99/provos/provos_html/node1.html.
+ In contrast to the paper, the order of key setup and salt setup is reversed:
+ state <- ExpandKey(state, 0, key)
+ state %lt;- ExpandKey(state, 0, salt)
+ This corresponds to the OpenBSD reference implementation of Bcrypt.
+
+ Note:
+ There is no successful cryptanalysis (status 2015), but
+ the amount of memory and the band width of Bcrypt
+ may be insufficient to effectively prevent attacks
+ with custom hardware like FPGAs, ASICs
+
+ This implementation uses some parts of Bouncy Castle's BlowfishEngine.
+
+
+
+ Derives a raw 192 bit Bcrypt key
+
+ @param cost the cost factor, treated as an exponent of 2
+ @param salt a 16 byte salt
+ @param psw the password
+ @return a 192 bit key
+
+
+ Size of the salt parameter in bytes
+
+
+ Minimum value of cost parameter, equal to log2(bytes of salt)
+
+
+ Maximum value of cost parameter (31 == 2,147,483,648)
+
+
+ Maximum size of password == max (unrestricted) size of Blowfish key
+
+
+ Converts a character password to bytes incorporating the required trailing zero byte.
+
+ @param password the password to be encoded.
+ @return a byte representation of the password in UTF8 + trailing zero.
+
+
+ Calculates the bcrypt hash of a password.
+
+ This implements the raw bcrypt function as defined in the bcrypt specification, not
+ the crypt encoded version implemented in OpenBSD.
+
+ @param password the password bytes (up to 72 bytes) to use for this invocation.
+ @param salt the 128 bit salt to use for this invocation.
+ @param cost the bcrypt cost parameter. The cost of the bcrypt function grows as
+ 2^cost. Legal values are 4..31 inclusive.
+ @return the output of the raw bcrypt operation: a 192 bit (24 byte) hash.
+
+
+ initialise the key generator - if strength is set to zero
+ the key Generated will be 192 bits in size, otherwise
+ strength can be 128 or 192 (or 112 or 168 if you don't count
+ parity bits), depending on whether you wish to do 2-key or 3-key
+ triple DES.
+
+ @param param the parameters to be used for key generation
+
+
+ initialise the key generator - if strength is set to zero
+ the key generated will be 64 bits in size, otherwise
+ strength can be 64 or 56 bits (if you don't count the parity bits).
+
+ @param param the parameters to be used for key generation
+
+
+ a basic Diffie-Hellman key pair generator.
+
+ This generates keys consistent for use with the basic algorithm for
+ Diffie-Hellman.
+
+
+ a Diffie-Hellman key pair generator.
+
+ This generates keys consistent for use in the MTI/A0 key agreement protocol
+ as described in "Handbook of Applied Cryptography", Pages 516-519.
+
+
+ which Generates the p and g values from the given parameters,
+ returning the DHParameters object.
+
+ Note: can take a while...
+
+
+ a DSA key pair generator.
+
+ This Generates DSA keys in line with the method described
+ in FIPS 186-3 B.1 FFC Key Pair Generation.
+
+
+ Generate suitable parameters for DSA, in line with FIPS 186-2, or FIPS 186-3.
+
+
+ Initialise the generator
+ This form can only be used for older DSA (pre-DSA2) parameters
+ the size of keys in bits (from 512 up to 1024, and a multiple of 64)
+ measure of robustness of primes (at least 80 for FIPS 186-2 compliance)
+ the source of randomness to use
+
+
+ Initialise the generator for DSA 2
+ You must use this Init method if you need to generate parameters for DSA 2 keys
+ An instance of DsaParameterGenerationParameters used to configure this generator
+
+
+ Generates a set of DsaParameters
+ Can take a while...
+
+
+ generate suitable parameters for DSA, in line with
+ FIPS 186-3 A.1 Generation of the FFC Primes p and q.
+
+
+ Given the domain parameters this routine generates an EC key
+ pair in accordance with X9.62 section 5.2.1 pages 26, 27.
+
+
+ a ElGamal key pair generator.
+
+ This Generates keys consistent for use with ElGamal as described in
+ page 164 of "Handbook of Applied Cryptography".
+
+
+ * which Generates the p and g values from the given parameters,
+ * returning the ElGamalParameters object.
+ *
+ * Note: can take a while...
+ *
+
+
+ a GOST3410 key pair generator.
+ This generates GOST3410 keys in line with the method described
+ in GOST R 34.10-94.
+
+
+ generate suitable parameters for GOST3410.
+
+
+ initialise the key generator.
+
+ @param size size of the key
+ @param typeProcedure type procedure A,B = 1; A',B' - else
+ @param random random byte source.
+
+
+ Procedure C
+ procedure generates the a value from the given p,q,
+ returning the a value.
+
+
+ which generates the p , q and a values from the given parameters,
+ returning the Gost3410Parameters object.
+
+
+ HMAC-based Extract-and-Expand Key Derivation Function (HKDF) implemented
+ according to IETF RFC 5869, May 2010 as specified by H. Krawczyk, IBM
+ Research & P. Eronen, Nokia. It uses a HMac internally to compute de OKM
+ (output keying material) and is likely to have better security properties
+ than KDF's based on just a hash function.
+
+
+ Creates a HKDFBytesGenerator based on the given hash function.
+
+ @param hash the digest to be used as the source of generatedBytes bytes
+
+
+ Performs the extract part of the key derivation function.
+
+ @param salt the salt to use
+ @param ikm the input keying material
+ @return the PRK as KeyParameter
+
+
+ Performs the expand part of the key derivation function, using currentT
+ as input and output buffer.
+
+ @throws DataLengthException if the total number of bytes generated is larger than the one
+ specified by RFC 5869 (255 * HashLen)
+
+
+ KFD1 generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on IEEE P1363/ISO 18033.
+
+
+ Construct a KDF1 byte generator.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ KDF2 generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on IEEE P1363/ISO 18033.
+
+
+ Construct a KDF2 bytes generator. Generates key material
+ according to IEEE P1363 or ISO 18033 depending on the initialisation.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ Generator for MGF1 as defined in Pkcs 1v2
+
+
+ the digest to be used as the source of generated bytes
+
+
+ the underlying digest.
+
+
+ Fill len bytes of the output buffer with bytes generated from the derivation function.
+
+
+
+ Key generation parameters for NaccacheStern cipher. For details on this cipher, please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Generates a permuted ArrayList from the original one. The original List
+ is not modified
+
+ @param arr
+ the ArrayList to be permuted
+ @param rand
+ the source of Randomness for permutation
+ @return a new IList with the permuted elements.
+
+
+ Finds the first 'count' primes starting with 3
+
+ @param count
+ the number of primes to find
+ @return a vector containing the found primes as Integer
+
+
+ Password hashing scheme BCrypt,
+ designed by Niels Provos and David Mazières, using the
+ String format and the Base64 encoding
+ of the reference implementation on OpenBSD
+
+
+ Creates a 60 character Bcrypt String, including
+ version, cost factor, salt and hash, separated by '$'
+
+ @param version the version, 2y,2b or 2a. (2a is not backwards compatible.)
+ @param cost the cost factor, treated as an exponent of 2
+ @param salt a 16 byte salt
+ @param password the password
+ @return a 60 character Bcrypt String
+
+
+ Creates a 60 character Bcrypt String, including
+ version, cost factor, salt and hash, separated by '$' using version
+ '2y'.
+
+ @param cost the cost factor, treated as an exponent of 2
+ @param salt a 16 byte salt
+ @param password the password
+ @return a 60 character Bcrypt String
+
+
+ Creates a 60 character Bcrypt String, including
+ version, cost factor, salt and hash, separated by '$'
+
+ @param version the version, may be 2b, 2y or 2a. (2a is not backwards compatible.)
+ @param cost the cost factor, treated as an exponent of 2
+ @param salt a 16 byte salt
+ @param password the password
+ @return a 60 character Bcrypt String
+
+
+ Checks if a password corresponds to a 60 character Bcrypt String
+
+ @param bcryptString a 60 character Bcrypt String, including
+ version, cost factor, salt and hash,
+ separated by '$'
+ @param password the password as an array of chars
+ @return true if the password corresponds to the
+ Bcrypt String, otherwise false
+
+
+
+ Generator for PBE derived keys and IVs as usd by OpenSSL. Originally this scheme was a simple extension of
+ PKCS 5 V2.0 Scheme 1 using MD5 with an iteration count of 1. The default digest was changed to SHA-256 with
+ OpenSSL 1.1.0. This implementation still defaults to MD5, but the digest can now be set.
+
+
+
+
+
+ Construct a OpenSSL Parameters generator - digest the original MD5.
+
+
+
+
+
+
+ Construct a OpenSSL Parameters generator - digest as specified.
+
+ the digest to use as the PRF.
+
+
+
+ Initialise - note the iteration count for this algorithm is fixed at 1.
+
+ @param password password to use.
+ @param salt salt to use.
+
+
+ the derived key function, the ith hash of the password and the salt.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 12 V1.0.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs12 Page
+
+
+
+ Construct a Pkcs 12 Parameters generator.
+
+ @param digest the digest to be used as the source of derived keys.
+ @exception ArgumentException if an unknown digest is passed in.
+
+
+ add a + b + 1, returning the result in a. The a value is treated
+ as a BigInteger of length (b.Length * 8) bits. The result is
+ modulo 2^b.Length in case of overflow.
+
+
+ generation of a derived key ala Pkcs12 V1.0.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 5 V2.0 Scheme 1.
+ Note this generator is limited to the size of the hash produced by the
+ digest used to drive it.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs5 Page
+
+
+
+ Construct a Pkcs 5 Scheme 1 Parameters generator.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ the derived key function, the ith hash of the mPassword and the mSalt.
+
+
+ Generate a key parameter for use with a MAC derived from the mPassword,
+ mSalt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 5 V2.0 Scheme 2.
+ This generator uses a SHA-1 HMac as the calculation function.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs5 Page
+
+
+ construct a Pkcs5 Scheme 2 Parameters generator.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+
+ Generates keys for the Poly1305 MAC.
+
+
+ Poly1305 keys are 256 bit keys consisting of a 128 bit secret key used for the underlying block
+ cipher followed by a 128 bit {@code r} value used for the polynomial portion of the Mac.
+ The {@code r} value has a specific format with some bits required to be cleared, resulting in an
+ effective 106 bit key.
+ A separately generated 256 bit key can be modified to fit the Poly1305 key format by using the
+ {@link #clamp(byte[])} method to clear the required bits.
+
+
+
+
+
+ Initialises the key generator.
+
+
+ Poly1305 keys are always 256 bits, so the key length in the provided parameters is ignored.
+
+
+
+
+ Generates a 256 bit key in the format required for Poly1305 - e.g.
+ k[0] ... k[15], r[0] ... r[15] with the required bits in r cleared
+ as per .
+
+
+
+
+ Modifies an existing 32 byte key value to comply with the requirements of the Poly1305 key by
+ clearing required bits in the r (second 16 bytes) portion of the key.
+ Specifically:
+
+ - r[3], r[7], r[11], r[15] have top four bits clear (i.e., are {0, 1, . . . , 15})
+ - r[4], r[8], r[12] have bottom two bits clear (i.e., are in {0, 4, 8, . . . , 252})
+
+
+ a 32 byte key value k[0] ... k[15], r[0] ... r[15]
+
+
+
+ Checks a 32 byte key for compliance with the Poly1305 key requirements, e.g.
+ k[0] ... k[15], r[0] ... r[15] with the required bits in r cleared
+ as per .
+
+ Key.
+ if the key is of the wrong length, or has invalid bits set
+ in the r portion of the key.
+
+
+ Generate a random factor suitable for use with RSA blind signatures
+ as outlined in Chaum's blinding and unblinding as outlined in
+ "Handbook of Applied Cryptography", page 475.
+
+
+ Initialise the factor generator
+
+ @param param the necessary RSA key parameters.
+
+
+ Generate a suitable blind factor for the public key the generator was initialised with.
+
+ @return a random blind factor
+
+
+ an RSA key pair generator.
+
+
+ Choose a random prime value for use with RSA
+ the bit-length of the returned prime
+ the RSA public exponent
+ a prime p, with (p-1) relatively prime to e
+
+
+ Implementation of the scrypt a password-based key derivation function.
+
+ Scrypt was created by Colin Percival and is specified in
+ draft-josefsson-scrypt-kd.
+
+
+
+ Generate a key using the scrypt key derivation function.
+ the bytes of the pass phrase.
+ the salt to use for this invocation.
+ CPU/Memory cost parameter. Must be larger than 1, a power of 2 and less than
+ 2^(128 * r / 8).
+ the block size, must be >= 1.
+ Parallelization parameter. Must be a positive integer less than or equal to
+ int.MaxValue / (128 * r * 8).
+ the length of the key to generate.
+ the generated key.
+
+
+ Base interface for mapping from an alphabet to a set of indexes
+ suitable for use with FPE.
+
+
+
+ Return the number of characters in the alphabet.
+
+ the radix for the alphabet.
+
+
+
+ Return the passed in char[] as a byte array of indexes (indexes
+ can be more than 1 byte)
+
+ an index array.
+ characters to be mapped.
+
+
+
+ Return a char[] for this alphabet based on the indexes passed.
+
+ an array of char corresponding to the index values.
+ input array of indexes.
+
+
+ Base interface for a public/private key block cipher.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ The maximum size, in bytes, an input block may be.
+
+
+ The maximum size, in bytes, an output block will be.
+
+
+ Process a block.
+ The input buffer.
+ The offset into inBuf that the input block begins.
+ The length of the input block.
+ Input decrypts improperly.
+ Input is too large for the cipher.
+
+
+ interface that a public/private key pair generator should conform to.
+
+
+ intialise the key pair generator.
+
+ @param the parameters the key pair is to be initialised with.
+
+
+ return an AsymmetricCipherKeyPair containing the Generated keys.
+
+ @return an AsymmetricCipherKeyPair containing the Generated keys.
+
+
+ The basic interface that basic Diffie-Hellman implementations
+ conforms to.
+
+
+ initialise the agreement engine.
+
+
+ return the field size for the agreement algorithm in bytes.
+
+
+ given a public key from a given party calculate the next
+ message in the agreement sequence.
+
+
+ Base interface for a symmetric key block cipher.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ The block size for this cipher, in bytes.
+
+
+ Process a block.
+ The input buffer.
+ The offset into inBuf that the input block begins.
+ The output buffer.
+ The offset into outBuf to write the output block.
+ If input block is wrong size, or outBuf too small.
+ The number of bytes processed and produced.
+
+
+
+ Operators that reduce their input to a single block return an object
+ of this type.
+
+
+
+
+ Return the final result of the operation.
+
+ A block of bytes, representing the result of an operation.
+
+
+
+ Store the final result of the operation by copying it into the destination array.
+
+ The number of bytes copied into destination.
+ The byte array to copy the result into.
+ The offset into destination to start copying the result at.
+
+
+ Return an upper limit for the size of the result.
+
+
+ Block cipher engines are expected to conform to this interface.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ If true the cipher is initialised for encryption,
+ if false for decryption.
+ The key and other data required by the cipher.
+
+
+
+ Reset the cipher. After resetting the cipher is in the same state
+ as it was after the last init (if there was one).
+
+
+
+
+ Base interface for a ciphers that do not require data to be block aligned.
+
+ Note: In cases where the underlying algorithm is block based, these ciphers may add or remove padding as needed.
+
+
+
+
+
+ Return the size of the output buffer required for a Write() plus a
+ close() with the write() being passed inputLen bytes.
+
+ The returned size may be dependent on the initialisation of this cipher
+ and may not be accurate once subsequent input data is processed as the cipher may
+ add, add or remove padding, as it sees fit.
+
+
+ The space required to accommodate a call to processBytes and doFinal with inputLen bytes of input.
+ The length of the expected input.
+
+
+
+ Return the size of the output buffer required for a write() with the write() being
+ passed inputLen bytes and just updating the cipher output.
+
+ The space required to accommodate a call to processBytes with inputLen bytes of input.
+ The length of the expected input.
+
+
+
+ Gets the stream for reading/writing data processed/to be processed.
+
+ The stream associated with this cipher.
+
+
+
+ Base interface for cipher builders.
+
+
+
+
+ Return the algorithm and parameter details associated with any cipher built.
+
+
+
+
+ Return the maximum output size that a given input will produce.
+
+ the length of the expected input.
+ The maximum possible output size that can produced for the expected input length.
+
+
+
+ Build a cipher that operates on the passed in stream.
+
+ The stream to write/read any encrypted/decrypted data.
+ A cipher based around the given stream.
+
+
+
+ A cipher builder that can also return the key it was initialized with.
+
+
+
+
+ Return the key we were initialized with.
+
+
+
+ all parameter classes implement this.
+
+
+
+ Interface describing a provider of cipher builders for creating decrypting ciphers.
+
+
+
+
+ Return a cipher builder for creating decrypting ciphers.
+
+ The algorithm details/parameters to use to create the final cipher.
+ A new cipher builder.
+
+
+ Base interface for general purpose byte derivation functions.
+
+
+ The message digest used as the basis for the function.
+
+
+ Parameters for key/byte stream derivation classes
+
+
+ Base interface for a message digest.
+
+
+ The algorithm name.
+
+
+ Return the size, in bytes, of the digest produced by this message digest.
+ the size, in bytes, of the digest produced by this message digest.
+
+
+ Return the size, in bytes, of the internal buffer used by this digest.
+ the size, in bytes, of the internal buffer used by this digest.
+
+
+ Update the message digest with a single byte.
+ the input byte to be entered.
+
+
+ Update the message digest with a block of bytes.
+ the byte array containing the data.
+ the offset into the byte array where the data starts.
+ the length of the data.
+
+
+ Close the digest, producing the final digest value.
+ This call leaves the digest reset.
+ the byte array the digest is to be copied into.
+ the offset into the byte array the digest is to start at.
+ the number of bytes written
+
+
+ Reset the digest back to its initial state.
+
+
+
+ Base interface for operator factories that create stream-based digest calculators.
+
+
+
+ The algorithm details object for calculators made by this factory.
+
+
+ Return the size of the digest associated with this factory.
+ The length of the digest produced by this calculators from this factory in bytes.
+
+
+
+ Create a stream calculator for the digest associated with this factory. The stream
+ calculator is used for the actual operation of entering the data to be digested
+ and producing the digest block.
+
+ A calculator producing an IBlockResult with the final digest in it.
+
+
+ Interface for classes implementing the Digital Signature Algorithm
+
+
+ The algorithm name.
+
+
+ Initialise the signer for signature generation or signature verification.
+ true if we are generating a signature, false otherwise.
+ key parameters for signature generation.
+
+
+ Sign the passed in message (usually the output of a hash function).
+ the message to be signed.
+ two big integers representing the r and s values respectively.
+
+
+ The order of the group that the r, s values in signatures belong to.
+
+
+ Verify the message message against the signature values r and s.
+ the message that was supposed to have been signed.
+ the r signature value.
+ the s signature value.
+
+
+
+ Generate an exchange pair based on the recipient public key.
+
+ the encapsulated secret.
+
+
+
+ The length in bytes of the encapsulation.
+
+
+
+
+ Generate an exchange pair based on the recipient public key.
+
+
+ An SecretWithEncapsulation derived from the recipient public key.
+
+
+
+ Base interface describing an entropy source for a DRBG.
+
+
+
+
+ Return whether or not this entropy source is regarded as prediction resistant.
+
+ true if this instance is prediction resistant; otherwise, false.
+
+
+
+ Return a byte array of entropy.
+
+ The entropy bytes.
+
+
+
+ Return the number of bits of entropy this source can produce.
+
+ The size, in bits, of the return value of getEntropy.
+
+
+
+ Base interface describing a provider of entropy sources.
+
+
+
+
+ Return an entropy source providing a block of entropy.
+
+ The size of the block of entropy required.
+ An entropy source providing bitsRequired blocks of entropy.
+
+
+
+ Base interface for a key unwrapper.
+
+
+
+
+ The parameter set used to configure this key unwrapper.
+
+
+
+
+ Unwrap the passed in data.
+
+ The array containing the data to be unwrapped.
+ The offset into cipherText at which the unwrapped data starts.
+ The length of the data to be unwrapped.
+ an IBlockResult containing the unwrapped key data.
+
+
+
+ Base interface for a key wrapper.
+
+
+
+
+ The parameter set used to configure this key wrapper.
+
+
+
+
+ Wrap the passed in key data.
+
+ The key data to be wrapped.
+ an IBlockResult containing the wrapped key data.
+
+
+ The base interface for implementations of message authentication codes (MACs).
+
+
+ Initialise the MAC.
+ The key or other data required by the MAC.
+
+
+ The algorithm name.
+
+
+ Return the size, in bytes, of the MAC produced by this implementation.
+ the size, in bytes, of the MAC produced by this implementation.
+
+
+ Update the MAC with a single byte.
+ the input byte to be entered.
+
+
+ Update the MAC with a block of bytes.
+ the byte array containing the data.
+ the offset into the byte array where the data starts.
+ the length of the data.
+
+
+ Perform final calculations, producing the result MAC.
+ This call leaves the MAC reset.
+ the byte array the MAC is to be copied into.
+ the offset into the byte array the MAC is to start at.
+ the number of bytes written
+
+
+ Reset the MAC back to its initial state.
+
+
+ The algorithm details object for this calculator.
+
+
+
+ Create a stream calculator for this signature calculator. The stream
+ calculator is used for the actual operation of entering the data to be signed
+ and producing the signature block.
+
+ A calculator producing an IBlockResult with a signature in it.
+
+
+ This exception is thrown whenever we find something we don't expect in a message.
+
+
+
+ Return the secret associated with the encapsulation.
+
+ the secret the encapsulation is for.
+
+
+
+ Return the data that carries the secret in its encapsulated form.
+
+ the encapsulation of the secret.
+
+
+
+ Base interface for operators that serve as stream-based signature calculators.
+
+
+
+ The algorithm details object for this calculator.
+
+
+
+ Create a stream calculator for this signature calculator. The stream
+ calculator is used for the actual operation of entering the data to be signed
+ and producing the signature block.
+
+ A calculator producing an IBlockResult with a signature in it.
+
+
+ The algorithm name.
+
+
+ Initialise the signer for signing or verification.
+ true if for signing, false otherwise.
+ necessary parameters.
+
+
+ Update the signer with a single byte.
+ the input byte to be entered.
+
+
+ Update the signer with a block of bytes.
+ the byte array containing the data.
+ the offset into the byte array where the data starts.
+ the length of the data.
+
+
+ Generate a signature for the message we've been loaded with using the key we were initialised with.
+
+ A byte array containing the signature for the message.
+
+
+ Return true if the internal state represents the signature described in the passed in array.
+
+ an array containing the candidate signature to verify.
+ true if the internal state represents the signature described in the passed in array.
+
+
+ Reset the signer back to its initial state.
+
+
+ Signer with message recovery.
+
+
+ Returns true if the signer has recovered the full message as
+ part of signature verification.
+
+ @return true if full message recovered.
+
+
+ Returns a reference to what message was recovered (if any).
+
+ @return full/partial message, null if nothing.
+
+
+ Perform an update with the recovered message before adding any other data. This must
+ be the first update method called, and calling it will result in the signer assuming
+ that further calls to update will include message content past what is recoverable.
+
+ @param signature the signature that we are in the process of verifying.
+ @throws IllegalStateException
+
+
+
+ Base interface for cryptographic operations such as Hashes, MACs, and Signatures which reduce a stream of data
+ to a single value.
+
+
+
+ Return a "sink" stream which only exists to update the implementing object.
+ A stream to write to in order to update the implementing object.
+
+
+
+ Return the result of processing the stream. This value is only available once the stream
+ has been closed.
+
+ The result of processing the stream.
+
+
+ The interface stream ciphers conform to.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ If true the cipher is initialised for encryption,
+ if false for decryption.
+ The key and other data required by the cipher.
+
+ If the parameters argument is inappropriate.
+
+
+
+ encrypt/decrypt a single byte returning the result.
+ the byte to be processed.
+ the result of processing the input byte.
+
+
+
+ Process a block of bytes from , putting the result into .
+
+ The input byte array.
+
+ The offset into input where the data to be processed starts.
+
+ The number of bytes to be processed.
+ The output buffer the processed bytes go into.
+
+ The offset into output the processed data starts at.
+
+ If the input buffer is too small.
+ If the output buffer is too small.
+
+
+
+ Reset the cipher to the same state as it was after the last init (if there was one).
+
+
+
+
+ Operators that reduce their input to the validation of a signature produce this type.
+
+
+
+
+ Return true if the passed in data matches what is expected by the verification result.
+
+ The bytes representing the signature.
+ true if the signature verifies, false otherwise.
+
+
+
+ Return true if the length bytes from off in the source array match the signature
+ expected by the verification result.
+
+ Byte array containing the signature.
+ The offset into the source array where the signature starts.
+ The number of bytes in source making up the signature.
+ true if the signature verifies, false otherwise.
+
+
+
+ Base interface for operators that serve as stream-based signature verifiers.
+
+
+
+ The algorithm details object for this verifier.
+
+
+
+ Create a stream calculator for this verifier. The stream
+ calculator is used for the actual operation of entering the data to be verified
+ and producing a result which can be used to verify the original signature.
+
+ A calculator producing an IVerifier which can verify the signature.
+
+
+
+ Base interface for a provider to support the dynamic creation of signature verifiers.
+
+
+
+
+ Return a signature verfier for signature algorithm described in the passed in algorithm details object.
+
+ The details of the signature algorithm verification is required for.
+ A new signature verifier.
+
+
+ The name of the algorithm this cipher implements.
+
+
+
+ With FIPS PUB 202 a new kind of message digest was announced which supported extendable output, or variable digest sizes.
+ This interface provides the extra methods required to support variable output on a digest implementation.
+
+
+
+
+ Output the results of the final calculation for this XOF to outLen number of bytes.
+
+ output array to write the output bytes to.
+ offset to start writing the bytes at.
+ the number of output bytes requested.
+ the number of bytes written
+
+
+
+ Start outputting the results of the final calculation for this XOF. Unlike DoFinal, this method
+ will continue producing output until the XOF is explicitly reset, or signals otherwise.
+
+ output array to write the output bytes to.
+ offset to start writing the bytes at.
+ the number of output bytes requested.
+ the number of bytes written
+
+
+ The base class for parameters to key generators.
+
+
+ initialise the generator with a source of randomness
+ and a strength (in bits).
+
+ @param random the random byte source.
+ @param strength the size, in bits, of the keys we want to produce.
+
+
+ return the random source associated with this
+ generator.
+
+ @return the generators random source.
+
+
+ return the bit strength for keys produced by this generator,
+
+ @return the strength of the keys this generator produces (in bits).
+
+
+ standard CBC Block Cipher MAC - if no padding is specified the default of
+ pad of zeroes is used.
+
+
+ create a standard MAC based on a CBC block cipher. This will produce an
+ authentication code half the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a CBC block cipher. This will produce an
+ authentication code half the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used to complete the last block.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding the padding to be used to complete the last block.
+
+
+ Reset the mac generator.
+
+
+ implements a Cipher-FeedBack (CFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ create a standard MAC based on a CFB block cipher. This will produce an
+ authentication code half the length of the block size of the cipher, with
+ the CFB mode set to 8 bits.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a CFB block cipher. This will produce an
+ authentication code half the length of the block size of the cipher, with
+ the CFB mode set to 8 bits.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CFB mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param cfbBitSize the size of an output block produced by the CFB mode.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CFB mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param cfbBitSize the size of an output block produced by the CFB mode.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding a padding to be used.
+
+
+ Reset the mac generator.
+
+
+ CMAC - as specified at www.nuee.nagoya-u.ac.jp/labs/tiwata/omac/omac.html
+
+ CMAC is analogous to OMAC1 - see also en.wikipedia.org/wiki/CMAC
+
+ CMAC is a NIST recomendation - see
+ csrc.nist.gov/CryptoToolkit/modes/800-38_Series_Publications/SP800-38B.pdf
+
+ CMAC/OMAC1 is a blockcipher-based message authentication code designed and
+ analyzed by Tetsu Iwata and Kaoru Kurosawa.
+
+ CMAC/OMAC1 is a simple variant of the CBC MAC (Cipher Block Chaining Message
+ Authentication Code). OMAC stands for One-Key CBC MAC.
+
+ It supports 128- or 64-bits block ciphers, with any key size, and returns
+ a MAC with dimension less or equal to the block size of the underlying
+ cipher.
+
+
+
+ create a standard MAC based on a CBC block cipher (64 or 128 bit block).
+ This will produce an authentication code the length of the block size
+ of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8 and @lt;= 128.
+
+
+ Reset the mac generator.
+
+
+
+ Implementation of DSTU7564 mac mode
+
+
+
+ implementation of DSTU 7624 MAC
+
+
+
+ The GMAC specialisation of Galois/Counter mode (GCM) detailed in NIST Special Publication
+ 800-38D.
+
+
+ GMac is an invocation of the GCM mode where no data is encrypted (i.e. all input data to the Mac
+ is processed as additional authenticated data with the underlying GCM block cipher).
+
+
+
+
+ Creates a GMAC based on the operation of a block cipher in GCM mode.
+
+
+ This will produce an authentication code the length of the block size of the cipher.
+
+ the cipher to be used in GCM mode to generate the MAC.
+
+
+
+ Creates a GMAC based on the operation of a 128 bit block cipher in GCM mode.
+
+
+ This will produce an authentication code the length of the block size of the cipher.
+
+ the cipher to be used in GCM mode to generate the MAC.
+ the mac size to generate, in bits. Must be a multiple of 8, between 32 and 128 (inclusive).
+ Sizes less than 96 are not recommended, but are supported for specialized applications.
+
+
+
+ Initialises the GMAC - requires a
+ providing a and a nonce.
+
+
+
+ implementation of GOST 28147-89 MAC
+
+
+ HMAC implementation based on RFC2104
+
+ H(K XOR opad, H(K XOR ipad, text))
+
+
+ Reset the mac generator.
+
+
+ DES based CBC Block Cipher MAC according to ISO9797, algorithm 3 (ANSI X9.19 Retail MAC)
+
+ This could as well be derived from CBCBlockCipherMac, but then the property mac in the base
+ class must be changed to protected
+
+
+ create a Retail-MAC based on a CBC block cipher. This will produce an
+ authentication code of the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation. This must
+ be DESEngine.
+
+
+ create a Retail-MAC based on a CBC block cipher. This will produce an
+ authentication code of the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used to complete the last block.
+
+
+ create a Retail-MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses single DES CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses single DES CBC mode as the basis for the
+ MAC generation. The final block is decrypted and then encrypted using the
+ middle and right part of the key.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding the padding to be used to complete the last block.
+
+
+ Reset the mac generator.
+
+
+
+ Poly1305 message authentication code, designed by D. J. Bernstein.
+
+
+ Poly1305 computes a 128-bit (16 bytes) authenticator, using a 128 bit nonce and a 256 bit key
+ consisting of a 128 bit key applied to an underlying cipher, and a 128 bit key (with 106
+ effective key bits) used in the authenticator.
+
+ The polynomial calculation in this implementation is adapted from the public domain poly1305-donna-unrolled C implementation
+ by Andrew M (@floodyberry).
+
+
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Current block of buffered input
+
+
+ Current offset in input buffer
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Constructs a Poly1305 MAC, where the key passed to init() will be used directly.
+
+
+ Constructs a Poly1305 MAC, using a 128 bit block cipher.
+
+
+
+ Initialises the Poly1305 MAC.
+
+ a {@link ParametersWithIV} containing a 128 bit nonce and a {@link KeyParameter} with
+ a 256 bit key complying to the {@link Poly1305KeyGenerator Poly1305 key format}.
+
+
+
+ Implementation of SipHash as specified in "SipHash: a fast short-input PRF", by Jean-Philippe
+ Aumasson and Daniel J. Bernstein (https://131002.net/siphash/siphash.pdf).
+
+
+ "SipHash is a family of PRFs SipHash-c-d where the integer parameters c and d are the number of
+ compression rounds and the number of finalization rounds. A compression round is identical to a
+ finalization round and this round function is called SipRound. Given a 128-bit key k and a
+ (possibly empty) byte string m, SipHash-c-d returns a 64-bit value..."
+
+
+
+ SipHash-2-4
+
+
+ SipHash-c-d
+ the number of compression rounds
+ the number of finalization rounds
+
+
+
+ Implementation of the Skein parameterised MAC function in 256, 512 and 1024 bit block sizes,
+ based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+
+ Constructs a Skein MAC with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/MAC size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Optionally initialises the Skein digest with the provided parameters.
+
+ See for details on the parameterisation of the Skein hash function.
+ the parameters to apply to this engine, or null to use no parameters.
+
+
+ This exception is thrown whenever a cipher requires a change of key, IV or similar after x amount of
+ bytes enciphered.
+
+
+
+ implements Cipher-Block-Chaining (CBC) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of chaining.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CBC".
+
+
+ return the block size of the underlying cipher.
+
+ @return the block size of the underlying cipher.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ Implements the Counter with Cipher Block Chaining mode (CCM) detailed in
+ NIST Special Publication 800-38C.
+
+ Note: this mode is a packet mode - it needs all the data up front.
+
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Returns a byte array containing the mac calculated as part of the
+ last encrypt or decrypt operation.
+
+ @return the last mac calculated.
+
+
+ Process a packet of data for either CCM decryption or encryption.
+
+ @param in data for processing.
+ @param inOff offset at which data starts in the input array.
+ @param inLen length of the data in the input array.
+ @return a byte array containing the processed input..
+ @throws IllegalStateException if the cipher is not appropriately set up.
+ @throws InvalidCipherTextException if the input data is truncated or the mac check fails.
+
+
+ Process a packet of data for either CCM decryption or encryption.
+
+ @param in data for processing.
+ @param inOff offset at which data starts in the input array.
+ @param inLen length of the data in the input array.
+ @param output output array.
+ @param outOff offset into output array to start putting processed bytes.
+ @return the number of bytes added to output.
+ @throws IllegalStateException if the cipher is not appropriately set up.
+ @throws InvalidCipherTextException if the input data is truncated or the mac check fails.
+ @throws DataLengthException if output buffer too short.
+
+
+ implements a Cipher-FeedBack (CFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ A Cipher Text Stealing (CTS) mode cipher. CTS allows block ciphers to
+ be used to produce cipher text which is the same outLength as the plain text.
+
+
+ Create a buffered block cipher that uses Cipher Text Stealing
+
+ @param cipher the underlying block cipher this buffering object wraps.
+
+
+ return the size of the output buffer required for an update of 'length' bytes.
+
+ @param length the outLength of the input.
+ @return the space required to accommodate a call to update
+ with length bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of length bytes.
+
+ @param length the outLength of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with length bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param length the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if cipher text decrypts wrongly (in
+ case the exception will never Get thrown).
+
+
+ A Two-Pass Authenticated-Encryption Scheme Optimized for Simplicity and
+ Efficiency - by M. Bellare, P. Rogaway, D. Wagner.
+
+ http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf
+
+ EAX is an AEAD scheme based on CTR and OMAC1/CMAC, that uses a single block
+ cipher to encrypt and authenticate data. It's on-line (the length of a
+ message isn't needed to begin processing it), has good performances, it's
+ simple and provably secure (provided the underlying block cipher is secure).
+
+ Of course, this implementations is NOT thread-safe.
+
+
+ Constructor that accepts an instance of a block cipher engine.
+
+ @param cipher the engine to use
+
+
+
+ Implements the Galois/Counter mode (GCM) detailed in NIST Special Publication 800-38D.
+
+
+
+
+ MAC sizes from 32 bits to 128 bits (must be a multiple of 8) are supported. The default is 128 bits.
+ Sizes less than 96 are not recommended, but are supported for specialized applications.
+
+
+
+ GCM-SIV Mode.
+ It should be noted that the specified limit of 236 bytes is not supported. This is because all bytes are
+ cached in a ByteArrayOutputStream object (which has a limit of a little less than 231 bytes),
+ and are output on the DoFinal() call (which can only process a maximum of 231 bytes).
+ The practical limit of 231 - 24 bytes is policed, and attempts to breach the limit will be rejected
+ In order to properly support the higher limit, an extended form of ByteArrayOutputStream would be needed
+ which would use multiple arrays to store the data. In addition, a new doOutput method would be required (similar
+ to that in XOF digests), which would allow the data to be output over multiple calls. Alternatively an extended
+ form of ByteArrayInputStream could be used to deliver the data.
+
+
+ The buffer length.
+
+
+ The halfBuffer length.
+
+
+ The nonce length.
+
+
+ The maximum data length (AEAD/PlainText). Due to implementation constraints this is restricted to the maximum
+ array length (https://programming.guide/java/array-maximum-length.html) minus the BUFLEN to allow for the MAC
+
+
+ The top bit mask.
+
+
+ The addition constant.
+
+
+ The initialisation flag.
+
+
+ The aeadComplete flag.
+
+
+ The cipher.
+
+
+ The multiplier.
+
+
+ The gHash buffer.
+
+
+ The reverse buffer.
+
+
+ The aeadHasher.
+
+
+ The dataHasher.
+
+
+ The plainDataStream.
+
+
+ The encryptedDataStream (decryption only).
+
+
+ Are we encrypting?
+
+
+ The initialAEAD.
+
+
+ The nonce.
+
+
+ The flags.
+
+
+ Constructor.
+
+
+ Constructor.
+ @param pCipher the underlying cipher
+
+
+ Constructor.
+ @param pCipher the underlying cipher
+ @param pMultiplier the multiplier
+
+
+ check AEAD status.
+ @param pLen the aeadLength
+
+
+ check status.
+ @param pLen the dataLength
+
+
+ Reset Streams.
+
+
+ Obtain buffer length (allowing for null).
+ @param pBuffer the buffere
+ @return the length
+
+
+ calculate tag.
+ @return the calculated tag
+
+
+ complete polyVAL.
+ @return the calculated value
+
+
+ process lengths.
+
+
+ perform the next GHASH step.
+ @param pNext the next value
+
+
+ xor a full block buffer.
+ @param pLeft the left operand and result
+ @param pRight the right operand
+
+
+ xor a partial block buffer.
+ @param pLeft the left operand and result
+ @param pRight the right operand
+ @param pOffset the offset in the right operand
+ @param pLength the length of data in the right operand
+
+
+ increment the counter.
+ @param pCounter the counter to increment
+
+
+ multiply by X.
+ @param pValue the value to adjust
+
+
+ Derive Keys.
+ @param pKey the keyGeneration key
+
+
+ Hash Control.
+
+
+ Cache.
+
+
+ Single byte cache.
+
+
+ Count of active bytes in cache.
+
+
+ Count of hashed bytes.
+
+
+ Obtain the count of bytes hashed.
+ @return the count
+
+
+ Reset the hasher.
+
+
+ update hash.
+ @param pByte the byte
+
+
+ update hash.
+ @param pBuffer the buffer
+ @param pOffset the offset within the buffer
+ @param pLen the length of data
+
+
+ complete hash.
+
+
+ implements the GOST 28147 OFB counter mode (GCTR).
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ counter mode (must have a 64 bit block size).
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param encrypting if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param parameters the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/GCTR"
+ and the block size in bits
+
+
+ return the block size we are operating at (in bytes).
+
+ @return the block size we are operating at (in bytes).
+
+
+ reset the feedback vector back to the IV and reset the underlying
+ cipher.
+
+
+ An IAeadCipher based on an IBlockCipher.
+
+
+ The block size for this cipher, in bytes.
+
+
+ The block cipher underlying this algorithm.
+
+
+
+ A cipher mode that includes authenticated encryption with a streaming mode and optional
+ associated data.
+
+
+ Implementations of this interface may operate in a packet mode (where all input data is
+ buffered and processed during the call to DoFinal, or in a streaming mode (where output
+ data is incrementally produced with each call to ProcessByte or ProcessBytes. This is
+ important to consider during decryption: in a streaming mode, unauthenticated plaintext
+ data may be output prior to the call to DoFinal that results in an authentication failure.
+ The higher level protocol utilising this cipher must ensure the plaintext data is handled
+ appropriately until the end of data is reached and the entire ciphertext is authenticated.
+
+
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ Parameter can either be an AeadParameters or a ParametersWithIV object.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ Add a single byte to the associated data check.
+ If the implementation supports it, this will be an online operation and will not retain the associated data.
+ The byte to be processed.
+
+
+ Add a sequence of bytes to the associated data check.
+ If the implementation supports it, this will be an online operation and will not retain the associated data.
+ The input byte array.
+ The offset into the input array where the data to be processed starts.
+ The number of bytes to be processed.
+
+
+ Encrypt/decrypt a single byte.
+
+ @param input the byte to be processed.
+ @param outBytes the output buffer the processed byte goes into.
+ @param outOff the offset into the output byte array the processed data starts at.
+ @return the number of bytes written to out.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ Process a block of bytes from in putting the result into out.
+
+ @param inBytes the input byte array.
+ @param inOff the offset into the in array where the data to be processed starts.
+ @param len the number of bytes to be processed.
+ @param outBytes the output buffer the processed bytes go into.
+ @param outOff the offset into the output byte array the processed data starts at.
+ @return the number of bytes written to out.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ Finish the operation either appending or verifying the MAC at the end of the data.
+
+ @param outBytes space for any resulting output data.
+ @param outOff offset into out to start copying the data at.
+ @return number of bytes written into out.
+ @throws InvalidOperationException if the cipher is in an inappropriate state.
+ @throws InvalidCipherTextException if the MAC fails to match.
+
+
+ Return the value of the MAC associated with the last stream processed.
+
+ @return MAC for plaintext data.
+
+
+ Return the size of the output buffer required for a ProcessBytes
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to ProcessBytes
+ with len bytes of input.
+
+
+ Return the size of the output buffer required for a ProcessBytes plus a
+ DoFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to ProcessBytes and DoFinal
+ with len bytes of input.
+
+
+
+ Reset the cipher to the same state as it was after the last init (if there was one).
+
+
+
+ Return the underlying this cipher mode.
+
+
+ Indicates whether this cipher mode can handle partial blocks.
+
+
+
+ Reset the cipher mode to the same state as it was after the last init (if there was one).
+
+
+
+
+ Base constructor. Nb value is set to 4.
+
+ base cipher to use under CCM.
+
+
+
+ Constructor allowing Nb configuration.
+
+ Nb is a parameter specified in CCM mode of DSTU7624 standard.
+ This parameter specifies maximum possible length of input.It should
+ be calculated as follows: Nb = 1 / 8 * (-3 + log[2]Nmax) + 1,
+ where Nmax - length of input message in bits.For practical reasons
+ Nmax usually less than 4Gb, e.g. for Nmax = 2^32 - 1, Nb = 4.
+
+ base cipher to use under CCM.
+ Nb value to use.
+
+
+ Implements a Gamming or Counter (CTR) mode on top of a DSTU 7624 block cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/KCTR"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ An implementation of RFC 7253 on The OCB
+ Authenticated-Encryption Algorithm.
+
+ For those still concerned about the original patents around this, please see:
+ https://mailarchive.ietf.org/arch/msg/cfrg/qLTveWOdTJcLn4HP3ev-vrj05Vg/
+ Text reproduced below:
+
+ Phillip Rogaway<rogaway@cs.ucdavis.edu> Sat, 27 February 2021 02:46 UTC
+
+ I can confirm that I have abandoned all OCB patents and placed into the public domain all OCB-related IP of
+ mine. While I have been telling people this for quite some time, I don't think I ever made a proper announcement
+ to the CFRG or on the OCB webpage. Consider that done.
+
+
+
+
+ implements a Output-FeedBack (OFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/OFB"
+ and the block size in bits
+
+
+ return the block size we are operating at (in bytes).
+
+ @return the block size we are operating at (in bytes).
+
+
+ reset the feedback vector back to the IV and reset the underlying
+ cipher.
+
+
+ * Implements OpenPGP's rather strange version of Cipher-FeedBack (CFB) mode
+ * on top of a simple cipher. This class assumes the IV has been prepended
+ * to the data stream already, and just accomodates the reset after
+ * (blockSize + 2) bytes have been read.
+ *
+ * For further info see RFC 2440.
+ *
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/PGPCFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param parameters the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Encrypt one byte of data according to CFB mode.
+ @param data the byte to encrypt
+ @param blockOff offset in the current block
+ @returns the encrypted byte
+
+
+ Implements the Segmented Integer Counter (SIC) mode on top of a simple
+ block cipher.
+
+
+ Basic constructor.
+
+ @param c the block cipher to be used.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Calculator factory class for signature generation in ASN.1 based profiles that use an AlgorithmIdentifier to preserve
+ signature algorithm details.
+
+
+
+
+ Base constructor.
+
+ The name of the signature algorithm to use.
+ The private key to be used in the signing operation.
+
+
+
+ Constructor which also specifies a source of randomness to be used if one is required.
+
+ The name of the signature algorithm to use.
+ The private key to be used in the signing operation.
+ The source of randomness to be used in signature calculation.
+
+
+
+ Allows enumeration of the signature names supported by the verifier provider.
+
+
+
+
+ Verifier class for signature verification in ASN.1 based profiles that use an AlgorithmIdentifier to preserve
+ signature algorithm details.
+
+
+
+
+ Base constructor.
+
+ The name of the signature algorithm to use.
+ The public key to be used in the verification operation.
+
+
+
+ Provider class which supports dynamic creation of signature verifiers.
+
+
+
+
+ Base constructor - specify the public key to be used in verification.
+
+ The public key to be used in creating verifiers provided by this object.
+
+
+
+ Allows enumeration of the signature names supported by the verifier provider.
+
+
+
+ Block cipher padders are expected to conform to this interface.
+
+
+ Initialise the padder.
+ A source of randomness, if any required.
+
+
+ The name of the algorithm this padder implements.
+
+
+ Add padding to the passed in block.
+ the block to add padding to.
+ the offset into the block the padding is to start at.
+ the number of bytes of padding added.
+
+
+ Determine the length of padding present in the passed in block.
+ the block to check padding for.
+ the number of bytes of padding present.
+
+
+ A padder that adds ISO10126-2 padding to a block.
+
+
+
+ A padder that adds the padding according to the scheme referenced in ISO 7814-4 - scheme 2 from ISO 9797-1.
+ The first byte is 0x80, rest is 0x00
+
+
+
+ A wrapper class that allows block ciphers to be used to process data in
+ a piecemeal fashion with padding. The PaddedBufferedBlockCipher
+ outputs a block only when the buffer is full and more data is being added,
+ or on a doFinal (unless the current block in the buffer is a pad block).
+ The default padding mechanism used is the one outlined in Pkcs5/Pkcs7.
+
+
+ Create a buffered block cipher with the desired padding.
+
+ @param cipher the underlying block cipher this buffering object wraps.
+ @param padding the padding type.
+
+
+ Create a buffered block cipher Pkcs7 padding
+
+ @param cipher the underlying block cipher this buffering object wraps.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the minimum size of the output buffer required for an update
+ plus a doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer. If the buffer is currently
+ full and padding needs to be added a call to doFinal will produce
+ 2 * GetBlockSize() bytes.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output or we are decrypting and the input is not block size aligned.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+
+
+ A padder that adds PKCS7/PKCS5 padding to a block.
+
+
+ A padder that adds Trailing-Bit-Compliment padding to a block.
+ This padding pads the block out compliment of the last bit of the plain text.
+
+
+
+ A padder that adds X9.23 padding to a block - if a SecureRandom is passed in random padding is assumed,
+ otherwise padding with zeros is used.
+
+
+
+ A padder that adds zero byte padding to a block.
+
+
+ Base constructor.
+
+ @param key key to be used by underlying cipher
+ @param macSize macSize in bits
+ @param nonce nonce to be used
+
+
+ Base constructor.
+
+ @param key key to be used by underlying cipher
+ @param macSize macSize in bits
+ @param nonce nonce to be used
+ @param associatedText associated text, if any
+
+
+ Blake3 Parameters.
+
+
+ Create a key parameter.
+ the context
+ the parameter
+
+
+ Create a key parameter.
+ the key
+ the parameter
+
+
+ Obtain the key.
+ the key
+
+
+ Clear the key bytes.
+
+
+ Obtain the salt.
+ the salt
+
+
+ return true if the passed in key is a DES-EDE weak key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+ @param length number of bytes making up the key
+
+
+ return true if the passed in key is a DES-EDE weak key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 2/3 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 2 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 3 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ DES has 16 weak keys. This method will check
+ if the given DES key material is weak or semi-weak.
+ Key material that is too short is regarded as weak.
+
+ See "Applied
+ Cryptography" by Bruce Schneier for more information.
+
+ @return true if the given DES key material is weak or semi-weak,
+ false otherwise.
+
+
+ DES Keys use the LSB as the odd parity bit. This can
+ be used to check for corrupt keys.
+
+ @param bytes the byte array to set the parity on.
+
+
+ The minimum bitlength of the private value.
+
+
+ The bitlength of the private value.
+
+
+ Construct without a usage index, this will do a random construction of G.
+
+ @param L desired length of prime P in bits (the effective key size).
+ @param N desired length of prime Q in bits.
+ @param certainty certainty level for prime number generation.
+ @param random the source of randomness to use.
+
+
+ Construct for a specific usage index - this has the effect of using verifiable canonical generation of G.
+
+ @param L desired length of prime P in bits (the effective key size).
+ @param N desired length of prime Q in bits.
+ @param certainty certainty level for prime number generation.
+ @param random the source of randomness to use.
+ @param usageIndex a valid usage index.
+
+
+ return the generator - g
+
+
+ return private value limit - l
+
+
+ Parameter class for the HkdfBytesGenerator class.
+
+
+ Generates parameters for HKDF, specifying both the optional salt and
+ optional info. Step 1: Extract won't be skipped.
+
+ @param ikm the input keying material or seed
+ @param salt the salt to use, may be null for a salt for hashLen zeros
+ @param info the info to use, may be null for an info field of zero bytes
+
+
+ Factory method that makes the HKDF skip the extract part of the key
+ derivation function.
+
+ @param ikm the input keying material or seed, directly used for step 2:
+ Expand
+ @param info the info to use, may be null for an info field of zero bytes
+ @return HKDFParameters that makes the implementation skip step 1
+
+
+ Returns the input keying material or seed.
+
+ @return the keying material
+
+
+ Returns if step 1: extract has to be skipped or not
+
+ @return true for skipping, false for no skipping of step 1
+
+
+ Returns the salt, or null if the salt should be generated as a byte array
+ of HashLen zeros.
+
+ @return the salt, or null
+
+
+ Returns the info field, which may be empty (null is converted to empty).
+
+ @return the info field, never null
+
+
+ parameters for using an integrated cipher in stream mode.
+
+
+ @param derivation the derivation parameter for the KDF function.
+ @param encoding the encoding parameter for the KDF function.
+ @param macKeySize the size of the MAC key (in bits).
+
+
+ @param derivation the derivation parameter for the KDF function.
+ @param encoding the encoding parameter for the KDF function.
+ @param macKeySize the size of the MAC key (in bits).
+ @param cipherKeySize the size of the associated Cipher key (in bits).
+
+
+ parameters for Key derivation functions for ISO-18033
+
+
+
+ Base constructor - suffix fixed input data only.
+
+ the KDF seed
+ fixed input data to follow counter.
+ length of the counter in bits
+
+
+
+ Base constructor - prefix and suffix fixed input data.
+
+ the KDF seed
+ fixed input data to precede counter
+ fixed input data to follow counter.
+ length of the counter in bits.
+
+
+ parameters for Key derivation functions for IEEE P1363a
+
+
+ Parameters for mask derivation functions.
+
+
+ Parameters for NaccacheStern public private key generation. For details on
+ this cipher, please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Parameters for generating a NaccacheStern KeyPair.
+
+ @param random
+ The source of randomness
+ @param strength
+ The desired strength of the Key in Bits
+ @param certainty
+ the probability that the generated primes are not really prime
+ as integer: 2^(-certainty) is then the probability
+ @param countSmallPrimes
+ How many small key factors are desired
+
+
+ @return Returns the certainty.
+
+
+ @return Returns the countSmallPrimes.
+
+
+ Public key parameters for NaccacheStern cipher. For details on this cipher,
+ please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ @param privateKey
+
+
+ @return Returns the g.
+
+
+ @return Returns the lowerSigmaBound.
+
+
+ @return Returns the n.
+
+
+ Private key parameters for NaccacheStern cipher. For details on this cipher,
+ please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Constructs a NaccacheSternPrivateKey
+
+ @param g
+ the public enryption parameter g
+ @param n
+ the public modulus n = p*q
+ @param lowerSigmaBound
+ the public lower sigma bound up to which data can be encrypted
+ @param smallPrimes
+ the small primes, of which sigma is constructed in the right
+ order
+ @param phi_n
+ the private modulus phi(n) = (p-1)(q-1)
+
+
+ Cipher parameters with a fixed salt value associated with them.
+
+
+
+ Parameters for the Skein hash function - a series of byte[] strings identified by integer tags.
+
+
+ Parameterised Skein can be used for:
+
+ - MAC generation, by providing a key.
+ - Randomised hashing, by providing a nonce.
+ - A hash function for digital signatures, associating a
+ public key with the message digest.
+ - A key derivation function, by providing a
+ key identifier.
+ - Personalised hashing, by providing a
+ recommended format or
+ arbitrary personalisation string.
+
+
+
+
+
+
+
+
+ The parameter type for a secret key, supporting MAC or KDF functions: 0
+
+
+
+
+ The parameter type for the Skein configuration block: 4
+
+
+
+
+ The parameter type for a personalisation string: 8
+
+
+
+
+ The parameter type for a public key: 12
+
+
+
+
+ The parameter type for a key identifier string: 16
+
+
+
+
+ The parameter type for a nonce: 20
+
+
+
+
+ The parameter type for the message: 48
+
+
+
+
+ The parameter type for the output transformation: 63
+
+
+
+
+ Obtains a map of type (int) to value (byte[]) for the parameters tracked in this object.
+
+
+
+
+ Obtains the value of the key parameter, or null if not
+ set.
+
+ The key.
+
+
+
+ Obtains the value of the personalisation parameter, or
+ null if not set.
+
+
+
+
+ Obtains the value of the public key parameter, or
+ null if not set.
+
+
+
+
+ Obtains the value of the key identifier parameter, or
+ null if not set.
+
+
+
+
+ Obtains the value of the nonce parameter, or null if
+ not set.
+
+
+
+
+ A builder for .
+
+
+
+
+ Sets a parameters to apply to the Skein hash function.
+
+
+ Parameter types must be in the range 0,5..62, and cannot use the value 48
+ (reserved for message body).
+
+ Parameters with type < 48 are processed before
+ the message content, parameters with type > 48
+ are processed after the message and prior to output.
+
+ the type of the parameter, in the range 5..62.
+ the byte sequence of the parameter.
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Implements the recommended personalisation format for Skein defined in Section 4.11 of
+ the Skein 1.3 specification.
+
+
+ The format is YYYYMMDD email@address distinguisher, encoded to a byte
+ sequence using UTF-8 encoding.
+
+ the date the personalised application of the Skein was defined.
+ the email address of the creation of the personalised application.
+ an arbitrary personalisation string distinguishing the application.
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Constructs a new instance with the parameters provided to this
+ builder.
+
+
+
+ Private parameters for an SM2 key exchange.
+ The ephemeralPrivateKey is used to calculate the random point used in the algorithm.
+
+
+ Public parameters for an SM2 key exchange.
+ In this case the ephemeralPublicKey provides the random point used in the algorithm.
+
+
+
+ Parameters for tweakable block ciphers.
+
+
+
+
+ Gets the key.
+
+ the key to use, or null to use the current key.
+
+
+
+ Gets the tweak value.
+
+ The tweak to use, or null to use the current tweak.
+
+
+ super class for all Password Based Encyrption (Pbe) parameter generator classes.
+
+
+ base constructor.
+
+
+ initialise the Pbe generator.
+
+ @param password the password converted into bytes (see below).
+ @param salt the salt to be mixed with the password.
+ @param iterationCount the number of iterations the "mixing" function
+ is to be applied for.
+
+
+ return the iteration count.
+
+ @return the iteration count.
+
+
+ Generate derived parameters for a key of length keySize, specifically
+ for use with a MAC.
+
+ @param keySize the length, in bits, of the key required.
+ @return a parameters object representing a key.
+
+
+ converts a password to a byte array according to the scheme in
+ Pkcs5 (ascii, no padding)
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ converts a password to a byte array according to the scheme in
+ PKCS5 (UTF-8, no padding)
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ converts a password to a byte array according to the scheme in
+ Pkcs12 (unicode, big endian, 2 zero pad bytes at the end).
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ An EntropySourceProvider where entropy generation is based on a SecureRandom output using SecureRandom.generateSeed().
+
+
+ Create a entropy source provider based on the passed in SecureRandom.
+
+ @param secureRandom the SecureRandom to base EntropySource construction on.
+ @param isPredictionResistant boolean indicating if the SecureRandom is based on prediction resistant entropy or not (true if it is).
+
+
+ Return an entropy source that will create bitsRequired bits of entropy on
+ each invocation of getEntropy().
+
+ @param bitsRequired size (in bits) of entropy to be created by the provided source.
+ @return an EntropySource that generates bitsRequired bits of entropy on each call to its getEntropy() method.
+
+
+
+ Uses RandomNumberGenerator.Create() to get randomness generator
+
+
+
+ Random generation based on the digest with counter. Calling AddSeedMaterial will
+ always increase the entropy of the hash.
+
+ Internal access to the digest is synchronized so a single one of these can be shared.
+
+
+
+ A SP800-90A CTR DRBG.
+
+
+ Construct a SP800-90A CTR DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param engine underlying block cipher to use to support DRBG
+ @param keySizeInBits size of the key to use with the block cipher.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each internal round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Pad out a key for TDEA, setting odd parity for each byte.
+
+ @param keyMaster
+ @param keyOff
+ @param tmp
+ @param tmpOff
+
+
+ Used by both Dual EC and Hash.
+
+
+ A SP800-90A Hash DRBG.
+
+
+ Construct a SP800-90A Hash DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param digest source digest to use for DRB stream.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each internal round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ A SP800-90A HMAC DRBG.
+
+
+ Construct a SP800-90A Hash DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param hMac Hash MAC to base the DRBG on.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Interface to SP800-90A deterministic random bit generators.
+
+
+ Return the block size of the DRBG.
+
+ @return the block size (in bits) produced by each round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Generate numBytes worth of entropy from the passed in entropy source.
+
+ @param entropySource the entropy source to request the data from.
+ @param numBytes the number of bytes of entropy requested.
+ @return a byte array populated with the random data.
+
+
+ Generic interface for objects generating random bytes.
+
+
+ Add more seed material to the generator.
+ A byte array to be mixed into the generator's state.
+
+
+ Add more seed material to the generator.
+ A long value to be mixed into the generator's state.
+
+
+ Fill byte array with random values.
+ Array to be filled.
+
+
+ Fill byte array with random values.
+ Array to receive bytes.
+ Index to start filling at.
+ Length of segment to fill.
+
+
+ Force a reseed of the DRBG.
+ optional additional input
+
+
+ Builder class for making SecureRandom objects based on SP 800-90A Deterministic Random Bit Generators (DRBG).
+
+
+ Basic constructor, creates a builder using an EntropySourceProvider based on the default SecureRandom with
+ predictionResistant set to false.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the default SecureRandom does for its generateSeed() call.
+
+
+
+ Construct a builder with an EntropySourceProvider based on the passed in SecureRandom and the passed in value
+ for prediction resistance.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the passed in SecureRandom does for its generateSeed() call.
+
+ @param entropySource
+ @param predictionResistant
+
+
+ Create a builder which makes creates the SecureRandom objects from a specified entropy source provider.
+
+ Note: If this constructor is used any calls to setSeed() in the resulting SecureRandom will be ignored.
+
+ @param entropySourceProvider a provider of EntropySource objects.
+
+
+ Set the personalization string for DRBG SecureRandoms created by this builder
+ @param personalizationString the personalisation string for the underlying DRBG.
+ @return the current builder.
+
+
+ Set the security strength required for DRBGs used in building SecureRandom objects.
+
+ @param securityStrength the security strength (in bits)
+ @return the current builder.
+
+
+ Set the amount of entropy bits required for seeding and reseeding DRBGs used in building SecureRandom objects.
+
+ @param entropyBitsRequired the number of bits of entropy to be requested from the entropy source on each seed/reseed.
+ @return the current builder.
+
+
+ Build a SecureRandom based on a SP 800-90A Hash DRBG.
+
+ @param digest digest algorithm to use in the DRBG underneath the SecureRandom.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a Hash DRBG.
+
+
+ Build a SecureRandom based on a SP 800-90A CTR DRBG.
+
+ @param cipher the block cipher to base the DRBG on.
+ @param keySizeInBits key size in bits to be used with the block cipher.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a CTR DRBG.
+
+
+ Build a SecureRandom based on a SP 800-90A HMAC DRBG.
+
+ @param hMac HMAC algorithm to use in the DRBG underneath the SecureRandom.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a HMAC DRBG.
+
+
+
+ Permutation generated by code:
+
+ // First 1850 fractional digit of Pi number.
+ byte[] key = new BigInteger("14159265358979323846...5068006422512520511").ToByteArray();
+ s = 0;
+ P = new byte[256];
+ for (int i = 0; i < 256; i++)
+ {
+ P[i] = (byte) i;
+ }
+ for (int m = 0; m < 768; m++)
+ {
+ s = P[(s + P[m & 0xff] + key[m % key.length]) & 0xff];
+ byte temp = P[m & 0xff];
+ P[m & 0xff] = P[s & 0xff];
+ P[s & 0xff] = temp;
+ }
+
+
+
+ Value generated in the same way as P.
+
+
+
+ @param engine
+ @param entropySource
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the RNG.
+
+
+ Basic constructor, creates a builder using an EntropySourceProvider based on the default SecureRandom with
+ predictionResistant set to false.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the default SecureRandom does for its generateSeed() call.
+
+
+
+ Construct a builder with an EntropySourceProvider based on the passed in SecureRandom and the passed in value
+ for prediction resistance.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the passed in SecureRandom does for its generateSeed() call.
+
+ @param entropySource
+ @param predictionResistant
+
+
+ Create a builder which makes creates the SecureRandom objects from a specified entropy source provider.
+
+ Note: If this constructor is used any calls to setSeed() in the resulting SecureRandom will be ignored.
+
+ @param entropySourceProvider a provider of EntropySource objects.
+
+
+ Construct a X9.31 secure random generator using the passed in engine and key. If predictionResistant is true the
+ generator will be reseeded on each request.
+
+ @param engine a block cipher to use as the operator.
+ @param key the block cipher key to initialise engine with.
+ @param predictionResistant true if engine to be reseeded on each use, false otherwise.
+ @return a SecureRandom.
+
+
+ The Digital Signature Algorithm - as described in "Handbook of Applied
+ Cryptography", pages 452 - 453.
+
+
+ Default configuration, random K values.
+
+
+ Configuration with an alternate, possibly deterministic calculator of K.
+
+ @param kCalculator a K value calculator.
+
+
+ Generate a signature for the given message using the key we were
+ initialised with. For conventional DSA the message should be a SHA-1
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a DSA signature for
+ the passed in message for standard DSA the message should be a
+ SHA-1 hash of the real message to be verified.
+
+
+ EC-DSA as described in X9.62
+
+
+ Default configuration, random K values.
+
+
+ Configuration with an alternate, possibly deterministic calculator of K.
+
+ @param kCalculator a K value calculator.
+
+
+ Generate a signature for the given message using the key we were
+ initialised with. For conventional DSA the message should be a SHA-1
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a DSA signature for
+ the passed in message (for standard DSA the message should be
+ a SHA-1 hash of the real message to be verified).
+
+
+ GOST R 34.10-2001 Signature Algorithm
+
+
+ generate a signature for the given message using the key we were
+ initialised with. For conventional GOST3410 the message should be a GOST3411
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a GOST3410 signature for
+ the passed in message (for standard GOST3410 the message should be
+ a GOST3411 hash of the real message to be verified).
+
+
+ EC-NR as described in IEEE 1363-2000
+
+
+ generate a signature for the given message using the key we were
+ initialised with. Generally, the order of the curve should be at
+ least as long as the hash of the message of interest, and with
+ ECNR it *must* be at least as long.
+
+ @param digest the digest to be signed.
+ @exception DataLengthException if the digest is longer than the key allows
+
+
+ return true if the value r and s represent a signature for the
+ message passed in. Generally, the order of the curve should be at
+ least as long as the hash of the message of interest, and with
+ ECNR, it *must* be at least as long. But just in case the signer
+ applied mod(n) to the longer digest, this implementation will
+ apply mod(n) during verification.
+
+ @param digest the digest to be verified.
+ @param r the r value of the signature.
+ @param s the s value of the signature.
+ @exception DataLengthException if the digest is longer than the key allows
+
+
+ initialise the signer for signing or verification.
+
+ @param forSigning
+ true if for signing, false otherwise
+ @param parameters
+ necessary parameters.
+
+
+ Gost R 34.10-94 Signature Algorithm
+
+
+ generate a signature for the given message using the key we were
+ initialised with. For conventional Gost3410 the message should be a Gost3411
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a Gost3410 signature for
+ the passed in message for standard Gost3410 the message should be a
+ Gost3411 hash of the real message to be verified.
+
+
+ A deterministic K calculator based on the algorithm in section 3.2 of RFC 6979.
+
+
+ Base constructor.
+
+ @param digest digest to build the HMAC on.
+
+
+ Supply additional input to HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1)).
+
+ RFC 6979 3.6. Additional data may be added to the input of HMAC [..]. A use case may be a protocol that
+ requires a non-deterministic signature algorithm on a system that does not have access to a high-quality
+ random source. It suffices that the additional data[..] is non-repeating(e.g., a signature counter or a
+ monotonic clock) to ensure "random-looking" signatures are indistinguishable, in a cryptographic way, from
+ plain (EC)DSA signatures.
+
+ By default there is no additional input. Override this method to supply additional input, bearing in mind
+ that this calculator may be used for many signatures.
+
+ The to which the additional input should be added.
+
+
+ Supply additional input to HMAC_K(V || 0x01 || int2octets(x) || bits2octets(h1)).
+
+ Refer to comments for .
+
+ The to which the additional input should be added.
+
+
+
+ An interface for different encoding formats for DSA signatures.
+
+
+
+ Decode the (r, s) pair of a DSA signature.
+ The order of the group that r, s belong to.
+ An encoding of the (r, s) pair of a DSA signature.
+ The (r, s) of a DSA signature, stored in an array of exactly two elements, r followed by s.
+
+
+ Encode the (r, s) pair of a DSA signature.
+ The order of the group that r, s belong to.
+ The r value of a DSA signature.
+ The s value of a DSA signature.
+ An encoding of the DSA signature given by the provided (r, s) pair.
+
+
+ Interface define calculators of K values for DSA/ECDSA.
+
+
+ Return true if this calculator is deterministic, false otherwise.
+
+ @return true if deterministic, otherwise false.
+
+
+ Non-deterministic initialiser.
+
+ @param n the order of the DSA group.
+ @param random a source of randomness.
+
+
+ Deterministic initialiser.
+
+ @param n the order of the DSA group.
+ @param d the DSA private value.
+ @param message the message being signed.
+
+
+ Return the next valid value of K.
+
+ @return a K value.
+
+
+ ISO9796-2 - mechanism using a hash function with recovery (scheme 2 and 3).
+
+ Note: the usual length for the salt is the length of the hash
+ function used in bytes.
+
+
+
+
+ Return a reference to the recoveredMessage message.
+
+ The full/partial recoveredMessage message.
+
+
+
+
+ Generate a signer with either implicit or explicit trailers for ISO9796-2, scheme 2 or 3.
+
+ base cipher to use for signature creation/verification
+ digest to use.
+ length of salt in bytes.
+ whether or not the trailer is implicit or gives the hash.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+
+ cipher to use.
+
+ digest to sign with.
+
+ length of salt in bytes.
+
+
+
+ Initialise the signer.
+ true if for signing, false if for verification.
+ parameters for signature generation/verification. If the
+ parameters are for generation they should be a ParametersWithRandom,
+ a ParametersWithSalt, or just an RsaKeyParameters object. If RsaKeyParameters
+ are passed in a SecureRandom will be created.
+
+ if wrong parameter type or a fixed
+ salt is passed in which is the wrong length.
+
+
+
+ compare two byte arrays - constant time.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ Generate a signature for the loaded message using the key we were
+ initialised with.
+
+
+
+ return true if the signature represents a ISO9796-2 signature
+ for the passed in message.
+
+
+
+ reset the internal state
+
+
+
+ Return true if the full message was recoveredMessage.
+
+ true on full message recovery, false otherwise, or if not sure.
+
+
+
+ int to octet string.
+ int to octet string.
+
+
+ long to octet string.
+
+
+ mask generator function, as described in Pkcs1v2.
+
+
+ ISO9796-2 - mechanism using a hash function with recovery (scheme 1)
+
+
+
+ Return a reference to the recoveredMessage message.
+
+ The full/partial recoveredMessage message.
+
+
+
+
+ Generate a signer with either implicit or explicit trailers for ISO9796-2.
+
+ base cipher to use for signature creation/verification
+ digest to use.
+ whether or not the trailer is implicit or gives the hash.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+
+ cipher to use.
+
+ digest to sign with.
+
+
+
+ compare two byte arrays - constant time.
+
+
+ clear possible sensitive data
+
+
+ Generate a signature for the loaded message using the key we were
+ initialised with.
+
+
+
+ return true if the signature represents a ISO9796-2 signature
+ for the passed in message.
+
+
+
+ reset the internal state
+
+
+
+ Return true if the full message was recoveredMessage.
+
+ true on full message recovery, false otherwise.
+
+
+
+ RSA-PSS as described in Pkcs# 1 v 2.1.
+
+ Note: the usual value for the salt length is the number of
+ bytes in the hash function.
+
+
+
+ Basic constructor
+ the asymmetric cipher to use.
+ the digest to use.
+ the length of the salt to use (in bytes).
+
+
+ Basic constructor
+ the asymmetric cipher to use.
+ the digest to use.
+ the fixed salt to be used.
+
+
+ clear possible sensitive data
+
+
+ int to octet string.
+
+
+ mask generator function, as described in Pkcs1v2.
+
+
+
+ Load oid table.
+
+
+
+ Initialise the signer for signing or verification.
+
+ @param forSigning true if for signing, false otherwise
+ @param param necessary parameters.
+
+
+ The SM2 Digital Signature algorithm.
+
+
+ X9.31-1998 - signing using a hash.
+
+ The message digest hash, H, is encapsulated to form a byte string as follows
+
+
+ EB = 06 || PS || 0xBA || H || TRAILER
+
+ where PS is a string of bytes all of value 0xBB of length such that |EB|=|n|, and TRAILER is the ISO/IEC 10118 part number†for the digest. The byte string, EB, is converted to an integer value, the message representative, f.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+ @param cipher cipher to use.
+ @param digest digest to sign with.
+
+
+ Generate a signer with either implicit or explicit trailers for X9.31.
+
+ @param cipher base cipher to use for signature creation/verification
+ @param digest digest to use.
+ @param implicit whether or not the trailer is implicit or gives the hash.
+
+
+
+ A simple block result object which just carries a byte array.
+
+
+
+
+ Base constructor - a wrapper for the passed in byte array.
+
+ The byte array to be wrapped.
+
+
+
+ Return the final result of the operation.
+
+ A block of bytes, representing the result of an operation.
+
+
+
+ Store the final result of the operation by copying it into the destination array.
+
+ The number of bytes copied into destination.
+ The byte array to copy the result into.
+ The offset into destination to start copying the result at.
+
+
+ a wrapper for block ciphers with a single byte block size, so that they
+ can be treated like stream ciphers.
+
+
+ basic constructor.
+
+ @param cipher the block cipher to be wrapped.
+ @exception ArgumentException if the cipher has a block size other than
+ one.
+
+
+ initialise the underlying cipher.
+
+ @param forEncryption true if we are setting up for encryption, false otherwise.
+ @param param the necessary parameters for the underlying cipher to be initialised.
+
+
+ return the name of the algorithm we are wrapping.
+
+ @return the name of the algorithm we are wrapping.
+
+
+ encrypt/decrypt a single byte returning the result.
+
+ @param in the byte to be processed.
+ @return the result of processing the input byte.
+
+
+ process a block of bytes from in putting the result into out.
+
+ @param in the input byte array.
+ @param inOff the offset into the in array where the data to be processed starts.
+ @param len the number of bytes to be processed.
+ @param out the output buffer the processed bytes go into.
+ @param outOff the offset into the output byte array the processed data stars at.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ reset the underlying cipher. This leaves it in the same state
+ it was at after the last init (if there was one).
+
+
+ Check the argument is a valid encoding with type 2 of a plaintext with the given length. Returns 0 if
+ valid, or -1 if invalid.
+
+
+ Create an AlgorithmIdentifier for the passed in encryption algorithm.
+
+ @param encryptionOID OID for the encryption algorithm
+ @param keySize key size in bits (-1 if unknown)
+ @param random SecureRandom to use for parameter generation.
+ @return a full AlgorithmIdentifier including parameters
+ @throws IllegalArgumentException if encryptionOID cannot be matched
+
+
+ A basic alphabet mapper that just creates a mapper based on the
+ passed in array of characters.
+
+
+ Base constructor.
+
+ @param alphabet a string of characters making up the alphabet.
+
+
+ Base constructor.
+
+ @param alphabet an array of characters making up the alphabet.
+
+
+ Create a key generator for the passed in Object Identifier.
+
+ @param algorithm the Object Identifier indicating the algorithn the generator is for.
+ @param random a source of random to initialise the generator with.
+ @return an initialised CipherKeyGenerator.
+ @throws IllegalArgumentException if the algorithm cannot be identified.
+
+
+ Builder and holder class for preparing SP 800-56A compliant OtherInfo. The data is ultimately encoded as a DER SEQUENCE.
+ Empty octet strings are used to represent nulls in compulsory fields.
+
+
+ Builder to create OtherInfo
+
+
+ Create a basic builder with just the compulsory fields.
+
+ @param algorithmID the algorithm associated with this invocation of the KDF.
+ @param partyUInfo sender party info.
+ @param partyVInfo receiver party info.
+
+
+ Add optional supplementary public info (DER tagged, implicit, 0).
+
+ @param suppPubInfo supplementary public info.
+ @return the current builder instance.
+
+
+ Add optional supplementary private info (DER tagged, implicit, 1).
+
+ @param suppPrivInfo supplementary private info.
+ @return the current builder instance.
+
+
+ Build the KTSOtherInfo.
+
+ @return an KTSOtherInfo containing the data.
+
+
+ Magic value for proprietary OpenSSH private key.
+ C string so null terminated.
+
+
+ Encode a cipher parameters into an OpenSSH private key.
+ This does not add headers like ----BEGIN RSA PRIVATE KEY----
+
+ @param parameters the cipher parameters.
+ @return a byte array
+
+
+ Parse a private key.
+
+ This method accepts the body of the OpenSSH private key.
+ The easiest way to extract the body is to use PemReader, for example:
+
+ byte[] blob = new PemReader([reader]).readPemObject().getContent();
+ CipherParameters params = parsePrivateKeyBlob(blob);
+
+ @param blob The key.
+ @return A cipher parameters instance.
+
+
+ allIntegers returns true if the sequence holds only DerInteger types.
+
+
+
+ Parse a public key.
+
+ This method accepts the bytes that are Base64 encoded in an OpenSSH public key file.
+
+ @param encoded The key.
+ @return An AsymmetricKeyParameter instance.
+
+
+ Encode a public key from an AsymmetricKeyParameter instance.
+
+ @param cipherParameters The key to encode.
+ @return the key OpenSSH encoded.
+ @throws IOException
+
+
+ Parse a public key from an SSHBuffer instance.
+
+ @param buffer containing the SSH public key.
+ @return A CipherParameters instance.
+
+
+ Look up the for the curve with the given name.
+ The name of the curve.
+
+
+ Look up an for the curve with the given name.
+
+ Allows accessing the curve without necessarily triggering the creation of
+ the full .
+
+ The name of the curve.
+
+
+ Look up the for the curve with the given
+ OID.
+ The OID for the curve.
+
+
+ Look up an for the curve with the given
+ OID.
+
+ Allows accessing the curve without necessarily triggering the creation of
+ the full .
+
+ The OID for the curve.
+
+
+ Look up the name of the curve with the given OID.
+ The OID for the curve.
+
+
+ Look up the OID of the curve with the given name.
+ The name of the curve.
+
+
+ Enumerate the available curve names in this registry.
+
+
+ Use KeyTransRecipientInfoGenerator
+
+
+
+ Base interface for a finder of digest algorithm identifiers used with signatures.
+
+
+
+
+ Find the digest algorithm identifier that matches with the passed in signature algorithm identifier.
+
+ the signature algorithm of interest.
+ an algorithm identifier for the corresponding digest.
+
+
+
+ Find the digest algorithm identifier that matches with the passed in digest name.
+
+ the OID of the digest algorithm of interest.
+ an algorithm identifier for the digest signature.
+
+
+
+ Find the digest algorithm identifier that matches with the passed in digest name.
+
+ the name of the digest algorithm of interest.
+ an algorithm identifier for the digest signature.
+
+
+ return a = a + b - b preserved.
+
+
+ unsigned comparison on two arrays - note the arrays may
+ start with leading zeros.
+
+
+ return z = x / y - done in place (z value preserved, x contains the
+ remainder)
+
+
+ return whether or not a BigInteger is probably prime with a
+ probability of 1 - (1/2)**certainty.
+ From Knuth Vol 2, pg 395.
+
+
+ Calculate the numbers u1, u2, and u3 such that:
+
+ u1 * a + u2 * b = u3
+
+ where u3 is the greatest common divider of a and b.
+ a and b using the extended Euclid algorithm (refer p. 323
+ of The Art of Computer Programming vol 2, 2nd ed).
+ This also seems to have the side effect of calculating
+ some form of multiplicative inverse.
+
+ @param a First number to calculate gcd for
+ @param b Second number to calculate gcd for
+ @param u1Out the return object for the u1 value
+ @return The greatest common divisor of a and b
+
+
+ return w with w = x * x - w is assumed to have enough space.
+
+
+ return x with x = y * z - x is assumed to have enough space.
+
+
+ Calculate mQuote = -m^(-1) mod b with b = 2^32 (32 = word size)
+
+
+ Montgomery multiplication: a = x * y * R^(-1) mod m
+
+ Based algorithm 14.36 of Handbook of Applied Cryptography.
+
+ m, x, y should have length n
+ a should have length (n + 1)
+ b = 2^32, R = b^n
+
+ The result is put in x
+
+ NOTE: the indices of x, y, m, a different in HAC and in Java
+
+
+ return x = x % y - done in place (y value preserved)
+
+
+ do a left shift - this returns a new array.
+
+
+ do a right shift - this does it in place.
+
+
+ do a right shift by one - this does it in place.
+
+
+ returns x = x - y - we assume x is >= y
+
+
+ Class representing a simple version of a big decimal. A
+ SimpleBigDecimal is basically a
+ {@link java.math.BigInteger BigInteger} with a few digits on the right of
+ the decimal point. The number of (binary) digits on the right of the decimal
+ point is called the scale of the SimpleBigDecimal.
+ Unlike in {@link java.math.BigDecimal BigDecimal}, the scale is not adjusted
+ automatically, but must be set manually. All SimpleBigDecimals
+ taking part in the same arithmetic operation must have equal scale. The
+ result of a multiplication of two SimpleBigDecimals returns a
+ SimpleBigDecimal with double scale.
+
+
+ Returns a SimpleBigDecimal representing the same numerical
+ value as value.
+ @param value The value of the SimpleBigDecimal to be
+ created.
+ @param scale The scale of the SimpleBigDecimal to be
+ created.
+ @return The such created SimpleBigDecimal.
+
+
+ Constructor for SimpleBigDecimal. The value of the
+ constructed SimpleBigDecimal Equals bigInt /
+ 2scale.
+ @param bigInt The bigInt value parameter.
+ @param scale The scale of the constructed SimpleBigDecimal.
+
+
+ Class holding methods for point multiplication based on the window
+ τ-adic nonadjacent form (WTNAF). The algorithms are based on the
+ paper "Improved Algorithms for Arithmetic on Anomalous Binary Curves"
+ by Jerome A. Solinas. The paper first appeared in the Proceedings of
+ Crypto 1997.
+
+
+ The window width of WTNAF. The standard value of 4 is slightly less
+ than optimal for running time, but keeps space requirements for
+ precomputation low. For typical curves, a value of 5 or 6 results in
+ a better running time. When changing this value, the
+ αu's must be computed differently, see
+ e.g. "Guide to Elliptic Curve Cryptography", Darrel Hankerson,
+ Alfred Menezes, Scott Vanstone, Springer-Verlag New York Inc., 2004,
+ p. 121-122
+
+
+ The αu's for a=0 as an array
+ of ZTauElements.
+
+
+ The αu's for a=0 as an array
+ of TNAFs.
+
+
+ The αu's for a=1 as an array
+ of ZTauElements.
+
+
+ The αu's for a=1 as an array
+ of TNAFs.
+
+
+ Computes the norm of an element λ of
+ Z[τ].
+ @param mu The parameter μ of the elliptic curve.
+ @param lambda The element λ of
+ Z[τ].
+ @return The norm of λ.
+
+
+ Computes the norm of an element λ of
+ R[τ], where λ = u + vτ
+ and u and u are real numbers (elements of
+ R).
+ @param mu The parameter μ of the elliptic curve.
+ @param u The real part of the element λ of
+ R[τ].
+ @param v The τ-adic part of the element
+ λ of R[τ].
+ @return The norm of λ.
+
+
+ Rounds an element λ of R[τ]
+ to an element of Z[τ], such that their difference
+ has minimal norm. λ is given as
+ λ = λ0 + λ1τ.
+ @param lambda0 The component λ0.
+ @param lambda1 The component λ1.
+ @param mu The parameter μ of the elliptic curve. Must
+ equal 1 or -1.
+ @return The rounded element of Z[τ].
+ @throws ArgumentException if lambda0 and
+ lambda1 do not have same scale.
+
+
+ Approximate division by n. For an integer
+ k, the value λ = s k / n is
+ computed to c bits of accuracy.
+ @param k The parameter k.
+ @param s The curve parameter s0 or
+ s1.
+ @param vm The Lucas Sequence element Vm.
+ @param a The parameter a of the elliptic curve.
+ @param m The bit length of the finite field
+ Fm.
+ @param c The number of bits of accuracy, i.e. the scale of the returned
+ SimpleBigDecimal.
+ @return The value λ = s k / n computed to
+ c bits of accuracy.
+
+
+ Computes the τ-adic NAF (non-adjacent form) of an
+ element λ of Z[τ].
+ @param mu The parameter μ of the elliptic curve.
+ @param lambda The element λ of
+ Z[τ].
+ @return The τ-adic NAF of λ.
+
+
+ Applies the operation τ() to an
+ AbstractF2mPoint.
+ @param p The AbstractF2mPoint to which τ() is applied.
+ @return τ(p)
+
+
+ Returns the parameter μ of the elliptic curve.
+ @param curve The elliptic curve from which to obtain μ.
+ The curve must be a Koblitz curve, i.e. a Equals
+ 0 or 1 and b Equals
+ 1.
+ @return μ of the elliptic curve.
+ @throws ArgumentException if the given ECCurve is not a Koblitz
+ curve.
+
+
+ Calculates the Lucas Sequence elements Uk-1 and
+ Uk or Vk-1 and
+ Vk.
+ @param mu The parameter μ of the elliptic curve.
+ @param k The index of the second element of the Lucas Sequence to be
+ returned.
+ @param doV If set to true, computes Vk-1 and
+ Vk, otherwise Uk-1 and
+ Uk.
+ @return An array with 2 elements, containing Uk-1
+ and Uk or Vk-1
+ and Vk.
+
+
+ Computes the auxiliary value tw. If the width is
+ 4, then for mu = 1, tw = 6 and for
+ mu = -1, tw = 10
+ @param mu The parameter μ of the elliptic curve.
+ @param w The window width of the WTNAF.
+ @return the auxiliary value tw
+
+
+ Computes the auxiliary values s0 and
+ s1 used for partial modular reduction.
+ @param curve The elliptic curve for which to compute
+ s0 and s1.
+ @throws ArgumentException if curve is not a
+ Koblitz curve (Anomalous Binary Curve, ABC).
+
+
+ Partial modular reduction modulo
+ (τm - 1)/(τ - 1).
+ @param k The integer to be reduced.
+ @param m The bitlength of the underlying finite field.
+ @param a The parameter a of the elliptic curve.
+ @param s The auxiliary values s0 and
+ s1.
+ @param mu The parameter μ of the elliptic curve.
+ @param c The precision (number of bits of accuracy) of the partial
+ modular reduction.
+ @return ρ := k partmod (τm - 1)/(τ - 1)
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by a BigInteger using the reduced τ-adic
+ NAF (RTNAF) method.
+ @param p The AbstractF2mPoint to Multiply.
+ @param k The BigInteger by which to Multiply p.
+ @return k * p
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ of Z[τ]
+ using the τ-adic NAF (TNAF) method.
+ @param p The AbstractF2mPoint to Multiply.
+ @param lambda The element λ of
+ Z[τ].
+ @return λ * p
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ of Z[τ]
+ using the τ-adic NAF (TNAF) method, given the TNAF
+ of λ.
+ @param p The AbstractF2mPoint to Multiply.
+ @param u The the TNAF of λ..
+ @return λ * p
+
+
+ Computes the [τ]-adic window NAF of an element
+ λ of Z[τ].
+ @param mu The parameter μ of the elliptic curve.
+ @param lambda The element λ of
+ Z[τ] of which to compute the
+ [τ]-adic NAF.
+ @param width The window width of the resulting WNAF.
+ @param pow2w 2width.
+ @param tw The auxiliary value tw.
+ @param alpha The αu's for the window width.
+ @return The [τ]-adic window NAF of
+ λ.
+
+
+ Does the precomputation for WTNAF multiplication.
+ @param p The ECPoint for which to do the precomputation.
+ @param a The parameter a of the elliptic curve.
+ @return The precomputation array for p.
+
+
+ Class representing an element of Z[τ]. Let
+ λ be an element of Z[τ]. Then
+ λ is given as λ = u + vτ. The
+ components u and v may be used directly, there
+ are no accessor methods.
+ Immutable class.
+
+
+ The "real" part of λ.
+
+
+ The "τ-adic" part of λ.
+
+
+ Constructor for an element λ of
+ Z[τ].
+ @param u The "real" part of λ.
+ @param v The "τ-adic" part of
+ λ.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ Simple shift-and-add multiplication. Serves as reference implementation to verify (possibly
+ faster) implementations, and for very small scalars. CAUTION: This implementation is NOT
+ constant-time in any way. It is only intended to be used for diagnostics.
+
+ @param p
+ The point to multiply.
+ @param k
+ The multiplier.
+ @return The result of the point multiplication kP.
+
+
+ Base class for an elliptic curve.
+
+
+ Compute a PreCompInfo for a point on this curve, under a given name. Used by
+ ECMultipliers to save the precomputation for this ECPoint for use
+ by subsequent multiplication.
+
+ @param point
+ The ECPoint to store precomputations for.
+ @param name
+ A String used to index precomputations of different types.
+ @param callback
+ Called to calculate the PreCompInfo.
+
+
+ Normalization ensures that any projective coordinate is 1, and therefore that the x, y
+ coordinates reflect those of the equivalent point in an affine coordinate system. Where more
+ than one point is to be normalized, this method will generally be more efficient than
+ normalizing each point separately.
+
+ @param points
+ An array of points that will be updated in place with their normalized versions,
+ where necessary
+
+
+ Normalization ensures that any projective coordinate is 1, and therefore that the x, y
+ coordinates reflect those of the equivalent point in an affine coordinate system. Where more
+ than one point is to be normalized, this method will generally be more efficient than
+ normalizing each point separately. An (optional) z-scaling factor can be applied; effectively
+ each z coordinate is scaled by this value prior to normalization (but only one
+ actual multiplication is needed).
+
+ @param points
+ An array of points that will be updated in place with their normalized versions,
+ where necessary
+ @param off
+ The start of the range of points to normalize
+ @param len
+ The length of the range of points to normalize
+ @param iso
+ The (optional) z-scaling factor - can be null
+
+
+ Create a cache-safe lookup table for the specified sequence of points. All the points MUST
+ belong to this ECCurve instance, and MUST already be normalized.
+
+
+ Sets the default ECMultiplier, unless already set.
+
+ We avoid locking for performance reasons, so there is no uniqueness guarantee.
+
+
+ Decode a point on this curve from its ASN.1 encoding. The different
+ encodings are taken account of, including point compression for
+ Fp (X9.62 s 4.2.1 pg 17).
+ @return The decoded point.
+
+
+ Elliptic curve over Fp
+
+
+ Solves a quadratic equation z2 + z = beta(X9.62
+ D.1.6) The other solution is z + 1.
+
+ @param beta
+ The value to solve the quadratic equation for.
+ @return the solution for z2 + z = beta or
+ null if no solution exists.
+
+
+ Returns true if this is a Koblitz curve (ABC curve).
+ @return true if this is a Koblitz curve (ABC curve), false otherwise
+
+
+ Elliptic curves over F2m. The Weierstrass equation is given by
+ y2 + xy = x3 + ax2 + b.
+
+
+ The exponent m of F2m.
+
+
+ TPB: The integer k where xm +
+ xk + 1 represents the reduction polynomial
+ f(z).
+ PPB: The integer k1 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+
+
+ TPB: Always set to 0
+ PPB: The integer k2 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+
+
+ TPB: Always set to 0
+ PPB: The integer k3 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+
+
+ The point at infinity on this curve.
+
+
+ Constructor for Trinomial Polynomial Basis (TPB).
+ @param m The exponent m of
+ F2m.
+ @param k The integer k where xm +
+ xk + 1 represents the reduction
+ polynomial f(z).
+ @param a The coefficient a in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m.
+ @param b The coefficient b in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m.
+
+
+ Constructor for Trinomial Polynomial Basis (TPB).
+ @param m The exponent m of
+ F2m.
+ @param k The integer k where xm +
+ xk + 1 represents the reduction
+ polynomial f(z).
+ @param a The coefficient a in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m.
+ @param b The coefficient b in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m.
+ @param order The order of the main subgroup of the elliptic curve.
+ @param cofactor The cofactor of the elliptic curve, i.e.
+ #Ea(F2m) = h * n.
+
+
+ Constructor for Pentanomial Polynomial Basis (PPB).
+ @param m The exponent m of
+ F2m.
+ @param k1 The integer k1 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+ @param k2 The integer k2 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+ @param k3 The integer k3 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+ @param a The coefficient a in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m.
+ @param b The coefficient b in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m.
+
+
+ Constructor for Pentanomial Polynomial Basis (PPB).
+ @param m The exponent m of
+ F2m.
+ @param k1 The integer k1 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+ @param k2 The integer k2 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+ @param k3 The integer k3 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+ @param a The coefficient a in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m.
+ @param b The coefficient b in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m.
+ @param order The order of the main subgroup of the elliptic curve.
+ @param cofactor The cofactor of the elliptic curve, i.e.
+ #Ea(F2m) = h * n.
+
+
+ Return true if curve uses a Trinomial basis.
+
+ @return true if curve Trinomial, false otherwise.
+
+
+ return the field name for this field.
+
+ @return the string "Fp".
+
+
+ return a sqrt root - the routine verifies that the calculation
+ returns the right value - if none exists it returns null.
+
+
+ Class representing the Elements of the finite field
+ F2m in polynomial basis (PB)
+ representation. Both trinomial (Tpb) and pentanomial (Ppb) polynomial
+ basis representations are supported. Gaussian normal basis (GNB)
+ representation is not supported.
+
+
+ Indicates gaussian normal basis representation (GNB). Number chosen
+ according to X9.62. GNB is not implemented at present.
+
+
+ Indicates trinomial basis representation (Tpb). Number chosen
+ according to X9.62.
+
+
+ Indicates pentanomial basis representation (Ppb). Number chosen
+ according to X9.62.
+
+
+ Tpb or Ppb.
+
+
+ The exponent m of F2m.
+
+
+ The LongArray holding the bits.
+
+
+ Checks, if the ECFieldElements a and b
+ are elements of the same field F2m
+ (having the same representation).
+ @param a field element.
+ @param b field element to be compared.
+ @throws ArgumentException if a and b
+ are not elements of the same field
+ F2m (having the same
+ representation).
+
+
+ @return the representation of the field
+ F2m, either of
+ {@link F2mFieldElement.Tpb} (trinomial
+ basis representation) or
+ {@link F2mFieldElement.Ppb} (pentanomial
+ basis representation).
+
+
+ @return the degree m of the reduction polynomial
+ f(z).
+
+
+ @return Tpb: The integer k where xm +
+ xk + 1 represents the reduction polynomial
+ f(z).
+ Ppb: The integer k1 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+
+
+ @return Tpb: Always returns 0
+ Ppb: The integer k2 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+
+
+ @return Tpb: Always set to 0
+ Ppb: The integer k3 where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z).
+
+
+ base class for points on elliptic curves.
+
+
+ Returns the affine x-coordinate after checking that this point is normalized.
+
+ @return The affine x-coordinate of this point
+ @throws IllegalStateException if the point is not normalized
+
+
+ Returns the affine y-coordinate after checking that this point is normalized
+
+ @return The affine y-coordinate of this point
+ @throws IllegalStateException if the point is not normalized
+
+
+ Returns the x-coordinate.
+
+ Caution: depending on the curve's coordinate system, this may not be the same value as in an
+ affine coordinate system; use Normalize() to get a point where the coordinates have their
+ affine values, or use AffineXCoord if you expect the point to already have been normalized.
+
+ @return the x-coordinate of this point
+
+
+ Returns the y-coordinate.
+
+ Caution: depending on the curve's coordinate system, this may not be the same value as in an
+ affine coordinate system; use Normalize() to get a point where the coordinates have their
+ affine values, or use AffineYCoord if you expect the point to already have been normalized.
+
+ @return the y-coordinate of this point
+
+
+ Normalization ensures that any projective coordinate is 1, and therefore that the x, y
+ coordinates reflect those of the equivalent point in an affine coordinate system.
+
+ @return a new ECPoint instance representing the same point, but with normalized coordinates
+
+
+ return the field element encoded with point compression. (S 4.3.6)
+
+
+ Multiplies this ECPoint by the given number.
+ @param k The multiplicator.
+ @return k * this.
+
+
+ Elliptic curve points over Fp
+
+
+ Elliptic curve points over F2m
+
+
+ Interface for classes encapsulating a point multiplication algorithm
+ for ECPoints.
+
+
+ Multiplies the ECPoint p by k, i.e.
+ p is added k times to itself.
+ @param p The ECPoint to be multiplied.
+ @param k The factor by which p is multiplied.
+ @return p multiplied by k.
+
+
+ Class holding precomputation data for fixed-point multiplications.
+
+
+ Lookup table for the precomputed ECPoints used for a fixed point multiplication.
+
+
+ The width used for the precomputation. If a larger width precomputation
+ is already available this may be larger than was requested, so calling
+ code should refer to the actual width.
+
+
+ Interface for classes storing precomputation data for multiplication
+ algorithms. Used as a Memento (see GOF patterns) for
+ WNafMultiplier.
+
+
+ Class implementing the WNAF (Window Non-Adjacent Form) multiplication
+ algorithm.
+
+
+ Multiplies this by an integer k using the
+ Window NAF method.
+ @param k The integer by which this is multiplied.
+ @return A new ECPoint which equals this
+ multiplied by k.
+
+
+ Class holding precomputation data for the WNAF (Window Non-Adjacent Form)
+ algorithm.
+
+
+ Array holding the precomputed ECPoints used for a Window
+ NAF multiplication.
+
+
+ Array holding the negations of the precomputed ECPoints used
+ for a Window NAF multiplication.
+
+
+ Holds an ECPoint representing Twice(this). Used for the
+ Window NAF multiplication to create or extend the precomputed values.
+
+
+ Computes the Window NAF (non-adjacent Form) of an integer.
+ @param width The width w of the Window NAF. The width is
+ defined as the minimal number w, such that for any
+ w consecutive digits in the resulting representation, at
+ most one is non-zero.
+ @param k The integer of which the Window NAF is computed.
+ @return The Window NAF of the given width, such that the following holds:
+ k = ∑i=0l-1 ki2i
+ , where the ki denote the elements of the
+ returned byte[].
+
+
+ Determine window width to use for a scalar multiplication of the given size.
+
+ @param bits the bit-length of the scalar to multiply by
+ @return the window size to use
+
+
+ Determine window width to use for a scalar multiplication of the given size.
+
+ @param bits the bit-length of the scalar to multiply by
+ @param maxWidth the maximum window width to return
+ @return the window size to use
+
+
+ Determine window width to use for a scalar multiplication of the given size.
+
+ @param bits the bit-length of the scalar to multiply by
+ @param windowSizeCutoffs a monotonically increasing list of bit sizes at which to increment the window width
+ @return the window size to use
+
+
+ Determine window width to use for a scalar multiplication of the given size.
+
+ @param bits the bit-length of the scalar to multiply by
+ @param windowSizeCutoffs a monotonically increasing list of bit sizes at which to increment the window width
+ @param maxWidth the maximum window width to return
+ @return the window size to use
+
+
+ Class implementing the WTNAF (Window
+ τ-adic Non-Adjacent Form) algorithm.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by k using the reduced τ-adic NAF (RTNAF)
+ method.
+ @param p The AbstractF2mPoint to multiply.
+ @param k The integer by which to multiply k.
+ @return p multiplied by k.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ of Z[τ] using
+ the τ-adic NAF (TNAF) method.
+ @param p The AbstractF2mPoint to multiply.
+ @param lambda The element λ of
+ Z[τ] of which to compute the
+ [τ]-adic NAF.
+ @return p multiplied by λ.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ of Z[τ]
+ using the window τ-adic NAF (TNAF) method, given the
+ WTNAF of λ.
+ @param p The AbstractF2mPoint to multiply.
+ @param u The the WTNAF of λ..
+ @return λ * p
+
+
+ Class holding precomputation data for the WTNAF (Window
+ τ-adic Non-Adjacent Form) algorithm.
+
+
+ Array holding the precomputed AbstractF2mPoints used for the
+ WTNAF multiplication in
+ {@link org.bouncycastle.math.ec.multiplier.WTauNafMultiplier.multiply()
+ WTauNafMultiplier.multiply()}.
+
+
+
+ A low-level implementation of the Ed25519, Ed25519ctx, and Ed25519ph instantiations of the Edwards-Curve Digital
+ Signature Algorithm specified in RFC 8032.
+
+
+ The implementation strategy is mostly drawn from
+ Mike Hamburg, "Fast and compact elliptic-curve cryptography", notably the "signed multi-comb" algorithm (for
+ scalar multiplication by a fixed point), the "half Niels coordinates" (for precomputed points), and the
+ "extensible coordinates" (for accumulators). Standard
+ extended coordinates are used during
+ precomputations, needing only a single extra point addition formula.
+
+
+
+
+ A low-level implementation of the Ed448 and Ed448ph instantiations of the Edwards-Curve Digital Signature
+ Algorithm specified in RFC 8032.
+
+
+ The implementation uses the "signed mult-comb" algorithm (for scalar multiplication by a fixed point) from
+ Mike Hamburg, "Fast and compact elliptic-curve cryptography". Standard
+ projective coordinates are used
+ for most point arithmetic.
+
+
+
+ Utility methods for generating primes and testing for primality.
+
+
+ Used to return the output from the
+
+ Enhanced Miller-Rabin Probabilistic Primality Test
+
+
+ Used to return the output from the
+ Shawe-Taylor Random_Prime Routine
+
+
+ FIPS 186-4 C.6 Shawe-Taylor Random_Prime Routine.
+ Construct a provable prime number using a hash function.
+ The instance to use (as "Hash()"). Cannot be null.
+ The length (in bits) of the prime to be generated. Must be at least 2.
+ The seed to be used for the generation of the requested prime. Cannot be null or
+ empty.
+ An instance containing the requested prime.
+
+
+ FIPS 186-4 C.3.2 Enhanced Miller-Rabin Probabilistic Primality Test.
+
+ Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases. This is an alternative to
+ that provides more information about a
+ composite candidate, which may be useful when generating or validating RSA moduli.
+
+ The instance to test for primality.
+ The source of randomness to use to choose bases.
+ The number of randomly-chosen bases to perform the test for.
+ An instance that can be further queried for details.
+
+
+ A fast check for small divisors, up to some implementation-specific limit.
+ The instance to test for division by small factors.
+ true if the candidate is found to have any small factors, false otherwise.
+
+
+ FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test.
+ Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases.
+ The instance to test for primality.
+ The source of randomness to use to choose bases.
+ The number of randomly-chosen bases to perform the test for.
+
+ false if any witness to compositeness is found amongst the chosen bases (so
+ is definitely NOT prime), or else true (indicating primality with some
+ probability dependent on the number of iterations that were performed).
+
+
+
+ FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test (to a fixed base).
+ Run a single iteration of the Miller-Rabin algorithm against the specified base.
+ The instance to test for primality.
+ The base value to use for this iteration.
+ false if is a witness to compositeness (so
+ is definitely NOT prime), or else true.
+
+
+
+ Modular inversion as implemented in this class is based on the paper "Fast constant-time gcd computation and
+ modular inversion" by Daniel J. Bernstein and Bo-Yin Yang.
+
+
+ In some cases (when it is faster) we use the "half delta" variant of safegcd based on
+ hddivsteps.
+
+
+
+
+
+ BasicOcspResponse ::= SEQUENCE {
+ tbsResponseData ResponseData,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL
+ }
+
+
+
+
+ The DER encoding of the tbsResponseData field.
+ In the event of an encoding error.
+
+
+ The certificates, if any, associated with the response.
+ In the event of an encoding error.
+
+
+
+ Verify the signature against the tbsResponseData object we contain.
+
+
+
+ The ASN.1 encoded representation of this object.
+
+
+ Generator for basic OCSP response objects.
+
+
+ basic constructor
+
+
+ construct with the responderID to be the SHA-1 keyHash of the passed in public key.
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param certStatus status of the certificate - null if okay
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param nextUpdate date when next update should be requested
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param thisUpdate date this response was valid on
+ @param nextUpdate date when next update should be requested
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Set the extensions for the response.
+
+ @param responseExtensions the extension object to carry.
+
+
+
+ Generate the signed response using the passed in signature calculator.
+
+ Implementation of signing calculator factory.
+ The certificate chain associated with the response signer.
+ "produced at" date.
+
+
+
+ Return an IEnumerable of the signature names supported by the generator.
+
+ @return an IEnumerable containing recognised names.
+
+
+ create from an issuer certificate and the serial number of the
+ certificate it signed.
+ @exception OcspException if any problems occur creating the id fields.
+
+
+ return the serial number for the certificate associated
+ with this request.
+
+
+ Create a new CertificateID for a new serial number derived from a previous one
+ calculated for the same CA certificate.
+
+ @param original the previously calculated CertificateID for the CA.
+ @param newSerialNumber the serial number for the new certificate of interest.
+
+ @return a new CertificateID for newSerialNumber
+
+
+
+ OcspRequest ::= SEQUENCE {
+ tbsRequest TBSRequest,
+ optionalSignature [0] EXPLICIT Signature OPTIONAL }
+
+ TBSRequest ::= SEQUENCE {
+ version [0] EXPLICIT Version DEFAULT v1,
+ requestorName [1] EXPLICIT GeneralName OPTIONAL,
+ requestList SEQUENCE OF Request,
+ requestExtensions [2] EXPLICIT Extensions OPTIONAL }
+
+ Signature ::= SEQUENCE {
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL}
+
+ Version ::= INTEGER { v1(0) }
+
+ Request ::= SEQUENCE {
+ reqCert CertID,
+ singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
+
+ CertID ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ issuerNameHash OCTET STRING, -- Hash of Issuer's DN
+ issuerKeyHash OCTET STRING, -- Hash of Issuers public key
+ serialNumber CertificateSerialNumber }
+
+
+
+ Return the DER encoding of the tbsRequest field.
+ @return DER encoding of tbsRequest
+ @throws OcspException in the event of an encoding error.
+
+
+ return the object identifier representing the signature algorithm
+
+
+ If the request is signed return a possibly empty CertStore containing the certificates in the
+ request. If the request is not signed the method returns null.
+
+ @return null if not signed, a CertStore otherwise
+ @throws OcspException
+
+
+ Return whether or not this request is signed.
+
+ @return true if signed false otherwise.
+
+
+ Verify the signature against the TBSRequest object we contain.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Add a request for the given CertificateID.
+
+ @param certId certificate ID of interest
+
+
+ Add a request with extensions
+
+ @param certId certificate ID of interest
+ @param singleRequestExtensions the extensions to attach to the request
+
+
+ Set the requestor name to the passed in X509Principal
+
+ @param requestorName a X509Principal representing the requestor name.
+
+
+ Generate an unsigned request
+
+ @return the OcspReq
+ @throws OcspException
+
+
+ Return an IEnumerable of the signature names supported by the generator.
+
+ @return an IEnumerable containing recognised names.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ base generator for an OCSP response - at the moment this only supports the
+ generation of responses containing BasicOCSP responses.
+
+
+ note 4 is not used.
+
+
+ Carrier for a ResponderID.
+
+
+ Wrapper for the RevokedInfo object
+
+
+ Return the revocation reason, if there is one.
+ This field is optional; test for it with first.
+ The revocation reason, if available.
+ If no revocation reason is available.
+
+
+ Return the status object for the response - null indicates good.
+
+ @return the status object for the response, null if it is good.
+
+
+ return the NextUpdate value - note: this is an optional field so may
+ be returned as null.
+
+ @return nextUpdate, or null if not present.
+
+
+ wrapper for the UnknownInfo object
+
+
+
+ Utility class for creating IBasicAgreement objects from their names/Oids
+
+
+
+
+ Cipher Utility class contains methods that can not be specifically grouped into other classes.
+
+
+
+
+ Utility class for creating IDigest objects from their names/Oids
+
+
+
+
+ Returns an ObjectIdentifier for a given digest mechanism.
+
+ A string representation of the digest meanism.
+ A DerObjectIdentifier, null if the Oid is not available.
+
+
+
+ A class containing methods to interface the BouncyCastle world to the .NET Crypto world.
+
+
+
+
+ Create an System.Security.Cryptography.X509Certificate from an X509Certificate Structure.
+
+
+ A System.Security.Cryptography.X509Certificate.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WARNING: If is null, no integrity check is performed.
+
+
+
+ Load without any integrity check.
+
+
+
+
+
+
+ JksTrustedCertEntry is a internal container for the certificate entry.
+
+
+
+ Utility class for creating HMac object from their names/Oids
+
+
+
+
+
+
+
+
+
+ Returns a ObjectIdentifier for a give encoding.
+
+ A string representation of the encoding.
+ A DerObjectIdentifier, null if the Oid is not available.
+
+
+
+ Create and auto-seed an instance based on the given algorithm.
+
+ Equivalent to GetInstance(algorithm, true)
+ e.g. "SHA256PRNG"
+
+
+
+ Create an instance based on the given algorithm, with optional auto-seeding
+
+ e.g. "SHA256PRNG"
+ If true, the instance will be auto-seeded.
+
+
+ Use the specified instance of IRandomGenerator as random source.
+
+ This constructor performs no seeding of either the IRandomGenerator or the
+ constructed SecureRandom. It is the responsibility of the client to provide
+ proper seed material as necessary/appropriate for the given IRandomGenerator
+ implementation.
+
+ The source to generate all random bytes from.
+
+
+
+ Signer Utility class contains methods that can not be specifically grouped into other classes.
+
+
+
+
+ Returns an ObjectIdentifier for a given signature mechanism.
+
+ A string representation of the signature mechanism.
+ A DerObjectIdentifier, null if the OID is not available.
+
+
+
+ Utility class for creating IWrapper objects from their names/Oids
+
+
+
+ PEM generator for the original set of PEM objects used in Open SSL.
+
+
+ Class for reading OpenSSL PEM encoded streams containing
+ X509 certificates, PKCS8 encoded keys and PKCS7 objects.
+
+ In the case of PKCS7 objects the reader will return a CMS ContentInfo object. Keys and
+ Certificates will be returned using the appropriate java.security type.
+
+
+ Create a new PemReader
+
+ @param reader the Reader
+
+
+ Create a new PemReader with a password finder
+
+ @param reader the Reader
+ @param pFinder the password finder
+
+
+ Reads in a X509Certificate.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a X509CRL.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a PKCS10 certification request.
+
+ @return the certificate request.
+ @throws IOException if an I/O error occured
+
+
+ Reads in a X509 Attribute Certificate.
+
+ @return the X509 Attribute Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a PKCS7 object. This returns a ContentInfo object suitable for use with the CMS
+ API.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Read a Key Pair
+
+
+ General purpose writer for OpenSSL PEM objects.
+
+
+ The TextWriter object to write the output to.
+
+
+ Constructor for an unencrypted private key PEM object.
+
+ @param key private key to be encoded.
+
+
+ Constructor for an encrypted private key PEM object.
+
+ @param key private key to be encoded
+ @param algorithm encryption algorithm to use
+ @param provider provider to use
+ @throws NoSuchAlgorithmException if algorithm/mode cannot be found
+
+
+
+ A class for verifying and creating Pkcs10 Certification requests.
+
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+ see
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ Name of Sig Alg.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+ Matching Private key for nominated (above) public key to be used to sign the request.
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ The factory for signature calculators to sign the PKCS#10 request with.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+
+
+
+ Get the public key.
+
+ The public key.
+
+
+
+ Verify Pkcs10 Cert Request is valid.
+
+ true = valid.
+
+
+
+ Returns X509Extensions if the Extensions Request attribute can be found and returns the extensions block.
+
+ X509Extensions block or null if one cannot be found.
+
+
+
+ A class for creating and verifying Pkcs10 Certification requests (this is an extension on ).
+ The requests are made using delay signing. This is useful for situations where
+ the private key is in another environment and not directly accessible (e.g. HSM)
+ So the first step creates the request, then the signing is done outside this
+ object and the signature is then used to complete the request.
+
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+ see
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ Name of Sig Alg.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+
+ After the object is constructed use the and finally the
+ SignRequest methods to finalize the request.
+
+
+
+ simply return the cert entry for the private key
+
+
+ Utility class for reencoding PKCS#12 files to definite length.
+
+
+ Just re-encode the outer layer of the PKCS#12 file to definite length encoding.
+
+ @param berPKCS12File - original PKCS#12 file
+ @return a byte array representing the DER encoding of the PFX structure
+ @throws IOException
+
+
+ Re-encode the PKCS#12 structure to definite length encoding at the inner layer
+ as well, recomputing the MAC accordingly.
+
+ @param berPKCS12File - original PKCS12 file.
+ @param provider - provider to use for MAC calculation.
+ @return a byte array representing the DER encoding of the PFX structure.
+ @throws IOException on parsing, encoding errors.
+
+
+
+ A holding class for a PKCS#8 encrypted private key info object that allows for its decryption.
+
+
+
+
+ Base constructor from a PKCS#8 EncryptedPrivateKeyInfo object.
+
+ A PKCS#8 EncryptedPrivateKeyInfo object.
+
+
+
+ Base constructor from a BER encoding of a PKCS#8 EncryptedPrivateKeyInfo object.
+
+ A BER encoding of a PKCS#8 EncryptedPrivateKeyInfo objects.
+
+
+
+ Returns the underlying ASN.1 structure inside this object.
+
+ Return the EncryptedPrivateKeyInfo structure in this object.
+
+
+
+ Returns a copy of the encrypted data in this structure.
+
+ Return a copy of the encrypted data in this object.
+
+
+
+ Return a binary ASN.1 encoding of the EncryptedPrivateKeyInfo structure in this object.
+
+ A byte array containing the encoded object.
+
+
+
+ Get a decryptor from the passed in provider and decrypt the encrypted private key info, returning the result.
+
+ A provider to query for decryptors for the object.
+ The decrypted private key info structure.
+
+
+
+ Create the encrypted private key info using the passed in encryptor.
+
+ The encryptor to use.
+ An encrypted private key info containing the original private key info.
+
+
+ Base exception for PKCS related issues.
+
+
+ Base exception for parsing related issues in the PKCS namespace.
+
+
+ Create a PrivateKeyInfo representation of a private key with attributes.
+
+ @param privateKey the key to be encoded into the info object.
+ @param attributes the set of attributes to be included.
+ @return the appropriate PrivateKeyInfo
+ @throws java.io.IOException on an error encoding the key
+
+
+
+ Returns the revocationDate.
+
+
+
+
+ Returns the certStatus.
+
+
+
+ Returns an immutable Set of X.509 attribute certificate
+ extensions that this PkixAttrCertChecker supports or
+ null if no extensions are supported.
+
+ Each element of the set is a String representing the
+ Object Identifier (OID) of the X.509 extension that is supported.
+
+
+ All X.509 attribute certificate extensions that a
+ PkixAttrCertChecker might possibly be able to process
+ should be included in the set.
+
+
+ @return an immutable Set of X.509 extension OIDs (in
+ String format) supported by this
+ PkixAttrCertChecker, or null if no
+ extensions are supported
+
+
+ Performs checks on the specified attribute certificate. Every handled
+ extension is rmeoved from the unresolvedCritExts
+ collection.
+
+ @param attrCert The attribute certificate to be checked.
+ @param certPath The certificate path which belongs to the attribute
+ certificate issuer public key certificate.
+ @param holderCertPath The certificate path which belongs to the holder
+ certificate.
+ @param unresolvedCritExts a Collection of OID strings
+ representing the current set of unresolved critical extensions
+ @throws CertPathValidatorException if the specified attribute certificate
+ does not pass the check.
+
+
+ Returns a clone of this object.
+
+ @return a copy of this PkixAttrCertChecker
+
+
+ Build and validate a CertPath using the given parameter.
+
+ @param params PKIXBuilderParameters object containing all information to
+ build the CertPath
+
+
+ CertPathValidatorSpi implementation for X.509 Attribute Certificates la RFC 3281.
+
+ @see org.bouncycastle.x509.ExtendedPkixParameters
+
+
+ Validates an attribute certificate with the given certificate path.
+
+
+ params must be an instance of
+ ExtendedPkixParameters.
+
+ The target constraints in the params must be an
+ X509AttrCertStoreSelector with at least the attribute
+ certificate criterion set. Obey that also target informations may be
+ necessary to correctly validate this attribute certificate.
+
+ The attribute certificate issuer must be added to the trusted attribute
+ issuers with {@link ExtendedPkixParameters#setTrustedACIssuers(Set)}.
+
+ @param certPath The certificate path which belongs to the attribute
+ certificate issuer public key certificate.
+ @param params The PKIX parameters.
+ @return A PKIXCertPathValidatorResult of the result of
+ validating the certPath.
+ @throws InvalidAlgorithmParameterException if params is
+ inappropriate for this validator.
+ @throws CertPathValidatorException if the verification fails.
+
+
+
+ Summary description for PkixBuilderParameters.
+
+
+
+ Returns an instance of PkixBuilderParameters.
+
+ This method can be used to get a copy from other
+ PKIXBuilderParameters, PKIXParameters,
+ and ExtendedPKIXParameters instances.
+
+
+ @param pkixParams The PKIX parameters to create a copy of.
+ @return An PkixBuilderParameters instance.
+
+
+
+ Excluded certificates are not used for building a certification path.
+
+ the excluded certificates.
+
+
+
+ Sets the excluded certificates which are not used for building a
+ certification path. If the ISet is null an
+ empty set is assumed.
+
+
+ The given set is cloned to protect it against subsequent modifications.
+
+ The excluded certificates to set.
+
+
+ Can alse handle ExtendedPKIXBuilderParameters and
+ PKIXBuilderParameters.
+
+ @param params Parameters to set.
+ @see org.bouncycastle.x509.ExtendedPKIXParameters#setParams(java.security.cert.PKIXParameters)
+
+
+ Makes a copy of this PKIXParameters object. Changes to the
+ copy will not affect the original and vice versa.
+
+ @return a copy of this PKIXParameters object
+
+
+ An immutable sequence of certificates (a certification path).
+
+ This is an abstract class that defines the methods common to all CertPaths.
+ Subclasses can handle different kinds of certificates (X.509, PGP, etc.).
+
+ All CertPath objects have a type, a list of Certificates, and one or more
+ supported encodings. Because the CertPath class is immutable, a CertPath
+ cannot change in any externally visible way after being constructed. This
+ stipulation applies to all public fields and methods of this class and any
+ added or overridden by subclasses.
+
+ The type is a string that identifies the type of Certificates in the
+ certification path. For each certificate cert in a certification path
+ certPath, cert.getType().equals(certPath.getType()) must be true.
+
+ The list of Certificates is an ordered List of zero or more Certificates.
+ This List and all of the Certificates contained in it must be immutable.
+
+ Each CertPath object must support one or more encodings so that the object
+ can be translated into a byte array for storage or transmission to other
+ parties. Preferably, these encodings should be well-documented standards
+ (such as PKCS#7). One of the encodings supported by a CertPath is considered
+ the default encoding. This encoding is used if no encoding is explicitly
+ requested (for the {@link #getEncoded()} method, for instance).
+
+ All CertPath objects are also Serializable. CertPath objects are resolved
+ into an alternate {@link CertPathRep} object during serialization. This
+ allows a CertPath object to be serialized into an equivalent representation
+ regardless of its underlying implementation.
+
+ CertPath objects can be created with a CertificateFactory or they can be
+ returned by other classes, such as a CertPathBuilder.
+
+ By convention, X.509 CertPaths (consisting of X509Certificates), are ordered
+ starting with the target certificate and ending with a certificate issued by
+ the trust anchor. That is, the issuer of one certificate is the subject of
+ the following one. The certificate representing the
+ {@link TrustAnchor TrustAnchor} should not be included in the certification
+ path. Unvalidated X.509 CertPaths may not follow these conventions. PKIX
+ CertPathValidators will detect any departure from these conventions that
+ cause the certification path to be invalid and throw a
+ CertPathValidatorException.
+
+ Concurrent Access
+
+ All CertPath objects must be thread-safe. That is, multiple threads may
+ concurrently invoke the methods defined in this class on a single CertPath
+ object (or more than one) with no ill effects. This is also true for the List
+ returned by CertPath.getCertificates.
+
+ Requiring CertPath objects to be immutable and thread-safe allows them to be
+ passed around to various pieces of code without worrying about coordinating
+ access. Providing this thread-safety is generally not difficult, since the
+ CertPath and List objects in question are immutable.
+
+ @see CertificateFactory
+ @see CertPathBuilder
+
+ CertPath implementation for X.509 certificates.
+
+
+
+ Creates a CertPath of the specified type.
+ This constructor is protected because most users should use
+ a CertificateFactory to create CertPaths.
+ @param type the standard name of the type of Certificatesin this path
+
+
+
+ Creates a CertPath of the specified type.
+ This constructor is protected because most users should use
+ a CertificateFactory to create CertPaths.
+
+ @param type the standard name of the type of Certificatesin this path
+
+
+
+ Returns an iteration of the encodings supported by this
+ certification path, with the default encoding
+ first. Attempts to modify the returned Iterator via its
+ remove method result in an UnsupportedOperationException.
+
+ @return an Iterator over the names of the supported encodings (as Strings)
+
+
+
+ Compares this certification path for equality with the specified object.
+ Two CertPaths are equal if and only if their types are equal and their
+ certificate Lists (and by implication the Certificates in those Lists)
+ are equal. A CertPath is never equal to an object that is not a CertPath.
+
+ This algorithm is implemented by this method. If it is overridden, the
+ behavior specified here must be maintained.
+
+ @param other
+ the object to test for equality with this certification path
+
+ @return true if the specified object is equal to this certification path,
+ false otherwise
+
+ @see Object#hashCode() Object.hashCode()
+
+
+ Returns the encoded form of this certification path, using
+ the default encoding.
+
+ @return the encoded bytes
+ @exception CertificateEncodingException if an encoding error occurs
+
+
+
+ Returns the encoded form of this certification path, using
+ the specified encoding.
+
+ @param encoding the name of the encoding to use
+ @return the encoded bytes
+ @exception CertificateEncodingException if an encoding error
+ occurs or the encoding requested is not supported
+
+
+
+
+ Returns the list of certificates in this certification
+ path.
+
+
+
+ Return a DERObject containing the encoded certificate.
+
+ @param cert the X509Certificate object to be encoded
+
+ @return the DERObject
+
+
+
+ Implements the PKIX CertPathBuilding algorithm for BouncyCastle.
+
+ @see CertPathBuilderSpi
+
+
+ Build and validate a CertPath using the given parameter.
+
+ @param params PKIXBuilderParameters object containing all information to
+ build the CertPath
+
+
+ * Initializes the internal state of this PKIXCertPathChecker.
+ *
+ * The forward flag specifies the order that certificates
+ * will be passed to the {@link #check check} method (forward or reverse). A
+ * PKIXCertPathChecker must support reverse checking
+ * and may support forward checking.
+ *
+ *
+ * @param forward
+ * the order that certificates are presented to the
+ * check method. If true,
+ * certificates are presented from target to most-trusted CA
+ * (forward); if false, from most-trusted CA to
+ * target (reverse).
+ * @exception CertPathValidatorException
+ * if this PKIXCertPathChecker is unable to
+ * check certificates in the specified order; it should never
+ * be thrown if the forward flag is false since reverse
+ * checking must be supported
+
+
+ Indicates if forward checking is supported. Forward checking refers to
+ the ability of the PKIXCertPathChecker to perform its
+ checks when certificates are presented to the check method
+ in the forward direction (from target to most-trusted CA).
+
+ @return true if forward checking is supported,
+ false otherwise
+
+
+ * Returns an immutable Set of X.509 certificate extensions
+ * that this PKIXCertPathChecker supports (i.e. recognizes,
+ * is able to process), or null if no extensions are
+ * supported.
+ *
+ * Each element of the set is a String representing the
+ * Object Identifier (OID) of the X.509 extension that is supported. The OID
+ * is represented by a set of nonnegative integers separated by periods.
+ *
+ * All X.509 certificate extensions that a PKIXCertPathChecker
+ * might possibly be able to process should be included in the set.
+ *
+ *
+ * @return an immutable Set of X.509 extension OIDs (in
+ * String format) supported by this
+ * PKIXCertPathChecker, or null if no
+ * extensions are supported
+
+
+ Performs the check(s) on the specified certificate using its internal
+ state and removes any critical extensions that it processes from the
+ specified collection of OID strings that represent the unresolved
+ critical extensions. The certificates are presented in the order
+ specified by the init method.
+
+ @param cert
+ the Certificate to be checked
+ @param unresolvedCritExts
+ a Collection of OID strings representing the
+ current set of unresolved critical extensions
+ @exception CertPathValidatorException
+ if the specified certificate does not pass the check
+
+
+ Returns a clone of this object. Calls the Object.clone()
+ method. All subclasses which maintain state must support and override
+ this method, if necessary.
+
+ @return a copy of this PKIXCertPathChecker
+
+
+ The Service Provider Interface (SPI)
+ for the {@link CertPathValidator CertPathValidator} class. All
+ CertPathValidator implementations must include a class (the
+ SPI class) that extends this class (CertPathValidatorSpi)
+ and implements all of its methods. In general, instances of this class
+ should only be accessed through the CertPathValidator class.
+ For details, see the Java Cryptography Architecture.
+
+ Concurrent Access
+
+ Instances of this class need not be protected against concurrent
+ access from multiple threads. Threads that need to access a single
+ CertPathValidatorSpi instance concurrently should synchronize
+ amongst themselves and provide the necessary locking before calling the
+ wrapping CertPathValidator object.
+
+ However, implementations of CertPathValidatorSpi may still
+ encounter concurrency issues, since multiple threads each
+ manipulating a different CertPathValidatorSpi instance need not
+ synchronize.
+
+ CertPathValidatorSpi implementation for X.509 Certificate validation a la RFC
+ 3280.
+
+
+
+ An exception indicating one of a variety of problems encountered when
+ validating a certification path.
+
+ A CertPathValidatorException provides support for wrapping
+ exceptions. The {@link #getCause getCause} method returns the throwable,
+ if any, that caused this exception to be thrown.
+
+ A CertPathValidatorException may also include the index of
+ the certificate in the certification path that caused the
+ exception to be thrown. Use the {@link #Index Index} property to retrieve
+ this information.
+
+ Concurrent Access
+
+ Unless otherwise specified, the methods defined in this class are not
+ thread-safe. Multiple threads that need to access a single
+ object concurrently should synchronize amongst themselves and
+ provide the necessary locking. Multiple threads each manipulating
+ separate objects need not synchronize.
+
+ @see CertPathValidator
+
+
+
+
+ Creates a PkixCertPathValidatorException with the specified
+ detail message, cause, certification path, and index.
+
+ the detail message (or null if none)
+ the cause (or null if none)
+ the index of the certificate in the certification path that *
+
+
+ eturns the index of the certificate in the certification path that caused the exception to be
+ thrown.
+
+ Note that the list of certificates in a is zero based. If no index has been set,
+ -1 is returned.
+
+ The index that has been set, or -1 if none has been set.
+
+
+
+ Summary description for PkixCertPathValidatorUtilities.
+
+
+
+
+ key usage bits
+
+
+
+
+ Search the given Set of TrustAnchor's for one that is the
+ issuer of the given X509 certificate.
+
+ the X509 certificate
+ a Set of TrustAnchor's
+ the TrustAnchor object if found or
+ null if not.
+
+ @exception
+
+
+
+ Returns the issuer of an attribute certificate or certificate.
+
+ The attribute certificate or certificate.
+ The issuer as X500Principal.
+
+
+ Return the next working key inheriting DSA parameters if necessary.
+
+ This methods inherits DSA parameters from the indexed certificate or
+ previous certificates in the certificate chain to the returned
+ PublicKey. The list is searched upwards, meaning the end
+ certificate is at position 0 and previous certificates are following.
+
+
+ If the indexed certificate does not contain a DSA key this method simply
+ returns the public key. If the DSA key already contains DSA parameters
+ the key is also only returned.
+
+
+ @param certs The certification path.
+ @param index The index of the certificate which contains the public key
+ which should be extended with DSA parameters.
+ @return The public key of the certificate in list position
+ index extended with DSA parameters if applicable.
+ @throws Exception if DSA parameters cannot be inherited.
+
+
+ Add the CRL issuers from the cRLIssuer field of the distribution point or
+ from the certificate if not given to the issuer criterion of the
+ selector.
+
+ The issuerPrincipals are a collection with a single
+ X500Principal for X509Certificates. For
+ {@link X509AttributeCertificate}s the issuer may contain more than one
+ X500Principal.
+
+
+ @param dp The distribution point.
+ @param issuerPrincipals The issuers of the certificate or attribute
+ certificate which contains the distribution point.
+ @param selector The CRL selector.
+ @param pkixParams The PKIX parameters containing the cert stores.
+ @throws Exception if an exception occurs while processing.
+ @throws ClassCastException if issuerPrincipals does not
+ contain only X500Principals.
+
+
+ Fetches complete CRLs according to RFC 3280.
+
+ @param dp The distribution point for which the complete CRL
+ @param cert The X509Certificate or
+ {@link org.bouncycastle.x509.X509AttributeCertificate} for
+ which the CRL should be searched.
+ @param currentDate The date for which the delta CRLs must be valid.
+ @param paramsPKIX The extended PKIX parameters.
+ @return A Set of X509CRLs with complete
+ CRLs.
+ @throws Exception if an exception occurs while picking the CRLs
+ or no CRLs are found.
+
+
+ Fetches delta CRLs according to RFC 3280 section 5.2.4.
+
+ @param currentDate The date for which the delta CRLs must be valid.
+ @param paramsPKIX The extended PKIX parameters.
+ @param completeCRL The complete CRL the delta CRL is for.
+ @return A Set of X509CRLs with delta CRLs.
+ @throws Exception if an exception occurs while picking the delta
+ CRLs.
+
+
+ Find the issuer certificates of a given certificate.
+
+ @param cert
+ The certificate for which an issuer should be found.
+ @param pkixParams
+ @return A Collection object containing the issuer
+ X509Certificates. Never null.
+
+ @exception Exception
+ if an error occurs.
+
+
+
+ crl checking
+ Return a Collection of all CRLs found in the X509Store's that are
+ matching the crlSelect criteriums.
+
+ a {@link X509CRLStoreSelector} object that will be used
+ to select the CRLs
+ a List containing only {@link org.bouncycastle.x509.X509Store
+ X509Store} objects. These are used to search for CRLs
+ a Collection of all found {@link X509CRL X509CRL} objects. May be
+ empty but never null.
+
+
+
+ The most restricting part from email1 and
+ email2 is added to the intersection intersect.
+
+ @param email1 Email address constraint 1.
+ @param email2 Email address constraint 2.
+ @param intersect The intersection.
+
+
+ The common part of email1 and email2 is
+ added to the union union. If email1 and
+ email2 have nothing in common they are added both.
+
+ @param email1 Email address constraint 1.
+ @param email2 Email address constraint 2.
+ @param union The union.
+
+
+ Checks if the IP ip is included in the excluded ISet
+ excluded.
+
+ @param excluded A Set of excluded IP addresses with their
+ subnet mask as byte arrays.
+ @param ip The IP address.
+ @throws PkixNameConstraintValidatorException
+ if the IP is excluded.
+
+
+ Checks if the IP ip is included in the permitted ISet
+ permitted.
+
+ @param permitted A Set of permitted IP addresses with
+ their subnet mask as byte arrays.
+ @param ip The IP address.
+ @throws PkixNameConstraintValidatorException
+ if the IP is not permitted.
+
+
+ Checks if the IP address ip is constrained by
+ constraint.
+
+ @param constraint The constraint. This is an IP address concatenated with
+ its subnetmask.
+ @param ip The IP address.
+ @return true if constrained, false
+ otherwise.
+
+
+ Returns the intersection of the permitted IP ranges in
+ permitted with ip.
+
+ @param permitted A Set of permitted IP addresses with
+ their subnet mask as byte arrays.
+ @param ips The IP address with its subnet mask.
+ @return The Set of permitted IP ranges intersected with
+ ip.
+
+
+ Calculates the interesction if two IP ranges.
+
+ @param ipWithSubmask1 The first IP address with its subnet mask.
+ @param ipWithSubmask2 The second IP address with its subnet mask.
+ @return A Set with the single IP address with its subnet
+ mask as a byte array or an empty Set.
+
+
+ Returns the union of the excluded IP ranges in excluded
+ with ip.
+
+ @param excluded A Set of excluded IP addresses with their
+ subnet mask as byte arrays.
+ @param ip The IP address with its subnet mask.
+ @return The Set of excluded IP ranges unified with
+ ip as byte arrays.
+
+
+ Calculates the union if two IP ranges.
+
+ @param ipWithSubmask1 The first IP address with its subnet mask.
+ @param ipWithSubmask2 The second IP address with its subnet mask.
+ @return A Set with the union of both addresses.
+
+
+ Concatenates the IP address with its subnet mask.
+
+ @param ip The IP address.
+ @param subnetMask Its subnet mask.
+ @return The concatenated IP address with its subnet mask.
+
+
+ Splits the IP addresses and their subnet mask.
+
+ @param ipWithSubmask1 The first IP address with the subnet mask.
+ @param ipWithSubmask2 The second IP address with the subnet mask.
+ @return An array with two elements. Each element contains the IP address
+ and the subnet mask in this order.
+
+
+ Based on the two IP addresses and their subnet masks the IP range is
+ computed for each IP address - subnet mask pair and returned as the
+ minimum IP address and the maximum address of the range.
+
+ @param ip1 The first IP address.
+ @param subnetmask1 The subnet mask of the first IP address.
+ @param ip2 The second IP address.
+ @param subnetmask2 The subnet mask of the second IP address.
+ @return A array with two elements. The first/second element contains the
+ min and max IP address of the first/second IP address and its
+ subnet mask.
+
+
+ Returns the maximum IP address.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The maximum IP address.
+
+
+ Returns the minimum IP address.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The minimum IP address.
+
+
+ Compares IP address ip1 with ip2. If ip1
+ is equal to ip2 0 is returned. If ip1 is bigger 1 is returned, -1
+ otherwise.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return 0 if ip1 is equal to ip2, 1 if ip1 is bigger, -1 otherwise.
+
+
+ Returns the logical OR of the IP addresses ip1 and
+ ip2.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The OR of ip1 and ip2.
+
+
+
+
+
+ Checks if the given GeneralName is in the permitted ISet.
+
+ @param name The GeneralName
+ @throws PkixNameConstraintValidatorException
+ If the name
+
+
+
+
+
+
+ Check if the given GeneralName is contained in the excluded ISet.
+
+ @param name The GeneralName.
+ @throws PkixNameConstraintValidatorException
+ If the name is
+ excluded.
+
+
+
+ Updates the permitted ISet of these name constraints with the intersection
+ with the given subtree.
+
+ @param permitted The permitted subtrees
+
+
+ Adds a subtree to the excluded ISet of these name constraints.
+
+ @param subtree A subtree with an excluded GeneralName.
+
+
+ Stringifies an IPv4 or v6 address with subnet mask.
+
+ @param ip The IP with subnet mask.
+ @return The stringified IP address.
+
+
+
+ Summary description for PkixParameters.
+
+
+
+ This is the default PKIX validity model. Actually there are two variants
+ of this: The PKIX model and the modified PKIX model. The PKIX model
+ verifies that all involved certificates must have been valid at the
+ current time. The modified PKIX model verifies that all involved
+ certificates were valid at the signing time. Both are indirectly choosen
+ with the {@link PKIXParameters#setDate(java.util.Date)} method, so this
+ methods sets the Date when all certificates must have been
+ valid.
+
+
+ This model uses the following validity model. Each certificate must have
+ been valid at the moment where is was used. That means the end
+ certificate must have been valid at the time the signature was done. The
+ CA certificate which signed the end certificate must have been valid,
+ when the end certificate was signed. The CA (or Root CA) certificate must
+ have been valid, when the CA certificate was signed and so on. So the
+ {@link PKIXParameters#setDate(java.util.Date)} method sets the time, when
+ the end certificate must have been valid. It is used e.g.
+ in the German signature law.
+
+
+ Creates an instance of PKIXParameters with the specified Set of
+ most-trusted CAs. Each element of the set is a TrustAnchor.
+
+ Note that the Set is copied to protect against subsequent modifications.
+
+ @param trustAnchors
+ a Set of TrustAnchors
+
+ @exception InvalidAlgorithmParameterException
+ if the specified Set is empty
+ (trustAnchors.isEmpty() == true)
+ @exception NullPointerException
+ if the specified Set is null
+ @exception ClassCastException
+ if any of the elements in the Set are not of type
+ java.security.cert.TrustAnchor
+
+
+ Returns the required constraints on the target certificate or attribute
+ certificate. The constraints are returned as an instance of
+ IX509Selector. If null, no constraints are
+ defined.
+
+
+ The target certificate in a PKIX path may be a certificate or an
+ attribute certificate.
+
+ Note that the IX509Selector returned is cloned to protect
+ against subsequent modifications.
+
+ @return a IX509Selector specifying the constraints on the
+ target certificate or attribute certificate (or null)
+ @see #setTargetConstraints
+ @see X509CertStoreSelector
+ @see X509AttributeCertStoreSelector
+
+
+ Sets the required constraints on the target certificate or attribute
+ certificate. The constraints are specified as an instance of
+ IX509Selector. If null, no constraints are
+ defined.
+
+ The target certificate in a PKIX path may be a certificate or an
+ attribute certificate.
+
+ Note that the IX509Selector specified is cloned to protect
+ against subsequent modifications.
+
+
+ @param selector a IX509Selector specifying the constraints on
+ the target certificate or attribute certificate (or
+ null)
+ @see #getTargetConstraints
+ @see X509CertStoreSelector
+ @see X509AttributeCertStoreSelector
+
+
+ Returns the required constraints on the target certificate. The
+ constraints are returned as an instance of CertSelector. If
+ null, no constraints are defined.
+
+ Note that the CertSelector returned is cloned to protect against
+ subsequent modifications.
+
+ @return a CertSelector specifying the constraints on the target
+ certificate (or null)
+
+ @see #setTargetCertConstraints(CertSelector)
+
+
+ Sets the required constraints on the target certificate. The constraints
+ are specified as an instance of CertSelector. If null, no constraints are
+ defined.
+
+ Note that the CertSelector specified is cloned to protect against
+ subsequent modifications.
+
+ @param selector
+ a CertSelector specifying the constraints on the target
+ certificate (or null)
+
+ @see #getTargetCertConstraints()
+
+
+ Returns an immutable Set of initial policy identifiers (OID strings),
+ indicating that any one of these policies would be acceptable to the
+ certificate user for the purposes of certification path processing. The
+ default return value is an empty Set, which is
+ interpreted as meaning that any policy would be acceptable.
+
+ @return an immutable Set of initial policy OIDs in String
+ format, or an empty Set (implying any policy is
+ acceptable). Never returns null.
+
+ @see #setInitialPolicies(java.util.Set)
+
+
+ Sets the Set of initial policy identifiers (OID strings),
+ indicating that any one of these policies would be acceptable to the
+ certificate user for the purposes of certification path processing. By
+ default, any policy is acceptable (i.e. all policies), so a user that
+ wants to allow any policy as acceptable does not need to call this
+ method, or can call it with an empty Set (or
+ null).
+
+ Note that the Set is copied to protect against subsequent modifications.
+
+
+ @param initialPolicies
+ a Set of initial policy OIDs in String format (or
+ null)
+
+ @exception ClassCastException
+ if any of the elements in the set are not of type String
+
+ @see #getInitialPolicies()
+
+
+ Sets a List of additional certification path checkers. If
+ the specified List contains an object that is not a PKIXCertPathChecker,
+ it is ignored.
+
+ Each PKIXCertPathChecker specified implements additional
+ checks on a certificate. Typically, these are checks to process and
+ verify private extensions contained in certificates. Each
+ PKIXCertPathChecker should be instantiated with any
+ initialization parameters needed to execute the check.
+
+ This method allows sophisticated applications to extend a PKIX
+ CertPathValidator or CertPathBuilder. Each
+ of the specified PKIXCertPathCheckers will be called, in turn, by a PKIX
+ CertPathValidator or CertPathBuilder for
+ each certificate processed or validated.
+
+ Regardless of whether these additional PKIXCertPathCheckers are set, a
+ PKIX CertPathValidator or CertPathBuilder
+ must perform all of the required PKIX checks on each certificate. The one
+ exception to this rule is if the RevocationEnabled flag is set to false
+ (see the {@link #setRevocationEnabled(boolean) setRevocationEnabled}
+ method).
+
+ Note that the List supplied here is copied and each PKIXCertPathChecker
+ in the list is cloned to protect against subsequent modifications.
+
+ @param checkers
+ a List of PKIXCertPathCheckers. May be null, in which case no
+ additional checkers will be used.
+ @exception ClassCastException
+ if any of the elements in the list are not of type
+ java.security.cert.PKIXCertPathChecker
+ @see #getCertPathCheckers()
+
+
+ Returns the List of certification path checkers. Each PKIXCertPathChecker
+ in the returned IList is cloned to protect against subsequent modifications.
+
+ @return an immutable List of PKIXCertPathCheckers (may be empty, but not
+ null)
+
+ @see #setCertPathCheckers(java.util.List)
+
+
+ Adds a PKIXCertPathChecker to the list of certification
+ path checkers. See the {@link #setCertPathCheckers setCertPathCheckers}
+ method for more details.
+
+ Note that the PKIXCertPathChecker is cloned to protect
+ against subsequent modifications.
+
+ @param checker a PKIXCertPathChecker to add to the list of
+ checks. If null, the checker is ignored (not added to list).
+
+
+ Method to support Clone() under J2ME.
+ super.Clone() does not exist and fields are not copied.
+
+ @param params Parameters to set. If this are
+ ExtendedPkixParameters they are copied to.
+
+
+ Whether delta CRLs should be used for checking the revocation status.
+ Defaults to false.
+
+
+ The validity model.
+ @see #CHAIN_VALIDITY_MODEL
+ @see #PKIX_VALIDITY_MODEL
+
+
+ Returns if additional {@link X509Store}s for locations like LDAP found
+ in certificates or CRLs should be used.
+
+ @return Returns true if additional stores are used.
+
+
+ Sets if additional {@link X509Store}s for locations like LDAP found in
+ certificates or CRLs should be used.
+
+ @param enabled true if additional stores are used.
+
+
+ Returns the trusted attribute certificate issuers. If attribute
+ certificates is verified the trusted AC issuers must be set.
+
+ The returned ISet consists of TrustAnchors.
+
+ The returned ISet is immutable. Never null
+
+
+ @return Returns an immutable set of the trusted AC issuers.
+
+
+ Sets the trusted attribute certificate issuers. If attribute certificates
+ is verified the trusted AC issuers must be set.
+
+ The trustedACIssuers must be a ISet of
+ TrustAnchor
+
+ The given set is cloned.
+
+
+ @param trustedACIssuers The trusted AC issuers to set. Is never
+ null.
+ @throws ClassCastException if an element of stores is not
+ a TrustAnchor.
+
+
+ Returns the necessary attributes which must be contained in an attribute
+ certificate.
+
+ The returned ISet is immutable and contains
+ Strings with the OIDs.
+
+
+ @return Returns the necessary AC attributes.
+
+
+ Sets the necessary which must be contained in an attribute certificate.
+
+ The ISet must contain Strings with the
+ OIDs.
+
+ The set is cloned.
+
+
+ @param necessaryACAttributes The necessary AC attributes to set.
+ @throws ClassCastException if an element of
+ necessaryACAttributes is not a
+ String.
+
+
+ Returns the attribute certificates which are not allowed.
+
+ The returned ISet is immutable and contains
+ Strings with the OIDs.
+
+
+ @return Returns the prohibited AC attributes. Is never null.
+
+
+ Sets the attribute certificates which are not allowed.
+
+ The ISet must contain Strings with the
+ OIDs.
+
+ The set is cloned.
+
+
+ @param prohibitedACAttributes The prohibited AC attributes to set.
+ @throws ClassCastException if an element of
+ prohibitedACAttributes is not a
+ String.
+
+
+ Returns the attribute certificate checker. The returned set contains
+ {@link PKIXAttrCertChecker}s and is immutable.
+
+ @return Returns the attribute certificate checker. Is never
+ null.
+
+
+ Sets the attribute certificate checkers.
+
+ All elements in the ISet must a {@link PKIXAttrCertChecker}.
+
+
+ The given set is cloned.
+
+
+ @param attrCertCheckers The attribute certificate checkers to set. Is
+ never null.
+ @throws ClassCastException if an element of attrCertCheckers
+ is not a PKIXAttrCertChecker.
+
+
+
+ Summary description for PkixPolicyNode.
+
+
+
+ Constructors
+
+
+
+ This class helps to handle CRL revocation reasons mask. Each CRL handles a
+ certain set of revocation reasons.
+
+
+
+
+ Constructs are reason mask with the reasons.
+
+ The reasons.
+
+
+
+ A reason mask with no reason.
+
+
+
+
+ A mask with all revocation reasons.
+
+
+
+ Adds all reasons from the reasons mask to this mask.
+
+ @param mask The reasons mask to add.
+
+
+
+ Returns true if this reasons mask contains all possible
+ reasons.
+
+ true if this reasons mask contains all possible reasons.
+
+
+
+
+ Intersects this mask with the given reasons mask.
+
+ mask The mask to intersect with.
+ The intersection of this and teh given mask.
+
+
+
+ Returns true if the passed reasons mask has new reasons.
+
+ The reasons mask which should be tested for new reasons.
+ true if the passed reasons mask has new reasons.
+
+
+
+ Returns the reasons in this mask.
+
+
+
+ If the complete CRL includes an issuing distribution point (IDP) CRL
+ extension check the following:
+
+ (i) If the distribution point name is present in the IDP CRL extension
+ and the distribution field is present in the DP, then verify that one of
+ the names in the IDP matches one of the names in the DP. If the
+ distribution point name is present in the IDP CRL extension and the
+ distribution field is omitted from the DP, then verify that one of the
+ names in the IDP matches one of the names in the cRLIssuer field of the
+ DP.
+
+
+ (ii) If the onlyContainsUserCerts boolean is asserted in the IDP CRL
+ extension, verify that the certificate does not include the basic
+ constraints extension with the cA boolean asserted.
+
+
+ (iii) If the onlyContainsCACerts boolean is asserted in the IDP CRL
+ extension, verify that the certificate includes the basic constraints
+ extension with the cA boolean asserted.
+
+
+ (iv) Verify that the onlyContainsAttributeCerts boolean is not asserted.
+
+
+ @param dp The distribution point.
+ @param cert The certificate.
+ @param crl The CRL.
+ @throws AnnotatedException if one of the conditions is not met or an error occurs.
+
+
+
+
+
+
+
+
+
+
+
+ If the DP includes cRLIssuer, then verify that the issuer field in the
+ complete CRL matches cRLIssuer in the DP and that the complete CRL
+ contains an
+ g distribution point extension with the indirectCRL
+ boolean asserted. Otherwise, verify that the CRL issuer matches the
+ certificate issuer.
+
+ @param dp The distribution point.
+ @param cert The certificate ot attribute certificate.
+ @param crl The CRL for cert.
+ @throws AnnotatedException if one of the above conditions does not apply or an error
+ occurs.
+
+
+ Obtain and validate the certification path for the complete CRL issuer.
+ If a key usage extension is present in the CRL issuer's certificate,
+ verify that the cRLSign bit is set.
+
+ @param crl CRL which contains revocation information for the certificate
+ cert.
+ @param cert The attribute certificate or certificate to check if it is
+ revoked.
+ @param defaultCRLSignCert The issuer certificate of the certificate cert.
+ @param defaultCRLSignKey The public key of the issuer certificate
+ defaultCRLSignCert.
+ @param paramsPKIX paramsPKIX PKIX parameters.
+ @param certPathCerts The certificates on the certification path.
+ @return A Set with all keys of possible CRL issuer
+ certificates.
+ @throws AnnotatedException if the CRL is not valid or the status cannot be checked or
+ some error occurs.
+
+
+ Checks a distribution point for revocation information for the
+ certificate cert.
+
+ @param dp The distribution point to consider.
+ @param paramsPKIX PKIX parameters.
+ @param cert Certificate to check if it is revoked.
+ @param validDate The date when the certificate revocation status should be
+ checked.
+ @param defaultCRLSignCert The issuer certificate of the certificate cert.
+ @param defaultCRLSignKey The public key of the issuer certificate
+ defaultCRLSignCert.
+ @param certStatus The current certificate revocation status.
+ @param reasonMask The reasons mask which is already checked.
+ @param certPathCerts The certificates of the certification path.
+ @throws AnnotatedException if the certificate is revoked or the status cannot be checked
+ or some error occurs.
+
+
+ Checks a certificate if it is revoked.
+
+ @param paramsPKIX PKIX parameters.
+ @param cert Certificate to check if it is revoked.
+ @param validDate The date when the certificate revocation status should be
+ checked.
+ @param sign The issuer certificate of the certificate cert.
+ @param workingPublicKey The public key of the issuer certificate sign.
+ @param certPathCerts The certificates of the certification path.
+ @throws AnnotatedException if the certificate is revoked or the status cannot be checked
+ or some error occurs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If use-deltas is set, verify the issuer and scope of the delta CRL.
+
+ @param deltaCRL The delta CRL.
+ @param completeCRL The complete CRL.
+ @param pkixParams The PKIX paramaters.
+ @throws AnnotatedException if an exception occurs.
+
+
+ Checks if an attribute certificate is revoked.
+
+ @param attrCert Attribute certificate to check if it is revoked.
+ @param paramsPKIX PKIX parameters.
+ @param issuerCert The issuer certificate of the attribute certificate
+ attrCert.
+ @param validDate The date when the certificate revocation status should
+ be checked.
+ @param certPathCerts The certificates of the certification path to be
+ checked.
+
+ @throws CertPathValidatorException if the certificate is revoked or the
+ status cannot be checked or some error occurs.
+
+
+ Searches for a holder public key certificate and verifies its
+ certification path.
+
+ @param attrCert the attribute certificate.
+ @param pkixParams The PKIX parameters.
+ @return The certificate path of the holder certificate.
+ @throws Exception if
+
+ - no public key certificate can be found although holder
+ information is given by an entity name or a base certificate
+ ID
+ - support classes cannot be created
+ - no certification path for the public key certificate can
+ be built
+
+
+
+
+ Checks a distribution point for revocation information for the
+ certificate attrCert.
+
+ @param dp The distribution point to consider.
+ @param attrCert The attribute certificate which should be checked.
+ @param paramsPKIX PKIX parameters.
+ @param validDate The date when the certificate revocation status should
+ be checked.
+ @param issuerCert Certificate to check if it is revoked.
+ @param reasonMask The reasons mask which is already checked.
+ @param certPathCerts The certificates of the certification path to be
+ checked.
+ @throws Exception if the certificate is revoked or the status
+ cannot be checked or some error occurs.
+
+
+
+ A trust anchor or most-trusted Certification Authority (CA).
+
+ This class represents a "most-trusted CA", which is used as a trust anchor
+ for validating X.509 certification paths. A most-trusted CA includes the
+ public key of the CA, the CA's name, and any constraints upon the set of
+ paths which may be validated using this key. These parameters can be
+ specified in the form of a trusted X509Certificate or as individual
+ parameters.
+
+
+
+
+ Creates an instance of TrustAnchor with the specified X509Certificate and
+ optional name constraints, which are intended to be used as additional
+ constraints when validating an X.509 certification path.
+ The name constraints are specified as a byte array. This byte array
+ should contain the DER encoded form of the name constraints, as they
+ would appear in the NameConstraints structure defined in RFC 2459 and
+ X.509. The ASN.1 definition of this structure appears below.
+
+
+ NameConstraints ::= SEQUENCE {
+ permittedSubtrees [0] GeneralSubtrees OPTIONAL,
+ excludedSubtrees [1] GeneralSubtrees OPTIONAL }
+
+ GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
+
+ GeneralSubtree ::= SEQUENCE {
+ base GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL }
+
+ BaseDistance ::= INTEGER (0..MAX)
+
+ GeneralName ::= CHOICE {
+ otherName [0] OtherName,
+ rfc822Name [1] IA5String,
+ dNSName [2] IA5String,
+ x400Address [3] ORAddress,
+ directoryName [4] Name,
+ ediPartyName [5] EDIPartyName,
+ uniformResourceIdentifier [6] IA5String,
+ iPAddress [7] OCTET STRING,
+ registeredID [8] OBJECT IDENTIFIER}
+
+
+ Note that the name constraints byte array supplied is cloned to protect
+ against subsequent modifications.
+
+ a trusted X509Certificate
+ a byte array containing the ASN.1 DER encoding of a
+ NameConstraints extension to be used for checking name
+ constraints. Only the value of the extension is included, not
+ the OID or criticality flag. Specify null to omit the
+ parameter.
+ if the specified X509Certificate is null
+
+
+
+ Creates an instance of TrustAnchor where the
+ most-trusted CA is specified as an X500Principal and public key.
+
+
+
+ Name constraints are an optional parameter, and are intended to be used
+ as additional constraints when validating an X.509 certification path.
+
+ The name constraints are specified as a byte array. This byte array
+ contains the DER encoded form of the name constraints, as they
+ would appear in the NameConstraints structure defined in RFC 2459
+ and X.509. The ASN.1 notation for this structure is supplied in the
+ documentation for the other constructors.
+
+ Note that the name constraints byte array supplied here is cloned to
+ protect against subsequent modifications.
+
+
+ the name of the most-trusted CA as X509Name
+ the public key of the most-trusted CA
+
+ a byte array containing the ASN.1 DER encoding of a NameConstraints extension to
+ be used for checking name constraints. Only the value of the extension is included,
+ not the OID or criticality flag. Specify null to omit the parameter.
+
+
+ if caPrincipal or pubKey is null
+
+
+
+
+ Creates an instance of TrustAnchor where the most-trusted
+ CA is specified as a distinguished name and public key. Name constraints
+ are an optional parameter, and are intended to be used as additional
+ constraints when validating an X.509 certification path.
+
+ The name constraints are specified as a byte array. This byte array
+ contains the DER encoded form of the name constraints, as they would
+ appear in the NameConstraints structure defined in RFC 2459 and X.509.
+
+ the X.500 distinguished name of the most-trusted CA in RFC
+ 2253 string format
+ the public key of the most-trusted CA
+ a byte array containing the ASN.1 DER encoding of a
+ NameConstraints extension to be used for checking name
+ constraints. Only the value of the extension is included, not
+ the OID or criticality flag. Specify null to omit the
+ parameter.
+ throws NullPointerException, IllegalArgumentException
+
+
+
+ Returns the most-trusted CA certificate.
+
+
+
+
+ Returns the name of the most-trusted CA as an X509Name.
+
+
+
+
+ Returns the name of the most-trusted CA in RFC 2253 string format.
+
+
+
+
+ Returns the public key of the most-trusted CA.
+
+
+
+
+ Decode the name constraints and clone them if not null.
+
+
+
+
+ Returns a formatted string describing the TrustAnchor.
+
+ a formatted string describing the TrustAnchor
+
+
+ Crystal Kyber Private Key Format.
+ See https://www.ietf.org/archive/id/draft-uni-qsckeys-kyber-00.html for details.
+
+ KyberPrivateKey ::= SEQUENCE {
+ version INTEGER {v0(0)} -- version (round 3)
+ s OCTET STRING, -- EMPTY
+ hpk OCTET STRING -- EMPTY
+ nonce OCTET STRING, -- d
+ publicKey [0] IMPLICIT KyberPublicKey OPTIONAL,
+ -- see next section
+ }
+
+
+
+ Crystal Kyber Public Key Format.
+ See https://www.ietf.org/archive/id/draft-uni-qsckeys-kyber-00.html for details.
+
+ KyberPublicKey ::= SEQUENCE {
+ t OCTET STRING,
+ rho OCTET STRING
+ }
+
+
+
+ 1.3.6.1.4.1.8301.3.1.3.5.3.2
+
+
+ 1.3.6.1.4.1.8301.3.1.3.5.3.2.1
+
+
+ 1.3.6.1.4.1.8301.3.1.3.5.3.2.2
+
+
+ 1.3.6.1.4.1.8301.3.1.3.5.3.2.3
+
+
+ 1.3.6.1.4.1.8301.3.1.3.5.3.2.4
+
+
+ 1.3.6.1.4.1.8301.3.1.3.5.3.2.5
+
+
+ 1.3.6.1.4.1.8301.3.1.3.3
+
+
+ 1.3.6.1.4.1.8301.3.1.3.3.1
+
+
+ 1.3.6.1.4.1.8301.3.1.3.3.2
+
+
+ 1.3.6.1.4.1.8301.3.1.3.3.3
+
+
+ 1.3.6.1.4.1.8301.3.1.3.3.4
+
+
+ 1.3.6.1.4.1.8301.3.1.3.3.5
+
+
+ 1.3.6.1.4.1.8301.3.1.3.4.1
+
+
+ 1.3.6.1.4.1.8301.3.1.3.4.2
+
+
+ XMSS
+
+
+ XMSS^MT
+
+
+ qTESLA
+
+
+ Explicit composite algorithms
+
+
+ See https://datatracker.ietf.org/doc/draft-uni-qsckeys-sphincsplus/00/ for details
+ ASN.1 Encoding for a
+ SphincsPlus private key for fully populated:
+
+ SPHINCSPLUSPrivateKey ::= SEQUENCE {
+ version INTEGER {v2(1)} --syntax version 2 (round 3)
+ skseed OCTET STRING, --n-byte private key seed
+ skprf OCTET STRING, --n-byte private key seed
+ PublicKey SPHINCSPLUSPublicKey --public key
+ }
+
+
+
+ See https://datatracker.ietf.org/doc/draft-uni-qsckeys-sphincsplus/00/ for details.
+ ASN.1 Encoding for a
+ SphincsPlus public key for fully populated:
+
+ SPHINCSPPLUSPublicKey := SEQUENCE {
+ pkseed OCTET STRING, --n-byte public key seed
+ pkroot OCTET STRING --n-byte public hypertree root
+ }
+
+
+
+ Generate key pairs
+ - Secret key : (h0, h1, sigma)
+ - Public key: h
+ * @param h0 h0
+ * @param h1 h1
+ * @param sigma sigma
+ * @param h h
+ * @param random Secure Random
+ *
+
+
+ KEM Encapsulation
+ - Input: h
+ - Output: (c0,c1,k)
+ * @param c0 ciphertext
+ * @param c1 ciphertext
+ * @param k session key
+ * @param h public key
+ * @param random Secure Random
+ *
+
+
+ KEM Decapsulation
+ - Input: (h0, h1, sigma), (c0, c1)
+ - Output: k
+ * @param h0 private key
+ * @param h1 private key
+ * @param sigma private key
+ * @param c0 ciphertext
+ * @param c1 ciphertext
+ * @param k session key
+ *
+
+
+ Karatsuba multiplication of a and b, Implementation inspired from the NTL library.
+
+ \param[out] o Polynomial
+ \param[in] a Polynomial
+ \param[in] b Polynomial
+ \param[in] size Length of polynomial
+ \param[in] stack Length of polynomial
+
+
+ @brief Compute o(x) = a(x) mod \f$ X^n - 1\f$
+
+ This function computes the modular reduction of the polynomial a(x)
+
+ @param[in] a Pointer to the polynomial a(x)
+ @param[out] o Pointer to the result
+
+
+ Generate key pairs
+ - Secret key : (x,y)
+ - Public key: (h,s)
+ @param pk output pk = (publicSeed||s)
+
+
+
+
+ HQC Encapsulation
+ - Input: pk, seed
+ - Output: c = (u,v,d), K
+
+ @param u u
+ @param v v
+ @param d d
+ @param K session key
+ @param pk public key
+ @param seed seed
+
+
+
+ HQC Decapsulation
+ - Input: ct, sk
+ - Output: ss
+
+ @param ss session key
+ @param ct ciphertext
+ @param sk secret key
+
+
+
+ HQC Encryption
+ - Input: (h,s, m)
+ - Output: (u,v) = c
+
+ @param h public key
+ @param s public key
+ @param m message
+ @param u ciphertext
+ @param v ciphertext
+
+
+
+ Base interface for a PQC signature algorithm.
+
+
+ Initialise this instance for signature generation or verification.
+ true if we are generating a signature, false otherwise.
+ parameters for signature generation or verification.
+
+
+ Sign a message.
+ the message to be signed.
+ the signature of the message.
+
+
+ Verify a purported signature for a message.
+ the message supposedly signed.
+ the purported signature to verify.
+ true if and only if the signature verified against the message.
+
+
+ Type to assist in build LMS messages.
+
+
+ Increments an HSS private key without doing any work on it.
+ HSS private keys are automatically incremented when when used to create signatures.
+
+ The HSS private key is ranged tested before this incrementation is applied.
+ LMS keys will be replaced as required.
+
+ @param keyPair
+
+
+ Base constructor - parameters and a source of randomness.
+
+ @param lmsParameters array of LMS parameters, one per level in the hierarchy (up to 8 levels).
+ @param random the random byte source.
+
+
+ Return a key that can be used usageCount times.
+
+ Note: this will use the range [index...index + usageCount) for the current key.
+
+
+ @param usageCount the number of usages the key should have.
+ @return a key based on the current key that can be used usageCount times.
+
+
+ Reset to index will ensure that all LMS keys are correct for a given HSS index value.
+ Normally LMS keys updated in sync with their parent HSS key but in cases of sharding
+ the normal monotonic updating does not apply and the state of the LMS keys needs to be
+ reset to match the current HSS index.
+
+
+ @param src byte[], InputStream or HSSSignature
+ @param L The HSS depth, available from public key.
+ @return An HSSSignature instance.
+ @throws IOException
+
+
+ Base constructor - parameters and a source of randomness.
+
+ @param lmsParameters LMS parameter set to use.
+ @param random the random byte source.
+
+
+ Return the key index (the q value).
+
+ @return private key index number.
+
+
+ Return a key that can be used usageCount times.
+
+ Note: this will use the range [index...index + usageCount) for the current key.
+
+
+ @param usageCount the number of usages the key should have.
+ @return a key based on the current key that can be used usageCount times.
+
+
+
+ Encapsulated secret encapsulated by NTRU.
+
+
+
+
+ NTRU secret encapsulation extractor.
+
+
+
+
+ Encapsulate a secret using NTRU. Returns an as encapsulation.
+
+
+
+ NTRU website
+
+
+
+ NTRU sampling.
+
+ NTRU specification section 1.10
+
+
+
+
+ Sample_fg
+
+ random byte array
+ a pair of polynomial f and g
+
+
+
+
+ Sample_rm
+
+ random byte array
+ a pair of polynomial r and m
+
+
+
+
+ Ternary
+
+ random byte array
+ A ternary polynomial
+
+
+
+ Fixed_Type
+
+ random byte array
+ a ternary polynomial with exactly q/16 − 1 coefficients equal to 1 and q/16 − 1 coefficient equal to −1
+
+
+
+ Ternary_Plus
+
+ random byte array
+ a ternary polynomial that satisfies the non-negative correlation property
+
+
+
+ An OW-CPA secure deterministic public key encryption scheme (DPKE).
+
+
+
+
+ Generate a DPKE key pair.
+
+ a random byte array
+ DPKE key pair
+
+
+
+ DPKE encryption.
+
+
+
+
+ DPKE ciphertext
+
+
+
+ DPKE decryption.
+
+
+
+ an instance of containing packed_rm an fail flag
+
+
+ Largest serialized public key size, in bytes
+
+
+ Largest signature size, in bytes
+
+
+ parameters
+
+
+
+
+
+ Compressed Dlogs
+
+
+ DLOG
+
+
+
+
+
+ Interprets m as SPX_FORS_HEIGHT-bit unsigned integers.
+ Assumes m contains at least SPX_FORS_HEIGHT * SPX_FORS_TREES bits.
+ Assumes indices has space for SPX_FORS_TREES integers.
+
+
+ Haraka-512 v2, https://eprint.iacr.org/2016/098.pdf
+
+ Haraka512-256 with reference to Python Reference Impl from: https://github.com/sphincs/sphincsplus
+
+
+
+ Haraka-512 v2, https://eprint.iacr.org/2016/098.pdf
+
+ Haraka512-256 with reference to Python Reference Impl from: https://github.com/sphincs/sphincsplus
+
+
+
+ Return the SPHINCS+ parameters that map to the passed in parameter ID.
+
+ @param id the oid of interest.
+ @return the parameter set.
+
+
+ Return the OID that maps to the passed in SPHINCS+ parameters.
+
+ @param params the parameters of interest.
+ @return the OID for the parameter set.
+
+
+ SPHINCS+ signer.
+
+ This version is based on the 3rd submission with deference to the updated reference
+ implementation on github as at November 9th 2021. This version includes the changes
+ for the countermeasure for the long-message second preimage attack - see
+ "https://github.com/sphincs/sphincsplus/commit/61cd2695c6f984b4f4d6ed675378ed9a486cbede"
+ for further details.
+
+
+
+ Base constructor.
+
+
+ OtherInfo Generator for which can be used for populating the SuppPrivInfo field used to provide shared
+ secret data used with NIST SP 800-56A agreement algorithms.
+
+
+ Create a basic builder with just the compulsory fields.
+
+ @param algorithmID the algorithm associated with this invocation of the KDF.
+ @param partyUInfo sender party info.
+ @param partyVInfo receiver party info.
+ @param random a source of randomness.
+
+
+ Party U (initiator) generation.
+
+
+ Create a basic builder with just the compulsory fields for the initiator.
+
+ @param kemParams the key type parameters for populating the private info field.
+ @param algorithmID the algorithm associated with this invocation of the KDF.
+ @param partyUInfo sender party info.
+ @param partyVInfo receiver party info.
+ @param random a source of randomness.
+
+
+ Add optional supplementary public info (DER tagged, implicit, 0).
+
+ @param suppPubInfo supplementary public info.
+ @return the current builder instance.
+
+
+ Party V (responder) generation.
+
+
+ Create a basic builder with just the compulsory fields for the responder.
+
+ @param kemParams the key type parameters for populating the private info field.
+ @param algorithmID the algorithm associated with this invocation of the KDF.
+ @param partyUInfo sender party info.
+ @param partyVInfo receiver party info.
+ @param random a source of randomness.
+
+
+ Add optional supplementary public info (DER tagged, implicit, 0).
+
+ @param suppPubInfo supplementary public info.
+ @return the current builder instance.
+
+
+ Create a private key parameter from a PKCS8 PrivateKeyInfo encoding.
+ the PrivateKeyInfo encoding
+ a suitable private key parameter
+ on an error decoding the key
+
+
+ Create a private key parameter from a PKCS8 PrivateKeyInfo encoding read from a stream
+ the stream to read the PrivateKeyInfo encoding from
+ a suitable private key parameter
+ on an error decoding the key
+
+
+ Create a private key parameter from the passed in PKCS8 PrivateKeyInfo object.
+ the PrivateKeyInfo object containing the key material
+ a suitable private key parameter
+ on an error decoding the key
+
+
+ Create a PrivateKeyInfo representation of a private key.
+ the key to be encoded into the info object.
+ the appropriate PrivateKeyInfo
+ on an error encoding the key
+
+
+ Create a PrivateKeyInfo representation of a private key with attributes.
+ the key to be encoded into the info object.
+ the set of attributes to be included.
+ the appropriate PrivateKeyInfo
+ on an error encoding the key
+
+
+ Create a public key from a SubjectPublicKeyInfo encoding
+ the SubjectPublicKeyInfo encoding
+ the appropriate key parameter
+ on an error decoding the key
+
+
+ Create a public key from a SubjectPublicKeyInfo encoding read from a stream
+ the stream to read the SubjectPublicKeyInfo encoding from
+ the appropriate key parameter
+ on an error decoding the key
+
+
+ Create a public key from the passed in SubjectPublicKeyInfo
+ the SubjectPublicKeyInfo containing the key data
+ the appropriate key parameter
+ on an error decoding the key
+
+
+ Create a public key from the passed in SubjectPublicKeyInfo
+ the SubjectPublicKeyInfo containing the key data
+ default parameters that might be needed.
+ the appropriate key parameter
+ on an error decoding the key
+
+
+
+ A factory to produce Public Key Info Objects.
+
+
+
+
+ Create a Subject Public Key Info object for a given public key.
+
+ One of ElGammalPublicKeyParameters, DSAPublicKeyParameter, DHPublicKeyParameters, RsaKeyParameters or ECPublicKeyParameters
+ A subject public key info object.
+ Throw exception if object provided is not one of the above.
+
+
+ Base class for a TLS client.
+
+
+
+
+
+
+
+
+ RFC 9146 DTLS connection ID.
+
+ The default implementation calls this to get the connection_id extension
+ the client will send. As future communication doesn't include the connection IDs length, this should either
+ be fixed-length or include the connection ID's length. (see explanation in RFC 9146 4. "cid:")
+
+ The connection ID to use.
+
+
+
+
+
+
+
+
+ an of (or null).
+
+
+ The default implementation calls this to determine which named
+ groups to include in the supported_groups extension for the ClientHello.
+ The named group roles for which there should
+ be at least one supported group. By default this is inferred from the offered cipher suites and signature
+ algorithms.
+ an of . See for group constants.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for supporting a TLS key exchange implementation.
+
+
+ Base class for supporting a TLS key exchange factory implementation.
+
+
+ Base class for a TLS client or server.
+
+
+ Get the values that are supported by this peer.
+
+ WARNING: Mixing DTLS and TLS versions in the returned array is currently NOT supported. Use a separate
+ (sub-)class for each case.
+
+ an array of supported values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for a TLS server.
+
+
+
+
+
+ RFC 9146 DTLS connection ID.
+
+ This method will be called if a connection_id extension was sent by the client.
+ If the return value is non-null, the server will send this connection ID to the client to use in future packets.
+ As future communication doesn't include the connection IDs length, this should either be fixed-length
+ or include the connection ID's length. (see explanation in RFC 9146 4. "cid:")
+
+ The connection ID to use.
+
+
+ RFC 5246 7.2.
+
+
+ This message notifies the recipient that the sender will not send any more messages on this
+ connection.
+
+ Note that as of TLS 1.1, failure to properly close a connection no longer requires that a session not be
+ resumed. This is a change from TLS 1.0 ("The session becomes unresumable if any connection is terminated
+ without proper close_notify messages with level equal to warning.") to conform with widespread
+ implementation practice.
+
+
+
+ An inappropriate message was received.
+
+ This alert is always fatal and should never be observed in communication between proper implementations.
+
+
+
+ This alert is returned if a record is received with an incorrect MAC.
+
+ This alert also MUST be returned if an alert is sent because a TLSCiphertext decrypted in an invalid way:
+ either it wasn't an even multiple of the block length, or its padding values, when checked, weren't
+ correct. This message is always fatal and should never be observed in communication between proper
+ implementations (except when messages were corrupted in the network).
+
+
+
+
+ This alert was used in some earlier versions of TLS, and may have permitted certain attacks against the CBC
+ mode [CBCATT]. It MUST NOT be sent by compliant implementations.
+
+
+
+ A TLSCiphertext record was received that had a length more than 2^14+2048 bytes, or a record
+ decrypted to a TLSCompressed record with more than 2^14+1024 bytes.
+
+ This message is always fatal and should never be observed in communication between proper implementations
+ (except when messages were corrupted in the network).
+
+
+
+ The decompression function received improper input (e.g., data that would expand to excessive
+ length).
+
+ This message is always fatal and should never be observed in communication between proper implementations.
+
+
+
+ Reception of a handshake_failure alert message indicates that the sender was unable to negotiate
+ an acceptable set of security parameters given the options available.
+
+ This is a fatal error.
+
+
+
+
+ This alert was used in SSLv3 but not any version of TLS. It MUST NOT be sent by compliant implementations.
+
+
+
+ A certificate was corrupt, contained signatures that did not verify correctly, etc.
+
+
+ A certificate was of an unsupported type.
+
+
+ A certificate was revoked by its signer.
+
+
+ A certificate has expired or is not currently valid.
+
+
+ Some other (unspecified) issue arose in processing the certificate, rendering it unacceptable.
+
+
+
+ A field in the handshake was out of range or inconsistent with other fields.
+
+ This message is always fatal.
+
+
+
+ A valid certificate chain or partial chain was received, but the certificate was not accepted
+ because the CA certificate could not be located or couldn't be matched with a known, trusted CA.
+
+ This message is always fatal.
+
+
+
+ A valid certificate was received, but when access control was applied, the sender decided not to
+ proceed with negotiation.
+
+ This message is always fatal.
+
+
+
+ A message could not be decoded because some field was out of the specified range or the length of
+ the message was incorrect.
+
+ This message is always fatal and should never be observed in communication between proper
+ implementations (except when messages were corrupted in the network).
+
+
+
+ A handshake cryptographic operation failed, including being unable to correctly verify a signature
+ or validate a Finished message.
+
+ This message is always fatal.
+
+
+
+
+ This alert was used in some earlier versions of TLS. It MUST NOT be sent by compliant implementations.
+
+
+
+ The protocol version the client has attempted to negotiate is recognized but not supported.
+
+
+ (For example, old protocol versions might be avoided for security reasons.) This message is always fatal.
+
+
+
+ Returned instead of handshake_failure when a negotiation has failed specifically because the
+ server requires ciphers more secure than those supported by the client.
+
+ This message is always fatal.
+
+
+
+ An internal error unrelated to the peer or the correctness of the protocol (such as a memory
+ allocation failure) makes it impossible to continue.
+
+ This message is always fatal.
+
+
+
+ This handshake is being canceled for some reason unrelated to a protocol failure.
+
+ If the user cancels an operation after the handshake is complete, just closing the connection by sending a
+ close_notify is more appropriate. This alert should be followed by a close_notify. This message is
+ generally a warning.
+
+
+
+ Sent by the client in response to a hello request or by the server in response to a client hello
+ after initial handshaking.
+
+ Either of these would normally lead to renegotiation; when that is not appropriate, the recipient should
+ respond with this alert. At that point, the original requester can decide whether to proceed with the
+ connection. One case where this would be appropriate is where a server has spawned a process to satisfy a
+ request; the process might receive security parameters (key length, authentication, etc.) at startup, and
+ it might be difficult to communicate changes to these parameters after that point. This message is always a
+ warning.
+
+
+
+ Sent by clients that receive an extended server hello containing an extension that they did not
+ put in the corresponding client hello.
+
+ This message is always fatal.
+
+
+
+ This alert is sent by servers who are unable to retrieve a certificate chain from the URL supplied
+ by the client(see Section 3.3).
+
+ This message MAY be fatal - for example if client authentication is required by the server for the
+ handshake to continue and the server is unable to retrieve the certificate chain, it may send a fatal
+ alert.
+
+
+
+ This alert is sent by servers that receive a server_name extension request, but do not recognize
+ the server name.
+
+ This message MAY be fatal.
+
+
+
+ This alert is sent by clients that receive an invalid certificate status response (see Section 3.6
+ ).
+
+ This message is always fatal.
+
+
+
+ This alert is sent by servers when a certificate hash does not match a client provided
+ certificate_hash.
+
+ This message is always fatal.
+
+
+
+ If the server does not recognize the PSK identity, it MAY respond with an "unknown_psk_identity"
+ alert message.
+
+
+ In the event that the server supports no protocols that the client advertises, then the server
+ SHALL respond with a fatal "no_application_protocol" alert.
+
+
+ If TLS_FALLBACK_SCSV appears in ClientHello.cipher_suites and the highest protocol version
+ supported by the server is higher than the version indicated in ClientHello.client_version, the server MUST
+ respond with a fatal inappropriate_fallback alert[..].
+
+
+ Sent by endpoints that receive a handshake message not containing an extension that is mandatory
+ to send for the offered TLS version or other negotiated parameters.
+
+
+ Sent by servers when a client certificate is desired but none was provided by the client.
+
+
+
+ RFC 5246 7.2
+
+
+ A basic PSK Identity holder.
+
+
+ A basic SRP Identity holder.
+
+
+ A queue for bytes. This file could be more optimized.
+
+
+ The smallest number which can be written as 2^x which is bigger than i.
+
+
+ The buffer where we store our data.
+
+
+ How many bytes at the beginning of the buffer are skipped.
+
+
+ How many bytes in the buffer are valid data.
+
+
+ Add some data to our buffer.
+ A byte-array to read data from.
+ How many bytes to skip at the beginning of the array.
+ How many bytes to read from the array.
+
+
+ The number of bytes which are available in this buffer.
+
+
+ Copy some bytes from the beginning of the data to the provided .
+ The to copy the bytes to.
+ How many bytes to copy.
+
+
+ Read data from the buffer.
+ The buffer where the read data will be copied to.
+ How many bytes to skip at the beginning of buf.
+ How many bytes to read at all.
+ How many bytes from our data to skip.
+
+
+ Return a over some bytes at the beginning of the data.
+
+ How many bytes will be readable.
+ A over the data.
+
+
+ Remove some bytes from our data from the beginning.
+ How many bytes to remove.
+
+
+ Remove data from the buffer.
+ The buffer where the removed data will be copied to.
+ How many bytes to skip at the beginning of buf.
+ How many bytes to read at all.
+ How many bytes from our data to skip.
+
+
+ OutputStream based on a ByteQueue implementation.
+
+
+ Implementation of the RFC 3546 3.3. CertChainType.
+
+
+ Parsing and encoding of a Certificate struct from RFC 4346.
+
+
+ opaque ASN.1Cert<2^24-1>;
+ struct {
+ ASN.1Cert certificate_list<0..2^24-1>;
+ } Certificate;
+
+
+
+
+ an array of representing a certificate chain.
+
+
+ true if this certificate chain contains no certificates, or false otherwise.
+
+
+
+ Encode this to a , and optionally calculate the
+ "end point hash" (per RFC 5929's tls-server-end-point binding).
+ the of the current connection.
+ the to encode to.
+ the to write the "end point hash" to (or null).
+
+
+
+
+ Parse a from a .
+ the to apply during parsing.
+ the of the current connection.
+ the to parse from.
+ the to write the "end point hash" to (or null).
+
+ a object.
+
+
+
+ RFC 8879
+
+
+ Parsing and encoding of a CertificateRequest struct from RFC 4346.
+
+
+ struct {
+ ClientCertificateType certificate_types<1..2^8-1>;
+ DistinguishedName certificate_authorities<3..2^16-1>;
+ } CertificateRequest;
+
+ Updated for RFC 5246:
+
+ struct {
+ ClientCertificateType certificate_types <1..2 ^ 8 - 1>;
+ SignatureAndHashAlgorithm supported_signature_algorithms <2 ^ 16 - 1>;
+ DistinguishedName certificate_authorities <0..2 ^ 16 - 1>;
+ } CertificateRequest;
+
+ Revised for RFC 8446:
+
+ struct {
+ opaque certificate_request_context <0..2 ^ 8 - 1>;
+ Extension extensions <2..2 ^ 16 - 1>;
+ } CertificateRequest;
+
+
+
+
+
+
+
+
+
+ see for valid constants.
+
+ an of .
+
+
+
+
+
+ an array of certificate types
+
+
+
+ an of (or null before TLS 1.2).
+
+
+
+ an optional of . May be non-null from
+ TLS 1.3 onwards.
+
+
+ an of .
+
+
+ Encode this to a .
+ the of the current connection.
+ the to encode to.
+
+
+
+ Parse a from a
+ the of the current connection.
+ the to parse from.
+ a object.
+
+
+
+ an of (possibly null) .
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the of the current connection.
+ the to parse from.
+ a object.
+
+
+
+
+
+
+
+
+
+ Implementation of the RFC 3546 3.6. CertificateStatusRequest.
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ Implementation of the RFC 6961 2.2. CertificateStatusRequestItemV2.
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ RFC 6091
+
+
+ RFC 3546 3.3
+
+
+ see for valid constants.
+ an of .
+
+
+
+
+
+ an of .
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the of the current connection.
+ the to parse from.
+ a object.
+
+
+
+ a value.
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the of the current connection.
+ the to parse from.
+ a object.
+
+
+
+ RFC 5056
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to depend on the
+ particular values (e.g.serialization).
+
+
+
+ RFC 2246 A.5
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to depend on the
+ particular values (e.g. serialization).
+
+
+
+ Encode this to a .
+ the of the current connection.
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ for DTLS this should be non-null; the input is copied to this
+ , minus the cookie field.
+ a object.
+
+
+
+
+
+
+ A combined hash, which implements md5(m) || sha1(m).
+
+
+ RFC 2246 6.1
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to depend on the
+ particular values(e.g.serialization).
+
+
+
+ RFC 2246 6.2.1
+
+
+ Carrier class for Diffie-Hellman group parameters.
+
+
+ Base constructor with the prime factor of (p - 1).
+ the prime modulus.
+ specifies the prime factor of (p - 1).
+ the base generator.
+
+
+
+ Standard Diffie-Hellman groups from various IETF specifications.
+
+
+ Base class for a TlsCrypto implementation that provides some needed methods from elsewhere in the impl
+ package.
+
+
+ Base class for a TlsSecret implementation which captures common code and fields.
+
+
+ Base constructor.
+ the byte[] making up the secret value.
+
+
+
+
+
+ Credentialed class generating agreed secrets from a peer's public key for our end of the TLS connection
+ using the BC light-weight API.
+
+
+ Credentialed class decrypting RSA encrypted secrets sent from a peer for our end of the TLS connection
+ using the BC light-weight API.
+
+
+ Credentialed class for generating signatures based on the use of primitives from the BC light-weight API.
+
+
+ HMAC implementation based on original internet draft for HMAC (RFC 2104).
+
+ The difference is that padding is concatenated versus XORed with the key, e.g:
+ H(K + opad, H(K + ipad, text))
+
+
+
+ Base constructor for one of the standard digest algorithms for which the byteLength is known.
+
+
+ Behaviour is undefined for digests other than MD5 or SHA1.
+
+ the digest.
+
+
+ Reset the mac generator.
+
+
+ Implementation class for a single X.509 certificate based on the BC light-weight API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Class for providing cryptographic services for TLS based on implementations in the BC light-weight API.
+
+ This class provides default implementations for everything. If you need to customise it, extend the class
+ and override the appropriate methods.
+
+
+
+ Support class for ephemeral Diffie-Hellman using the BC light-weight library.
+
+
+ BC light-weight support class for Diffie-Hellman key pair generation and key agreement over a
+ specified Diffie-Hellman configuration.
+
+
+
+
+
+
+
+
+ Implementation class for generation of the raw DSA signature type using the BC light-weight API.
+
+
+
+ Implementation class for the verification of the raw DSA signature type using the BC light-weight API.
+
+
+
+ BC light-weight base class for the signers implementing the two DSA style algorithms from FIPS PUB
+ 186-4: DSA and ECDSA.
+
+
+ BC light-weight base class for the verifiers supporting the two DSA style algorithms from FIPS PUB
+ 186-4: DSA and ECDSA.
+
+
+ Support class for ephemeral Elliptic Curve Diffie-Hellman using the BC light-weight library.
+
+
+ EC domain class for generating key pairs and performing key agreement.
+
+
+
+
+
+ Implementation class for generation of ECDSA signatures in TLS 1.3+ using the BC light-weight API.
+
+
+
+ Implementation class for generation of the raw ECDSA signature type using the BC light-weight API.
+
+
+
+ Implementation class for the verification of the raw ECDSA signature type using the BC light-weight
+ API.
+
+
+ Implementation class for a single X.509 certificate based on the BC light-weight API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Operator supporting the generation of RSASSA-PSS signatures using the BC light-weight API.
+
+
+ Operator supporting the verification of RSASSA-PSS signatures using the BC light-weight API.
+
+
+ Operator supporting the generation of RSASSA-PKCS1-v1_5 signatures using the BC light-weight API.
+
+
+
+ Operator supporting the verification of RSASSA-PKCS1-v1_5 signatures using the BC light-weight API.
+
+
+
+ BC light-weight support class for handling TLS secrets and deriving key material and other secrets
+ from them.
+
+
+ Support class for X25519 using the BC light-weight library.
+
+
+ Support class for X448 using the BC light-weight library.
+
+
+ A generic TLS 1.2 AEAD cipher.
+
+
+
+
+
+ Base interface for services supporting AEAD encryption/decryption.
+
+
+ Set the key to be used by the AEAD cipher implementation supporting this service.
+ array holding the AEAD cipher key.
+ offset into the array the key starts at.
+ length of the key in the array.
+
+
+
+ Initialise the parameters for the AEAD operator.
+ the nonce.
+ MAC size in bytes.
+ any additional data to be included in the MAC calculation.
+ if the parameters are inappropriate.
+
+
+ Return the maximum size of the output for input of inputLength bytes.
+ the length (in bytes) of the proposed input.
+ the maximum size of the output.
+
+
+ Perform the cipher encryption/decryption returning the output in output.
+
+ Note: we have to use DoFinal() here as it is the only way to guarantee output from the underlying cipher.
+
+ array holding input data to the cipher.
+ offset into input array data starts at.
+ length of the input data in the array.
+ array to hold the cipher output.
+ offset into output array to start saving output.
+ the amount of data written to output.
+ in case of failure.
+
+
+ Perform the cipher encryption/decryption returning the output in output.
+
+ Note: we have to use DoFinal() here as it is the only way to guarantee output from the underlying cipher.
+
+ any additional data to be included in the MAC calculation.
+ array holding input data to the cipher.
+ offset into input array data starts at.
+ length of the input data in the array.
+ array to hold the cipher output.
+ offset into output array to start saving output.
+ the amount of data written to output.
+ in case of failure.
+
+
+ A generic TLS 1.0-1.2 block cipher. This can be used for AES or 3DES for example.
+
+
+
+
+
+ Interface for block cipher services.
+
+
+ Set the key to be used by the block cipher implementation supporting this service.
+ array holding the block cipher key.
+ offset into the array the key starts at.
+ length of the key in the array.
+
+
+
+ Initialise the parameters for operator.
+ array holding the initialization vector (IV).
+ offset into the array the IV starts at.
+ length of the IV in the array.
+ if the parameters are inappropriate.
+
+
+ Perform the cipher encryption/decryption returning the output in output.
+
+ Note: we have to use DoFinal() here as it is the only way to guarantee output from the underlying cipher.
+
+ array holding input data to the cipher.
+ offset into input array data starts at.
+ length of the input data in the array.
+ array to hold the cipher output.
+ offset into output array to start saving output.
+ the amount of data written to output.
+ in case of failure.
+
+
+ Return the blocksize (in bytes) of the underlying block cipher.
+ the cipher's blocksize.
+
+
+ Useful utility methods.
+
+
+ The NULL cipher.
+
+
+
+
+
+ A generic TLS MAC implementation, acting as an HMAC based on some underlying Digest.
+
+
+ Generate a new instance of a TlsMac.
+ the TLS client context specific crypto parameters.
+ The MAC to use.
+
+
+ Base interface for a generic TLS MAC implementation for use with a bulk cipher.
+
+
+ Return the output length (in bytes) of this MAC.
+ The output length of this MAC.
+
+
+ Calculate the MAC for some given data.
+ The sequence number of the record.
+ The content type of the message.
+ A byte array containing the message.
+ The number of bytes to skip, before the message starts.
+ The length of the message.
+ A new byte array containing the MAC value.
+
+
+ Constant time calculation of the MAC for some given data with a given expected length.
+ The sequence number of the record.
+ The content type of the message.
+ A byte array containing the message.
+ The number of bytes to skip, before the message starts.
+ The length of the message.
+ The expected length of the full message.
+ Random data for padding out the MAC calculation if required.
+ A new byte array containing the MAC value.
+
+
+ Carrier class for SRP-6 group parameters.
+
+
+ Base constructor.
+ the n value.
+ the g value.
+
+
+ A selection of standard groups for SRP-6.
+
+
+
+
+
+
+
+
+ Base interface for ephemeral key agreement calculator.
+
+
+ Generate an ephemeral key pair, returning the encoding of the public key.
+ a byte encoding of the public key.
+
+
+
+ Pass in the public key for the peer to the agreement calculator.
+ a byte encoding of the peer public key.
+
+
+
+ Calculate the agreed secret based on the calculator's current state.
+ the calculated secret.
+
+
+
+ Interface providing the functional representation of a single X.509 certificate.
+
+
+ Return an encryptor based on the public key in this certificate.
+
+ a based on this certificate's public key.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ the OID of this certificate's 'signatureAlgorithm', as a string.
+
+
+
+
+
+
+
+
+
+
+ true if (and only if) this certificate can be used to verify the given signature algorithm.
+
+
+
+
+
+
+
+
+
+
+
+ Base interface for a TLS bulk cipher.
+
+
+ Return the maximum input size for a ciphertext given a maximum output size for the plaintext of
+ plaintextLimit bytes.
+ the maximum output size for the plaintext.
+ the maximum input size of the ciphertext for plaintextlimit bytes of output.
+
+
+ Return the maximum output size for a ciphertext given an actual input plaintext size of
+ plaintextLength bytes and a maximum input plaintext size of plaintextLimit bytes.
+ the actual input size for the plaintext.
+ the maximum input size for the plaintext.
+ the maximum output size of the ciphertext for plaintextlimit bytes of input.
+
+
+ Return the maximum size for the plaintext given ciphertextlimit bytes of ciphertext.
+ the maximum number of bytes of ciphertext.
+ the maximum size of the plaintext for ciphertextlimit bytes of input.
+
+
+ Encode the passed in plaintext using the current bulk cipher.
+ sequence number of the message represented by plaintext.
+ content type of the message represented by plaintext.
+ used for the record.
+ extra bytes to allocate at start of returned byte array.
+ array holding input plaintext to the cipher.
+ offset into input array the plaintext starts at.
+ length of the plaintext in the array.
+ A containing the result of encoding (after 'headerAllocation' unused
+ bytes).
+
+
+
+ Decode the passed in ciphertext using the current bulk cipher.
+ sequence number of the message represented by ciphertext.
+ content type used in the record for this message.
+ used for the record.
+ array holding input ciphertext to the cipher.
+ offset into input array the ciphertext starts at.
+ length of the ciphertext in the array.
+ A containing the result of decoding.
+
+
+
+
+
+
+
+
+
+ Service and object creation interface for the primitive types and services that are associated with
+ cryptography in the API.
+
+
+ Return true if this TlsCrypto would use a stream verifier for any of the passed in algorithms.
+
+ This method is only relevant to handshakes negotiating (D)TLS 1.2.
+ A list of
+ values.
+ true if this instance would use a stream verifier for any of the passed in algorithms, otherwise
+ false.
+
+
+ Return true if this TlsCrypto would use a stream verifier for any of the passed in algorithms.
+
+ This method is only relevant to handshakes negotiating (D)TLS versions older than 1.2.
+ An array of values.
+ true if this instance would use a stream verifier for any of the passed in algorithms, otherwise
+ false.
+
+
+ Return true if this TlsCrypto can support the passed in hash algorithm.
+ the algorithm of interest.
+ true if cryptoHashAlgorithm is supported, false otherwise.
+
+
+ Return true if this TlsCrypto can support the passed in signature algorithm (not necessarily in
+ combination with EVERY hash algorithm).
+ the algorithm of interest.
+ true if cryptoSignatureAlgorithm is supported, false otherwise.
+
+
+ Return true if this TlsCrypto can support DH key agreement.
+ true if this instance can support DH key agreement, false otherwise.
+
+
+ Return true if this TlsCrypto can support ECDH key agreement.
+ true if this instance can support ECDH key agreement, false otherwise.
+
+
+ Return true if this TlsCrypto can support the passed in block/stream encryption algorithm.
+
+ the algorithm of interest.
+ true if encryptionAlgorithm is supported, false otherwise.
+
+
+ Return true if this TlsCrypto can support HKDF with the passed in hash algorithm.
+ the algorithm of interest.
+ true if HKDF is supported with cryptoHashAlgorithm, false otherwise.
+
+
+ Return true if this TlsCrypto can support the passed in MAC algorithm.
+ the algorithm of interest.
+ true if macAlgorithm is supported, false otherwise.
+
+
+ Return true if this TlsCrypto supports the passed in named group
+ value.
+ true if this instance supports the passed in named group value.
+
+
+
+ Return true if this TlsCrypto can support RSA encryption/decryption.
+ true if this instance can support RSA encryption/decryption, false otherwise.
+
+
+ Return true if this TlsCrypto can support the passed in signature algorithm (not necessarily in
+ combination with EVERY hash algorithm).
+ true if signatureAlgorithm is supported, false otherwise.
+
+
+ Return true if this TlsCrypto can support the passed in signature algorithm.
+ the algorithm of interest.
+ true if sigAndHashAlgorithm is supported, false otherwise.
+
+
+ Return true if this TlsCrypto can support the passed in signature scheme.
+ the scheme of interest.
+ true if signatureScheme is supported, false otherwise.
+
+
+ Return true if this TlsCrypto can support SRP authentication.
+ true if this instance can support SRP authentication, false otherwise.
+
+
+ Create a TlsSecret object based on provided data.
+ the data to base the TlsSecret on.
+ a TlsSecret based on the provided data.
+
+
+ Create a TlsSecret object containing a randomly-generated RSA PreMasterSecret
+ the client version to place in the first 2 bytes
+ a TlsSecret containing the PreMasterSecret.
+
+
+ Return the primary (safest) SecureRandom for this crypto.
+ a SecureRandom suitable for key generation.
+
+
+ Create a TlsCertificate from an ASN.1 binary encoding of an X.509 certificate.
+ DER/BER encoding of the certificate of interest.
+ a TlsCertificate.
+ if there is an issue on decoding or constructing the certificate.
+
+
+ Create a TlsCertificate from an ASN.1 binary encoding of a certificate.
+ Certificate type as per IANA TLS Certificate Types registry.
+ DER/BER encoding of the certificate of interest.
+ a TlsCertificate.
+ if there is an issue on decoding or constructing the certificate.
+
+
+ Create a cipher for the specified encryption and MAC algorithms.
+
+ See enumeration classes , for appropriate
+ argument values.
+
+ context specific parameters.
+ the encryption algorithm to be employed by the cipher.
+ the MAC algorithm to be employed by the cipher.
+ a implementing the encryption and MAC algorithms.
+
+
+
+ Create a domain object supporting the domain parameters described in dhConfig.
+ the config describing the DH parameters to use.
+ a TlsDHDomain supporting the parameters in dhConfig.
+
+
+ Create a domain object supporting the domain parameters described in ecConfig.
+ the config describing the EC parameters to use.
+ a TlsECDomain supporting the parameters in ecConfig.
+
+
+ Adopt the passed in secret, creating a new copy of it.
+ the secret to make a copy of.
+ a TlsSecret based on the original secret.
+
+
+ Create a suitable hash for the hash algorithm identifier passed in.
+
+ See enumeration class for appropriate argument values.
+
+ the hash algorithm the hash needs to implement.
+ a .
+
+
+ Create a suitable HMAC for the MAC algorithm identifier passed in.
+
+ See enumeration class for appropriate argument values.
+
+ the MAC algorithm the HMAC needs to match.
+ a .
+
+
+ Create a suitable HMAC using the hash algorithm identifier passed in.
+
+ See enumeration class for appropriate argument values.
+
+ the hash algorithm the HMAC should use.
+ a .
+
+
+ Create a nonce generator.
+
+ Each call should construct a new generator, and the generator should be returned from this call only after
+ automatically seeding from this 's entropy source, and from the provided additional
+ seed material. The output of each returned generator must be completely independent of the others.
+
+ context-specific seed material
+ a .
+
+
+ Create an SRP-6 client.
+ client config.
+ an initialised SRP6 client object.
+
+
+ Create an SRP-6 server.
+ server config.
+ the SRP6 verifier value.
+ an initialised SRP6 server object.
+
+
+ Create an SRP-6 verifier generator.
+ generator config.
+ an initialized SRP6 verifier generator.
+
+
+ Setup an initial "secret" for a chain of HKDF calls (RFC 5869), containing a string of HashLen
+ zeroes.
+ the hash algorithm to instantiate HMAC with. See
+ for values.
+
+
+ Basic exception class for crypto services to pass back a cause.
+
+
+ Carrier class for context-related parameters needed for creating secrets and ciphers.
+
+
+ Base constructor.
+ the context for this parameters object.
+
+
+
+
+
+ Basic config for Diffie-Hellman.
+
+
+ Domain interface to service factory for creating Diffie-Hellman operators.
+
+
+ Return an agreement operator suitable for ephemeral Diffie-Hellman.
+ a key agreement operator.
+
+
+ Carrier class for Elliptic Curve parameter configuration.
+
+
+ Return the group used.
+ the named group used.
+
+
+ Domain interface to service factory for creating Elliptic-Curve (EC) based operators.
+
+
+ Return an agreement operator suitable for ephemeral EC Diffie-Hellman.
+ a key agreement operator.
+
+
+ Base interface for an encryptor.
+
+
+ Encrypt data from the passed in input array.
+ byte array containing the input data.
+ offset into input where the data starts.
+ the length of the data to encrypt.
+ the encrypted data.
+
+
+
+ Interface for message digest, or hash, services.
+
+
+ Update the hash with the passed in input.
+ input array containing the data.
+ offset into the input array the input starts at.
+ the length of the input data.
+
+
+ Return calculated hash for any input passed in.
+ the hash value.
+
+
+ Return a clone of this hash object representing its current state.
+ a clone of the current hash.
+
+
+ Reset the hash underlying this service.
+
+
+ Interface for MAC services based on HMAC.
+
+
+ Return the internal block size for the message digest underlying this HMAC service.
+ the internal block size for the digest (in bytes).
+
+
+ Interface for MAC services.
+
+
+ Set the key to be used by the MAC implementation supporting this service.
+ array holding the MAC key.
+ offset into the array the key starts at.
+ length of the key in the array.
+
+
+ Update the MAC with the passed in input.
+ input array containing the data.
+ offset into the input array the input starts at.
+ the length of the input data.
+
+
+ Return calculated MAC for any input passed in.
+ the MAC value.
+
+
+ Write the calculated MAC to an output buffer.
+ output array to write the MAC to.
+ offset into the output array to write the MAC to.
+
+
+ Return the length of the MAC generated by this service.
+ the MAC length.
+
+
+ Reset the MAC underlying this service.
+
+
+ Generate a nonce byte[] string.
+ the length, in bytes, of the nonce to generate.
+ the nonce value.
+
+
+ The cipher for TLS_NULL_WITH_NULL_NULL.
+
+
+ Interface supporting the generation of key material and other SSL/TLS secret values from PRFs.
+
+
+
+ Calculate an HMAC with this secret's data as the key.
+ the hash algorithm to instantiate HMAC with. See
+ for values.
+ array containing the input data.
+ offset into the input array the input starts at.
+ the length of the input data.
+
+
+ Return a new secret based on applying a PRF to this one.
+ PRF algorithm to use.
+ the label details.
+ the seed details.
+ the size (in bytes) of the secret to generate.
+ the new secret.
+
+
+ Destroy the internal state of the secret.
+
+ After this call, any attempt to use the will result in an
+ being thrown.
+
+
+
+ Return an encrypted copy of the data this secret is based on.
+ the encryptor to use for protecting the internal data.
+ an encrypted copy of this secret's internal data.
+
+
+
+ Return the internal data from this secret.
+
+ The does not keep a copy of the data. After this call, any attempt to use the
+ will result in an being thrown.
+
+ the secret's internal data.
+
+
+ RFC 5869 HKDF-Expand function, with this secret's data as the pseudo-random key ('prk').
+ the hash algorithm to instantiate HMAC with. See
+ for values.
+ optional context and application specific information (can be zero-length).
+ length of output keying material in octets.
+ output keying material (of 'length' octets).
+
+
+ RFC 5869 HKDF-Extract function, with this secret's data as the 'salt'.
+
+ The does not keep a copy of the data. After this call, any attempt to use
+ the will result in an being thrown.
+
+ the hash algorithm to instantiate HMAC with. See
+ for values.
+ input keying material.
+ a pseudo-random key (of HashLen octets).
+
+
+ Base interface for a TLS signer that works on raw message digests.
+
+
+ Generate an encoded signature based on the passed in hash.
+ the signature algorithm to use.
+ the hash calculated for the signature.
+ an encoded signature.
+ in case of an exception processing the hash.
+
+
+
+
+
+ Basic interface for an SRP-6 client implementation.
+
+
+ Generates the secret S given the server's credentials
+ The server's credentials
+ Client's verification message for the server
+ If server's credentials are invalid
+
+
+ Generates client's credentials given the client's salt, identity and password
+ The salt used in the client's verifier.
+ The user's identity (eg. username)
+ The user's password
+ Client's public value to send to server
+
+
+ Basic interface for an SRP-6 server implementation.
+
+
+ Generates the server's credentials that are to be sent to the client.
+ The server's public value to the client
+
+
+ Processes the client's credentials. If valid the shared secret is generated and returned.
+
+ The client's credentials.
+ A shared secret .
+ If client's credentials are invalid.
+
+
+ Base interface for a generator for SRP-6 verifiers.
+
+
+ Creates a new SRP-6 verifier value.
+ The salt to use, generally should be large and random
+ The user's identifying information (eg. username)
+ The user's password
+ A new verifier for use in future SRP authentication
+
+
+ Basic config for SRP.
+
+
+ Return the (N, g) values used in SRP-6.
+ (N, g) as a BigInteger array (N=[0], g=[1]).
+
+
+ Set the (N, g) values used for SRP-6.
+ (N, g) as a BigInteger array (N=[0], g=[1]).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base interface for a TLS verifier that works with signatures and either raw message digests, or entire
+ messages.
+
+
+
+
+
+ Return true if the passed in signature and hash represent a real signature.
+ the signature object containing the signature to be verified.
+ the hash calculated for the signature.
+ true if signature verifies, false otherwise.
+ in case of an exception verifying signature.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base interface for an object sending and receiving DTLS data.
+
+
+ Container class for generating signatures that carries the signature type, parameters, public key
+ certificate and public key's associated signer object.
+
+
+ Accept named groups and various standard DH groups with 'P' at least
+ bits.
+
+
+ Accept named groups and various standard DH groups with 'P' at least the specified number of bits.
+
+ the minimum bitlength of 'P'.
+
+
+ Accept named groups and a custom set of group parameters, subject to a minimum bitlength for 'P'.
+
+ a list of acceptable s.
+ the minimum bitlength of 'P'.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Accept only the group parameters specified in RFC 5054 Appendix A.
+
+
+ Specify a custom set of acceptable group parameters.
+ an of acceptable .
+
+
+ Buffers input until the hash algorithm is determined.
+
+
+
+
+
+
+
+
+ a (or null before TLS 1.2).
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the of the current connection.
+ the to parse from.
+ a object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Check that there are no "extra" messages left in the current inbound flight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 4347 4.1.2.5 Anti-replay
+
+ Support fast rejection of duplicate records by maintaining a sliding receive window
+
+
+
+ Check whether a received record with the given sequence number should be rejected as a duplicate.
+
+ the 48-bit DTLSPlainText.sequence_number field of a received record.
+ true if the record should be discarded without further processing.
+
+
+ Report that a received record with the given sequence number passed authentication checks.
+
+ the 48-bit DTLSPlainText.sequence_number field of an authenticated record.
+ indicates whether is now the latest confirmed
+ sequence number.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The record is newer (by epoch and sequence number) than any record received previously.
+
+
+ The record includes the (valid) connection ID (RFC 9146) for this connection.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Implements cookie generation/verification for a DTLS server as described in RFC 4347,
+ 4.2.1. Denial of Service Countermeasures.
+
+
+ RFC 4347 4.2.1 additionally recommends changing the secret frequently. This class does not handle that
+ internally, so the instance should be replaced instead.
+
+
+
+ RFC 4492 5.4
+
+
+ Indicates the elliptic curve domain parameters are conveyed verbosely, and the
+ underlying finite field is a prime field.
+
+
+ Indicates the elliptic curve domain parameters are conveyed verbosely, and the
+ underlying finite field is a characteristic-2 field.
+
+
+ Indicates that a named curve is used. This option SHOULD be used when applicable.
+
+
+ RFC 4492 5.1.2
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to depend on the
+ particular values (e.g. serialization).
+
+
+
+ RFC 5705
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 5246 7.4.1.4.1
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ RFC 6520 3.
+
+
+ RFC 6066
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to depend on the
+ particular values (e.g. serialization).
+
+
+
+
+
+
+
+
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ RFC 8446 4.6.3
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to depend on the
+ particular values (e.g. serialization).
+
+
+
+ RFC 7919
+
+
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to depend on the
+ particular values (e.g. serialization).
+
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ RFC 3546 3.6
+
+
+ an of , specifying the list of
+ trusted OCSP responders. An empty list has the special meaning that the responders are implicitly known to
+ the server - e.g., by prior arrangement.
+ OCSP request extensions. A null value means that there are no extensions.
+
+
+
+ an of .
+
+
+ OCSP request extensions.
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse an from a .
+ the to parse from.
+ an object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 5246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to depend on the
+ particular values (e.g. serialization).
+
+
+
+ RFC 7301 Represents a protocol name for use with ALPN.
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+
+
+
+
+
+
+ An implementation of the TLS 1.0/1.1/1.2 record layer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Connection ID we use during communication to the peer.
+
+
+ Connection ID our peer uses for communication to us.
+
+
+ Encode this to a .
+ the of the current connection.
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ RFC 6066 3. Server Name Indication
+
+ Current implementation uses this guidance: "For backward compatibility, all future data structures associated
+ with new NameTypes MUST begin with a 16-bit length field. TLS MAY treat provided server names as opaque data
+ and pass the names and types to the application.". RFC 6066 specifies ASCII encoding for host_name (possibly
+ using A-labels for IDNs), but note that the previous version (RFC 4366) specified UTF-8 encoding (see RFC 6066
+ Appendix A). For maximum compatibility, it is recommended that client code tolerate receiving UTF-8 from the
+ peer, but only generate ASCII itself.
+
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ an of .
+
+
+ an of .
+
+
+ Encode this to a .
+ the to encode to .
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+
+
+
+
+
+
+ RFC 5246 7.4.1.4.1 (in RFC 2246, there were no specific values assigned)
+
+
+ RFC 5246 7.4.1.4.1
+
+
+
+
+
+
+
+
+
+
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ For TLS 1.3+ usage, some signature schemes are constrained to use a particular
+ ({@link NamedGroup}. Not relevant for TLS 1.2 and below.
+
+
+ An implementation of that simulates the existence of "unknown"
+ identities to obscure the fact that there is no verifier for them.
+
+
+ Create a that implements the algorithm from RFC 5054
+ 2.5.1.3.
+
+ the defining the group that SRP is operating in.
+ the secret "seed key" referred to in RFC 5054 2.5.1.3.
+ an instance of .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 4680
+
+
+ Base interface to provide TLS authentication credentials.
+
+
+ Called by the protocol handler to report the server certificate.
+
+ Note: this method is responsible for certificate verification and validation.
+
+ the server certificate received.
+
+
+
+ Return client credentials in response to server's certificate request.
+
+ The returned value may be null, or else it MUST implement exactly one of
+ , , or
+ , depending on the key exchange that was negotiated and the details of
+ the .
+
+ details of the certificate request.
+ a object or null for no client authentication.
+
+
+
+ Return the session this client wants to resume, if any.
+
+ Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.
+
+ A representing the resumable session to be used for this connection, or
+ null to use a new session.
+
+
+
+ Return the external PSKs to offer in the ClientHello.
+ This will only be called when TLS 1.3 or higher is amongst the offered protocol versions.
+ an of instances, or null if none should be
+ offered.
+
+
+ (Int32 -> byte[])
+
+
+
+ If this client is offering TLS 1.3 or higher, this method may be called to determine for which
+ groups a key share should be included in the initial ClientHello.
+
+ Groups that were not included in the supported_groups extension (by will
+ be ignored. The protocol will then add a suitable key_share extension to the ClientHello extensions.
+
+ an of named group values, possibly empty or
+ null.
+
+
+
+
+
+
+ Notifies the client of the session that will be offered in ClientHello for resumption, if any.
+
+
+ This will be either the session returned from {@link #getSessionToResume()} or null if that session was
+ unusable. NOTE: the actual negotiated session_id is notified by .
+
+ The representing the resumable session to be offered for
+ this connection, or null if there is none.
+
+
+
+ Notifies the client of the session_id sent in the ServerHello.
+
+
+
+
+
+
+
+ The protocol implementation validates that any server extensions received correspond to client
+ extensions sent.
+
+ If further processing of the server extensions is needed, it can be done in this callback. NOTE: This is
+ not called for session resumption handshakes.
+
+ (Int32 -> byte[])
+
+
+
+ (SupplementalDataEntry)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (SupplementalDataEntry)
+
+
+
+ RFC 5077 3.3. NewSessionTicket Handshake Message
+
+ This method will be called (only) when a NewSessionTicket handshake message is received. The ticket is
+ opaque to the client and clients MUST NOT examine the ticket under the assumption that it complies with e.g.
+ RFC 5077 4. "Recommended Ticket Construction".
+
+ The ticket.
+
+
+
+ Marker interface to distinguish a TLS client context.
+
+
+ Constructor for non-blocking mode.
+
+ When data is received, use to provide the received ciphertext,
+ then use to read the corresponding cleartext.
+ Similarly, when data needs to be sent, use
+ to provide the cleartext, then use to get the
+ corresponding ciphertext.
+
+
+
+ Constructor for blocking mode.
+ The of data to/from the server.
+
+
+ Constructor for blocking mode.
+ The of data from the server.
+ The of data to the server.
+
+
+ Initiates a TLS handshake in the role of client.
+
+ In blocking mode, this will not return until the handshake is complete. In non-blocking mode, use
+ to receive a callback when the handshake is complete.
+
+ The to use for the handshake.
+ If in blocking mode and handshake was not successful.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base interface for a TLS context implementation.
+
+
+ Return true if this context is for a server, false otherwise.
+ true for a server based context, false for a client based one.
+
+
+ Used to get the resumable session, if any, used by this connection.
+
+ Only available after the handshake has successfully completed.
+
+ A representing the resumable session used by this connection, or null if
+ no resumable session available.
+
+
+
+ Used to get the session information for this connection.
+
+ Only available after the handshake has successfully completed. Use
+ to find out if the session is resumable.
+
+ A representing the session used by this connection.
+
+
+
+ Export the value of the specified channel binding.
+
+ Only available after the handshake has successfully completed.
+
+ A constant specifying the channel binding to
+ export.
+ A copy of the channel binding data as a byte[], or null if the binding could not be
+ determined.
+
+
+ Export (early data) keying material according to RFC 5705: "Keying Material Exporters for TLS", as
+ updated for TLS 1.3 (RFC 8446).
+
+ NOTE: for use in settings where an exporter is needed for 0-RTT data.
+
+ indicates which application will use the exported keys.
+ allows the application using the exporter to mix its own data with the TLS PRF
+ for the exporter output.
+ the number of bytes to generate.
+ a pseudorandom bit string of 'length' bytes generated from the (exporter_)master_secret.
+
+
+ Export keying material according to RFC 5705: "Keying Material Exporters for TLS", as updated for
+ TLS 1.3 (RFC 8446) when negotiated.
+ indicates which application will use the exported keys.
+ allows the application using the exporter to mix its own data with the TLS PRF
+ for the exporter output.
+ the number of bytes to generate.
+ a pseudorandom bit string of 'length' bytes generated from the (exporter_)master_secret.
+
+
+ Support interface for generating a secret based on the credentials sent by a TLS peer.
+
+
+ Calculate an agreed secret based on our credentials and the public key credentials of our peer.
+
+ public key certificate of our TLS peer.
+ the agreed secret.
+ in case of an exception on generation of the secret.
+
+
+ Base interface for a class that decrypts TLS secrets.
+
+
+ Decrypt the passed in cipher text using the parameters available.
+ the parameters to use for the decryption.
+ the cipher text containing the secret.
+ a TLS secret.
+ on a parsing or decryption error.
+
+
+ Support interface for generating a signature based on our private credentials.
+
+
+ Generate a signature against the passed in hash.
+ a message digest calculated across the message the signature is to apply to.
+ an encoded signature.
+ if the hash cannot be processed, or there is an issue with the private
+ credentials.
+
+
+ Return the algorithm IDs for the signature algorithm and the associated hash it uses.
+ the full algorithm details for the signature.
+
+
+
+
+
+ Base interface for interfaces/classes carrying TLS credentials.
+
+
+ Return the certificate structure representing our identity.
+ our certificate structure.
+
+
+ (D)TLS DH_anon key exchange.
+
+
+ Interface for verifying explicit Diffie-Hellman group parameters.
+
+
+ Check whether the given DH group is acceptable for use.
+ the to check.
+ true if (and only if) the specified group is acceptable.
+
+
+ (D)TLS DH key exchange.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (D)TLS ECDH_anon key exchange (see RFC 4492).
+
+
+ (D)TLS ECDHE key exchange (see RFC 4492).
+
+
+ (D)TLS ECDH key exchange (see RFC 4492).
+
+
+ (Int32 -> byte[])
+ an of .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ an of .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ an of .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ an of .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base interface for an object that can calculate a handshake hash.
+
+
+
+
+
+ A generic interface for key exchange implementations in (D)TLS.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Interface for a key exchange factory offering a variety of specific algorithms.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This exception will be thrown (only) when the connection is closed by the peer without sending a
+ close_notify warning alert.
+
+ If this happens, the TLS protocol cannot rule out truncation of the connection data (potentially
+ malicious). It may be possible to check for truncation via some property of a higher level protocol
+ built upon TLS, e.g.the Content-Length header for HTTPS.
+
+
+
+ Object Identifiers associated with TLS extensions.
+
+
+ RFC 7633
+
+
+ Base interface for a (D)TLS endpoint.
+
+
+
+
+
+ Notifies the peer that a new handshake is about to begin.
+
+
+
+ Specify the timeout, in milliseconds, to use for the complete handshake process.
+
+ NOTE: Currently only respected by DTLS protocols. Negative values are not allowed. A timeout of zero means
+ an infinite timeout (i.e.the handshake will never time out).
+
+ the handshake timeout, in milliseconds.
+
+
+
+ This option is provided as a last resort for interoperability with TLS peers that fail to correctly send a
+ close_notify alert at end of stream. Implementations SHOULD return true; caution is advised if returning
+ false without a full understanding of the implications.
+
+
+
+ This implementation supports RFC 7627 and will always negotiate the extended_master_secret
+ extension where possible. When connecting to a peer that does not offer/accept this extension, it is
+ recommended to abort the handshake.This option is provided for interoperability with legacy peers, although
+ some TLS features will be disabled in that case (see RFC 7627 5.4).
+
+ true if the handshake should be aborted when the peer does not negotiate the
+ extended_master_secret extension, or false to support legacy interoperability.
+
+
+ See RFC 5246 6.2.3.2. Controls whether block cipher encryption may randomly add extra padding
+ beyond the minimum.
+
+ Note that in configurations where this is known to be potential security risk this setting will be ignored
+ (and extended padding disabled). Extra padding is always supported when decrypting received records.
+
+ true if random extra padding should be added during block cipher encryption, or
+ false to always use the minimum amount of required padding.
+
+
+ draft-mathewson-no-gmtunixtime-00 2. "If existing users of a TLS implementation may rely on
+ gmt_unix_time containing the current time, we recommend that implementors MAY provide the ability to set
+ gmt_unix_time as an option only, off by default.".
+
+ NOTE: For a server that has negotiated TLS 1.3 (or later), or a client that has offered TLS 1.3 (or later),
+ this is not called and gmt_unix_time is not used.
+
+ true if the current time should be used in the gmt_unix_time field of Random, or
+ false if gmt_unix_time should contain a cryptographically random value.
+
+
+ RFC 5746 3.4/3.6. In case this is false, peers may want to terminate the handshake instead of
+ continuing; see Section 4.1/4.3 for discussion.
+
+ NOTE: TLS 1.3 forbids renegotiation, so this is never called when TLS 1.3 (or later) was negotiated.
+
+
+
+
+
+
+
+ This method will be called when an alert is raised by the protocol.
+
+
+ A human-readable message explaining what caused this alert. May be null.
+ The that caused this alert to be raised. May be null.
+
+
+ This method will be called when an alert is received from the remote peer.
+
+
+
+
+ Notifies the peer that the handshake has been successfully completed.
+
+
+
+ Return a instance that will control the generation of heartbeats
+ locally (if permitted by the remote peer), or null to not generate heartbeats. Heartbeats are described in
+ RFC 6520.
+ an instance of .
+
+
+
+ Return the heartbeat mode applicable to the remote peer. Heartbeats are described in RFC 6520.
+
+
+ See enumeration class for appropriate return values.
+
+ the value.
+
+
+ Indicates whether a DTLS connection should ignore corrupt records (bad_record_mac) instead of
+ failing the connection.
+ Called only once at the start of a connection and applies throughout.
+ The value true to ignore corrupt DTLS records, or false to fail the connection.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This method is called, when a change cipher spec message is received.
+ If the message has an invalid content or the handshake is not in the correct
+ state.
+
+
+ Read data from the network.
+
+ The method will return immediately, if there is still some data left in the buffer, or block until some
+ application data has been read from the network.
+
+ The buffer where the data will be copied to.
+ The position where the data will be placed in the buffer.
+ The maximum number of bytes to read.
+ The number of bytes read.
+ If something goes wrong during reading data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Write some application data.
+
+ Fragmentation is handled internally. Usable in both blocking/non-blocking modes.
+ In blocking mode, the output will be automatically sent via the underlying transport. In non-blocking mode,
+ call to get the output bytes to send to the peer.
+ This method must not be called until after the initial handshake is complete. Attempting to call it earlier
+ will result in an .
+
+ The buffer containing application data to send.
+ The offset at which the application data begins
+ The number of bytes of application data.
+ If called before the initial handshake has completed.
+
+ If connection is already closed, or for encryption or transport errors.
+
+
+
+
+
+
+ The secure bidirectional stream for this connection
+ Only allowed in blocking mode.
+
+
+ Should be called in non-blocking mode when the input data reaches EOF.
+
+
+
+
+
+
+
+
+
+ Equivalent to OfferInput(input, 0, input.Length).
+ The input buffer to offer.
+
+
+
+
+ Offer input from an arbitrary source.
+ Only allowed in non-blocking mode.
+ This method will decrypt and process all records that are fully available. If only part of a record is
+ available, the buffer will be retained until the remainder of the record is offered.
+ If any records containing application data were processed, the decrypted data can be obtained using
+ . If any records containing protocol data were processed, a
+ response may have been generated. You should always check to see if there is any available output after
+ calling this method by calling .
+
+ The input buffer to offer.
+ The offset within the input buffer that input begins.
+ The number of bytes of input being offered.
+ If an error occurs while decrypting or processing a record.
+
+
+ Gets the amount of received application data.
+ A call to is guaranteed to be able to return at least
+ this much data.
+ Only allowed in non-blocking mode.
+
+ The number of bytes of available application data.
+
+
+ Retrieves received application data.
+
+ Use to check how much application data is currently available. This
+ method functions similarly to , except that it never blocks. If
+ no data is available, nothing will be copied and zero will be returned.
+ Only allowed in non-blocking mode.
+
+ The buffer to hold the application data.
+ The start offset in the buffer at which the data is written.
+ The maximum number of bytes to read.
+ The total number of bytes copied to the buffer. May be less than the length specified if the
+ length was greater than the amount of available data.
+
+
+ Gets the amount of encrypted data available to be sent.
+
+ A call to is guaranteed to be able to return at least this much
+ data. Only allowed in non-blocking mode.
+
+ The number of bytes of available encrypted data.
+
+
+ Retrieves encrypted data to be sent.
+
+ Use to check how much encrypted data is currently available. This
+ method functions similarly to , except that it never blocks. If
+ no data is available, nothing will be copied and zero will be returned. Only allowed in non-blocking mode.
+
+ The buffer to hold the encrypted data.
+ The start offset in the buffer at which the data is written.
+ The maximum number of bytes to read.
+ The total number of bytes copied to the buffer. May be less than the length specified if the
+ length was greater than the amount of available data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Make sure the 'buf' is now empty. Fail otherwise.
+ The to check.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Processor interface for a PSK identity.
+
+
+ Base interface for an object that can process a PSK identity.
+
+
+ (D)TLS PSK key exchange (RFC 4279).
+
+
+ (D)TLS RSA key exchange.
+
+
+ Interface describing a TLS server endpoint.
+
+
+ Return the specified session, if available.
+
+ Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.
+
+ the ID of the session to resume.
+ A with the specified session ID, or null.
+
+
+
+ Return the external PSK to select from the ClientHello.
+
+ WARNING: EXPERIMENTAL FEATURE, UNSTABLE API
+ Note that this will only be called when TLS 1.3 or higher is amongst the offered protocol versions, and one
+ or more PSKs are actually offered.
+
+ an of instances.
+ The corresponding to the selected identity, or null to not select
+ any.
+
+
+
+
+
+
+
+
+
+
+
+ (Int32 -> byte[])
+
+
+
+
+
+
+
+
+
+
+
+
+ (Int32 -> byte[])
+
+
+
+ (Int32 -> byte[])
+
+
+
+ (SupplementalDataEntry)
+
+
+
+ Return server credentials to use.
+
+ The returned value may be null, or else it MUST implement exactly one of
+ , , or
+ , depending on the key exchange that was negotiated.
+
+ a object or null for anonymous key exchanges.
+
+
+
+
+ This method will be called (only) if the server included an extension of type "status_request" with empty
+ "extension_data" in the extended server hello. See RFC 3546 3.6. Certificate Status Request. If a
+ non-null is returned, it is sent to the client as a handshake message of
+ type "certificate_status".
+
+ A to be sent to the client (or null for none).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (SupplementalDataEntry)
+
+
+
+ Called by the protocol handler to report the client certificate, only if
+ returned non-null.
+
+ Note: this method is responsible for certificate verification and validation.
+
+ the effective client certificate (may be an empty chain).
+
+
+
+ RFC 5077 3.3. NewSessionTicket Handshake Message.
+
+ This method will be called (only) if a NewSessionTicket extension was sent by the server. See RFC 5077
+ 4. Recommended Ticket Construction for recommended format and protection.
+
+ The ticket.
+
+
+
+ Server certificate carrier interface.
+
+
+ Marker interface to distinguish a TLS server context.
+
+
+ Constructor for non-blocking mode.
+
+ When data is received, use to provide the received ciphertext,
+ then use to read the corresponding cleartext.
+ Similarly, when data needs to be sent, use
+ to provide the cleartext, then use to get the
+ corresponding ciphertext.
+
+
+
+ Constructor for blocking mode.
+ The of data to/from the server.
+
+
+ Constructor for blocking mode.
+ The of data from the server.
+ The of data to the server.
+
+
+ Receives a TLS handshake in the role of server.
+
+ In blocking mode, this will not return until the handshake is complete. In non-blocking mode, use
+ to receive a callback when the handshake is complete.
+
+ The to use for the handshake.
+ If in blocking mode and handshake was not successful.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base interface for a carrier object for a TLS session.
+
+
+ Interface for verifying SRP config needs to conform to.
+
+
+ Check whether the given SRP configuration is acceptable for use.
+ the to check.
+ true if (and only if) the specified configuration is acceptable.
+
+
+ Processor interface for an SRP identity.
+
+
+ Base interface for an object that can return login parameters from an SRP identity.
+
+
+ Lookup the corresponding to the specified identity.
+
+ NOTE: To avoid "identity probing", unknown identities SHOULD be handled as recommended in RFC 5054 2.5.1.3.
+ is provided for this purpose.
+
+ the SRP identity sent by the connecting client.
+ the for the specified identity, or else 'simulated' parameters
+ if the identity is not recognized. A null value is also allowed, but not recommended.
+
+
+ (D)TLS SRP key exchange (RFC 5054).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 5764 DTLS Extension to Establish Keys for SRTP.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Whether a server can select the specified cipher suite given the available signature algorithms
+ for ServerKeyExchange.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Check the signature algorithm for certificates in the peer's CertPath as specified in RFC 5246
+ 7.4.2, 7.4.4, 7.4.6 and similar rules for earlier TLS versions.
+
+ The supplied CertPath should include the trust anchor (its signature algorithm isn't checked, but in the
+ general case checking a certificate requires the issuer certificate).
+
+ if any certificate in the CertPath (excepting the trust anchor) has a
+ signature algorithm that is not one of the locally supported signature algorithms.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Generate a pre_master_secret and send it encrypted to the server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the to parse from.
+ a object.
+
+
+
+ RFC 6066 5.
+
+
+ Encode this to a .
+ the to encode to.
+
+
+
+ Parse a from a .
+ the of the current connection.
+ the to parse from.
+ a object.
+
+
+
+ RFC 4681
+
+
+ RFC 5764 4.1.1
+
+
+ see for valid constants.
+ valid lengths from 0 to 255.
+
+
+ see for valid constants.
+
+
+ valid lengths from 0 to 255.
+
+
+ Base class for an RFC 3161 Time Stamp Request.
+
+
+ Create a TimeStampRequest from the past in byte array.
+
+ @param req byte array containing the request.
+ @throws IOException if the request is malformed.
+
+
+ Create a TimeStampRequest from the past in input stream.
+
+ @param in input stream containing the request.
+ @throws IOException if the request is malformed.
+
+
+ Validate the timestamp request, checking the digest to see if it is of an
+ accepted type and whether it is of the correct length for the algorithm specified.
+
+ @param algorithms a set of string OIDS giving accepted algorithms.
+ @param policies if non-null a set of policies we are willing to sign under.
+ @param extensions if non-null a set of extensions we are willing to accept.
+ @throws TspException if the request is invalid, or processing fails.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Generator for RFC 3161 Time Stamp Request objects.
+
+
+ add a given extension field for the standard extensions tag (tag 3)
+ @throws IOException
+
+
+ add a given extension field for the standard extensions tag
+ The value parameter becomes the contents of the octet string associated
+ with the extension.
+
+
+ Base class for an RFC 3161 Time Stamp Response object.
+
+
+ Create a TimeStampResponse from a byte array containing an ASN.1 encoding.
+
+ @param resp the byte array containing the encoded response.
+ @throws TspException if the response is malformed.
+ @throws IOException if the byte array doesn't represent an ASN.1 encoding.
+
+
+ Create a TimeStampResponse from an input stream containing an ASN.1 encoding.
+
+ @param input the input stream containing the encoded response.
+ @throws TspException if the response is malformed.
+ @throws IOException if the stream doesn't represent an ASN.1 encoding.
+
+
+ Check this response against to see if it a well formed response for
+ the passed in request. Validation will include checking the time stamp
+ token if the response status is GRANTED or GRANTED_WITH_MODS.
+
+ @param request the request to be checked against
+ @throws TspException if the request can not match this response.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ return the ASN.1 encoded representation of this object for the specific encoding type.
+
+ @param encoding encoding style ("DER", "DL", "BER")
+
+
+ Generator for RFC 3161 Time Stamp Responses.
+
+
+ Return an appropriate TimeStampResponse.
+
+ If genTime is null a timeNotAvailable error response will be returned.
+
+ @param request the request this response is for.
+ @param serialNumber serial number for the response token.
+ @param genTime generation time for the response token.
+ @param provider provider to use for signature calculation.
+ @return
+ @throws NoSuchAlgorithmException
+ @throws NoSuchProviderException
+ @throws TSPException
+
+
+
+ Generate a TimeStampResponse with chosen status and FailInfoField.
+
+ @param status the PKIStatus to set.
+ @param failInfoField the FailInfoField to set.
+ @param statusString an optional string describing the failure.
+ @return a TimeStampResponse with a failInfoField and optional statusString
+ @throws TSPException in case the response could not be created
+
+
+ Validate the time stamp token.
+
+ To be valid the token must be signed by the passed in certificate and
+ the certificate must be the one referred to by the SigningCertificate
+ attribute included in the hashed attributes of the token. The
+ certificate must also have the ExtendedKeyUsageExtension with only
+ KeyPurposeID.IdKPTimeStamping and have been valid at the time the
+ timestamp was created.
+
+
+ A successful call to validate means all the above are true.
+
+
+
+ Return the underlying CmsSignedData object.
+
+ @return the underlying CMS structure.
+
+
+ Return a ASN.1 encoded byte stream representing the encoded object.
+
+ @throws IOException if encoding fails.
+
+
+ return the ASN.1 encoded representation of this object using the specified encoding.
+
+ @param encoding the ASN.1 encoding format to use ("BER" or "DER").
+
+
+ basic creation - only the default attributes will be included here.
+
+
+ create with a signer with extra signed/unsigned attributes.
+
+
+ @return the nonce value, null if there isn't one.
+
+
+ Recognised hash algorithms for the time stamp protocol.
+
+
+ Fetches the signature time-stamp attributes from a SignerInformation object.
+ Checks that the MessageImprint for each time-stamp matches the signature field.
+ (see RFC 3161 Appendix A).
+
+ @param signerInfo a SignerInformation to search for time-stamps
+ @return a collection of TimeStampToken objects
+ @throws TSPValidationException
+
+
+ Validate the passed in certificate as being of the correct type to be used
+ for time stamping. To be valid it must have an ExtendedKeyUsage extension
+ which has a key purpose identifier of id-kp-timeStamping.
+
+ @param cert the certificate of interest.
+ @throws TspValidationException if the certicate fails on one of the check points.
+
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Exception thrown if a TSP request or response fails to validate.
+
+ If a failure code is associated with the exception it can be retrieved using
+ the getFailureCode() method.
+
+
+ The failure code associated with this exception, if one is set.
+
+
+ General array utilities.
+
+
+
+ Are two arrays equal.
+
+ Left side.
+ Right side.
+ True if equal.
+
+
+ Make a copy of a range of bytes from the passed in data array. The range can
+ extend beyond the end of the input array, in which case the return array will
+ be padded with zeroes.
+
+ @param data the array from which the data is to be copied.
+ @param from the start index at which the copying should take place.
+ @param to the final index of the range (exclusive).
+
+ @return a new byte array containing the range given.
+
+
+ BigInteger utilities.
+
+
+ Return the passed in value as an unsigned byte array.
+
+ @param value the value to be converted.
+ @return a byte array without a leading zero byte if present in the signed encoding.
+
+
+ Return the passed in value as an unsigned byte array of the specified length, padded with
+ leading zeros as necessary.
+ @param length the fixed length of the result.
+ @param n the value to be converted.
+ @return a byte array padded to a fixed length with leading zeros.
+
+
+ Write the passed in value as unsigned bytes to the specified buffer range, padded with
+ leading zeros as necessary.
+
+ @param n
+ the value to be converted.
+ @param buf
+ the buffer to which the value is written.
+ @param off
+ the start offset in array buf at which the data is written.
+ @param len
+ the fixed length of data written (possibly padded with leading zeros).
+
+
+
+ Creates a Random BigInteger from the secure random of a given bit length.
+
+
+
+
+
+
+ Return a random BigInteger not less than 'min' and not greater than 'max'
+
+ @param min the least value that may be generated
+ @param max the greatest value that may be generated
+ @param random the source of randomness
+ @return a random BigInteger value in the range [min,max]
+
+
+ Base class for both the compress and decompress classes.
+ Holds common arrays, and static data.
+
+ @author Keiron Liddle
+
+
+ An input stream that decompresses from the BZip2 format (with the file
+ header chars) to be read as any other stream.
+
+ @author Keiron Liddle
+
+ NB: note this class has been modified to read the leading BZ from the
+ start of the BZIP2 stream to make it compatible with other PGP programs.
+
+
+ An output stream that compresses into the BZip2 format (with the file
+ header chars) into another stream.
+
+ @author Keiron Liddle
+
+ TODO: Update to BZip2 1.0.1
+ NB: note this class has been modified to add a leading BZ to the
+ start of the BZIP2 stream to make it compatible with other PGP programs.
+
+
+
+ modified by Oliver Merkel, 010128
+
+
+
+ A simple class the hold and calculate the CRC for sanity checking
+ of the data.
+
+ @author Keiron Liddle
+
+
+ Interface for matching objects in an .
+ The contravariant type of selectable objects.
+
+
+ Match the passed in object, returning true if it would be selected by this selector, false
+ otherwise.
+ The object to be matched.
+ true if the objects is matched by this selector, false otherwise.
+
+
+ A generic interface describing a simple store of objects.
+ The covariant type of stored objects.
+
+
+ Enumerate the (possibly empty) collection of objects matched by the given selector.
+ The used to select matching objects.
+ An of the matching objects.
+
+
+
+ Return the number of milliseconds since the Unix epoch (1 Jan., 1970 UTC) for a given DateTime value.
+
+ The DateTime value will be converted to UTC (using before
+ conversion.
+ A DateTime value not before the epoch.
+ Number of whole milliseconds after epoch.
+ 'dateTime' is before the epoch.
+
+
+
+ Create a UTC DateTime value from the number of milliseconds since the Unix epoch (1 Jan., 1970 UTC).
+
+ Number of milliseconds since the epoch.
+ A UTC DateTime value
+ 'unixMs' is before 'MinUnixMs' or after 'MaxUnixMs'.
+
+
+
+
+ Return the current number of milliseconds since the Unix epoch (1 Jan., 1970 UTC).
+
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+ @return a byte array containing the base 64 encoded data.
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+ @return a byte array containing the base 64 encoded data.
+
+
+ Encode the byte data to base 64 writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Encode the byte data to base 64 writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded input data. It is assumed the input data is valid.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the base 64 encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ encode the input data producing a base 64 output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+
+ A buffering class to allow translation from one format to another to
+ be done in discrete chunks.
+
+
+
+
+ Create a buffered Decoder.
+
+ The translater to use.
+ The size of the buffer.
+
+
+
+ Process one byte of data.
+
+ Data in.
+ Byte array for the output.
+ The offset in the output byte array to start writing from.
+ The amount of output bytes.
+
+
+
+ Process data from a byte array.
+
+ The input data.
+ Start position within input data array.
+ Amount of data to process from input data array.
+ Array to store output.
+ Position in output array to start writing from.
+ The amount of output bytes.
+
+
+
+ A class that allows encoding of data using a specific encoder to be processed in chunks.
+
+
+
+
+ Create.
+
+ The translator to use.
+ Size of the chunks.
+
+
+
+ Process one byte of data.
+
+ The byte.
+ An array to store output in.
+ Offset within output array to start writing from.
+
+
+
+
+ Process data from a byte array.
+
+ Input data Byte array containing data to be processed.
+ Start position within input data array.
+ Amount of input data to be processed.
+ Output data array.
+ Offset within output data array to start writing to.
+ The amount of data written.
+
+
+
+ Class to decode and encode Hex.
+
+
+
+ encode the input data producing a Hex encoded byte array.
+
+ @return a byte array containing the Hex encoded data.
+
+
+ encode the input data producing a Hex encoded byte array.
+
+ @return a byte array containing the Hex encoded data.
+
+
+ Hex encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Hex encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded input data. It is assumed the input data is valid.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the Hex encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the Hex encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ Decode the hexadecimal-encoded string strictly i.e. any non-hexadecimal characters will be
+ considered an error.
+
+ @return a byte array representing the decoded data.
+
+
+ Decode the hexadecimal-encoded string strictly i.e. any non-hexadecimal characters will be
+ considered an error.
+
+ @return a byte array representing the decoded data.
+
+
+ encode the input data producing a Hex output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+
+ A hex translator.
+
+
+
+
+ Return encoded block size.
+
+ 2
+
+
+
+ Encode some data.
+
+ Input data array.
+ Start position within input data array.
+ The amount of data to process.
+ The output data array.
+ The offset within the output data array to start writing from.
+ Amount of data encoded.
+
+
+
+ Returns the decoded block size.
+
+ 1
+
+
+
+ Decode data from a byte array.
+
+ The input data array.
+ Start position within input data array.
+ The amounty of data to process.
+ The output data array.
+ The position within the output data array to start writing from.
+ The amount of data written.
+
+
+ Encode and decode byte arrays (typically from binary to 7-bit ASCII
+ encodings).
+
+
+
+ Translator interface.
+
+
+
+ Convert binary data to and from UrlBase64 encoding. This is identical to
+ Base64 encoding, except that the padding character is "." and the other
+ non-alphanumeric characters are "-" and "_" instead of "+" and "/".
+
+ The purpose of UrlBase64 encoding is to provide a compact encoding of binary
+ data that is safe for use as an URL parameter. Base64 encoding does not
+ produce encoded values that are safe for use in URLs, since "/" can be
+ interpreted as a path delimiter; "+" is the encoded form of a space; and
+ "=" is used to separate a name from the corresponding value in an URL
+ parameter.
+
+
+
+ Encode the input data producing a URL safe base 64 encoded byte array.
+
+ @return a byte array containing the URL safe base 64 encoded data.
+
+
+ Encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Decode the URL safe base 64 encoded input data - white space will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the URL safe base 64 encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the URL safe base 64 encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ Decode the URL safe base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ Convert binary data to and from UrlBase64 encoding. This is identical to
+ Base64 encoding, except that the padding character is "." and the other
+ non-alphanumeric characters are "-" and "_" instead of "+" and "/".
+
+ The purpose of UrlBase64 encoding is to provide a compact encoding of binary
+ data that is safe for use as an URL parameter. Base64 encoding does not
+ produce encoded values that are safe for use in URLs, since "/" can be
+ interpreted as a path delimiter; "+" is the encoded form of a space; and
+ "=" is used to separate a name from the corresponding value in an URL
+ parameter.
+
+
+
+ Return a byte array representing the implementing object.
+ An encoding of this object as a byte array.
+
+
+
+
+ Produce a copy of this object with its configuration and in its current state.
+
+
+ The returned object may be used simply to store the state, or may be used as a similar object
+ starting from the copied state.
+
+
+
+
+ Restore a copied object state into this object.
+
+
+ Implementations of this method should try to avoid or minimise memory allocation to perform the reset.
+
+ an object originally {@link #copy() copied} from an object of the same type as this instance.
+ if the provided object is not of the correct type.
+ if the other parameter is in some other way invalid.
+
+
+
+ A
+
+
+
+
+
+ A
+
+
+ An
+
+
+
+
+
+ A
+
+
+
+
+
+ Seek ':" up to the limit.
+
+
+
+
+
+
+ Consume the dashes
+
+
+
+
+
+ Skip white space leave char in stream.
+
+
+
+
+ Read forward consuming the expected string.
+
+ expected string
+ false if not consumed
+
+
+
+ Consume until dash.
+
+ true if stream end not met
+
+
+ A generic PEM writer, based on RFC 1421
+
+
+ Base constructor.
+
+ @param out output stream to use.
+
+
+ Return the number of bytes or characters required to contain the
+ passed in object if it is PEM encoded.
+
+ @param obj pem object to be output
+ @return an estimate of the number of bytes
+
+
+ Write the full contents of inStr to the destination stream outStr.
+ Source stream.
+ Destination stream.
+ In case of IO failure.
+
+
+ Write the full contents of inStr to the destination stream outStr.
+ Source stream.
+ Destination stream.
+ The size of temporary buffer to use.
+ In case of IO failure.
+
+
+
+ Pipe all bytes from inStr to outStr, throwing StreamFlowException if greater
+ than limit bytes in inStr.
+
+
+ A
+
+
+ A
+
+
+ A
+
+ The number of bytes actually transferred, if not greater than limit
+
+
+
+
+
+
+ Exception to be thrown on a failure to reset an object implementing Memoable.
+
+ The exception extends InvalidCastException to enable users to have a single handling case,
+ only introducing specific handling of this one if required.
+
+
+
+ Validate the given IPv4 or IPv6 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid address, false otherwise
+
+
+ Validate the given IPv4 or IPv6 address and netmask.
+
+ @param address the IP address as a string.
+
+ @return true if a valid address with netmask, false otherwise
+
+
+ Validate the given IPv4 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid IPv4 address, false otherwise
+
+
+ Validate the given IPv6 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid IPv4 address, false otherwise
+
+
+ General string utilities.
+
+
+
+ The Holder object.
+
+ Holder ::= SEQUENCE {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+
+ Constructs a holder for v2 attribute certificates with a hash value for
+ some type of object.
+
+ digestedObjectType can be one of the following:
+
+ - 0 - publicKey - A hash of the public key of the holder must be
+ passed.
+ - 1 - publicKeyCert - A hash of the public key certificate of the
+ holder must be passed.
+ - 2 - otherObjectDigest - A hash of some other object type must be
+ passed.
otherObjectTypeID must not be empty.
+
+
+ This cannot be used if a v1 attribute certificate is used.
+
+ @param digestedObjectType The digest object type.
+ @param digestAlgorithm The algorithm identifier for the hash.
+ @param otherObjectTypeID The object type ID if
+ digestedObjectType is
+ otherObjectDigest.
+ @param objectDigest The hash value.
+
+
+ Returns the digest object type if an object digest info is used.
+
+
+ - 0 - publicKey - A hash of the public key of the holder must be
+ passed.
+ - 1 - publicKeyCert - A hash of the public key certificate of the
+ holder must be passed.
+ - 2 - otherObjectDigest - A hash of some other object type must be
+ passed.
otherObjectTypeID must not be empty.
+
+
+
+ @return The digest object type or -1 if no object digest info is set.
+
+
+ Returns the other object type ID if an object digest info is used.
+
+ @return The other object type ID or null if no object
+ digest info is set.
+
+
+ Returns the hash if an object digest info is used.
+
+ @return The hash or null if no object digest info is set.
+
+
+ Returns the digest algorithm ID if an object digest info is used.
+
+ @return The digest algorithm ID or null if no object
+ digest info is set.
+
+
+ Return any principal objects inside the attribute certificate holder entity names field.
+
+ @return an array of IPrincipal objects (usually X509Name), null if no entity names field is set.
+
+
+ Return the principals associated with the issuer attached to this holder
+
+ @return an array of principals, null if no BaseCertificateID is set.
+
+
+ Return the serial number associated with the issuer attached to this holder.
+
+ @return the certificate serial number, null if no BaseCertificateID is set.
+
+
+ Carrying class for an attribute certificate issuer.
+
+
+ Set the issuer directly with the ASN.1 structure.
+
+ @param issuer The issuer
+
+
+ Return any principal objects inside the attribute certificate issuer object.
+ An array of IPrincipal objects (usually X509Principal).
+
+
+ A high level authority key identifier.
+
+
+ Constructor which will take the byte[] returned from getExtensionValue()
+
+ @param encodedValue a DER octet encoded string with the extension structure in it.
+ @throws IOException on parsing errors.
+
+
+ Create an AuthorityKeyIdentifier using the passed in certificate's public
+ key, issuer and serial number.
+
+ @param certificate the certificate providing the information.
+ @throws CertificateParsingException if there is a problem processing the certificate
+
+
+ Create an AuthorityKeyIdentifier using just the hash of the
+ public key.
+
+ @param pubKey the key to generate the hash from.
+ @throws InvalidKeyException if there is a problem using the key.
+
+
+ A high level subject key identifier.
+
+
+ Constructor which will take the byte[] returned from getExtensionValue()
+
+ @param encodedValue a DER octet encoded string with the extension structure in it.
+ @throws IOException on parsing errors.
+
+
+
+ Extract the value of the given extension, if it exists.
+
+ The extensions object.
+ The object identifier to obtain.
+ Asn1Object
+ if the extension cannot be read.
+
+
+
+ Get all critical extension values, by oid
+
+ IDictionary with string (OID) keys and Asn1OctetString values
+
+
+
+ Get all non-critical extension values, by oid
+
+ IDictionary with string (OID) keys and Asn1OctetString values
+
+
+
+ A utility class that will extract X509Principal objects from X.509 certificates.
+
+ Use this in preference to trying to recreate a principal from a string, not all
+ DNs are what they should be, so it's best to leave them encoded where they
+ can be.
+
+
+
+ Return the issuer of the given cert as an X509Principal.
+
+
+ Return the subject of the given cert as an X509Principal.
+
+
+ Return the issuer of the given CRL as an X509Principal.
+
+
+ This class is an Selector like implementation to select
+ attribute certificates from a given set of criteria.
+
+ @see org.bouncycastle.x509.X509AttributeCertificate
+ @see org.bouncycastle.x509.X509Store
+
+
+
+ Decides if the given attribute certificate should be selected.
+
+ The attribute certificate to be checked.
+ true if the object matches this selector.
+
+
+ The attribute certificate which must be matched.
+ If null is given, any will do.
+
+
+ The criteria for validity
+ If null is given any will do.
+
+
+ The holder.
+ If null is given any will do.
+
+
+ The issuer.
+ If null is given any will do.
+
+
+ The serial number.
+ If null is given any will do.
+
+
+ Adds a target name criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target names.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name The name as a GeneralName (not null)
+
+
+ Adds a target name criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target names.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name a byte array containing the name in ASN.1 DER encoded form of a GeneralName
+ @throws IOException if a parsing error occurs.
+
+
+ Adds a collection with target names criteria. If null is
+ given any will do.
+
+ The collection consists of either GeneralName objects or byte[] arrays representing
+ DER encoded GeneralName structures.
+
+
+ @param names A collection of target names.
+ @throws IOException if a parsing error occurs.
+ @see #AddTargetName(byte[])
+ @see #AddTargetName(GeneralName)
+
+
+ Gets the target names. The collection consists of Lists
+ made up of an Integer in the first entry and a DER encoded
+ byte array or a String in the second entry.
+ The returned collection is immutable.
+
+ @return The collection of target names
+ @see #setTargetNames(Collection)
+
+
+ Adds a target group criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target groups.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param group The group as GeneralName form (not null)
+
+
+ Adds a target group criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target groups.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name a byte array containing the group in ASN.1 DER encoded form of a GeneralName
+ @throws IOException if a parsing error occurs.
+
+
+ Adds a collection with target groups criteria. If null is
+ given any will do.
+
+ The collection consists of GeneralName objects or byte[]
+ representing DER encoded GeneralNames.
+
+
+ @param names A collection of target groups.
+ @throws IOException if a parsing error occurs.
+ @see #AddTargetGroup(byte[])
+ @see #AddTargetGroup(GeneralName)
+
+
+ Gets the target groups. The collection consists of Lists
+ made up of an Integer in the first entry and a DER encoded
+ byte array or a String in the second entry.
+ The returned collection is immutable.
+
+ @return The collection of target groups.
+ @see #setTargetGroups(Collection)
+
+
+
+ This class is an IX509Selector implementation to select
+ certificate pairs, which are e.g. used for cross certificates. The set of
+ criteria is given from two X509CertStoreSelector objects,
+ each of which, if present, must match the respective component of a pair.
+
+
+
+ The certificate pair which is used for testing on equality.
+
+
+ The certificate selector for the forward part.
+
+
+ The certificate selector for the reverse part.
+
+
+
+ Decides if the given certificate pair should be selected. If
+ obj is not a X509CertificatePair, this method
+ returns false.
+
+ The X509CertificatePair to be tested.
+ true if the object matches this selector.
+
+
+
+ An ISet of DerObjectIdentifier objects.
+
+
+
+
+ An ICollection of X509Name objects
+
+
+
+ The attribute certificate being checked. This is not a criterion.
+ Rather, it is optional information that may help a {@link X509Store} find
+ CRLs that would be relevant when checking revocation for the specified
+ attribute certificate. If null is specified, then no such
+ optional information is provided.
+
+ @param attrCert the IX509AttributeCertificate being checked (or
+ null)
+ @see #getAttrCertificateChecking()
+
+
+ If true only complete CRLs are returned. Defaults to
+ false.
+
+ @return true if only complete CRLs are returned.
+
+
+ Returns if this selector must match CRLs with the delta CRL indicator
+ extension set. Defaults to false.
+
+ @return Returns true if only CRLs with the delta CRL
+ indicator extension are selected.
+
+
+ The issuing distribution point.
+
+ The issuing distribution point extension is a CRL extension which
+ identifies the scope and the distribution point of a CRL. The scope
+ contains among others information about revocation reasons contained in
+ the CRL. Delta CRLs and complete CRLs must have matching issuing
+ distribution points.
+
+ The byte array is cloned to protect against subsequent modifications.
+
+ You must also enable or disable this criteria with
+ {@link #setIssuingDistributionPointEnabled(bool)}.
+
+ @param issuingDistributionPoint The issuing distribution point to set.
+ This is the DER encoded OCTET STRING extension value.
+ @see #getIssuingDistributionPoint()
+
+
+ Whether the issuing distribution point criteria should be applied.
+ Defaults to false.
+
+ You may also set the issuing distribution point criteria if not a missing
+ issuing distribution point should be assumed.
+
+ @return Returns if the issuing distribution point check is enabled.
+
+
+ The maximum base CRL number. Defaults to null.
+
+ @return Returns the maximum base CRL number.
+ @see #setMaxBaseCRLNumber(BigInteger)
+
+
+
+ A factory to produce Public Key Info Objects.
+
+
+
+
+ Create a Subject Public Key Info object for a given public key.
+
+ One of ElGammalPublicKeyParameters, DSAPublicKeyParameter, DHPublicKeyParameters, RsaKeyParameters or ECPublicKeyParameters
+ A subject public key info object.
+ Throw exception if object provided is not one of the above.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate object and initializes it with the data
+ read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the certificates
+ read from the given input stream inStream.
+
+
+ Class for carrying the values in an X.509 Attribute.
+
+
+ @param at an object representing an attribute.
+
+
+ Create an X.509 Attribute with the type given by the passed in oid and
+ the value represented by an ASN.1 Set containing value.
+
+ @param oid type of the attribute
+ @param value value object to go into the atribute's value set.
+
+
+ Create an X.59 Attribute with the type given by the passed in oid and the
+ value represented by an ASN.1 Set containing the objects in value.
+
+ @param oid type of the attribute
+ @param value vector of values to go in the attribute's value set.
+
+
+
+ An Object representing an X509 Certificate.
+ Has static methods for loading Certificates encoded in many forms that return X509Certificate Objects.
+
+
+
+
+ Return true if the current time is within the start and end times nominated on the certificate.
+
+ true id certificate is valid for the current time.
+
+
+
+ Return true if the nominated time is within the start and end times nominated on the certificate.
+
+ The time to test validity against.
+ True if certificate is valid for nominated time.
+
+
+
+ Checks if the current date is within certificate's validity period.
+
+
+
+
+ Checks if the given date is within certificate's validity period.
+
+ if the certificate is expired by given date
+ if the certificate is not yet valid on given date
+
+
+
+ Return the certificate's version.
+
+ An integer whose value Equals the version of the cerficate.
+
+
+
+ Return a BigInteger containing the serial number.
+
+ The Serial number.
+
+
+
+ Get the Issuer Distinguished Name. (Who signed the certificate.)
+
+ And X509Object containing name and value pairs.
+
+
+
+ Get the subject of this certificate.
+
+ An X509Name object containing name and value pairs.
+
+
+
+ The time that this certificate is valid from.
+
+ A DateTime object representing that time in the local time zone.
+
+
+
+ The time that this certificate is valid up to.
+
+ A DateTime object representing that time in the local time zone.
+
+
+
+ Return the Der encoded TbsCertificate data.
+ This is the certificate component less the signature.
+ To Get the whole certificate call the GetEncoded() member.
+
+ A byte array containing the Der encoded Certificate component.
+
+
+
+ The signature.
+
+ A byte array containg the signature of the certificate.
+
+
+
+ A meaningful version of the Signature Algorithm. (e.g. SHA1WITHRSA)
+
+ A string representing the signature algorithm.
+
+
+
+ Get the Signature Algorithms Object ID.
+
+ A string containg a '.' separated object id.
+
+
+
+ Get the signature algorithms parameters. (EG DSA Parameters)
+
+ A byte array containing the Der encoded version of the parameters or null if there are none.
+
+
+ The signature algorithm.
+
+
+
+ Get the issuers UID.
+
+ A DerBitString.
+
+
+
+ Get the subjects UID.
+
+ A DerBitString.
+
+
+
+ Get a key usage guidlines.
+
+
+
+
+ Return the plain SubjectPublicKeyInfo that holds the encoded public key.
+
+
+
+
+ Get the public key of the subject of the certificate.
+
+ The public key parameters.
+
+
+
+ Return the DER encoding of this certificate.
+
+ A byte array containing the DER encoding of this certificate.
+ If there is an error encoding the certificate.
+
+
+
+ Verify the certificate's signature using the nominated public key.
+
+ An appropriate public key parameter object, RsaPublicKeyParameters, DsaPublicKeyParameters or ECDsaPublicKeyParameters
+ True if the signature is valid.
+ If key submitted is not of the above nominated types.
+
+
+
+ Verify the certificate's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the certificate's signature.
+ If verifier provider is not appropriate or the certificate signature algorithm
+ is invalid.
+
+
+ Verify the certificate's alternative signature using a verifier created using the passed in
+ verifier provider.
+ An appropriate provider for verifying the certificate's alternative
+ signature.
+ If verifier provider is not appropriate or the certificate alternative signature
+ algorithm is invalid.
+
+
+
+ This class contains a cross certificate pair. Cross certificates pairs may
+ contain two cross signed certificates from two CAs. A certificate from the
+ other CA to this CA is contained in the forward certificate, the certificate
+ from this CA to the other CA is contained in the reverse certificate.
+
+
+
+ Constructor
+ Certificate from the other CA to this CA.
+ Certificate from this CA to the other CA.
+
+
+ Constructor from a ASN.1 CertificatePair structure.
+ The CertificatePair ASN.1 object.
+
+
+ Returns the certificate from the other CA to this CA.
+
+
+ Returns the certificate from this CA to the other CA.
+
+
+ class for dealing with X509 certificates.
+
+ At the moment this will deal with "-----BEGIN CERTIFICATE-----" to "-----END CERTIFICATE-----"
+ base 64 encoded certs, as well as the BER binaries of certificates and some classes of PKCS#7
+ objects.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate object and initializes it with the data
+ read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the certificates
+ read from the given input stream inStream.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ The following extensions are listed in RFC 2459 as relevant to CRLs
+
+ Authority Key Identifier
+ Issuer Alternative Name
+ CRL Number
+ Delta CRL Indicator (critical)
+ Issuing Distribution Point (critical)
+
+
+
+ Verify the CRL's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the CRL's signature.
+ True if the signature is valid.
+ If verifier provider is not appropriate or the CRL algorithm is invalid.
+
+
+ Verify the CRL's alternative signature using a verifier created using the passed in
+ verifier provider.
+ An appropriate provider for verifying the CRL's alternative signature.
+
+ If verifier provider is not appropriate or the CRL alternative signature
+ algorithm is invalid.
+
+
+
+ A meaningful version of the Signature Algorithm. (e.g. SHA1WITHRSA)
+
+ A string representing the signature algorithm.
+
+
+
+ Return the DER encoding of this CRL.
+
+ A byte array containing the DER encoding of this CRL.
+ If there is an error encoding the CRL.
+
+
+ Returns a string representation of this CRL.
+
+ @return a string representation of this CRL.
+
+
+ Checks whether the given certificate is on this CRL.
+
+ @param cert the certificate to check for.
+ @return true if the given certificate is on this CRL,
+ false otherwise.
+
+
+ The following extensions are listed in RFC 2459 as relevant to CRL Entries
+
+ ReasonCode Hode Instruction Code Invalidity Date Certificate Issuer
+ (critical)
+
+
+ Constructor for CRLEntries of indirect CRLs. If isIndirect
+ is false {@link #getCertificateIssuer()} will always
+ return null, previousCertificateIssuer is
+ ignored. If this isIndirect is specified and this CrlEntry
+ has no certificate issuer CRL entry extension
+ previousCertificateIssuer is returned by
+ {@link #getCertificateIssuer()}.
+
+ @param c
+ TbsCertificateList.CrlEntry object.
+ @param isIndirect
+ true if the corresponding CRL is a indirect
+ CRL.
+ @param previousCertificateIssuer
+ Certificate issuer of the previous CrlEntry.
+
+
+ Value of is ignored.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate revocation list (CRL) object and initializes
+ it with the data read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the CRLs read from
+ the given input stream inStream.
+
+ The inStream may contain a sequence of DER-encoded CRLs, or
+ a PKCS#7 CRL set. This is a PKCS#7 SignedData object, with the
+ only significant field being crls. In particular the signature
+ and the contents are ignored.
+
+
+
+ Get non critical extensions.
+
+ A set of non critical extension oids.
+
+
+
+ Get any critical extensions.
+
+ A sorted list of critical entension.
+
+
+ A holding class for constructing an X509 Key Usage extension.
+
+
+ id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
+
+ KeyUsage ::= BIT STRING {
+ digitalSignature (0),
+ nonRepudiation (1),
+ keyEncipherment (2),
+ dataEncipherment (3),
+ keyAgreement (4),
+ keyCertSign (5),
+ cRLSign (6),
+ encipherOnly (7),
+ decipherOnly (8) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (X509KeyUsage.keyEncipherment | X509KeyUsage.dataEncipherment)
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Class to Generate X509V1 Certificates.
+
+
+
+
+ Default Constructor.
+
+
+
+
+ Reset the generator.
+
+
+
+
+ Set the certificate's serial number.
+
+ Make serial numbers long, if you have no serial number policy make sure the number is at least 16 bytes of secure random data.
+ You will be surprised how ugly a serial number collision can get.
+ The serial number.
+
+
+
+ Set the issuer distinguished name.
+ The issuer is the entity whose private key is used to sign the certificate.
+
+ The issuers DN.
+
+
+
+ Set the date that this certificate is to be valid from.
+
+
+
+
+
+ Set the date after which this certificate will no longer be valid.
+
+
+
+
+
+ Set the subject distinguished name.
+ The subject describes the entity associated with the public key.
+
+
+
+
+
+ Set the public key that this certificate identifies.
+
+
+
+
+
+ Generate a new using the provided .
+
+ A signature factory with the necessary
+ algorithm details.
+ An .
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+ An implementation of a version 2 X.509 Attribute Certificate.
+
+
+
+ Verify the certificate's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the certificate's signature.
+ True if the signature is valid.
+ If verifier provider is not appropriate or the certificate algorithm is invalid.
+
+
+ Class to produce an X.509 Version 2 AttributeCertificate.
+
+
+ Reset the generator
+
+
+ Set the Holder of this Attribute Certificate.
+
+
+ Set the issuer.
+
+
+ Set the serial number for the certificate.
+
+
+ Add an attribute.
+
+
+ Add a given extension field for the standard extensions tag.
+
+
+
+ Add a given extension field for the standard extensions tag.
+ The value parameter becomes the contents of the octet string associated
+ with the extension.
+
+
+
+
+ Generate a new using the provided .
+
+ A signature factory with the necessary
+ algorithm details.
+ An .
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+ class to produce an X.509 Version 2 CRL.
+
+
+ Create a builder for a version 2 CRL, initialised with another CRL.
+ Template CRL to base the new one on.
+
+
+ reset the generator
+
+
+ Set the issuer distinguished name - the issuer is the entity whose private key is used to sign the
+ certificate.
+
+
+ Reason being as indicated by CrlReason, i.e. CrlReason.KeyCompromise
+ or 0 if CrlReason is not to be used
+
+
+
+ Add a CRL entry with an Invalidity Date extension as well as a CrlReason extension.
+ Reason being as indicated by CrlReason, i.e. CrlReason.KeyCompromise
+ or 0 if CrlReason is not to be used
+
+
+
+ Add a CRL entry with extensions.
+
+
+
+ Add the CRLEntry objects contained in a previous CRL.
+
+ @param other the X509Crl to source the other entries from.
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+
+ Generate a new using the provided .
+
+ A signature factory with the necessary
+ algorithm details.
+ An .
+
+
+
+ Generate a new using the provided and
+ containing altSignatureAlgorithm and altSignatureValue extensions based on the passed
+ .
+
+ A signature factory with the necessary
+ algorithm details.
+ Whether the 'alt' extensions should be marked critical.
+ A signature factory used to create the
+ altSignatureAlgorithm and altSignatureValue extensions.
+ An .
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+
+ A class to Generate Version 3 X509Certificates.
+
+
+
+ Create a generator for a version 3 certificate, initialised with another certificate.
+ Template certificate to base the new one on.
+
+
+
+ Reset the Generator.
+
+
+
+
+ Set the certificate's serial number.
+
+ Make serial numbers long, if you have no serial number policy make sure the number is at least 16 bytes of secure random data.
+ You will be surprised how ugly a serial number collision can Get.
+ The serial number.
+
+
+
+ Set the distinguished name of the issuer.
+ The issuer is the entity which is signing the certificate.
+
+ The issuer's DN.
+
+
+
+ Set the date that this certificate is to be valid from.
+
+
+
+
+
+ Set the date after which this certificate will no longer be valid.
+
+
+
+
+
+ Set the DN of the entity that this certificate is about.
+
+
+
+
+
+ Set the public key that this certificate identifies.
+
+
+
+
+
+ Set the SubjectPublicKeyInfo for the public key that this certificate identifies.
+
+
+
+
+
+ Set the subject unique ID - note: it is very rare that it is correct to do this.
+
+
+
+
+
+ Set the issuer unique ID - note: it is very rare that it is correct to do this.
+
+
+
+
+
+ Add a given extension field for the standard extensions tag (tag 3).
+
+ string containing a dotted decimal Object Identifier.
+ Is it critical.
+ The value.
+
+
+
+ Add an extension to this certificate.
+
+ Its Object Identifier.
+ Is it critical.
+ The value.
+
+
+
+ Add an extension using a string with a dotted decimal OID.
+
+ string containing a dotted decimal Object Identifier.
+ Is it critical.
+ byte[] containing the value of this extension.
+
+
+
+ Add an extension to this certificate.
+
+ Its Object Identifier.
+ Is it critical.
+ byte[] containing the value of this extension.
+
+
+
+ Add a given extension field for the standard extensions tag (tag 3),
+ copying the extension value from another certificate.
+
+
+
+ add a given extension field for the standard extensions tag (tag 3)
+ copying the extension value from another certificate.
+ @throws CertificateParsingException if the extension cannot be extracted.
+
+
+
+ Generate a new using the provided .
+
+ A signature factory with the necessary
+ algorithm details.
+ An .
+
+
+
+ Generate a new using the provided and
+ containing altSignatureAlgorithm and altSignatureValue extensions based on the passed
+ .
+
+ A signature factory with the necessary
+ algorithm details.
+ Whether the 'alt' extensions should be marked critical.
+ A signature factory used to create the
+ altSignatureAlgorithm and altSignatureValue extensions.
+ An .
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+
diff --git a/bin/Dapper.Contrib.dll b/bin/Dapper.Contrib.dll
new file mode 100644
index 0000000..371c02f
Binary files /dev/null and b/bin/Dapper.Contrib.dll differ
diff --git a/bin/Dapper.Contrib.xml b/bin/Dapper.Contrib.xml
new file mode 100644
index 0000000..c9c2322
--- /dev/null
+++ b/bin/Dapper.Contrib.xml
@@ -0,0 +1,575 @@
+
+
+
+ Dapper.Contrib
+
+
+
+
+ The Dapper.Contrib extensions for Dapper
+
+
+
+
+ Returns a single entity by a single id from table "Ts" asynchronously using Task. T must be of interface type.
+ Id must be marked with [Key] attribute.
+ Created entity is tracked/intercepted for changes and used by the Update() extension.
+
+ Interface type to create and populate
+ Open SqlConnection
+ Id of the entity to get, must be marked with [Key] attribute
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ Entity of T
+
+
+
+ Returns a list of entities from table "Ts".
+ Id of T must be marked with [Key] attribute.
+ Entities created from interfaces are tracked/intercepted for changes and used by the Update() extension
+ for optimal performance.
+
+ Interface or type to create and populate
+ Open SqlConnection
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ Entity of T
+
+
+
+ Inserts an entity into table "Ts" asynchronously using Task and returns identity id.
+
+ The type being inserted.
+ Open SqlConnection
+ Entity to insert
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ The specific ISqlAdapter to use, auto-detected based on connection if null
+ Identity of inserted entity
+
+
+
+ Updates entity in table "Ts" asynchronously using Task, checks if the entity is modified if the entity is tracked by the Get() extension.
+
+ Type to be updated
+ Open SqlConnection
+ Entity to be updated
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ true if updated, false if not found or not modified (tracked entities)
+
+
+
+ Delete entity in table "Ts" asynchronously using Task.
+
+ Type of entity
+ Open SqlConnection
+ Entity to delete
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ true if deleted, false if not found
+
+
+
+ Delete all entities in the table related to the type T asynchronously using Task.
+
+ Type of entity
+ Open SqlConnection
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ true if deleted, false if none found
+
+
+
+ Defined a proxy object with a possibly dirty state.
+
+
+
+
+ Whether the object has been changed.
+
+
+
+
+ Defines a table name mapper for getting table names from types.
+
+
+
+
+ Gets a table name from a given .
+
+ The to get a name from.
+ The table name for the given .
+
+
+
+ The function to get a database type from the given .
+
+ The connection to get a database type name from.
+
+
+
+ The function to get a a table name from a given
+
+ The to get a table name for.
+
+
+
+ Returns a single entity by a single id from table "Ts".
+ Id must be marked with [Key] attribute.
+ Entities created from interfaces are tracked/intercepted for changes and used by the Update() extension
+ for optimal performance.
+
+ Interface or type to create and populate
+ Open SqlConnection
+ Id of the entity to get, must be marked with [Key] attribute
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ Entity of T
+
+
+
+ Returns a list of entities from table "Ts".
+ Id of T must be marked with [Key] attribute.
+ Entities created from interfaces are tracked/intercepted for changes and used by the Update() extension
+ for optimal performance.
+
+ Interface or type to create and populate
+ Open SqlConnection
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ Entity of T
+
+
+
+ Specify a custom table name mapper based on the POCO type name
+
+
+
+
+ Inserts an entity into table "Ts" and returns identity id or number of inserted rows if inserting a list.
+
+ The type to insert.
+ Open SqlConnection
+ Entity to insert, can be list of entities
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ Identity of inserted entity, or number of inserted rows if inserting a list
+
+
+
+ Updates entity in table "Ts", checks if the entity is modified if the entity is tracked by the Get() extension.
+
+ Type to be updated
+ Open SqlConnection
+ Entity to be updated
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ true if updated, false if not found or not modified (tracked entities)
+
+
+
+ Delete entity in table "Ts".
+
+ Type of entity
+ Open SqlConnection
+ Entity to delete
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ true if deleted, false if not found
+
+
+
+ Delete all entities in the table related to the type T.
+
+ Type of entity
+ Open SqlConnection
+ The transaction to run under, null (the default) if none
+ Number of seconds before command execution timeout
+ true if deleted, false if none found
+
+
+
+ Specifies a custom callback that detects the database type instead of relying on the default strategy (the name of the connection type object).
+ Please note that this callback is global and will be used by all the calls that require a database specific adapter.
+
+
+
+
+ Defines the name of a table to use in Dapper.Contrib commands.
+
+
+
+
+ Creates a table mapping to a specific name for Dapper.Contrib commands
+
+ The name of this table in the database.
+
+
+
+ The name of the table in the database
+
+
+
+
+ Specifies that this field is a primary key in the database
+
+
+
+
+ Specifies that this field is a explicitly set primary key in the database
+
+
+
+
+ Specifies whether a field is writable in the database.
+
+
+
+
+ Specifies whether a field is writable in the database.
+
+ Whether a field is writable in the database.
+
+
+
+ Whether a field is writable in the database.
+
+
+
+
+ Specifies that this is a computed column.
+
+
+
+
+ The interface for all Dapper.Contrib database operations
+ Implementing this is each provider's model.
+
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Adds the name of a column.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ Adds a column equality to a parameter.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ The SQL Server database adapter.
+
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Adds the name of a column.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ Adds a column equality to a parameter.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ The SQL Server Compact Edition database adapter.
+
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Adds the name of a column.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ Adds a column equality to a parameter.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ The MySQL database adapter.
+
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Adds the name of a column.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ Adds a column equality to a parameter.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ The Postgres database adapter.
+
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Adds the name of a column.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ Adds a column equality to a parameter.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ The SQLite database adapter.
+
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Adds the name of a column.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ Adds a column equality to a parameter.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ The Firebase SQL adapter.
+
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Inserts into the database, returning the Id of the row created.
+
+ The connection to use.
+ The transaction to use.
+ The command timeout to use.
+ The table to insert into.
+ The columns to set with this insert.
+ The parameters to set for this insert.
+ The key columns in this table.
+ The entity to insert.
+ The Id of the row created.
+
+
+
+ Adds the name of a column.
+
+ The string builder to append to.
+ The column name.
+
+
+
+ Adds a column equality to a parameter.
+
+ The string builder to append to.
+ The column name.
+
+
+
diff --git a/bin/Dapper.dll b/bin/Dapper.dll
new file mode 100644
index 0000000..a4d613a
Binary files /dev/null and b/bin/Dapper.dll differ
diff --git a/bin/Dapper.xml b/bin/Dapper.xml
new file mode 100644
index 0000000..69c43e2
--- /dev/null
+++ b/bin/Dapper.xml
@@ -0,0 +1,2872 @@
+
+
+
+ Dapper
+
+
+
+
+ Represents the key aspects of a sql operation
+
+
+
+
+ The command (sql or a stored-procedure name) to execute
+
+
+
+
+ The parameters associated with the command
+
+
+
+
+ The active transaction for the command
+
+
+
+
+ The effective timeout for the command
+
+
+
+
+ The type of command that the command-text represents
+
+
+
+
+ Should data be buffered before returning?
+
+
+
+
+ Should the plan for this query be cached?
+
+
+
+
+ Additional state flags against this command
+
+
+
+
+ Can async queries be pipelined?
+
+
+
+
+ Initialize the command definition
+
+ The text for this command.
+ The parameters for this command.
+ The transaction for this command to participate in.
+ The timeout (in seconds) for this command.
+ The for this command.
+ The behavior flags for this command.
+ The cancellation token for this command.
+
+
+
+ For asynchronous operations, the cancellation-token
+
+
+
+
+ Additional state flags that control command behaviour
+
+
+
+
+ No additional flags
+
+
+
+
+ Should data be buffered before returning?
+
+
+
+
+ Can async queries be pipelined?
+
+
+
+
+ Should the plan cache be bypassed?
+
+
+
+
+ Implements custom property mapping by user provided criteria (usually presence of some custom attribute with column to member mapping)
+
+
+
+
+ Creates custom property mapping
+
+ Target entity type
+ Property selector based on target type and DataReader column name
+
+
+
+ Always returns default constructor
+
+ DataReader column names
+ DataReader column types
+ Default constructor
+
+
+
+ Always returns null
+
+
+
+
+
+ Not implemented as far as default constructor used for all cases
+
+
+
+
+
+
+
+ Returns property based on selector strategy
+
+ DataReader column name
+ Property member map
+
+
+
+ This class represents a SQL string, it can be used if you need to denote your parameter is a Char vs VarChar vs nVarChar vs nChar
+
+
+
+
+ Default value for IsAnsi.
+
+
+
+
+ A value to set the default value of strings
+ going through Dapper. Default is 4000, any value larger than this
+ field will not have the default value applied.
+
+
+
+
+ Create a new DbString
+
+
+
+
+ Create a new DbString
+
+
+
+
+ Ansi vs Unicode
+
+
+
+
+ Fixed length
+
+
+
+
+ Length of the string -1 for max
+
+
+
+
+ The value of the string
+
+
+
+
+ Gets a string representation of this DbString.
+
+
+
+
+ Add the parameter to the command... internal use only
+
+
+
+
+
+
+ Represents default type mapping strategy used by Dapper
+
+
+
+
+ Creates default type map
+
+ Entity type
+
+
+
+ Finds best constructor
+
+ DataReader column names
+ DataReader column types
+ Matching constructor or default one
+
+
+
+ Returns the constructor, if any, that has the ExplicitConstructorAttribute on it.
+
+
+
+
+ Gets mapping for constructor parameter
+
+ Constructor to resolve
+ DataReader column name
+ Mapping implementation
+
+
+
+ Gets member mapping for column
+
+ DataReader column name
+ Mapping implementation
+
+
+
+ Should column names like User_Id be allowed to match properties/fields like UserId ?
+
+
+
+
+ The settable properties for this typemap
+
+
+
+
+ A bag of parameters that can be passed to the Dapper Query and Execute methods
+
+
+
+
+ construct a dynamic parameter bag
+
+
+
+
+ construct a dynamic parameter bag
+
+ can be an anonymous type or a DynamicParameters bag
+
+
+
+ Append a whole object full of params to the dynamic
+ EG: AddDynamicParams(new {A = 1, B = 2}) // will add property A and B to the dynamic
+
+
+
+
+
+ Add a parameter to this dynamic parameter list.
+
+ The name of the parameter.
+ The value of the parameter.
+ The type of the parameter.
+ The in or out direction of the parameter.
+ The size of the parameter.
+
+
+
+ Add a parameter to this dynamic parameter list.
+
+ The name of the parameter.
+ The value of the parameter.
+ The type of the parameter.
+ The in or out direction of the parameter.
+ The size of the parameter.
+ The precision of the parameter.
+ The scale of the parameter.
+
+
+
+ If true, the command-text is inspected and only values that are clearly used are included on the connection
+
+
+
+
+ Add all the parameters needed to the command just before it executes
+
+ The raw command prior to execution
+ Information about the query
+
+
+
+ All the names of the param in the bag, use Get to yank them out
+
+
+
+
+ Get the value of a parameter
+
+
+
+ The value, note DBNull.Value is not returned, instead the value is returned as null
+
+
+
+ Allows you to automatically populate a target property/field from output parameters. It actually
+ creates an InputOutput parameter, so you can still pass data in.
+
+
+ The object whose property/field you wish to populate.
+ A MemberExpression targeting a property/field of the target (or descendant thereof.)
+
+ The size to set on the parameter. Defaults to 0, or DbString.DefaultLength in case of strings.
+ The DynamicParameters instance
+
+
+
+ Tell Dapper to use an explicit constructor, passing nulls or 0s for all parameters
+
+
+ Usage on methods is limited to the usage with Dapper.AOT (https://github.com/DapperLib/DapperAOT)
+
+
+
+
+ Creates a with a less specific generic parameter that perfectly mirrors the
+ state of the specified .
+
+
+
+
+ Handles variances in features per DBMS
+
+
+
+
+ Gets the feature set based on the passed connection
+
+ The connection to get supported features for.
+
+
+
+ True if the db supports array columns e.g. Postgresql
+
+
+
+
+ Represents simple member map for one of target parameter or property or field to source DataReader column
+
+
+
+
+ Creates instance for simple property mapping
+
+ DataReader column name
+ Target property
+
+
+
+ Creates instance for simple field mapping
+
+ DataReader column name
+ Target property
+
+
+
+ Creates instance for simple constructor parameter mapping
+
+ DataReader column name
+ Target constructor parameter
+
+
+
+ DataReader column name
+
+
+
+
+ Target member type
+
+
+
+
+ Target property
+
+
+
+
+ Target field
+
+
+
+
+ Target constructor parameter
+
+
+
+
+ Used to pass a IEnumerable<SqlDataRecord> as a SqlDataRecordListTVPParameter
+
+
+
+
+ Create a new instance of .
+
+ The data records to convert into TVPs.
+ The parameter type name.
+
+
+
+ Dapper, a light weight object mapper for ADO.NET
+
+
+
+
+ Execute a query asynchronously using Task.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ Note: each row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Execute a query asynchronously using Task.
+
+ The connection to query on.
+ The command used to query on this connection.
+ Note: each row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The command used to query on this connection.
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The command used to query on this connection.
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The command used to query on this connection.
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The command used to query on this connection.
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Execute a query asynchronously using Task.
+
+ The type of results to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+ A sequence of data of ; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The type of result to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The type of result to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The type of result to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The type to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+
+
+ Execute a query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+
+
+ Execute a query asynchronously using Task.
+
+ The type to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+ A sequence of data of ; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Execute a query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The command used to query on this connection.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The command used to query on this connection.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The type to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The command used to query on this connection.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The type to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The command used to query on this connection.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The type to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The connection to query on.
+ The type to return.
+ The command used to query on this connection.
+
+
+
+ Execute a single-row query asynchronously using Task.
+
+ The type to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+
+
+ Attempts to open a connection asynchronously, with a better error message for unsupported usages.
+
+
+
+
+ Attempts setup a on a , with a better error message for unsupported usages.
+
+
+
+
+ Execute a command asynchronously using Task.
+
+ The connection to query on.
+ The SQL to execute for this query.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ The number of rows affected.
+
+
+
+ Execute a command asynchronously using Task.
+
+ The connection to execute on.
+ The command to execute on this connection.
+ The number of rows affected.
+
+
+
+ Perform an asynchronous multi-mapping query with 2 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 2 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The field we should split and read the second object from (default: "Id").
+ The command to execute.
+ The function to map row types to the return type.
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 3 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 3 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The field we should split and read the second object from (default: "Id").
+ The command to execute.
+ The function to map row types to the return type.
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 4 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 4 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The field we should split and read the second object from (default: "Id").
+ The command to execute.
+ The function to map row types to the return type.
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 5 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 5 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The field we should split and read the second object from (default: "Id").
+ The command to execute.
+ The function to map row types to the return type.
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 6 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The sixth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 6 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The sixth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The field we should split and read the second object from (default: "Id").
+ The command to execute.
+ The function to map row types to the return type.
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 7 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The sixth type in the recordset.
+ The seventh type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with 7 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The sixth type in the recordset.
+ The seventh type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The field we should split and read the second object from (default: "Id").
+ The command to execute.
+ The function to map row types to the return type.
+ An enumerable of .
+
+
+
+ Perform an asynchronous multi-mapping query with an arbitrary number of input types.
+ This returns a single type, combined from the raw types via .
+
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ Array of types in the recordset.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Execute a command that returns multiple result sets, and access each in turn.
+
+ The connection to query on.
+ The SQL to execute for this query.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+
+
+
+ Execute a command that returns multiple result sets, and access each in turn.
+
+ The connection to query on.
+ The command to execute for this query.
+
+
+
+ Execute parameterized SQL and return an .
+
+ The connection to execute on.
+ The SQL to execute.
+ The parameters to use for this command.
+ The transaction to use for this command.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An that can be used to iterate over the results of the SQL query.
+
+ This is typically used when the results of a query are not processed by Dapper, for example, used to fill a
+ or .
+
+
+
+
+
+
+
+
+
+ Execute parameterized SQL and return a .
+
+ The connection to execute on.
+ The SQL to execute.
+ The parameters to use for this command.
+ The transaction to use for this command.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+
+
+
+ Execute parameterized SQL and return an .
+
+ The connection to execute on.
+ The command to execute.
+ An that can be used to iterate over the results of the SQL query.
+
+ This is typically used when the results of a query are not processed by Dapper, for example, used to fill a
+ or .
+
+
+
+
+ Execute parameterized SQL and return a .
+
+ The connection to execute on.
+ The command to execute.
+
+
+
+ Execute parameterized SQL and return an .
+
+ The connection to execute on.
+ The command to execute.
+ The flags for this reader.
+ An that can be used to iterate over the results of the SQL query.
+
+ This is typically used when the results of a query are not processed by Dapper, for example, used to fill a
+ or .
+
+
+
+
+ Execute parameterized SQL and return a .
+
+ The connection to execute on.
+ The command to execute.
+ The flags for this reader.
+
+
+
+ Execute parameterized SQL that selects a single value.
+
+ The connection to execute on.
+ The SQL to execute.
+ The parameters to use for this command.
+ The transaction to use for this command.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ The first cell returned, as .
+
+
+
+ Execute parameterized SQL that selects a single value.
+
+ The type to return.
+ The connection to execute on.
+ The SQL to execute.
+ The parameters to use for this command.
+ The transaction to use for this command.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ The first cell returned, as .
+
+
+
+ Execute parameterized SQL that selects a single value.
+
+ The connection to execute on.
+ The command to execute.
+ The first cell selected as .
+
+
+
+ Execute parameterized SQL that selects a single value.
+
+ The type to return.
+ The connection to execute on.
+ The command to execute.
+ The first cell selected as .
+
+
+
+ Called if the query cache is purged via PurgeQueryCache
+
+
+
+
+ Purge the query cache
+
+
+
+
+ Return a count of all the cached queries by Dapper
+
+
+
+
+
+ Return a list of all the queries cached by Dapper
+
+
+
+
+
+
+ Deep diagnostics only: find any hash collisions in the cache
+
+
+
+
+ Clear the registered type handlers.
+
+
+
+
+ Configure the specified type to be mapped to a given db-type.
+
+ The type to map from.
+ The database type to map to.
+
+
+
+ Configure the specified type to be mapped to a given db-type.
+
+ The type to map from.
+ The database type to map to.
+ Whether to prefer over .
+
+
+
+ Removes the specified type from the Type/DbType mapping table.
+
+ The type to remove from the current map.
+
+
+
+ Configure the specified type to be processed by a custom handler.
+
+ The type to handle.
+ The handler to process the .
+
+
+
+ Determine if the specified type will be processed by a custom handler.
+
+ The type to handle.
+ Boolean value specifying whether the type will be processed by a custom handler.
+
+
+
+ Configure the specified type to be processed by a custom handler.
+
+ The type to handle.
+ The handler to process the .
+ Whether to clone the current type handler map.
+
+
+
+ Configure the specified type to be processed by a custom handler.
+
+ The type to handle.
+ The handler for the type .
+
+
+
+ Get the DbType that maps to a given value.
+
+ The parameter to configure the value for.
+ The object to get a corresponding database type for.
+
+
+
+ OBSOLETE: For internal usage only. Lookup the DbType and handler for a given Type and member
+
+ The type to lookup.
+ The name (for error messages).
+ Whether to demand a value (throw if missing).
+ The handler for .
+
+
+
+ Obtains the data as a list; if it is *already* a list, the original object is returned without
+ any duplication; otherwise, ToList() is invoked.
+
+ The type of element in the list.
+ The enumerable to return as a list.
+
+
+
+ Execute parameterized SQL.
+
+ The connection to query on.
+ The SQL to execute for this query.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ The number of rows affected.
+
+
+
+ Execute parameterized SQL.
+
+ The connection to execute on.
+ The command to execute on this connection.
+ The number of rows affected.
+
+
+
+ Execute parameterized SQL that selects a single value.
+
+ The connection to execute on.
+ The SQL to execute.
+ The parameters to use for this command.
+ The transaction to use for this command.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ The first cell selected as .
+
+
+
+ Execute parameterized SQL that selects a single value.
+
+ The type to return.
+ The connection to execute on.
+ The SQL to execute.
+ The parameters to use for this command.
+ The transaction to use for this command.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ The first cell returned, as .
+
+
+
+ Execute parameterized SQL that selects a single value.
+
+ The connection to execute on.
+ The command to execute.
+ The first cell selected as .
+
+
+
+ Execute parameterized SQL that selects a single value.
+
+ The type to return.
+ The connection to execute on.
+ The command to execute.
+ The first cell selected as .
+
+
+
+ Execute parameterized SQL and return an .
+
+ The connection to execute on.
+ The SQL to execute.
+ The parameters to use for this command.
+ The transaction to use for this command.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An that can be used to iterate over the results of the SQL query.
+
+ This is typically used when the results of a query are not processed by Dapper, for example, used to fill a
+ or .
+
+
+
+
+
+
+
+
+
+ Execute parameterized SQL and return an .
+
+ The connection to execute on.
+ The command to execute.
+ An that can be used to iterate over the results of the SQL query.
+
+ This is typically used when the results of a query are not processed by Dapper, for example, used to fill a
+ or .
+
+
+
+
+ Execute parameterized SQL and return an .
+
+ The connection to execute on.
+ The command to execute.
+ The flags for this reader.
+ An that can be used to iterate over the results of the SQL query.
+
+ This is typically used when the results of a query are not processed by Dapper, for example, used to fill a
+ or .
+
+
+
+
+ Return a sequence of dynamic objects with properties matching the columns.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ Whether to buffer the results in memory.
+ The command timeout (in seconds).
+ The type of command to execute.
+ Note: each row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Return a dynamic object with properties matching the columns.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Return a dynamic object with properties matching the columns.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Return a dynamic object with properties matching the columns.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Return a dynamic object with properties matching the columns.
+
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Executes a query, returning the data typed as .
+
+ The type of results to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ Whether to buffer results in memory.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The type of result to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The type of result to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The type of result to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The type of result to return.
+ The connection to query on.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ Whether to buffer results in memory.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a single-row query, returning the data typed as .
+
+ The connection to query on.
+ The type to return.
+ The SQL to execute for the query.
+ The parameters to pass, if any.
+ The transaction to use, if any.
+ The command timeout (in seconds).
+ The type of command to execute.
+ is null.
+
+ A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a query, returning the data typed as .
+
+ The type of results to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+ A sequence of data of ; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a query, returning the data typed as .
+
+ The type of results to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+ A single instance or null of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a query, returning the data typed as .
+
+ The type of results to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+ A single or null instance of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a query, returning the data typed as .
+
+ The type of results to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+ A single instance of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Executes a query, returning the data typed as .
+
+ The type of results to return.
+ The connection to query on.
+ The command used to query on this connection.
+
+ A single instance of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
+ created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
+
+
+
+
+ Execute a command that returns multiple result sets, and access each in turn.
+
+ The connection to query on.
+ The SQL to execute for this query.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+
+
+
+ Execute a command that returns multiple result sets, and access each in turn.
+
+ The connection to query on.
+ The command to execute for this query.
+
+
+
+ Shared value deserialization path for QueryRowImpl and QueryRowAsync
+
+
+
+
+ Perform a multi-mapping query with 2 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform a multi-mapping query with 3 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform a multi-mapping query with 4 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform a multi-mapping query with 5 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform a multi-mapping query with 6 input types.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The sixth type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform a multi-mapping query with 7 input types. If you need more types -> use Query with Type[] parameter.
+ This returns a single type, combined from the raw types via .
+
+ The first type in the recordset.
+ The second type in the recordset.
+ The third type in the recordset.
+ The fourth type in the recordset.
+ The fifth type in the recordset.
+ The sixth type in the recordset.
+ The seventh type in the recordset.
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Perform a multi-mapping query with an arbitrary number of input types.
+ This returns a single type, combined from the raw types via .
+
+ The combined type to return.
+ The connection to query on.
+ The SQL to execute for this query.
+ Array of types in the recordset.
+ The function to map row types to the return type.
+ The parameters to use for this query.
+ The transaction to use for this query.
+ Whether to buffer the results in memory.
+ The field we should split and read the second object from (default: "Id").
+ Number of seconds before command execution timeout.
+ Is it a stored proc or a batch?
+ An enumerable of .
+
+
+
+ Internal use only.
+
+ The object to convert to a character.
+
+
+
+ Internal use only.
+
+ The object to convert to a character.
+
+
+
+ Internal use only.
+
+ The parameter collection to search in.
+ The command for this fetch.
+ The name of the parameter to get.
+
+
+
+ Internal use only.
+
+ The command to pack parameters for.
+ The name prefix for these parameters.
+ The parameter value can be an
+
+
+
+ OBSOLETE: For internal usage only. Sanitizes the parameter value with proper type casting.
+
+ The value to sanitize.
+
+
+
+ Replace all literal tokens with their text form.
+
+ The parameter lookup to do replacements with.
+ The command to replace parameters in.
+
+
+
+ Convert numeric values to their string form for SQL literal purposes.
+
+ The value to get a string for.
+
+
+
+ Internal use only.
+
+ The identity of the generator.
+ Whether to check for duplicates.
+ Whether to remove unused parameters.
+
+
+
+ Gets type-map for the given type
+
+ Type map instance, default is to create new instance of DefaultTypeMap
+
+
+
+ Gets type-map for the given .
+
+ The type to get a map for.
+ Type map implementation, DefaultTypeMap instance if no override present
+
+
+
+ Set custom mapping for type deserializers
+
+ Entity type to override
+ Mapping rules implementation, null to remove custom map
+
+
+
+ Internal use only
+
+
+
+
+
+
+
+
+
+
+ Internal use only
+
+
+
+
+
+
+
+
+
+ For internal use only
+
+
+
+
+ Throws a data exception, only used internally
+
+ The exception to throw.
+ The index the exception occurred at.
+ The reader the exception occurred in.
+ The value that caused the exception.
+
+
+
+ How should connection strings be compared for equivalence? Defaults to StringComparer.Ordinal.
+ Providing a custom implementation can be useful for allowing multi-tenancy databases with identical
+ schema to share strategies. Note that usual equivalence rules apply: any equivalent connection strings
+ MUST yield the same hash-code.
+
+
+
+
+ Key used to indicate the type name associated with a DataTable.
+
+
+
+
+ Used to pass a DataTable as a .
+
+ The to create this parameter for.
+ The name of the type this parameter is for.
+
+
+
+ Associate a DataTable with a type name.
+
+ The that does with the .
+ The name of the type this table is for.
+
+
+
+ Fetch the type name associated with a .
+
+ The that has a type name associated with it.
+
+
+
+ Used to pass a IEnumerable<SqlDataRecord> as a TableValuedParameter.
+
+ The list of records to convert to TVPs.
+ The sql parameter type name.
+
+
+
+ Dummy type for excluding from multi-map
+
+
+
+
+ The grid reader provides interfaces for reading multiple result sets from a Dapper query
+
+
+
+
+ Read the next grid of results, returned as a dynamic object
+
+ Note: each row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+ Whether to buffer the results.
+
+
+
+ Read an individual row of the next grid of results, returned as a dynamic object
+
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read an individual row of the next grid of results, returned as a dynamic object
+
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read an individual row of the next grid of results, returned as a dynamic object
+
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read an individual row of the next grid of results, returned as a dynamic object
+
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read the next grid of results
+
+ The type to read.
+ Whether to buffer the results.
+ is null.
+
+
+
+ Read an individual row of the next grid of results
+
+ The type to read.
+ is null.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+ is null.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+ is null.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+ is null.
+
+
+
+ Read the next grid of results.
+
+ The type to read.
+ Whether the results should be buffered in memory.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+
+
+
+ Marks the current grid as consumed, and moves to the next result
+
+
+
+
+ Creates a grid reader over an existing command and reader
+
+
+
+
+ Read the next grid of results, returned as a dynamic object.
+
+ Whether the results should be buffered in memory.
+ Note: each row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read an individual row of the next grid of results, returned as a dynamic object.
+
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read an individual row of the next grid of results, returned as a dynamic object.
+
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read an individual row of the next grid of results, returned as a dynamic object.
+
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read an individual row of the next grid of results, returned as a dynamic object.
+
+ Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object>
+
+
+
+ Read the next grid of results.
+
+ The type to read.
+ Whether the results should be buffered in memory.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+
+
+
+ Read the next grid of results.
+
+ The type to read.
+ Whether to buffer the results.
+ is null.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+ is null.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+ is null.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+ is null.
+
+
+
+ Read an individual row of the next grid of results.
+
+ The type to read.
+ is null.
+
+
+
+ Validates that data is available, returning the that corresponds to the current grid - and marks the current grid as consumed;
+ this call must be paired with a call to or
+
+
+
+
+ Read multiple objects from a single record set on the grid.
+
+ The first type in the record set.
+ The second type in the record set.
+ The type to return from the record set.
+ The mapping function from the read types to the return type.
+ The field(s) we should split and read the second object from (defaults to "id")
+ Whether to buffer results in memory.
+
+
+
+ Read multiple objects from a single record set on the grid.
+
+ The first type in the record set.
+ The second type in the record set.
+ The third type in the record set.
+ The type to return from the record set.
+ The mapping function from the read types to the return type.
+ The field(s) we should split and read the second object from (defaults to "id")
+ Whether to buffer results in memory.
+
+
+
+ Read multiple objects from a single record set on the grid
+
+ The first type in the record set.
+ The second type in the record set.
+ The third type in the record set.
+ The fourth type in the record set.
+ The type to return from the record set.
+ The mapping function from the read types to the return type.
+ The field(s) we should split and read the second object from (defaults to "id")
+ Whether to buffer results in memory.
+
+
+
+ Read multiple objects from a single record set on the grid
+
+ The first type in the record set.
+ The second type in the record set.
+ The third type in the record set.
+ The fourth type in the record set.
+ The fifth type in the record set.
+ The type to return from the record set.
+ The mapping function from the read types to the return type.
+ The field(s) we should split and read the second object from (defaults to "id")
+ Whether to buffer results in memory.
+
+
+
+ Read multiple objects from a single record set on the grid
+
+ The first type in the record set.
+ The second type in the record set.
+ The third type in the record set.
+ The fourth type in the record set.
+ The fifth type in the record set.
+ The sixth type in the record set.
+ The type to return from the record set.
+ The mapping function from the read types to the return type.
+ The field(s) we should split and read the second object from (defaults to "id")
+ Whether to buffer results in memory.
+
+
+
+ Read multiple objects from a single record set on the grid
+
+ The first type in the record set.
+ The second type in the record set.
+ The third type in the record set.
+ The fourth type in the record set.
+ The fifth type in the record set.
+ The sixth type in the record set.
+ The seventh type in the record set.
+ The type to return from the record set.
+ The mapping function from the read types to the return type.
+ The field(s) we should split and read the second object from (defaults to "id")
+ Whether to buffer results in memory.
+
+
+
+ Read multiple objects from a single record set on the grid
+
+ The type to return from the record set.
+ The types to read from the result set.
+ The mapping function from the read types to the return type.
+ The field(s) we should split and read the second object from (defaults to "id")
+ Whether to buffer results in memory.
+
+
+
+ Indicates the current result index
+
+
+
+
+ Has the underlying reader been consumed?
+
+ This also reports true if the current grid is actively being consumed
+
+
+
+ The command associated with the reader
+
+
+
+
+ The underlying reader
+
+
+
+
+ The cancellation token associated with this reader
+
+
+
+
+ Marks the current grid as consumed, and moves to the next result
+
+
+
+
+ Dispose the grid, closing and disposing both the underlying reader and command.
+
+
+
+
+ Implement this interface to pass an arbitrary db specific parameter to Dapper
+
+
+
+
+ Add the parameter needed to the command before it executes
+
+ The raw command prior to execution
+ Parameter name
+
+
+
+ Parses a data reader to a sequence of data of the supplied type. Used for deserializing a reader without a connection, etc.
+
+ The type to parse from the .
+ The data reader to parse results from.
+
+
+
+ Parses a data reader to a sequence of data of the supplied type (as object). Used for deserializing a reader without a connection, etc.
+
+ The data reader to parse results from.
+ The type to parse from the .
+
+
+
+ Parses a data reader to a sequence of dynamic. Used for deserializing a reader without a connection, etc.
+
+ The data reader to parse results from.
+
+
+
+ Gets the row parser for a specific row on a data reader. This allows for type switching every row based on, for example, a TypeId column.
+ You could return a collection of the base type but have each more specific.
+
+ The data reader to get the parser for the current row from
+ The type to get the parser for
+ The start column index of the object (default 0)
+ The length of columns to read (default -1 = all fields following startIndex)
+ Return null if we can't find the first column? (default false)
+ A parser for this specific object from this row.
+
+
+
+ Gets the row parser for a specific row on a data reader. This allows for type switching every row based on, for example, a TypeId column.
+ You could return a collection of the base type but have each more specific.
+
+ The data reader to get the parser for the current row from
+ The type to get the parser for
+ The start column index of the object (default 0)
+ The length of columns to read (default -1 = all fields following startIndex)
+ Return null if we can't find the first column? (default false)
+ A parser for this specific object from this row.
+
+
+
+
+
+
+ Gets the row parser for a specific row on a data reader. This allows for type switching every row based on, for example, a TypeId column.
+ You could return a collection of the base type but have each more specific.
+
+ The type of results to return.
+ The data reader to get the parser for the current row from.
+ The type to get the parser for.
+ The start column index of the object (default: 0).
+ The length of columns to read (default: -1 = all fields following startIndex).
+ Return null if we can't find the first column? (default: false).
+ A parser for this specific object from this row.
+
+ var result = new List<BaseType>();
+ using (var reader = connection.ExecuteReader(@"
+ select 'abc' as Name, 1 as Type, 3.0 as Value
+ union all
+ select 'def' as Name, 2 as Type, 4.0 as Value"))
+ {
+ if (reader.Read())
+ {
+ var toFoo = reader.GetRowParser<BaseType>(typeof(Foo));
+ var toBar = reader.GetRowParser<BaseType>(typeof(Bar));
+ var col = reader.GetOrdinal("Type");
+ do
+ {
+ switch (reader.GetInt32(col))
+ {
+ case 1:
+ result.Add(toFoo(reader));
+ break;
+ case 2:
+ result.Add(toBar(reader));
+ break;
+ }
+ } while (reader.Read());
+ }
+ }
+
+ abstract class BaseType
+ {
+ public abstract int Type { get; }
+ }
+ class Foo : BaseType
+ {
+ public string Name { get; set; }
+ public override int Type => 1;
+ }
+ class Bar : BaseType
+ {
+ public float Value { get; set; }
+ public override int Type => 2;
+ }
+
+
+
+
+ Identity of a cached query in Dapper, used for extensibility.
+
+
+
+
+ Create an identity for use with DynamicParameters, internal use only.
+
+ The parameters type to create an for.
+
+
+
+
+ Whether this equals another.
+
+ The other to compare to.
+
+
+
+ The raw SQL command.
+
+
+
+
+ The raw SQL command.
+
+
+
+
+ The SQL command type.
+
+
+
+
+ The SQL command type.
+
+
+
+
+ The hash code of this Identity.
+
+
+
+
+ The grid index (position in the reader) of this Identity.
+
+
+
+
+ The grid index (position in the reader) of this Identity.
+
+
+
+
+ The of this Identity.
+
+
+
+
+ The of this Identity.
+
+
+
+
+ The connection string for this Identity.
+
+
+
+
+ The type of the parameters object for this Identity.
+
+
+
+
+ The type of the parameters object for this Identity.
+
+
+
+
+ Gets the hash code for this identity.
+
+
+
+
+
+ See object.ToString()
+
+
+
+
+ Compare 2 Identity objects
+
+ The other object to compare.
+ Whether the two are equal
+
+
+
+ Implement this interface to pass an arbitrary db specific set of parameters to Dapper
+
+
+
+
+ Add all the parameters needed to the command just before it executes
+
+ The raw command prior to execution
+ Information about the query
+
+
+
+ Implements this interface to provide custom member mapping
+
+
+
+
+ Source DataReader column name
+
+
+
+
+ Target member type
+
+
+
+
+ Target property
+
+
+
+
+ Target field
+
+
+
+
+ Target constructor parameter
+
+
+
+
+ Extends IDynamicParameters with facilities for executing callbacks after commands have completed
+
+
+
+
+ Invoked when the command has executed
+
+
+
+
+ Extends IDynamicParameters providing by-name lookup of parameter values
+
+
+
+
+ Get the value of the specified parameter (return null if not found)
+
+ The name of the parameter to get.
+
+
+
+ Implement this interface to perform custom type-based parameter handling and value parsing
+
+
+
+
+ Assign the value of a parameter before a command executes
+
+ The parameter to configure
+ Parameter value
+
+
+
+ Parse a database value back to a typed value
+
+ The value from the database
+ The type to parse to
+ The typed value
+
+
+
+ Implement this interface to change default mapping of reader columns to type members
+
+
+
+
+ Finds best constructor
+
+ DataReader column names
+ DataReader column types
+ Matching constructor or default one
+
+
+
+ Returns a constructor which should *always* be used.
+
+ Parameters will be default values, nulls for reference types and zero'd for value types.
+
+ Use this class to force object creation away from parameterless constructors you don't control.
+
+
+
+
+ Gets mapping for constructor parameter
+
+ Constructor to resolve
+ DataReader column name
+ Mapping implementation
+
+
+
+ Gets member mapping for column
+
+ DataReader column name
+ Mapping implementation
+
+
+
+ This is a micro-cache; suitable when the number of terms is controllable (a few hundred, for example),
+ and strictly append-only; you cannot change existing values. All key matches are on **REFERENCE**
+ equality. The type is fully thread-safe.
+
+ The type to cache.
+ The value type of the cache.
+
+
+
+ Represents a placeholder for a value that should be replaced as a literal value in the resulting sql
+
+
+
+
+ The text in the original command that should be replaced
+
+
+
+
+ The name of the member referred to by the token
+
+
+
+
+ Permits specifying certain SqlMapper values globally.
+
+
+
+
+ Gets or sets whether Dapper should use the CommandBehavior.SingleResult optimization
+
+ Note that a consequence of enabling this option is that errors that happen after the first select may not be reported
+
+
+
+ Gets or sets whether Dapper should use the CommandBehavior.SingleRow optimization
+
+ Note that on some DB providers this optimization can have adverse performance impact
+
+
+
+ Resets all Settings to their default values
+
+
+
+
+ Specifies the default Command Timeout for all Queries
+
+
+
+
+ Indicates whether nulls in data are silently ignored (default) vs actively applied and assigned to members
+
+
+
+
+ Should list expansions be padded with null-valued parameters, to prevent query-plan saturation? For example,
+ an 'in @foo' expansion with 7, 8 or 9 values will be sent as a list of 10 values, with 3, 2 or 1 of them null.
+ The padding size is relative to the size of the list; "next 10" under 150, "next 50" under 500,
+ "next 100" under 1500, etc.
+
+
+ Caution: this should be treated with care if your DB provider (or the specific configuration) allows for null
+ equality (aka "ansi nulls off"), as this may change the intent of your query; as such, this is disabled by
+ default and must be enabled.
+
+
+
+
+ If set (non-negative), when performing in-list expansions of integer types ("where id in @ids", etc), switch to a string_split based
+ operation if there are this many elements or more. Note that this feature requires SQL Server 2016 / compatibility level 130 (or above).
+
+
+
+
+ If set, pseudo-positional parameters (i.e. ?foo?) are passed using auto-generated incremental names, i.e. "1", "2", "3"
+ instead of the original name; for most scenarios, this is ignored since the name is redundant, but "snowflake" requires this.
+
+
+
+
+ If assigned a non-negative value, then that value is applied to any commands FetchSize property, if it exists;
+ see https://docs.oracle.com/en/database/oracle/oracle-database/18/odpnt/CommandFetchSize.html; note that this value
+ can only be set globally - it is not intended for frequent/contextual changing.
+
+
+
+
+ Indicates whether single-character parameter tokens (? etc) will be detected and used where possible;
+ this feature is not recommended and will be disabled by default in future versions;
+ where possible, prefer named parameters (@yourParam etc) or Dapper's "pseudo-positional" parameters (?yourParam? etc).
+
+
+
+
+ Base-class for simple type-handlers
+
+ This this handler is for.
+
+
+
+ Assign the value of a parameter before a command executes
+
+ The parameter to configure
+ Parameter value
+
+
+
+ Parse a database value back to a typed value
+
+ The value from the database
+ The typed value
+
+
+
+ Base-class for simple type-handlers that are based around strings
+
+ This this handler is for.
+
+
+
+ Parse a string into the expected type (the string will never be null)
+
+ The string to parse.
+
+
+
+ Format an instance into a string (the instance will never be null)
+
+ The string to format.
+
+
+
+ Assign the value of a parameter before a command executes
+
+ The parameter to configure
+ Parameter value
+
+
+
+ Parse a database value back to a typed value
+
+ The value from the database
+ The typed value
+
+
+
+ Not intended for direct usage
+
+ The type to have a cache for.
+
+
+
+ Not intended for direct usage.
+
+ The object to parse.
+
+
+
+ Not intended for direct usage.
+
+ The parameter to set a value for.
+ The value to set.
+
+
+
+ A type handler for data-types that are supported by the underlying provider, but which need
+ a well-known UdtTypeName to be specified
+
+
+
+
+ Creates a new instance of UdtTypeHandler with the specified .
+
+ The user defined type name.
+
+
+
+ Used to pass a DataTable as a TableValuedParameter
+
+
+
+
+ Create a new instance of .
+
+ The to create this parameter for
+
+
+
+ Create a new instance of .
+
+ The to create this parameter for.
+ The name of the type this parameter is for.
+
+
+
+ Describes a reader that controls the lifetime of both a command and a reader,
+ exposing the downstream command/reader as properties.
+
+
+
+
+ Obtain the underlying reader
+
+
+
+
+ Obtain the underlying command
+
+
+
+
diff --git a/bin/Enums.NET.dll b/bin/Enums.NET.dll
new file mode 100644
index 0000000..ab7421c
Binary files /dev/null and b/bin/Enums.NET.dll differ
diff --git a/bin/Enums.NET.xml b/bin/Enums.NET.xml
new file mode 100644
index 0000000..8c3be73
--- /dev/null
+++ b/bin/Enums.NET.xml
@@ -0,0 +1,4788 @@
+
+
+
+ Enums.NET
+
+
+
+
+ An collection.
+
+
+
+
+ The indexer.
+
+ The index of the to retrieve.
+ The at the specified
+
+
+
+ The number of s.
+
+
+
+
+ Indicates if the collection contains a .
+
+ The attribute type.
+ Indication if the colleciton contains a .
+
+
+
+ Indicates if the collection contains an that is an instance of .
+
+ The attribute type.
+ Indication if the colleciton contains an that is an instance of .
+ is null.
+
+
+
+ Retrieves the first in the collection if defined otherwise null.
+
+ The attribute type.
+ The first in the collection if defined otherwise null.
+
+
+
+ Retrieves the first that is an instance of in the collection if defined otherwise null.
+
+ The attribute type.
+ The first that is an instance of in the collection if defined otherwise null.
+ is null.
+
+
+
+ Retrieves all 's in the collection.
+
+ The attribute type.
+ All 's in the collection.
+
+
+
+ Retrieves all s that are an instance of in the collection.
+
+ The attribute type.
+ All s that are an instance of in the collection.
+ is null.
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+ An enumerator that iterates through the collection.
+
+
+
+ An efficient enum comparer.
+
+
+
+
+ Gets a singleton instance of for the enum type provided.
+
+ The enum type.
+ A singleton instance of for the enum type provided.
+ is null.
+ is not an enum type.
+
+
+
+ Indicates if equals without boxing the values.
+
+ The first enum value.
+ The second enum value.
+ Indication if equals without boxing the values.
+
+
+
+ Retrieves a hash code for without boxing the value.
+
+ The enum value.
+ Hash code for without boxing the value.
+
+
+
+ Compares to without boxing the values.
+
+ The first enum value.
+ The second enum value.
+ 1 if is greater than , 0 if equals ,
+ and -1 if is less than .
+
+
+
+ An efficient enum comparer which doesn't box the values.
+
+ The enum type.
+
+
+
+ The singleton instance of .
+
+ is not an enum type.
+
+
+
+ Indicates if equals without boxing the values.
+
+ The first enum value.
+ The second enum value.
+ Indication if equals without boxing the values.
+
+
+
+ Retrieves a hash code for without boxing the value.
+
+ The enum value.
+ Hash code for without boxing the value.
+
+
+
+ Compares to without boxing the values.
+
+ The first enum value.
+ The second enum value.
+ 1 if is greater than , 0 if equals ,
+ and -1 if is less than .
+
+
+
+ Specifies the enum string representation formats.
+
+
+
+
+ Enum is represented by its decimal value.
+
+
+
+
+ Enum is represented by its hexadecimal value.
+
+
+
+
+ Enum is represented by its underlying value.
+
+
+
+
+ Enum is represented by its name.
+
+
+
+
+ Enum is represented by its .
+
+
+
+
+ Enum is represented by its .
+
+
+
+
+ Enum is represented by its .
+
+
+
+
+ An enum member which is composed of its name, value, and attributes.
+
+
+
+
+ The enum member's value.
+
+
+
+
+ The enum member's name.
+
+
+
+
+ The enum member's attributes.
+
+
+
+
+ Retrieves the enum member's name.
+
+ The enum member's name.
+
+
+
+ Retrieves the enum member's name.
+
+ The enum member's name.
+
+
+
+ Converts the enum member to its string representation using the specified .
+
+ The output format to use.
+ A string representation of the enum member.
+ is an invalid value.
+
+
+
+ Converts the enum member to its string representation using the specified .
+
+ The output format to use.
+ A string representation of the enum member.
+ is an invalid value.
+
+
+
+ Converts the enum member to its string representation using the specified formats.
+
+ The first output format to use.
+ The second output format to use if using the first resolves to null.
+ A string representation of the enum member.
+ or is an invalid value.
+
+
+
+ Converts the enum member to its string representation using the specified formats.
+
+ The first output format to use.
+ The second output format to use if using the first resolves to null.
+ The third output format to use if using the first and second both resolve to null.
+ A string representation of the enum member.
+ , , or is an invalid value.
+
+
+
+ Converts the enum member to its string representation using the specified .
+
+ The output formats to use.
+ A string representation of the enum member.
+ contains an invalid value.
+
+
+
+ Retrieves the enum member's underlying integral value.
+
+ The enum member's underlying integral value.
+
+
+
+ Converts to an .
+
+ converted to an .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ converted to a .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ converted to an .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ converted to a .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ converted to an .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ converted to a .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ converted to an .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ converted to a .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Retrieves the hash code of .
+
+ The hash code of .
+
+
+
+ Indicates whether the specified is equal to the current .
+
+ The other .
+ Indication whether the specified is equal to the current .
+
+
+
+ Indicates whether the specified is equal to the current .
+
+ The other .
+ Indication whether the specified is equal to the current .
+
+
+
+ An enum member which is composed of its name, value, and attributes.
+
+ The enum type.
+
+
+
+ The enum member's value.
+
+
+
+
+ Indicates whether the specified is equal to the current .
+
+ The other .
+ Indication whether the specified is equal to the current .
+
+
+
+ Specifies what enum members to include.
+
+
+
+
+ Include all enum members.
+
+
+
+
+ Include only distinct valued enum members.
+
+
+
+
+ Include each flag enum member.
+
+
+
+
+ Include enum members in display order using .
+
+
+
+
+ Static class that provides efficient type-safe enum operations through the use of cached enum members.
+ Many operations are exposed as C# extension methods for convenience.
+
+
+
+
+ Registers a custom with the specified formatter.
+
+ The formatter.
+ A custom that is registered with the specified formatter.
+ is null.
+
+
+
+ Retrieves the underlying type of .
+
+ The enum type.
+ The underlying type of .
+
+
+
+ Retrieves 's underlying type's .
+
+ The enum type.
+ 's underlying type's .
+
+
+
+ Retrieves 's member count.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's member count.
+ is an invalid value.
+
+
+
+ Retrieves 's members in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members in increasing value order.
+ is an invalid value.
+
+
+
+ Retrieves 's members' names in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members' names in increasing value order.
+ is an invalid value.
+
+
+
+ Retrieves 's members' values in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members' values in increasing value order.
+ is an invalid value.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert. Must be an , , , ,
+ , , , , , , or Nullable of one of these.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not a valid type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert. Must be an , , , ,
+ , , , , , , or Nullable of one of these.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Indicates if is valid using the specified .
+
+ The enum type.
+ The enum value.
+ The validation to perform on the value.
+ Indication if is valid.
+ is an invalid value.
+
+
+
+ Indicates if is defined.
+
+ The enum type.
+ The enum value.
+ Indication if is defined.
+
+
+
+ Validates that is valid using the specified .
+ If it's not it throws an with the specified .
+
+ The enum type.
+ The enum value.
+ The parameter name to be used if throwing an .
+ The validation to perform on the value.
+ for use in fluent API's and base constructor method calls.
+ is an invalid value
+ -or-
+ is invalid.
+
+
+
+ Converts the specified to its string representation.
+
+ The enum type.
+ The enum value.
+ A string representation of .
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified formats.
+
+ The enum type.
+ The enum value.
+ The first output format to use.
+ The second output format to use if using the first resolves to null.
+ A string representation of .
+ or is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified formats.
+
+ The enum type.
+ The enum value.
+ The first output format to use.
+ The second output format to use if using the first resolves to null.
+ The third output format to use if using the first and second both resolve to null.
+ A string representation of .
+ , , or is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output formats to use.
+ A string representation of .
+ contains an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ is null.
+ is an invalid value.
+
+
+
+ Returns 's underlying integral value.
+
+ The enum type.
+ The enum value.
+ 's underlying integral value.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ cannot fit within 's value range without overflowing.
+
+
+
+ Retrieves the hash code of . It's more efficient as it doesn't require boxing and unboxing of .
+
+ The enum type.
+ The enum value.
+ Hash code of .
+
+
+
+ Indicates if equals .
+
+ The enum type.
+ The enum value.
+ The other enum value.
+ Indication if equals .
+
+
+
+ Compares to for ordering.
+
+ The enum type.
+ The enum value.
+ The other enum value.
+ 1 if is greater than , 0 if equals ,
+ and -1 if is less than .
+
+
+
+ Retrieves 's enum member name if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ 's enum member name if defined otherwise null.
+
+
+
+ Retrieves 's enum member attributes if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ 's enum member attributes if defined otherwise null.
+
+
+
+ Retrieves an enum member with the specified if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ Enum member with the specified if defined otherwise null.
+
+
+
+ Retrieves the enum member with the specified if defined otherwise null.
+
+ The enum type.
+ The enum member name.
+ Enum member with the specified if defined otherwise null.
+ is null.
+
+
+
+ Retrieves the enum member with the specified if defined otherwise null.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member name.
+ Indicates if the operation is case-insensitive.
+ Enum member with the specified if defined otherwise null.
+ is null.
+
+
+
+ Retrieves an enum member whose string representation using the specified is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum format.
+ Enum member represented by if defined otherwise null.
+ is null.
+ is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified formats is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ Enum member represented by if defined otherwise null.
+ is null.
+ or is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified formats is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Enum member represented by if defined otherwise null.
+ is null.
+ , , or is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum formats.
+ Enum member represented by if defined otherwise null.
+ is null.
+ contains an invalid value.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value.
+
+ The enum type.
+ The enum member names or values' string representation.
+ The value that is represented by .
+ is null.
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The value that is represented by .
+ is null.
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value
+ using the specified parsing enum format. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum format.
+ The value that is represented by .
+ is null.
+ doesn't represent a member or value of
+ -or-
+ is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The value that is represented by .
+ is null.
+ doesn't represent a member or value of
+ -or-
+ or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ The value that is represented by .
+ is null.
+ doesn't represent a member or value of
+ -or-
+ , , or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum formats.
+ The value that is represented by .
+ is null.
+ doesn't represent a member or value of
+ -or-
+ contains an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value.
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value
+ using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum format.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ Indication whether the conversion succeeded.
+ or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Indication whether the conversion succeeded.
+ , , or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum formats.
+ Indication whether the conversion succeeded.
+ contains an invalid value.
+
+
+
+ Retrieves the underlying type of .
+
+ The enum type.
+ The underlying type of .
+ is not an enum type.
+
+
+
+ Retrieves 's underlying type's .
+
+ The enum type.
+ 's underlying type's .
+ is not an enum type.
+
+
+
+ Retrieves 's member count.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's member count.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves 's members in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members in increasing value order.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves 's members' names in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members' names in increasing value order.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves 's members' values in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members' values in increasing value order.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert. Must be an , , , ,
+ , , , , , , or Nullable of one of these.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not an enum type
+ -or-
+ is not a valid type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert. Must be an , , , ,
+ , , , , , , or Nullable of one of these.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Indicates if is valid using the specified .
+
+ The enum type.
+ The enum value.
+ The validation to perform on the value.
+ Indication if is valid.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Indicates if is defined.
+
+ The enum type.
+ The enum value.
+ Indication if is defined.
+ is not an enum type.
+
+
+
+ Validates that is valid using the specified .
+ If it's not it throws an with the specified .
+
+ The enum type.
+ The enum value.
+ The parameter name to be used if throwing an .
+ The validation to perform on the value.
+ for use in fluent API's and base constructor method calls.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ is invalid.
+
+
+
+ Converts the specified to its string representation.
+
+ The enum type.
+ The enum value.
+ A string representation of .
+ is not an enum type.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ is not an enum type.
+ is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified formats.
+
+ The enum type.
+ The enum value.
+ The first output format to use.
+ The second output format to use if using the first resolves to null.
+ A string representation of .
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified formats.
+
+ The enum type.
+ The enum value.
+ The first output format to use.
+ The second output format to use if using the first resolves to null.
+ The third output format to use if using the first and second both resolve to null.
+ A string representation of .
+ is not an enum type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output formats to use.
+ A string representation of .
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ is null.
+ is not an enum type.
+ is an invalid value.
+
+
+
+ Returns 's underlying integral value.
+
+ The enum type.
+ The enum value.
+ 's underlying integral value.
+ is not an enum type.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ is not an enum type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ is not an enum type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ is not an enum type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ is not an enum type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ is not an enum type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ is not an enum type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ is not an enum type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ is not an enum type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Retrieves the hash code of . It's more efficient as it doesn't require boxing and unboxing of .
+
+ The enum type.
+ The enum value.
+ Hash code of .
+ is not an enum type.
+
+
+
+ Indicates if equals .
+
+ The enum type.
+ The enum value.
+ The other enum value.
+ Indication if equals .
+ is not an enum type.
+
+
+
+ Compares to for ordering.
+
+ The enum type.
+ The enum value.
+ The other enum value.
+ 1 if is greater than , 0 if equals ,
+ and -1 if is less than .
+ is not an enum type.
+
+
+
+ Retrieves 's enum member name if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ 's enum member name if defined otherwise null.
+ is not an enum type.
+
+
+
+ Retrieves 's enum member attributes if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ 's enum member attributes if defined otherwise null.
+ is not an enum type.
+
+
+
+ Retrieves an enum member with the specified if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ Enum member with the specified if defined otherwise null.
+ is not an enum type.
+
+
+
+ Retrieves the enum member with the specified if defined otherwise null.
+ Is case-sensitive.
+
+ The enum type.
+ The enum member name.
+ Enum member with the specified if defined otherwise null.
+ is null.
+ is not an enum type.
+
+
+
+ Retrieves the enum member with the specified if defined otherwise null.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member name.
+ Indicates if the operation is case-insensitive.
+ Enum member with the specified if defined otherwise null.
+ is null.
+ is not an enum type.
+
+
+
+ Retrieves an enum member whose string representation using the specified is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum format.
+ Enum member represented by if defined otherwise null.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified formats is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ Enum member represented by if defined otherwise null.
+ is null.
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified formats is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Enum member represented by if defined otherwise null.
+ is null.
+ is not an enum type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum formats.
+ Enum member represented by if defined otherwise null.
+ is null.
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value.
+
+ The enum type.
+ The enum member names or values' string representation.
+ A value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of 's underlying type.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value
+ using the specified parsing enum format. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum format.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ , , or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum formats.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ contains an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value.
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value
+ using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum format.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ , , is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum formats.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Retrieves the underlying type of .
+
+ The enum type.
+ The underlying type of .
+ is null.
+ is not an enum type.
+
+
+
+ Retrieves 's underlying type's .
+
+ The enum type.
+ 's underlying type's .
+ is null.
+ is not an enum type.
+
+
+
+ Retrieves 's member count.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's member count.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves 's members in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members in increasing value order.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves 's members' names in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members' names in increasing value order.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves 's members' values in increasing value order.
+ The parameter indicates what members to include.
+
+ The enum type.
+ Indicates what members to include.
+ 's members' values in increasing value order.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert. Must be an , , , ,
+ , , , , , , or Nullable of one of these.
+ The validation to perform on the result.
+ The specified converted to a .
+ or is null.
+ is not an enum type
+ -or-
+ is not a valid type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ or is null.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Converts the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+
+ The enum type.
+ Value to convert.
+ The validation to perform on the result.
+ The specified converted to a .
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value
+ -or-
+ the result is invalid with the specified .
+ is outside the underlying type's value range.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert. Must be an , , , ,
+ , , , , , , or Nullable of one of these.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the specified to a value of type while checking that it doesn't overflow the
+ underlying type. The parameter specifies the validation to perform on the result.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ Value to try to convert.
+ If the conversion succeeds this contains a value of type whose value is .
+ The validation to perform on the result.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Indicates if is valid. If is a standard enum it returns whether the value is defined.
+ If is marked with it returns whether it's a valid flag combination of 's defined values
+ or is defined. Or if has an attribute that implements
+ then that attribute's method is used.
+
+ The enum type.
+ The enum value.
+ The validation to perform on the value.
+ Indication if is valid.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type
+ -or-
+ is an invalid value.
+
+
+
+ Indicates if is defined.
+
+ The enum type.
+ The enum value.
+ Indication if is defined.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Validates that is valid. If it's not it throws an with the specified .
+
+ The enum type.
+ The enum value.
+ The parameter name to be used if throwing an .
+ The validation to perform on the value.
+ for use in fluent API's and base constructor method calls.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type
+ -or-
+ is an invalid value
+ -or-
+ is invalid.
+
+
+
+ Converts the specified to its string representation.
+
+ The enum type.
+ The enum value.
+ A string representation of .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ or is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified formats.
+
+ The enum type.
+ The enum value.
+ The first output format to use.
+ The second output format to use if using the first resolves to null.
+ A string representation of .
+ or is null.
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified formats.
+
+ The enum type.
+ The enum value.
+ The first output format to use.
+ The second output format to use if using the first resolves to null.
+ The third output format to use if using the first and second both resolve to null.
+ A string representation of .
+ or is null.
+ is not an enum type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output formats to use.
+ A string representation of .
+ or is null.
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Converts the specified to its string representation using the specified .
+
+ The enum type.
+ The enum value.
+ The output format to use.
+ A string representation of .
+ , , or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ is an invalid value.
+
+
+
+ Returns 's underlying integral value.
+
+ The enum type.
+ The enum value.
+ 's underlying integral value.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to an .
+
+ The enum type.
+ The enum value.
+ converted to an .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Converts to a .
+
+ The enum type.
+ The enum value.
+ converted to a .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+ cannot fit within 's value range without overflowing.
+
+
+
+ Indicates if equals .
+
+ The enum type.
+ The enum value.
+ The other enum value.
+ Indication if equals .
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Compares to for ordering.
+
+ The enum type.
+ The enum value.
+ The other enum value.
+ 1 if is greater than , 0 if equals ,
+ and -1 if is less than .
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Retrieves 's enum member name if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ 's enum member name if defined otherwise null.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves 's enum member attributes if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ 's enum member attributes if defined otherwise null.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves an enum member with the specified if defined otherwise null.
+
+ The enum type.
+ The enum value.
+ Enum member with the specified if defined otherwise null.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves the enum member with the specified if defined otherwise null.
+ Is case-sensitive.
+
+ The enum type.
+ The enum member name.
+ Enum member with the specified if defined otherwise null.
+ or is null.
+ is not an enum type.
+
+
+
+ Retrieves the enum member with the specified if defined otherwise null.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member name.
+ Indicates if the operation is case-insensitive.
+ Enum member with the specified if defined otherwise null.
+ or is null.
+ is not an enum type.
+
+
+
+ Retrieves an enum member whose string representation using the specified is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum format.
+ Enum member represented by if defined otherwise null.
+ or is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified formats is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ Enum member represented by if defined otherwise null.
+ or is null.
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified formats is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Enum member represented by if defined otherwise null.
+ or is null.
+ is not an enum type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Retrieves an enum member whose string representation using the specified is if defined otherwise null.
+ The parameter specifies whether the operation is case-insensitive.
+
+ The enum type.
+ The enum member's string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum formats.
+ Enum member represented by if defined otherwise null.
+ or is null.
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value of type .
+
+ The enum type.
+ The enum member names or values' string representation.
+ A value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of 's underlying type.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value of type .
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value of type
+ using the specified parsing enum format. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum format.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value of type
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value of type
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ , , or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of to its respective value of type
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The parsing enum formats.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ contains an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value of type .
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value of type .
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value of type
+ using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum format.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value of type
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value of type
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of to its respective value of type
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum formats.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Specifies the enum validation to perform.
+
+
+
+
+ No validation.
+
+
+
+
+ If the enum is a standard enum returns whether the value is defined.
+ If the enum is marked with the it returns whether it's a valid flag combination of the enum's defined values
+ or is defined. Or if the enum has an attribute that implements
+ then that attribute's method is used.
+
+
+
+
+ Returns if the value is defined.
+
+
+
+
+ Returns if the value is a valid flag combination of the enum's defined values.
+
+
+
+
+ Static class that provides efficient type-safe flag enum operations through the use of cached enum names, values, and attributes.
+ Many operations are exposed as C# extension methods for convenience.
+
+
+
+
+ Indicates if is marked with the .
+
+ The enum type.
+ Indication if is marked with the .
+
+
+
+ Retrieves all the flags defined by .
+
+ The enum type.
+ All the flags defined by .
+
+
+
+ Indicates whether is a valid flag combination of 's defined flags.
+
+ The enum type.
+ The flags enum value.
+ Indication of whether is a valid flag combination of 's defined flags.
+
+
+
+ Retrieves the names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+
+
+
+ Retrieves the names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+
+
+
+ Retrieves 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The output format to use.
+ 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+ is an invalid value.
+
+
+
+ Retrieves 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The first output format to use.
+ The second output format to use.
+ 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+ or is an invalid value.
+
+
+
+ Retrieves 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The first output format to use.
+ The second output format to use.
+ The third output format to use.
+ 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+ , , or is an invalid value.
+
+
+
+ Retrieves 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The output formats to use.
+ 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+ contains an invalid value.
+
+
+
+ Retrieves the flags that compose .
+
+ The enum type.
+ The flags enum value.
+ The flags that compose .
+
+
+
+ Retrieves the s of the flags that compose .
+
+ The enum type.
+ The flags enum value.
+ The s of the flags that compose .
+
+
+
+ Retrieves the flag count of .
+
+ The enum type.
+ The flag count of .
+
+
+
+ Retrieves the flag count of .
+
+ The enum type.
+ The flags enum value.
+ The flag count of .
+
+
+
+ Retrieves the flag count of that has.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ The flag count of that has.
+
+
+
+ Indicates if has any flags.
+
+ The enum type.
+ The flags enum value.
+ Indication if has any flags.
+
+
+
+ Indicates if has any flags that are in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Indication if has any flags that are in .
+
+
+
+ Indicates if has all of the flags that are defined in .
+
+ The enum type.
+ The flags enum value.
+ Indication if has all of the flags that are defined in .
+
+
+
+ Indicates if has all of the flags that are in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Indication if has all of the flags that are in .
+
+
+
+ Returns with all of it's flags toggled. Equivalent to the bitwise "xor" operator with .
+
+ The enum type.
+ The flags enum value.
+ with all of it's flags toggled.
+
+
+
+ Returns while toggling the flags that are in . Equivalent to the bitwise "xor" operator.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ while toggling the flags that are in .
+
+
+
+ Returns with only the flags that are also in . Equivalent to the bitwise "and" operation.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ with only the flags that are also in .
+
+
+
+ Combines the flags of and . Equivalent to the bitwise "or" operation.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Combination of with the flags in .
+
+
+
+ Combines the flags of , , and .
+
+ The enum type.
+ The first flags enum value.
+ The second flags enum value.
+ The third flags enum value.
+ Combination of the flags of , , and .
+
+
+
+ Combines the flags of , , , and .
+
+ The enum type.
+ The first flags enum value.
+ The second flags enum value.
+ The third flags enum value.
+ The fourth flags enum value.
+ Combination of the flags of , , , and .
+
+
+
+ Combines the flags of , , , , and .
+
+ The enum type.
+ The first flags enum value.
+ The second flags enum value.
+ The third flags enum value.
+ The fourth flags enum value.
+ The fifth flags enum value.
+ Combination of the flags of , , , , and .
+
+
+
+ Combines all of the flags of .
+
+ The enum type.
+ The flags enum values.
+ Combination of all of the flags of .
+
+
+
+ Combines all of the flags of .
+
+ The enum type.
+ The flags enum values.
+ Combination of all of the flags of .
+
+
+
+ Returns without the flags specified in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ without the flags specified in .
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value.
+
+ The enum type.
+ The enum member names or values' string representation.
+ A value that is represented by .
+ is null.
+ doesn't represent a member name or value of .
+ is outside the range of 's underlying type.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The value that is represented by .
+ is null.
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more member names or values of delimited with to its respective value.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The value that is represented by .
+ is null.
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum format. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The parsing enum format.
+ The value that is represented by .
+ is null.
+ doesn't represent a member or value of
+ -or-
+ is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The first parsing enum format.
+ The second parsing enum format.
+ The value that is represented by .
+ is null.
+ doesn't represent a member or value of
+ -or-
+ or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ The value that is represented by .
+ is null.
+ doesn't represent a member or value of
+ -or-
+ , , or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The parsing enum formats.
+ The value that is represented by .
+ is null.
+ doesn't represent a member or value of
+ -or-
+ contains an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value.
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+
+
+
+ Tries to convert the string representation of one or more member names or values of delimited with to its respective value.
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum format.
+ Indication whether the conversion succeeded.
+ is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The first parsing enum format.
+ Indication whether the conversion succeeded.
+ or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Indication whether the conversion succeeded.
+ , , or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum formats.
+ Indication whether the conversion succeeded.
+ contains an invalid value.
+
+
+
+ Indicates if is marked with the .
+
+ The enum type.
+ Indication if is marked with the .
+ is not an enum type.
+
+
+
+ Retrieves all the flags defined by .
+
+ The enum type.
+ All the flags defined by .
+ is not an enum type.
+
+
+
+ Indicates whether is a valid flag combination of 's defined flags.
+
+ The enum type.
+ The flags enum value.
+ Indication of whether is a valid flag combination of 's defined flags.
+ is not an enum type.
+
+
+
+ Retrieves the names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+ is not an enum type.
+
+
+
+ Retrieves the names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+ is not an enum type.
+
+
+
+ Retrieves 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The output format to use.
+ 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The first output format to use.
+ The second output format to use.
+ 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Retrieves 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The first output format to use.
+ The second output format to use.
+ The third output format to use.
+ 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+ is not an enum type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Retrieves 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The output formats to use.
+ 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Retrieves the flags that compose .
+
+ The enum type.
+ The flags enum value.
+ The flags that compose .
+ is not an enum type.
+
+
+
+ Retrieves the s of the flags that compose .
+
+ The enum type.
+ The flags enum value.
+ The s of the flags that compose .
+ is not an enum type.
+
+
+
+ Retrieves the flag count of .
+
+ The enum type.
+ The flag count of .
+ is not an enum type.
+
+
+
+ Retrieves the flag count of .
+
+ The enum type.
+ The flags enum value.
+ The flag count of .
+ is not an enum type.
+
+
+
+ Retrieves the flag count of that has.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ The flag count of that has.
+ is not an enum type.
+
+
+
+ Indicates if has any flags.
+
+ The enum type.
+ The flags enum value.
+ Indication if has any flags.
+ is not an enum type.
+
+
+
+ Indicates if has any flags that are in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Indication if has any flags that are in .
+ is not an enum type.
+
+
+
+ Indicates if has all of the flags that are defined in .
+
+ The enum type.
+ The flags enum value.
+ Indication if has all of the flags that are defined in .
+ is not an enum type.
+
+
+
+ Indicates if has all of the flags that are in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Indication if has all of the flags that are in .
+ is not an enum type.
+
+
+
+ Returns with all of it's flags toggled. Equivalent to the bitwise "xor" operator with .
+
+ The enum type.
+ The flags enum value.
+ with all of it's flags toggled.
+ is not an enum type.
+
+
+
+ Returns while toggling the flags that are in . Equivalent to the bitwise "xor" operator.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ while toggling the flags that are in .
+ is not an enum type.
+
+
+
+ Returns with only the flags that are also in . Equivalent to the bitwise "and" operation.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ with only the flags that are also in .
+ is not an enum type.
+
+
+
+ Combines the flags of and . Equivalent to the bitwise "or" operation.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Combination of with the flags in .
+ is not an enum type.
+
+
+
+ Combines the flags of , , and .
+
+ The enum type.
+ The first flags enum value.
+ The second flags enum value.
+ The third flags enum value.
+ Combination of the flags of , , and .
+ is not an enum type.
+
+
+
+ Combines the flags of , , , and .
+
+ The enum type.
+ The first flags enum value.
+ The second flags enum value.
+ The third flags enum value.
+ The fourth flags enum value.
+ Combination of the flags of , , , and .
+ is not an enum type.
+
+
+
+ Combines the flags of , , , , and .
+
+ The enum type.
+ The first flags enum value.
+ The second flags enum value.
+ The third flags enum value.
+ The fourth flags enum value.
+ The fifth flags enum value.
+ Combination of the flags of , , , , and .
+ is not an enum type.
+
+
+
+ Combines all of the flags of .
+
+ The enum type.
+ The flags enum values.
+ Combination of all of the flags of .
+ is not an enum type.
+
+
+
+ Combines all of the flags of .
+
+ The enum type.
+ The flags enum values.
+ Combination of all of the flags of .
+ is not an enum type.
+
+
+
+ Returns without the flags specified in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ without the flags specified in .
+ is not an enum type.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value.
+
+ The enum type.
+ The enum member names or values' string representation.
+ A value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of 's underlying type.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more member names or values of delimited with to its respective value.
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum format. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The parsing enum format.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The first parsing enum format.
+ The second parsing enum format.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ , , or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The parsing enum formats.
+ The value that is represented by .
+ is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ contains an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value.
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more member names or values of delimited with to its respective value.
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ Indication whether the conversion succeeded.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum format.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value that is represented by .
+ The parsing enum formats.
+ Indication whether the conversion succeeded.
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Indicates if is marked with the .
+
+ The enum type.
+ Indication if is marked with the .
+ is null.
+ is not an enum type.
+
+
+
+ Retrieves all the flags defined by .
+
+ The enum type.
+ All the flags defined by .
+ is null.
+ is not an enum type.
+
+
+
+ Indicates whether is a valid flag combination of 's defined flags.
+
+ The enum type.
+ The flags enum value.
+ Indication of whether is a valid flag combination of 's defined flags.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves the names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The names of 's flags delimited with commas or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves the names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The names of 's flags delimited with or if empty returns the name of the zero flag if defined otherwise "0".
+ If is not a valid flag combination null is returned.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The output format to use.
+ 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type
+ -or-
+ is an invalid value.
+
+
+
+ Retrieves 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The first output format to use.
+ The second output format to use.
+ 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type
+ -or-
+ or is an invalid value.
+
+
+
+ Retrieves 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The first output format to use.
+ The second output format to use.
+ The third output format to use.
+ 's flags formatted with formats and delimited with
+ or if empty returns the zero flag formatted with formats.
+ If is not a valid flag combination null is returned.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Retrieves 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+
+ The enum type.
+ The flags enum value.
+ The delimiter to use to separate individual flags.
+ The output formats to use.
+ 's flags formatted with and delimited with
+ or if empty returns the zero flag formatted with .
+ If is not a valid flag combination null is returned.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type
+ -or-
+ contains an invalid value.
+
+
+
+ Retrieves the flags that compose .
+
+ The enum type.
+ The flags enum value.
+ The flags that compose .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves the s of the flags that compose .
+
+ The enum type.
+ The flags enum value.
+ The s of the flags that compose .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves the flag count of .
+
+ The enum type.
+ The flag count of .
+ is null.
+ is not an enum type.
+
+
+
+ Retrieves the flag count of .
+
+ The enum type.
+ The flags enum value.
+ The flag count of .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Retrieves the flag count of that has.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ The flag count of that has.
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Indicates if has any flags.
+
+ The enum type.
+ The flags enum value.
+ Indication if has any flags.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Indicates if has any flags that are in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Indication if has any flags that are in .
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Indicates if has all of the flags that are defined in .
+
+ The enum type.
+ The flags enum value.
+ Indication if has all of the flags that are defined in .
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Indicates if has all of the flags that are in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Indication if has all of the flags that are in .
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Returns with all of it's flags toggled. Equivalent to the bitwise "xor" operator with .
+
+ The enum type.
+ The flags enum value.
+ with all of it's flags toggled.
+ or is null.
+ is not an enum type
+ -or-
+ is of an invalid type.
+
+
+
+ Returns while toggling the flags that are in . Equivalent to the bitwise "xor" operator.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ while toggling the flags that are in .
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Returns with only the flags that are also in . Equivalent to the bitwise "and" operation.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ with only the flags that are also in .
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Combines the flags of and . Equivalent to the bitwise "or" operation.
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ Combination of with the flags in .
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Combines all of the flags of .
+
+ The enum type.
+ The flags enum values.
+ Combination of all of the flags of .
+ or one of the is null.
+ is not an enum type
+ -or-
+ contains a value that is of an invalid type.
+
+
+
+ Combines all of the flags of .
+
+ The enum type.
+ The flags enum values.
+ Combination of all of the flags of .
+ or one of the is null.
+ is not an enum type
+ -or-
+ contains a value that is of an invalid type.
+
+
+
+ Returns without the flags specified in .
+
+ The enum type.
+ The flags enum value.
+ The other flags enum value.
+ without the flags specified in .
+ , , or is null.
+ is not an enum type
+ -or-
+ or is of an invalid type.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value of type .
+
+ The enum type.
+ The enum member names or values' string representation.
+ A value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of 's underlying type.
+
+
+
+ Converts the string representation of one or more member names or values of to its respective value of type .
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more member names or values of delimited with to its respective value of type .
+ The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member name or value of .
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value of type
+ using the specified parsing enum format. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The parsing enum format.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value of type
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The first parsing enum format.
+ The second parsing enum format.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value of type
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ , , or is an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Converts the string representation of one or more members or values of delimited with to its respective value of type
+ using the specified parsing enum formats. The parameter specifies if the operation is case-insensitive.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ The parsing enum formats.
+ The value that is represented by .
+ or is null.
+ is not an enum type
+ -or-
+ doesn't represent a member or value of
+ -or-
+ contains an invalid value.
+ is outside the range of the underlying type of .
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value of type .
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ If the conversion succeeds this contains a value of type that is represented by .
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more member names or values of to its respective value of type .
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ If the conversion succeeds this contains a value of type that is represented by .
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more member names or values of delimited with to its respective value of type .
+ The parameter specifies whether the operation is case-insensitive. The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum member names or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value of type that is represented by .
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value of type
+ using the specified parsing enum format. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value of type that is represented by .
+ The parsing enum format.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value of type
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value of type that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value of type
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value of type that is represented by .
+ The first parsing enum format.
+ The second parsing enum format.
+ The third parsing enum format.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ , , or is an invalid value.
+
+
+
+ Tries to convert the string representation of one or more members or values of delimited with to its respective value of type
+ using the specified parsing enum formats. The parameter specifies whether the operation is case-insensitive.
+ The return value indicates whether the conversion succeeded.
+
+ The enum type.
+ The enum members or values' string representation.
+ Indicates if the operation is case-insensitive.
+ The delimiter used to separate individual flags.
+ If the conversion succeeds this contains a value of type that is represented by .
+ The parsing enum formats.
+ Indication whether the conversion succeeded.
+ is null.
+ is not an enum type
+ -or-
+ contains an invalid value.
+
+
+
+ Indicates whether 's value is a valid flag combination of its enum's defined values.
+
+ The enum member.
+ Indication of whether 's value is a valid flag combination of its enum's defined values.
+ is null.
+
+
+
+ Retrieves the flags that compose 's value.
+
+ The enum type.
+ The enum member.
+ The flags that compose 's value.
+ is null.
+
+
+
+ Retrieves the s of the flags that compose 's value.
+
+ The enum type.
+ The enum member.
+ The s of the flags that compose 's value.
+ is null.
+
+
+
+ Indicates if 's value has any flags.
+
+ The enum member.
+ Indication if 's has any flags.
+ is null.
+
+
+
+ Indicates if 's value has all of the flags that are defined in its enum type.
+
+ The enum member.
+ Indication if has all of the flags that are defined in its enum type.
+ is null.
+
+
+
+ Retrieves the flag count of .
+
+ The flags enum value.
+ The flag count of .
+
+
+
+ Retrieves the flags that compose 's value.
+
+ The enum member.
+ The flags that compose 's value.
+ is null.
+
+
+
+ Retrieves the s of the flags that compose 's value.
+
+ The enum member.
+ The s of the flags that compose 's value.
+ is null.
+
+
+
+ Interface to be implemented on an enum validator attribute class to allow custom validation logic.
+
+ The enum type.
+
+
+
+ Indicates if is valid.
+
+ The enum value.
+ Indication if is valid.
+
+
+
+ Indicates if the enum member should be the primary enum member when there are duplicate values.
+ In the case of duplicate values, extension methods will use the enum member marked with this attribute.
+
+
+
+ Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it.
+
+
+ Initializes the attribute with the specified return value condition.
+
+ The return value condition. If the method returns this value, the associated parameter will not be null.
+
+
+
+ Gets the return value condition.
+
+
+ Specifies that the output will be non-null if the named parameter is non-null.
+
+
+ Initializes the attribute with the associated parameter name.
+
+ The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.
+
+
+
+ Gets the associated parameter name.
+
+
+
diff --git a/bin/ExtendedNumerics.BigDecimal.dll b/bin/ExtendedNumerics.BigDecimal.dll
new file mode 100644
index 0000000..98a1b08
Binary files /dev/null and b/bin/ExtendedNumerics.BigDecimal.dll differ
diff --git a/bin/ExtendedNumerics.BigDecimal.xml b/bin/ExtendedNumerics.BigDecimal.xml
new file mode 100644
index 0000000..a23df9c
--- /dev/null
+++ b/bin/ExtendedNumerics.BigDecimal.xml
@@ -0,0 +1,769 @@
+
+
+
+ ExtendedNumerics.BigDecimal
+
+
+
+
+ Arbitrary precision decimal. All operations are exact, except for division.
+ Division never determines more digits than the given precision.
+ Based on code by Jan Christoph Bernack (http://stackoverflow.com/a/4524254 or jc.bernack at gmail.com)
+ Modified and extended by Adam White (https://csharpcodewhisperer.blogspot.com/)
+ Further modified by Rick Harker, Rick.Rick.Harker@gmail.com
+
+
+
+
+ Private Constructor. This one bypasses and check and behavior.
+
+
+
+
+ Gets a value that represents the number 0 (zero).
+
+
+ Gets a value that represents the number 1 ().
+
+
+ Gets a value that represents the number 0 (zero).
+
+
+ Gets a value that represents the number 0.5.
+
+
+ Gets a value that represents the number -1 .
+
+
+ Gets a value that represents the number e, also called Euler's number.
+
+
+ Gets a value that represents the number Pi.
+
+
+ Gets a value that represents the number Pi.
+
+
+
+ Sets the desired precision of all BigDecimal instances, in terms of the number of .
+
+
+ If AlwaysTruncate is set to true all operations are affected.
+
+
+
+ Specifies whether the significant digits should be truncated to the given precision after each operation.
+ Setting this to true will tend to accumulate errors at the precision boundary after several arithmetic operations.
+ Therefore, you should prefer using explicitly when you need it instead,
+ such st at the end of a series of operations, especially if you are expecting the result to be truncated at the precision length.
+ This should generally be left disabled by default.
+ This setting may be useful if you are running into memory or performance issues, as could conceivably be brought on by many operations on irrational numbers.
+
+
+
+ Specifies whether a call to Normalize is made after every operation and during constructor invocation. The default value is true.
+
+
+ The mantissa of the internal floating point number representation of this BigDecimal.
+
+
+ The exponent of the internal floating point number representation of this BigDecimal.
+
+
+ Gets a number that indicates the sign (negative, positive, or zero) of the current object.
+ -1 if the value of this object is negative, 0 if the value of this object is zero or 1 if the value of this object is positive.
+
+
+ Gets the number of significant digits in .
+ Essentially tells you the number of digits in the mantissa.
+
+
+ The length of the BigDecimal value (Equivalent to SignifigantDigits).
+
+
+
+ Gets the whole-number integer (positive or negative) value of this BigDecimal, so everything to the left of the decimal place.
+ Equivalent to the Truncate function for a float.
+
+
+
+ This method returns true if the BigDecimal is equal to zero, false otherwise.
+
+
+ This method returns true if the BigDecimal is greater than zero, false otherwise.
+
+
+ This method returns true if the BigDecimal is less than zero, false otherwise.
+
+
+
+ Compares the current instance with another object of the same type and returns
+ an integer that indicates whether the current instance precedes, follows, or
+ occurs in the same position in the sort order as the other object.
+
+ An object to compare with this instance.
+
+ A return value of less than zero means this instance precedes obj in the sort order.
+ A return value of zero means this instance occurs in the same position in the sort order as obj.
+ A return value of greater than zero means this instance follows obj in the sort order.
+
+
+
+ Static equality test.
+
+
+
+
+
+ Converts the string representation of a decimal to the BigDecimal equivalent.
+
+
+ Converts the string representation of a decimal to the BigDecimal equivalent.
+ A string that contains a number to convert.
+
+
+
+
+ Converts the string representation of a decimal in a specified culture-specific format to its BigDecimal equivalent.
+
+ A string that contains a number to convert.
+ An object that provides culture-specific formatting information about value.
+
+
+
+
+ Tries to convert the string representation of a number to its BigDecimal equivalent, and returns a value that indicates whether the conversion succeeded.
+
+ The string representation of a number.
+ When this method returns, this out parameter contains the BigDecimal equivalent
+ to the number that is contained in value, or default(BigDecimal) if the conversion fails.
+ The conversion fails if the value parameter is null or is not of the correct format.
+
+
+
+
+ Tries to convert the string representation of a number in a specified style and culture-specific format
+ to its BigDecimal equivalent, and returns a value that indicates whether the conversion succeeded.
+
+ The string representation of a number.
+ An object that supplies culture-specific formatting information about value.
+ When this method returns, this out parameter contains the BigDecimal equivalent
+ to the number that is contained in value, or default(BigDecimal) if the conversion fails.
+ The conversion fails if the value parameter is null or is not of the correct format.
+
+
+
+ Removes any trailing zeros on the mantissa, adjusts the exponent, and returns a new .
+
+
+
+ Returns the zero-based index of the decimal point, if the BigDecimal were rendered as a string.
+
+
+
+ Returns the whole number integer part of the BigDecimal, dropping anything right of the decimal point. Essentially behaves like Math.Truncate(). For
+ example, GetWholePart() would return 3 for Math.PI.
+
+
+
+ Gets the fractional part of the BigDecimal, setting everything left of the decimal point to zero.
+
+
+ Converts to an if possible, otherwise throws .
+
+
+
+
+ Converts to an if possible, otherwise throws .
+
+
+
+
+ Converts to an if possible, otherwise throws .
+
+
+
+
+ Converts to an if possible, otherwise throws .
+
+
+
+
+ Converts to an if possible, otherwise throws .
+
+
+
+
+ Returns the smaller of two BigDecimal values.
+
+
+ Returns the larger of two BigDecimal values.
+
+
+ Returns the result of multiplying a BigDecimal by negative one.
+
+
+ Adds two BigDecimal values.
+
+
+ Subtracts two BigDecimal values.
+
+
+ Multiplies two BigDecimal values.
+
+
+ Divides two BigDecimal values, returning the remainder and discarding the quotient.
+
+
+ Divides two BigDecimal values.
+
+
+ Returns a specified number raised to the specified power.
+
+
+
+ Returns a specified number raised to the specified power.
+
+
+ This version uses exponentiation by squaring.
+ This method should take fewer steps than , and so is used by default
+ unless is ,
+ in which case is used as it loses precision slower.
+
+
+
+
+ Returns a specified number raised to the specified power.
+
+
+ This version loses precision slower, and so is used when is set to .
+ Otherwise is used because it is more performant.
+
+
+
+ Returns a specified number raised to the specified power.
+
+
+ Returns the Nth root of the supplied input decimal to the given number of places.
+
+
+
+ Returns the number of digits or place values to the left of the decimal point.
+
+
+ Returns the number of digits or place values to the right of the decimal point.
+
+
+ Returns the mantissa of value, aligned to the exponent of reference. Assumes the exponent of value is larger than of reference.
+
+
+ Returns the absolute value of the BigDecimal
+
+
+ Truncates the BigDecimal at the decimal point. Equivalent to using Floor.
+
+
+ Rounds a BigDecimal value to the nearest integral value.
+
+
+ Rounds a BigDecimal value to the nearest integral value. A parameter specifies how to round the value if it is midway between two numbers.
+
+
+
+ Rounds a BigDecimal to the given number of digits to the right of the decimal point.
+ Pass a negative precision value to round (zero) digits to the left of the decimal point in a manner that mimics Excel's ROUNDDOWN function.
+
+
+
+ Rounds a BigDecimal up to the next largest integer value, even if the fractional part is less than one half. Equivalent to obtaining the floor and then adding one.
+
+
+ Rounds a BigDecimal down to the next smallest integer value, even if the fractional part is greater than one half. Equivalent to discarding everything right of the decimal point.
+
+
+
+ Arbitrary precision sine function.
+ The input should be the angle in radians.
+ The input must be restricted to the range of -π/2 <= θ <= π/2.
+ If your input is negative, just flip the sign.
+
+
+
+
+
+ Arbitrary precision sine function.
+ The input should be the angle in radians.
+ The input must be restricted to the range of -π/2 <= θ <= π/2.
+ If your input is negative, just flip the sign.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+
+ Arbitrary precision cosine function.
+
+
+
+
+ Arbitrary precision cosine function.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Arbitrary precision tangent function.
+ The input must not be π/2 or 3π/2, as the tangent is undefined at that value.
+
+
+
+
+ Arbitrary precision tangent function.
+ The input must not be π/2 or 3π/2, as the tangent is undefined at that value.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Arbitrary precision cotangent function.
+ The input must not be zero, as the cotangent is undefined at that value.
+
+
+
+
+ Arbitrary precision cotangent function.
+ The input must not be zero, as the cotangent is undefined at that value.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Arbitrary precision secant function.
+ The input must not be (2*n + 1)*π/2 (an odd multiple of π/2), as the secant is undefined at that value.
+
+
+
+
+ Arbitrary precision secant function.
+ The input must not be (2*n + 1)*π/2 (an odd multiple of π/2), as the secant is undefined at that value.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Arbitrary precision cosecant function.
+ The input must not be zero or π, as the cosecant is undefined at that value.
+
+
+
+
+ Arbitrary precision cosecant function.
+ The input must not be zero or π, as the cosecant is undefined at that value.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision hyperbolic sine function.
+
+
+
+ Arbitrary precision hyperbolic sine function.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision Hyperbolic cosine function.
+
+
+
+ Arbitrary precision Hyperbolic cosine function.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision hyperbolic tangent function.
+
+
+ Arbitrary precision hyperbolic tangent function.
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision hyperbolic cotangent function.
+
+
+ Arbitrary precision hyperbolic cotangent function.
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision hyperbolic secant function.
+
+
+ Arbitrary precision hyperbolic secant function.
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Arbitrary precision hyperbolic cosecant function.
+ The input must not be zero.
+
+
+
+
+ Arbitrary precision hyperbolic cosecant function.
+ The input must not be zero.
+
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision inverse sine function.
+
+
+ Arbitrary precision inverse sine function.
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision inverse cosine function.
+
+
+ Arbitrary precision inverse cosine function.
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision inverse tangent function.
+
+
+ Arbitrary precision inverse tangent function.
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision inverse cotangent function.
+
+
+ Arbitrary precision inverse cotangent function.
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Arbitrary precision inverse cosecant function.
+
+
+ Arbitrary precision inverse cosecant function.
+ The argument radians.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Calculates e^x to arbitrary precision.
+
+
+ Calculates e^x to arbitrary precision.
+ The exponent to raise e to the power of.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Returns the natural logarithm of the input.
+
+ The argument to take the natural logarithm of.
+
+
+
+ Returns the natural logarithm of the input to a specified precision.
+
+ The argument to take the natural logarithm of.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Internal implementation of the natural log function to arbitrary precision.
+
+ The argument to take the natural logarithm of.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Returns the logarithm of an argument in an arbitrary base.
+
+ The base of the logarithm.
+ The argument to take the logarithm of.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Returns the base-2 logarithm of an argument.
+
+ The argument to take the base-2 logarithm of.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+
+ Returns the base-10 logarithm of an argument.
+
+ The argument to take the base-10 logarithm of.
+ The desired precision in terms of the number of digits to the right of the decimal.
+
+
+ Allow the BigDecimal to be formatted with the E notation.
+
+
+
+
+
+ Returns the NTHs root of a with .
+ The root must be greater than or equal to 1 or value must be a positive integer.
+
+
+
+
+
+
+
+
+
+ ttempt to parse a fraction from a String.
+
+ " 1234.45 / 346.456 "
+
+
+ Uncomment this if you want an exception instead of a Boolean.
+
+
+
+
+ Calculates a factorial by the divide and conquer method.
+ This is faster than repeatedly multiplying the next value by a running product
+ by not repeatedly multiplying by large values.
+ Essentially, this multiplies every number in the array with its neighbor,
+ returning an array half as long of products of two numbers.
+ We then take that array and multiply each pair of values in the array
+ with its neighbor, resulting in another array half the length of the previous one, and so on...
+ This results in many multiplications of small, equally sized operands
+ and only a few multiplications of larger operands.
+ In the limit, this is more efficient.
+
+
+ The factorial function is used during the calculation of trigonometric functions to arbitrary precision.
+
+
+
+
+ Divide the range of numbers to multiply in half recursively.
+
+
+
+
+ 1
+
+
+ -1
+
+
+ Default to in a sort operation.
+
+
+ Return nulls first in a sort operation.
+
+
+ Return nulls last in a sort operation.
+
+
+ 0
+
+
+
+ Common function to generate the target value to compare against to see if
+ an operation has reached sufficient precision.
+ The point of this method instead of having it inline is that we have only
+ one place to change if we need to increase the value we are adding to
+ precision to get adjustedPrecision.
+
+
+
+
+ Return 1 if radians is an odd multiple of π/2, 0 otherwise.
+
+
+
+
+ Calculates a Taylor Series Sum until the specified precision is met.
+ Based on its parameters, this can approximate several different functions
+ including the sin, cos, sinh, cosh, and exp trigonometric functions.
+
+
+ The indeterminate value in the Taylor Series that gets multiplied by each term, raised to some
+ power.
+
+ The value to initialize the running total to. Typically, this is either zero or one.
+ The term number to start the series at. Typically, this is either zero or one.
+
+ How much to increment the term index each iteration.
+ If you want to sum only the even terms, set the counterStart to an even number and this parameter to two.
+
+
+ Each term is multiplied by a variable called sign. By default, sign is equal to 1.
+ Each iteration, sign is set to sign multiplied by this value.
+ The point of this is to allow every other term to be negative (so subtracted from the sum) by setting this to
+ parameter to -1.
+ Setting this to parameter to -1 will flip the sign of the sign variable every iteration.
+ Since this gets multiplied by the term, the effect is to flip the sign of every other term.
+ Set this parameter to 1 if all the terms should remain positive.
+
+
+ A boolean indicating if the denominator of the term should be passed to the factorial function.
+ Typically, this is true, but sometimes the factorial in the denominator cancels out,
+ and so we need a way to turn this off.
+
+
+ The required precision to achieve before returning, in terms of the number of correct digits to the right of the
+ decimal point.
+
+
+
+
+
+ Wraps the input into the range:
+ -π/2 <= θ <= π/2
+
+
+
+
+ A strongly-typed resource class, for looking up localized strings, etc.
+
+
+
+
+ Returns the cached ResourceManager instance used by this class.
+
+
+
+
+ Overrides the current thread's CurrentUICulture property for all
+ resource lookups using this strongly typed resource class.
+
+
+
+
+ Looks up a localized string similar to Must be a positive integer..
+
+
+
+
+ Looks up a localized string similar to Must be greater than or equal to 1.
+
+
+
+
+ Looks up a localized string similar to Argument must be of type {0}.
+
+
+
+
+ Looks up a localized string similar to {0} must not equal zero..
+
+
+
+
+ Looks up a localized string similar to Negative precision cannot round left of the decimal point more place values than there are whole number digits..
+
+
+
+
+ Looks up a localized string similar to The cotangent of π is undefined..
+
+
+
+
+ Looks up a localized string similar to The cotangent of zero is undefined..
+
+
+
+
+ Looks up a localized string similar to The cosecant of π is undefined..
+
+
+
+
+ Looks up a localized string similar to The cosecant of zero is undefined..
+
+
+
+
+ Looks up a localized string similar to The hyperbolic cosecant of zero is undefined..
+
+
+
+
+ Looks up a localized string similar to The secant of (2*n + 1)*π/2 (an odd multiple of π/2) is undefined..
+
+
+
+
+ Looks up a localized string similar to The tangent of 3π/2 is undefined..
+
+
+
+
+ Looks up a localized string similar to The tangent of π/2 is undefined..
+
+
+
+
+ Looks up a localized string similar to value is not a number (NaN)..
+
+
+
+
+ Looks up a localized string similar to Cannot raise zero to a negative power..
+
+
+
+
+ Looks up a localized string similar to BigDecimal cannot represent infinity..
+
+
+
+
+ Looks up a localized string similar to BigDecimal is too large for a Decimal..
+
+
+
+
+ Looks up a localized string similar to BigDecimal is too large for a Double..
+
+
+
+
+ Looks up a localized string similar to Couldn't parse numerator or denominator..
+
+
+
+
+ Looks up a localized string similar to BigDecimal is too large for a Int32..
+
+
+
+
+ Looks up a localized string similar to BigDecimal is too large for a Single..
+
+
+
+
+ Looks up a localized string similar to BigDecimal is too large for a UInt32..
+
+
+
+
diff --git a/bin/ICSharpCode.SharpZipLib.dll b/bin/ICSharpCode.SharpZipLib.dll
new file mode 100644
index 0000000..1048fcd
Binary files /dev/null and b/bin/ICSharpCode.SharpZipLib.dll differ
diff --git a/bin/ICSharpCode.SharpZipLib.xml b/bin/ICSharpCode.SharpZipLib.xml
new file mode 100644
index 0000000..807c2fb
--- /dev/null
+++ b/bin/ICSharpCode.SharpZipLib.xml
@@ -0,0 +1,11330 @@
+
+
+
+ ICSharpCode.SharpZipLib
+
+
+
+
+ An example class to demonstrate compression and decompression of BZip2 streams.
+
+
+
+
+ Decompress the input writing
+ uncompressed data to the output stream
+
+ The readable stream containing data to decompress.
+ The output stream to receive the decompressed data.
+ Both streams are closed on completion if true.
+
+
+
+ Compress the input stream sending
+ result data to output stream
+
+ The readable stream to compress.
+ The output stream to receive the compressed data.
+ Both streams are closed on completion if true.
+ Block size acts as compression level (1 to 9) with 1 giving
+ the lowest compression and 9 the highest.
+
+
+
+ Defines internal values for both compression and decompression
+
+
+
+
+ Random numbers used to randomise repetitive blocks
+
+
+
+
+ When multiplied by compression parameter (1-9) gives the block size for compression
+ 9 gives the best compression but uses the most memory.
+
+
+
+
+ Backend constant
+
+
+
+
+ Backend constant
+
+
+
+
+ Backend constant
+
+
+
+
+ Backend constant
+
+
+
+
+ Backend constant
+
+
+
+
+ Backend constant
+
+
+
+
+ Backend constant
+
+
+
+
+ Backend constant
+
+
+
+
+ Backend constant
+
+
+
+
+ BZip2Exception represents exceptions specific to BZip2 classes and code.
+
+
+
+
+ Initialise a new instance of .
+
+
+
+
+ Initialise a new instance of with its message string.
+
+ A that describes the error.
+
+
+
+ Initialise a new instance of .
+
+ A that describes the error.
+ The that caused this exception.
+
+
+
+ Initializes a new instance of the BZip2Exception class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ An input stream that decompresses files in the BZip2 format
+
+
+
+
+ Construct instance for reading from stream
+
+ Data source
+
+
+
+ Get/set flag indicating ownership of underlying stream.
+ When the flag is true will close the underlying stream also.
+
+
+
+
+ Gets a value indicating if the stream supports reading
+
+
+
+
+ Gets a value indicating whether the current stream supports seeking.
+
+
+
+
+ Gets a value indicating whether the current stream supports writing.
+ This property always returns false
+
+
+
+
+ Gets the length in bytes of the stream.
+
+
+
+
+ Gets the current position of the stream.
+ Setting the position is not supported and will throw a NotSupportException.
+
+ Any attempt to set the position.
+
+
+
+ Flushes the stream.
+
+
+
+
+ Set the streams position. This operation is not supported and will throw a NotSupportedException
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+ The new position of the stream.
+ Any access
+
+
+
+ Sets the length of this stream to the given value.
+ This operation is not supported and will throw a NotSupportedExceptionortedException
+
+ The new length for the stream.
+ Any access
+
+
+
+ Writes a block of bytes to this stream using data from a buffer.
+ This operation is not supported and will throw a NotSupportedException
+
+ The buffer to source data from.
+ The offset to start obtaining data from.
+ The number of bytes of data to write.
+ Any access
+
+
+
+ Writes a byte to the current position in the file stream.
+ This operation is not supported and will throw a NotSupportedException
+
+ The value to write.
+ Any access
+
+
+
+ Read a sequence of bytes and advances the read position by one byte.
+
+ Array of bytes to store values in
+ Offset in array to begin storing data
+ The maximum number of bytes to read
+ The total number of bytes read into the buffer. This might be less
+ than the number of bytes requested if that number of bytes are not
+ currently available or zero if the end of the stream is reached.
+
+
+
+
+ Closes the stream, releasing any associated resources.
+
+
+
+
+ Read a byte from stream advancing position
+
+ byte read or -1 on end of stream
+
+
+
+ An output stream that compresses into the BZip2 format
+ including file header chars into another stream.
+
+
+
+
+ Construct a default output stream with maximum block size
+
+ The stream to write BZip data onto.
+
+
+
+ Initialise a new instance of the
+ for the specified stream, using the given blocksize.
+
+ The stream to write compressed data to.
+ The block size to use.
+
+ Valid block sizes are in the range 1..9, with 1 giving
+ the lowest compression and 9 the highest.
+
+
+
+
+ Ensures that resources are freed and other cleanup operations
+ are performed when the garbage collector reclaims the BZip2OutputStream.
+
+
+
+
+ Gets or sets a flag indicating ownership of underlying stream.
+ When the flag is true will close the underlying stream also.
+
+ The default value is true.
+
+
+
+ Gets a value indicating whether the current stream supports reading
+
+
+
+
+ Gets a value indicating whether the current stream supports seeking
+
+
+
+
+ Gets a value indicating whether the current stream supports writing
+
+
+
+
+ Gets the length in bytes of the stream
+
+
+
+
+ Gets or sets the current position of this stream.
+
+
+
+
+ Sets the current position of this stream to the given value.
+
+ The point relative to the offset from which to being seeking.
+ The reference point from which to begin seeking.
+ The new position in the stream.
+
+
+
+ Sets the length of this stream to the given value.
+
+ The new stream length.
+
+
+
+ Read a byte from the stream advancing the position.
+
+ The byte read cast to an int; -1 if end of stream.
+
+
+
+ Read a block of bytes
+
+ The buffer to read into.
+ The offset in the buffer to start storing data at.
+ The maximum number of bytes to read.
+ The total number of bytes read. This might be less than the number of bytes
+ requested if that number of bytes are not currently available, or zero
+ if the end of the stream is reached.
+
+
+
+ Write a block of bytes to the stream
+
+ The buffer containing data to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+
+
+ Write a byte to the stream.
+
+ The byte to write to the stream.
+
+
+
+ Get the number of bytes written to output.
+
+
+
+
+ Get the number of bytes written to the output.
+
+
+
+
+ Releases the unmanaged resources used by the and optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Flush output buffers
+
+
+
+
+ Computes Adler32 checksum for a stream of data. An Adler32
+ checksum is not as reliable as a CRC32 checksum, but a lot faster to
+ compute.
+
+ The specification for Adler32 may be found in RFC 1950.
+ ZLIB Compressed Data Format Specification version 3.3)
+
+
+ From that document:
+
+ "ADLER32 (Adler-32 checksum)
+ This contains a checksum value of the uncompressed data
+ (excluding any dictionary data) computed according to Adler-32
+ algorithm. This algorithm is a 32-bit extension and improvement
+ of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073
+ standard.
+
+ Adler-32 is composed of two sums accumulated per byte: s1 is
+ the sum of all bytes, s2 is the sum of all s1 values. Both sums
+ are done modulo 65521. s1 is initialized to 1, s2 to zero. The
+ Adler-32 checksum is stored as s2*65536 + s1 in most-
+ significant-byte first (network) order."
+
+ "8.2. The Adler-32 algorithm
+
+ The Adler-32 algorithm is much faster than the CRC32 algorithm yet
+ still provides an extremely low probability of undetected errors.
+
+ The modulo on unsigned long accumulators can be delayed for 5552
+ bytes, so the modulo operation time is negligible. If the bytes
+ are a, b, c, the second sum is 3a + 2b + c + 3, and so is position
+ and order sensitive, unlike the first sum, which is just a
+ checksum. That 65521 is prime is important to avoid a possible
+ large class of two-byte errors that leave the check unchanged.
+ (The Fletcher checksum uses 255, which is not prime and which also
+ makes the Fletcher check insensitive to single byte changes 0 -
+ 255.)
+
+ The sum s1 is initialized to 1 instead of zero to make the length
+ of the sequence part of s2, so that the length does not have to be
+ checked separately. (Any sequence of zeroes has a Fletcher
+ checksum of zero.)"
+
+
+
+
+
+
+ largest prime smaller than 65536
+
+
+
+
+ The CRC data checksum so far.
+
+
+
+
+ Initialise a default instance of
+
+
+
+
+ Resets the Adler32 data checksum as if no update was ever called.
+
+
+
+
+ Returns the Adler32 data checksum computed so far.
+
+
+
+
+ Updates the checksum with the byte b.
+
+
+ The data value to add. The high byte of the int is ignored.
+
+
+
+
+ Updates the Adler32 data checksum with the bytes taken from
+ a block of data.
+
+ Contains the data to update the checksum with.
+
+
+
+ Update Adler32 data checksum based on a portion of a block of data
+
+
+ The chunk of data to add
+
+
+
+
+ CRC-32 with unreversed data and reversed output
+
+
+ Generate a table for a byte-wise 32-bit CRC calculation on the polynomial:
+ x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0.
+
+ Polynomials over GF(2) are represented in binary, one bit per coefficient,
+ with the lowest powers in the most significant bit. Then adding polynomials
+ is just exclusive-or, and multiplying a polynomial by x is a right shift by
+ one. If we call the above polynomial p, and represent a byte as the
+ polynomial q, also with the lowest power in the most significant bit (so the
+ byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
+ where a mod b means the remainder after dividing a by b.
+
+ This calculation is done using the shift-register method of multiplying and
+ taking the remainder. The register is initialized to zero, and for each
+ incoming bit, x^32 is added mod p to the register if the bit is a one (where
+ x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
+ x (which is shifting right by one and adding x^32 mod p if the bit shifted
+ out is a one). We start with the highest power (least significant bit) of
+ q and repeat for all eight bits of q.
+
+ This implementation uses sixteen lookup tables stored in one linear array
+ to implement the slicing-by-16 algorithm, a variant of the slicing-by-8
+ algorithm described in this Intel white paper:
+
+ https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf
+
+ The first lookup table is simply the CRC of all possible eight bit values.
+ Each successive lookup table is derived from the original table generated
+ by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs
+ together will produce the same output as a byte-by-byte CRC loop with
+ fewer arithmetic and bit manipulation operations, at the cost of increased
+ memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table,
+ which is still small enough to fit in most processors' L1 cache.)
+
+
+
+
+ The CRC data checksum so far.
+
+
+
+
+ Initialise a default instance of
+
+
+
+
+ Resets the CRC data checksum as if no update was ever called.
+
+
+
+
+ Returns the CRC data checksum computed so far.
+
+ Reversed Out = true
+
+
+
+ Updates the checksum with the int bval.
+
+
+ the byte is taken as the lower 8 bits of bval
+
+ Reversed Data = false
+
+
+
+ Updates the CRC data checksum with the bytes taken from
+ a block of data.
+
+ Contains the data to update the CRC with.
+
+
+
+ Update CRC data checksum based on a portion of a block of data
+
+
+ The chunk of data to add
+
+
+
+
+ Internal helper function for updating a block of data using slicing.
+
+ The array containing the data to add
+ Range start for (inclusive)
+ The number of bytes to checksum starting from
+
+
+
+ A non-inlined function for updating data that doesn't fit in a 16-byte
+ block. We don't expect to enter this function most of the time, and when
+ we do we're not here for long, so disabling inlining here improves
+ performance overall.
+
+ The array containing the data to add
+ Range start for (inclusive)
+ Range end for (exclusive)
+
+
+
+ CRC-32 with reversed data and unreversed output
+
+
+ Generate a table for a byte-wise 32-bit CRC calculation on the polynomial:
+ x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0.
+
+ Polynomials over GF(2) are represented in binary, one bit per coefficient,
+ with the lowest powers in the most significant bit. Then adding polynomials
+ is just exclusive-or, and multiplying a polynomial by x is a right shift by
+ one. If we call the above polynomial p, and represent a byte as the
+ polynomial q, also with the lowest power in the most significant bit (so the
+ byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
+ where a mod b means the remainder after dividing a by b.
+
+ This calculation is done using the shift-register method of multiplying and
+ taking the remainder. The register is initialized to zero, and for each
+ incoming bit, x^32 is added mod p to the register if the bit is a one (where
+ x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
+ x (which is shifting right by one and adding x^32 mod p if the bit shifted
+ out is a one). We start with the highest power (least significant bit) of
+ q and repeat for all eight bits of q.
+
+ This implementation uses sixteen lookup tables stored in one linear array
+ to implement the slicing-by-16 algorithm, a variant of the slicing-by-8
+ algorithm described in this Intel white paper:
+
+ https://web.archive.org/web/20120722193753/http://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf
+
+ The first lookup table is simply the CRC of all possible eight bit values.
+ Each successive lookup table is derived from the original table generated
+ by Sarwate's algorithm. Slicing a 16-bit input and XORing the outputs
+ together will produce the same output as a byte-by-byte CRC loop with
+ fewer arithmetic and bit manipulation operations, at the cost of increased
+ memory consumed by the lookup tables. (Slicing-by-16 requires a 16KB table,
+ which is still small enough to fit in most processors' L1 cache.)
+
+
+
+
+ The CRC data checksum so far.
+
+
+
+
+ Initialise a default instance of
+
+
+
+
+ Resets the CRC data checksum as if no update was ever called.
+
+
+
+
+ Returns the CRC data checksum computed so far.
+
+ Reversed Out = false
+
+
+
+ Updates the checksum with the int bval.
+
+
+ the byte is taken as the lower 8 bits of bval
+
+ Reversed Data = true
+
+
+
+ Updates the CRC data checksum with the bytes taken from
+ a block of data.
+
+ Contains the data to update the CRC with.
+
+
+
+ Update CRC data checksum based on a portion of a block of data
+
+
+ The chunk of data to add
+
+
+
+
+ Internal helper function for updating a block of data using slicing.
+
+ The array containing the data to add
+ Range start for (inclusive)
+ The number of bytes to checksum starting from
+
+
+
+ A non-inlined function for updating data that doesn't fit in a 16-byte
+ block. We don't expect to enter this function most of the time, and when
+ we do we're not here for long, so disabling inlining here improves
+ performance overall.
+
+ The array containing the data to add
+ Range start for (inclusive)
+ Range end for (exclusive)
+
+
+
+ The number of slicing lookup tables to generate.
+
+
+
+
+ Generates multiple CRC lookup tables for a given polynomial, stored
+ in a linear array of uints. The first block (i.e. the first 256
+ elements) is the same as the byte-by-byte CRC lookup table.
+
+ The generating CRC polynomial
+ Whether the polynomial is in reversed bit order
+ A linear array of 256 * elements
+
+ This table could also be generated as a rectangular array, but the
+ JIT compiler generates slower code than if we use a linear array.
+ Known issue, see: https://github.com/dotnet/runtime/issues/30275
+
+
+
+
+ Mixes the first four bytes of input with
+ using normal ordering before calling .
+
+ Array of data to checksum
+ Offset to start reading from
+ The table to use for slicing-by-16 lookup
+ Checksum state before this update call
+ A new unfinalized checksum value
+
+
+ Assumes input[offset]..input[offset + 15] are valid array indexes.
+ For performance reasons, this must be checked by the caller.
+
+
+
+
+ Mixes the first four bytes of input with
+ using reflected ordering before calling .
+
+ Array of data to checksum
+ Offset to start reading from
+ The table to use for slicing-by-16 lookup
+ Checksum state before this update call
+ A new unfinalized checksum value
+
+
+ Assumes input[offset]..input[offset + 15] are valid array indexes.
+ For performance reasons, this must be checked by the caller.
+
+
+
+
+ A shared method for updating an unfinalized CRC checksum using slicing-by-16.
+
+ Array of data to checksum
+ Offset to start reading from
+ The table to use for slicing-by-16 lookup
+ First byte of input after mixing with the old CRC
+ Second byte of input after mixing with the old CRC
+ Third byte of input after mixing with the old CRC
+ Fourth byte of input after mixing with the old CRC
+ A new unfinalized checksum value
+
+
+ Even though the first four bytes of input are fed in as arguments,
+ should be the same value passed to this
+ function's caller (either or
+ ). This method will get inlined
+ into both functions, so using the same offset produces faster code.
+
+
+ Because most processors running C# have some kind of instruction-level
+ parallelism, the order of XOR operations can affect performance. This
+ ordering assumes that the assembly code generated by the just-in-time
+ compiler will emit a bunch of arithmetic operations for checking array
+ bounds. Then it opportunistically XORs a1 and a2 to keep the processor
+ busy while those other parts of the pipeline handle the range check
+ calculations.
+
+
+
+
+
+ Interface to compute a data checksum used by checked input/output streams.
+ A data checksum can be updated by one byte or with a byte array. After each
+ update the value of the current checksum can be returned by calling
+ getValue. The complete checksum object can also be reset
+ so it can be used again with new data.
+
+
+
+
+ Resets the data checksum as if no update was ever called.
+
+
+
+
+ Returns the data checksum computed so far.
+
+
+
+
+ Adds one byte to the data checksum.
+
+
+ the data value to add. The high byte of the int is ignored.
+
+
+
+
+ Updates the data checksum with the bytes taken from the array.
+
+
+ buffer an array of bytes
+
+
+
+
+ Adds the byte array to the data checksum.
+
+
+ The chunk of data to add
+
+
+
+ Read an unsigned short in little endian byte order.
+
+
+ Read an int in little endian byte order.
+
+
+ Read a long in little endian byte order.
+
+
+ Write an unsigned short in little endian byte order.
+
+
+
+
+
+ Write a ushort in little endian byte order.
+
+
+
+
+
+ Write an int in little endian byte order.
+
+
+
+
+
+ Write a uint in little endian byte order.
+
+
+
+
+
+ Write a long in little endian byte order.
+
+
+
+
+
+ Write a ulong in little endian byte order.
+
+
+
+
+
+
+ A MemoryPool that will return a Memory which is exactly the length asked for using the bufferSize parameter.
+ This is in contrast to the default ArrayMemoryPool which will return a Memory of equal size to the underlying
+ array which at least as long as the minBufferSize parameter.
+ Note: The underlying array may be larger than the slice of Memory
+
+
+
+
+
+ Event arguments for scanning.
+
+
+
+
+ Initialise a new instance of
+
+ The file or directory name.
+
+
+
+ The file or directory name for this event.
+
+
+
+
+ Get set a value indicating if scanning should continue or not.
+
+
+
+
+ Event arguments during processing of a single file or directory.
+
+
+
+
+ Initialise a new instance of
+
+ The file or directory name if known.
+ The number of bytes processed so far
+ The total number of bytes to process, 0 if not known
+
+
+
+ The name for this event if known.
+
+
+
+
+ Get set a value indicating whether scanning should continue or not.
+
+
+
+
+ Get a percentage representing how much of the has been processed
+
+ 0.0 to 100.0 percent; 0 if target is not known.
+
+
+
+ The number of bytes processed so far
+
+
+
+
+ The number of bytes to process.
+
+ Target may be 0 or negative if the value isnt known.
+
+
+
+ Event arguments for directories.
+
+
+
+
+ Initialize an instance of .
+
+ The name for this directory.
+ Flag value indicating if any matching files are contained in this directory.
+
+
+
+ Get a value indicating if the directory contains any matching files or not.
+
+
+
+
+ Arguments passed when scan failures are detected.
+
+
+
+
+ Initialise a new instance of
+
+ The name to apply.
+ The exception to use.
+
+
+
+ The applicable name.
+
+
+
+
+ The applicable exception.
+
+
+
+
+ Get / set a value indicating whether scanning should continue.
+
+
+
+
+ Delegate invoked before starting to process a file.
+
+ The source of the event
+ The event arguments.
+
+
+
+ Delegate invoked during processing of a file or directory
+
+ The source of the event
+ The event arguments.
+
+
+
+ Delegate invoked when a file has been completely processed.
+
+ The source of the event
+ The event arguments.
+
+
+
+ Delegate invoked when a directory failure is detected.
+
+ The source of the event
+ The event arguments.
+
+
+
+ Delegate invoked when a file failure is detected.
+
+ The source of the event
+ The event arguments.
+
+
+
+ FileSystemScanner provides facilities scanning of files and directories.
+
+
+
+
+ Initialise a new instance of
+
+ The file filter to apply when scanning.
+
+
+
+ Initialise a new instance of
+
+ The file filter to apply.
+ The directory filter to apply.
+
+
+
+ Initialise a new instance of
+
+ The file filter to apply.
+
+
+
+ Initialise a new instance of
+
+ The file filter to apply.
+ The directory filter to apply.
+
+
+
+ Delegate to invoke when a directory is processed.
+
+
+
+
+ Delegate to invoke when a file is processed.
+
+
+
+
+ Delegate to invoke when processing for a file has finished.
+
+
+
+
+ Delegate to invoke when a directory failure is detected.
+
+
+
+
+ Delegate to invoke when a file failure is detected.
+
+
+
+
+ Raise the DirectoryFailure event.
+
+ The directory name.
+ The exception detected.
+
+
+
+ Raise the FileFailure event.
+
+ The file name.
+ The exception detected.
+
+
+
+ Raise the ProcessFile event.
+
+ The file name.
+
+
+
+ Raise the complete file event
+
+ The file name
+
+
+
+ Raise the ProcessDirectory event.
+
+ The directory name.
+ Flag indicating if the directory has matching files.
+
+
+
+ Scan a directory.
+
+ The base directory to scan.
+ True to recurse subdirectories, false to scan a single directory.
+
+
+
+ The file filter currently in use.
+
+
+
+
+ The directory filter currently in use.
+
+
+
+
+ Flag indicating if scanning should continue running.
+
+
+
+
+ INameTransform defines how file system names are transformed for use with archives, or vice versa.
+
+
+
+
+ Given a file name determine the transformed value.
+
+ The name to transform.
+ The transformed file name.
+
+
+
+ Given a directory name determine the transformed value.
+
+ The name to transform.
+ The transformed directory name
+
+
+
+ InvalidNameException is thrown for invalid names such as directory traversal paths and names with invalid characters
+
+
+
+
+ Initializes a new instance of the InvalidNameException class with a default error message.
+
+
+
+
+ Initializes a new instance of the InvalidNameException class with a specified error message.
+
+ A message describing the exception.
+
+
+
+ Initializes a new instance of the InvalidNameException class with a specified
+ error message and a reference to the inner exception that is the cause of this exception.
+
+ A message describing the exception.
+ The inner exception
+
+
+
+ Initializes a new instance of the InvalidNameException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ Scanning filters support filtering of names.
+
+
+
+
+ Test a name to see if it 'matches' the filter.
+
+ The name to test.
+ Returns true if the name matches the filter, false if it does not match.
+
+
+
+ NameFilter is a string matching class which allows for both positive and negative
+ matching.
+ A filter is a sequence of independant regular expressions separated by semi-colons ';'.
+ To include a semi-colon it may be quoted as in \;. Each expression can be prefixed by a plus '+' sign or
+ a minus '-' sign to denote the expression is intended to include or exclude names.
+ If neither a plus or minus sign is found include is the default.
+ A given name is tested for inclusion before checking exclusions. Only names matching an include spec
+ and not matching an exclude spec are deemed to match the filter.
+ An empty filter matches any name.
+
+ The following expression includes all name ending in '.dat' with the exception of 'dummy.dat'
+ "+\.dat$;-^dummy\.dat$"
+
+
+
+
+ Construct an instance based on the filter expression passed
+
+ The filter expression.
+
+
+
+ Test a string to see if it is a valid regular expression.
+
+ The expression to test.
+ True if expression is a valid false otherwise.
+
+
+
+ Test an expression to see if it is valid as a filter.
+
+ The filter expression to test.
+ True if the expression is valid, false otherwise.
+
+
+
+ Split a string into its component pieces
+
+ The original string
+ Returns an array of values containing the individual filter elements.
+
+
+
+ Convert this filter to its string equivalent.
+
+ The string equivalent for this filter.
+
+
+
+ Test a value to see if it is included by the filter.
+
+ The value to test.
+ True if the value is included, false otherwise.
+
+
+
+ Test a value to see if it is excluded by the filter.
+
+ The value to test.
+ True if the value is excluded, false otherwise.
+
+
+
+ Test a value to see if it matches the filter.
+
+ The value to test.
+ True if the value matches, false otherwise.
+
+
+
+ Compile this filter.
+
+
+
+
+ PathFilter filters directories and files using a form of regular expressions
+ by full path name.
+ See NameFilter for more detail on filtering.
+
+
+
+
+ Initialise a new instance of .
+
+ The filter expression to apply.
+
+
+
+ Test a name to see if it matches the filter.
+
+ The name to test.
+ True if the name matches, false otherwise.
+ is used to get the full path before matching.
+
+
+
+ ExtendedPathFilter filters based on name, file size, and the last write time of the file.
+
+ Provides an example of how to customise filtering.
+
+
+
+ Initialise a new instance of ExtendedPathFilter.
+
+ The filter to apply.
+ The minimum file size to include.
+ The maximum file size to include.
+
+
+
+ Initialise a new instance of ExtendedPathFilter.
+
+ The filter to apply.
+ The minimum to include.
+ The maximum to include.
+
+
+
+ Initialise a new instance of ExtendedPathFilter.
+
+ The filter to apply.
+ The minimum file size to include.
+ The maximum file size to include.
+ The minimum to include.
+ The maximum to include.
+
+
+
+ Test a filename to see if it matches the filter.
+
+ The filename to test.
+ True if the filter matches, false otherwise.
+ The doesnt exist
+
+
+
+ Get/set the minimum size/length for a file that will match this filter.
+
+ The default value is zero.
+ value is less than zero; greater than
+
+
+
+ Get/set the maximum size/length for a file that will match this filter.
+
+ The default value is
+ value is less than zero or less than
+
+
+
+ Get/set the minimum value that will match for this filter.
+
+ Files with a LastWrite time less than this value are excluded by the filter.
+
+
+
+ Get/set the maximum value that will match for this filter.
+
+ Files with a LastWrite time greater than this value are excluded by the filter.
+
+
+
+ NameAndSizeFilter filters based on name and file size.
+
+ A sample showing how filters might be extended.
+
+
+
+ Initialise a new instance of NameAndSizeFilter.
+
+ The filter to apply.
+ The minimum file size to include.
+ The maximum file size to include.
+
+
+
+ Test a filename to see if it matches the filter.
+
+ The filename to test.
+ True if the filter matches, false otherwise.
+
+
+
+ Get/set the minimum size for a file that will match this filter.
+
+
+
+
+ Get/set the maximum size for a file that will match this filter.
+
+
+
+
+ PathUtils provides simple utilities for handling paths.
+
+
+
+
+ Remove any path root present in the path
+
+ A containing path information.
+ The path with the root removed if it was present; path otherwise.
+
+
+
+ Returns a random file name in the users temporary directory, or in directory of if specified
+
+ If specified, used as the base file name for the temporary file
+ Returns a temporary file name
+
+
+
+ Provides simple " utilities.
+
+
+
+
+ Read from a ensuring all the required data is read.
+
+ The stream to read.
+ The buffer to fill.
+
+
+
+
+ Read from a " ensuring all the required data is read.
+
+ The stream to read data from.
+ The buffer to store data in.
+ The offset at which to begin storing data.
+ The number of bytes of data to store.
+ Required parameter is null
+ and or are invalid.
+ End of stream is encountered before all the data has been read.
+
+
+
+ Read as much data as possible from a ", up to the requested number of bytes
+
+ The stream to read data from.
+ The buffer to store data in.
+ The offset at which to begin storing data.
+ The number of bytes of data to store.
+ Required parameter is null
+ and or are invalid.
+
+
+
+ Copy the contents of one to another.
+
+ The stream to source data from.
+ The stream to write data to.
+ The buffer to use during copying.
+
+
+
+ Copy the contents of one to another.
+
+ The stream to source data from.
+ The stream to write data to.
+ The buffer to use during copying.
+ The progress handler delegate to use.
+ The minimum between progress updates.
+ The source for this event.
+ The name to use with the event.
+ This form is specialised for use within #Zip to support events during archive operations.
+
+
+
+ Copy the contents of one to another.
+
+ The stream to source data from.
+ The stream to write data to.
+ The buffer to use during copying.
+ The progress handler delegate to use.
+ The minimum between progress updates.
+ The source for this event.
+ The name to use with the event.
+ A predetermined fixed target value to use with progress updates.
+ If the value is negative the target is calculated by looking at the stream.
+ This form is specialised for use within #Zip to support events during archive operations.
+
+
+
+ SharpZipBaseException is the base exception class for SharpZipLib.
+ All library exceptions are derived from this.
+
+ NOTE: Not all exceptions thrown will be derived from this class.
+ A variety of other exceptions are possible for example
+
+
+
+ Initializes a new instance of the SharpZipBaseException class.
+
+
+
+
+ Initializes a new instance of the SharpZipBaseException class with a specified error message.
+
+ A message describing the exception.
+
+
+
+ Initializes a new instance of the SharpZipBaseException class with a specified
+ error message and a reference to the inner exception that is the cause of this exception.
+
+ A message describing the exception.
+ The inner exception
+
+
+
+ Initializes a new instance of the SharpZipBaseException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ Indicates that an error occurred during decoding of a input stream due to corrupt
+ data or (unintentional) library incompatibility.
+
+
+
+
+ Initializes a new instance of the StreamDecodingException with a generic message
+
+
+
+
+ Initializes a new instance of the StreamDecodingException class with a specified error message.
+
+ A message describing the exception.
+
+
+
+ Initializes a new instance of the StreamDecodingException class with a specified
+ error message and a reference to the inner exception that is the cause of this exception.
+
+ A message describing the exception.
+ The inner exception
+
+
+
+ Initializes a new instance of the StreamDecodingException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ Indicates that the input stream could not decoded due to known library incompability or missing features
+
+
+
+
+ Initializes a new instance of the StreamUnsupportedException with a generic message
+
+
+
+
+ Initializes a new instance of the StreamUnsupportedException class with a specified error message.
+
+ A message describing the exception.
+
+
+
+ Initializes a new instance of the StreamUnsupportedException class with a specified
+ error message and a reference to the inner exception that is the cause of this exception.
+
+ A message describing the exception.
+ The inner exception
+
+
+
+ Initializes a new instance of the StreamUnsupportedException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ Indicates that the input stream could not decoded due to the stream ending before enough data had been provided
+
+
+
+
+ Initializes a new instance of the UnexpectedEndOfStreamException with a generic message
+
+
+
+
+ Initializes a new instance of the UnexpectedEndOfStreamException class with a specified error message.
+
+ A message describing the exception.
+
+
+
+ Initializes a new instance of the UnexpectedEndOfStreamException class with a specified
+ error message and a reference to the inner exception that is the cause of this exception.
+
+ A message describing the exception.
+ The inner exception
+
+
+
+ Initializes a new instance of the UnexpectedEndOfStreamException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ Indicates that a value was outside of the expected range when decoding an input stream
+
+
+
+
+ Initializes a new instance of the ValueOutOfRangeException class naming the causing variable
+
+ Name of the variable, use: nameof()
+
+
+
+ Initializes a new instance of the ValueOutOfRangeException class naming the causing variable,
+ it's current value and expected range.
+
+ Name of the variable, use: nameof()
+ The invalid value
+ Expected maximum value
+ Expected minimum value
+
+
+
+ Initializes a new instance of the ValueOutOfRangeException class naming the causing variable,
+ it's current value and expected range.
+
+ Name of the variable, use: nameof()
+ The invalid value
+ Expected maximum value
+ Expected minimum value
+
+
+
+ Initializes a new instance of the ValueOutOfRangeException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ PkzipClassic embodies the classic or original encryption facilities used in Pkzip archives.
+ While it has been superseded by more recent and more powerful algorithms, its still in use and
+ is viable for preventing casual snooping
+
+
+
+
+ Generates new encryption keys based on given seed
+
+ The seed value to initialise keys with.
+ A new key value.
+
+
+
+ PkzipClassicCryptoBase provides the low level facilities for encryption
+ and decryption using the PkzipClassic algorithm.
+
+
+
+
+ Transform a single byte
+
+
+ The transformed value
+
+
+
+
+ Set the key schedule for encryption/decryption.
+
+ The data use to set the keys from.
+
+
+
+ Update encryption keys
+
+
+
+
+ Reset the internal state.
+
+
+
+
+ PkzipClassic CryptoTransform for encryption.
+
+
+
+
+ Initialise a new instance of
+
+ The key block to use.
+
+
+
+ Transforms the specified region of the specified byte array.
+
+ The input for which to compute the transform.
+ The offset into the byte array from which to begin using data.
+ The number of bytes in the byte array to use as data.
+ The computed transform.
+
+
+
+ Transforms the specified region of the input byte array and copies
+ the resulting transform to the specified region of the output byte array.
+
+ The input for which to compute the transform.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write the transform.
+ The offset into the output byte array from which to begin writing data.
+ The number of bytes written.
+
+
+
+ Gets a value indicating whether the current transform can be reused.
+
+
+
+
+ Gets the size of the input data blocks in bytes.
+
+
+
+
+ Gets the size of the output data blocks in bytes.
+
+
+
+
+ Gets a value indicating whether multiple blocks can be transformed.
+
+
+
+
+ Cleanup internal state.
+
+
+
+
+ PkzipClassic CryptoTransform for decryption.
+
+
+
+
+ Initialise a new instance of .
+
+ The key block to decrypt with.
+
+
+
+ Transforms the specified region of the specified byte array.
+
+ The input for which to compute the transform.
+ The offset into the byte array from which to begin using data.
+ The number of bytes in the byte array to use as data.
+ The computed transform.
+
+
+
+ Transforms the specified region of the input byte array and copies
+ the resulting transform to the specified region of the output byte array.
+
+ The input for which to compute the transform.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write the transform.
+ The offset into the output byte array from which to begin writing data.
+ The number of bytes written.
+
+
+
+ Gets a value indicating whether the current transform can be reused.
+
+
+
+
+ Gets the size of the input data blocks in bytes.
+
+
+
+
+ Gets the size of the output data blocks in bytes.
+
+
+
+
+ Gets a value indicating whether multiple blocks can be transformed.
+
+
+
+
+ Cleanup internal state.
+
+
+
+
+ Defines a wrapper object to access the Pkzip algorithm.
+ This class cannot be inherited.
+
+
+
+
+ Get / set the applicable block size in bits.
+
+ The only valid block size is 8.
+
+
+
+ Get an array of legal key sizes.
+
+
+
+
+ Generate an initial vector.
+
+
+
+
+ Get an array of legal block sizes.
+
+
+
+
+ Get / set the key value applicable.
+
+
+
+
+ Generate a new random key.
+
+
+
+
+ Create an encryptor.
+
+ The key to use for this encryptor.
+ Initialisation vector for the new encryptor.
+ Returns a new PkzipClassic encryptor
+
+
+
+ Create a decryptor.
+
+ Keys to use for this new decryptor.
+ Initialisation vector for the new decryptor.
+ Returns a new decryptor.
+
+
+
+ Encrypts and decrypts AES ZIP
+
+
+ Based on information from http://www.winzip.com/aes_info.htm
+ and http://www.gladman.me.uk/cryptography_technology/fileencrypt/
+
+
+
+
+ Constructor
+
+ The stream on which to perform the cryptographic transformation.
+ Instance of ZipAESTransform
+ Read or Write
+
+
+
+ Reads a sequence of bytes from the current CryptoStream into buffer,
+ and advances the position within the stream by the number of bytes read.
+
+
+
+
+
+
+
+ Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies count bytes from buffer to the current stream.
+ The byte offset in buffer at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+
+
+
+ Transforms stream using AES in CTR mode
+
+
+
+
+ Constructor.
+
+ Password string
+ Random bytes, length depends on encryption strength.
+ 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes.
+ The encryption strength, in bytes eg 16 for 128 bits.
+ True when creating a zip, false when reading. For the AuthCode.
+
+
+
+
+ Implement the ICryptoTransform method.
+
+
+
+
+ Returns the 2 byte password verifier
+
+
+
+
+ Returns the 10 byte AUTH CODE to be checked or appended immediately following the AES data stream.
+
+
+
+
+ Transform final block and read auth code
+
+
+
+
+ Gets the size of the input data blocks in bytes.
+
+
+
+
+ Gets the size of the output data blocks in bytes.
+
+
+
+
+ Gets a value indicating whether multiple blocks can be transformed.
+
+
+
+
+ Gets a value indicating whether the current transform can be reused.
+
+
+
+
+ Cleanup internal state.
+
+
+
+
+ An example class to demonstrate compression and decompression of GZip streams.
+
+
+
+
+ Decompress the input writing
+ uncompressed data to the output stream
+
+ The readable stream containing data to decompress.
+ The output stream to receive the decompressed data.
+ Both streams are closed on completion if true.
+ Input or output stream is null
+
+
+
+ Compress the input stream sending
+ result data to output stream
+
+ The readable stream to compress.
+ The output stream to receive the compressed data.
+ Both streams are closed on completion if true.
+ Deflate buffer size, minimum 512
+ Deflate compression level, 0-9
+ Input or output stream is null
+ Buffer Size is smaller than 512
+ Compression level outside 0-9
+
+
+
+ This class contains constants used for gzip.
+
+
+
+
+ First GZip identification byte
+
+
+
+
+ Second GZip identification byte
+
+
+
+
+ Deflate compression method
+
+
+
+
+ Get the GZip specified encoding (CP-1252 if supported, otherwise ASCII)
+
+
+
+
+ GZip header flags
+
+
+
+
+ Text flag hinting that the file is in ASCII
+
+
+
+
+ CRC flag indicating that a CRC16 preceeds the data
+
+
+
+
+ Extra flag indicating that extra fields are present
+
+
+
+
+ Filename flag indicating that the original filename is present
+
+
+
+
+ Flag bit mask indicating that a comment is present
+
+
+
+
+ GZipException represents exceptions specific to GZip classes and code.
+
+
+
+
+ Initialise a new instance of .
+
+
+
+
+ Initialise a new instance of with its message string.
+
+ A that describes the error.
+
+
+
+ Initialise a new instance of .
+
+ A that describes the error.
+ The that caused this exception.
+
+
+
+ Initializes a new instance of the GZipException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ This filter stream is used to decompress a "GZIP" format stream.
+ The "GZIP" format is described baseInputStream RFC 1952.
+
+ author of the original java version : John Leuner
+
+ This sample shows how to unzip a gzipped file
+
+ using System;
+ using System.IO;
+
+ using ICSharpCode.SharpZipLib.Core;
+ using ICSharpCode.SharpZipLib.GZip;
+
+ class MainClass
+ {
+ public static void Main(string[] args)
+ {
+ using (Stream inStream = new GZipInputStream(File.OpenRead(args[0])))
+ using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) {
+ byte[] buffer = new byte[4096];
+ StreamUtils.Copy(inStream, outStream, buffer);
+ }
+ }
+ }
+
+
+
+
+
+ CRC-32 value for uncompressed data
+
+
+
+
+ Flag to indicate if we've read the GZIP header yet for the current member (block of compressed data).
+ This is tracked per-block as the file is parsed.
+
+
+
+
+ Flag to indicate if at least one block in a stream with concatenated blocks was read successfully.
+ This allows us to exit gracefully if downstream data is not in gzip format.
+
+
+
+
+ Creates a GZipInputStream with the default buffer size
+
+
+ The stream to read compressed data from (baseInputStream GZIP format)
+
+
+
+
+ Creates a GZIPInputStream with the specified buffer size
+
+
+ The stream to read compressed data from (baseInputStream GZIP format)
+
+
+ Size of the buffer to use
+
+
+
+
+ Reads uncompressed data into an array of bytes
+
+
+ The buffer to read uncompressed data into
+
+
+ The offset indicating where the data should be placed
+
+
+ The number of uncompressed bytes to be read
+
+ Returns the number of bytes actually read.
+
+
+
+ Retrieves the filename header field for the block last read
+
+
+
+
+
+ This filter stream is used to compress a stream into a "GZIP" stream.
+ The "GZIP" format is described in RFC 1952.
+
+ author of the original java version : John Leuner
+
+ This sample shows how to gzip a file
+
+ using System;
+ using System.IO;
+
+ using ICSharpCode.SharpZipLib.GZip;
+ using ICSharpCode.SharpZipLib.Core;
+
+ class MainClass
+ {
+ public static void Main(string[] args)
+ {
+ using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz")))
+ using (FileStream fs = File.OpenRead(args[0])) {
+ byte[] writeData = new byte[4096];
+ Streamutils.Copy(s, fs, writeData);
+ }
+ }
+ }
+ }
+
+
+
+
+
+ CRC-32 value for uncompressed data
+
+
+
+
+ Creates a GzipOutputStream with the default buffer size
+
+
+ The stream to read data (to be compressed) from
+
+
+
+
+ Creates a GZipOutputStream with the specified buffer size
+
+
+ The stream to read data (to be compressed) from
+
+
+ Size of the buffer to use
+
+
+
+
+ Sets the active compression level (0-9). The new level will be activated
+ immediately.
+
+ The compression level to set.
+
+ Level specified is not supported.
+
+
+
+
+
+ Get the current compression level.
+
+ The current compression level.
+
+
+
+ Original filename
+
+
+
+
+ If defined, will use this time instead of the current for the output header
+
+
+
+
+ Write given buffer to output updating crc
+
+ Buffer to write
+ Offset of first byte in buf to write
+ Number of bytes to write
+
+
+
+ Asynchronously write given buffer to output updating crc
+
+ Buffer to write
+ Offset of first byte in buf to write
+ Number of bytes to write
+ The token to monitor for cancellation requests
+
+
+
+ Writes remaining compressed output data to the output stream
+ and closes it.
+
+
+
+
+ Flushes the stream by ensuring the header is written, and then calling Flush
+ on the deflater.
+
+
+
+
+
+
+
+ Finish compression and write any footer information required to stream
+
+
+
+
+
+
+
+ This class contains constants used for LZW
+
+
+
+
+ Magic number found at start of LZW header: 0x1f 0x9d
+
+
+
+
+ Maximum number of bits per code
+
+
+
+
+ Mask for 'number of compression bits'
+
+
+
+
+ Indicates the presence of a fourth header byte
+
+
+
+
+ Reserved bits
+
+
+
+
+ Block compression: if table is full and compression rate is dropping,
+ clear the dictionary.
+
+
+
+
+ LZW file header size (in bytes)
+
+
+
+
+ Initial number of bits per code
+
+
+
+
+ LzwException represents exceptions specific to LZW classes and code.
+
+
+
+
+ Initialise a new instance of .
+
+
+
+
+ Initialise a new instance of with its message string.
+
+ A that describes the error.
+
+
+
+ Initialise a new instance of .
+
+ A that describes the error.
+ The that caused this exception.
+
+
+
+ Initializes a new instance of the LzwException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ This filter stream is used to decompress a LZW format stream.
+ Specifically, a stream that uses the LZC compression method.
+ This file format is usually associated with the .Z file extension.
+
+ See http://en.wikipedia.org/wiki/Compress
+ See http://wiki.wxwidgets.org/Development:_Z_File_Format
+
+ The file header consists of 3 (or optionally 4) bytes. The first two bytes
+ contain the magic marker "0x1f 0x9d", followed by a byte of flags.
+
+ Based on Java code by Ronald Tschalar, which in turn was based on the unlzw.c
+ code in the gzip package.
+
+ This sample shows how to unzip a compressed file
+
+ using System;
+ using System.IO;
+
+ using ICSharpCode.SharpZipLib.Core;
+ using ICSharpCode.SharpZipLib.LZW;
+
+ class MainClass
+ {
+ public static void Main(string[] args)
+ {
+ using (Stream inStream = new LzwInputStream(File.OpenRead(args[0])))
+ using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) {
+ byte[] buffer = new byte[4096];
+ StreamUtils.Copy(inStream, outStream, buffer);
+ // OR
+ inStream.Read(buffer, 0, buffer.Length);
+ // now do something with the buffer
+ }
+ }
+ }
+
+
+
+
+
+ Gets or sets a flag indicating ownership of underlying stream.
+ When the flag is true will close the underlying stream also.
+
+ The default value is true.
+
+
+
+ Creates a LzwInputStream
+
+
+ The stream to read compressed data from (baseInputStream LZW format)
+
+
+
+
+ See
+
+
+
+
+
+ Reads decompressed data into the provided buffer byte array
+
+
+ The array to read and decompress data into
+
+
+ The offset indicating where the data should be placed
+
+
+ The number of bytes to decompress
+
+ The number of bytes read. Zero signals the end of stream
+
+
+
+ Moves the unread data in the buffer to the beginning and resets
+ the pointers.
+
+
+
+
+
+
+ Gets a value indicating whether the current stream supports reading
+
+
+
+
+ Gets a value of false indicating seeking is not supported for this stream.
+
+
+
+
+ Gets a value of false indicating that this stream is not writeable.
+
+
+
+
+ A value representing the length of the stream in bytes.
+
+
+
+
+ The current position within the stream.
+ Throws a NotSupportedException when attempting to set the position
+
+ Attempting to set the position
+
+
+
+ Flushes the baseInputStream
+
+
+
+
+ Sets the position within the current stream
+ Always throws a NotSupportedException
+
+ The relative offset to seek to.
+ The defining where to seek from.
+ The new position in the stream.
+ Any access
+
+
+
+ Set the length of the current stream
+ Always throws a NotSupportedException
+
+ The new length value for the stream.
+ Any access
+
+
+
+ Writes a sequence of bytes to stream and advances the current position
+ This method always throws a NotSupportedException
+
+ The buffer containing data to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+ Any access
+
+
+
+ Writes one byte to the current stream and advances the current position
+ Always throws a NotSupportedException
+
+ The byte to write.
+ Any access
+
+
+
+ Closes the input stream. When
+ is true the underlying stream is also closed.
+
+
+
+
+ Flag indicating wether this instance has been closed or not.
+
+
+
+
+ This exception is used to indicate that there is a problem
+ with a TAR archive header.
+
+
+
+
+ Initialise a new instance of the InvalidHeaderException class.
+
+
+
+
+ Initialises a new instance of the InvalidHeaderException class with a specified message.
+
+ Message describing the exception cause.
+
+
+
+ Initialise a new instance of InvalidHeaderException
+
+ Message describing the problem.
+ The exception that is the cause of the current exception.
+
+
+
+ Initializes a new instance of the InvalidHeaderException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ Used to advise clients of 'events' while processing archives
+
+
+
+
+ The TarArchive class implements the concept of a
+ 'Tape Archive'. A tar archive is a series of entries, each of
+ which represents a file system object. Each entry in
+ the archive consists of a header block followed by 0 or more data blocks.
+ Directory entries consist only of the header block, and are followed by entries
+ for the directory's contents. File entries consist of a
+ header followed by the number of blocks needed to
+ contain the file's contents. All entries are written on
+ block boundaries. Blocks are 512 bytes long.
+
+ TarArchives are instantiated in either read or write mode,
+ based upon whether they are instantiated with an InputStream
+ or an OutputStream. Once instantiated TarArchives read/write
+ mode can not be changed.
+
+ There is currently no support for random access to tar archives.
+ However, it seems that subclassing TarArchive, and using the
+ TarBuffer.CurrentRecord and TarBuffer.CurrentBlock
+ properties, this would be rather trivial.
+
+
+
+
+ Client hook allowing detailed information to be reported during processing
+
+
+
+
+ Raises the ProgressMessage event
+
+ The TarEntry for this event
+ message for this event. Null is no message
+
+
+
+ Constructor for a default .
+
+
+
+
+ Initialise a TarArchive for input.
+
+ The to use for input.
+
+
+
+ Initialise a TarArchive for output.
+
+ The to use for output.
+
+
+
+ The InputStream based constructors create a TarArchive for the
+ purposes of extracting or listing a tar archive. Thus, use
+ these constructors when you wish to extract files from or list
+ the contents of an existing tar archive.
+
+ The stream to retrieve archive data from.
+ Returns a new suitable for reading from.
+
+
+
+ The InputStream based constructors create a TarArchive for the
+ purposes of extracting or listing a tar archive. Thus, use
+ these constructors when you wish to extract files from or list
+ the contents of an existing tar archive.
+
+ The stream to retrieve archive data from.
+ The used for the Name fields, or null for ASCII only
+ Returns a new suitable for reading from.
+
+
+
+ Create TarArchive for reading setting block factor
+
+ A stream containing the tar archive contents
+ The blocking factor to apply
+ Returns a suitable for reading.
+
+
+
+ Create TarArchive for reading setting block factor
+
+ A stream containing the tar archive contents
+ The blocking factor to apply
+ The used for the Name fields, or null for ASCII only
+ Returns a suitable for reading.
+
+
+
+ Create a TarArchive for writing to, using the default blocking factor
+
+ The to write to
+ The used for the Name fields, or null for ASCII only
+ Returns a suitable for writing.
+
+
+
+ Create a TarArchive for writing to, using the default blocking factor
+
+ The to write to
+ Returns a suitable for writing.
+
+
+
+ Create a tar archive for writing.
+
+ The stream to write to
+ The blocking factor to use for buffering.
+ Returns a suitable for writing.
+
+
+
+ Create a tar archive for writing.
+
+ The stream to write to
+ The blocking factor to use for buffering.
+ The used for the Name fields, or null for ASCII only
+ Returns a suitable for writing.
+
+
+
+ Set the flag that determines whether existing files are
+ kept, or overwritten during extraction.
+
+
+ If true, do not overwrite existing files.
+
+
+
+
+ Get/set the ascii file translation flag. If ascii file translation
+ is true, then the file is checked to see if it a binary file or not.
+ If the flag is true and the test indicates it is ascii text
+ file, it will be translated. The translation converts the local
+ operating system's concept of line ends into the UNIX line end,
+ '\n', which is the defacto standard for a TAR archive. This makes
+ text files compatible with UNIX.
+
+
+
+
+ Set the ascii file translation flag.
+
+
+ If true, translate ascii text files.
+
+
+
+
+ PathPrefix is added to entry names as they are written if the value is not null.
+ A slash character is appended after PathPrefix
+
+
+
+
+ RootPath is removed from entry names if it is found at the
+ beginning of the name.
+
+
+
+
+ Set user and group information that will be used to fill in the
+ tar archive's entry headers. This information is based on that available
+ for the linux operating system, which is not always available on other
+ operating systems. TarArchive allows the programmer to specify values
+ to be used in their place.
+ is set to true by this call.
+
+
+ The user id to use in the headers.
+
+
+ The user name to use in the headers.
+
+
+ The group id to use in the headers.
+
+
+ The group name to use in the headers.
+
+
+
+
+ Get or set a value indicating if overrides defined by SetUserInfo should be applied.
+
+ If overrides are not applied then the values as set in each header will be used.
+
+
+
+ Get the archive user id.
+ See ApplyUserInfoOverrides for detail
+ on how to allow setting values on a per entry basis.
+
+
+ The current user id.
+
+
+
+
+ Get the archive user name.
+ See ApplyUserInfoOverrides for detail
+ on how to allow setting values on a per entry basis.
+
+
+ The current user name.
+
+
+
+
+ Get the archive group id.
+ See ApplyUserInfoOverrides for detail
+ on how to allow setting values on a per entry basis.
+
+
+ The current group id.
+
+
+
+
+ Get the archive group name.
+ See ApplyUserInfoOverrides for detail
+ on how to allow setting values on a per entry basis.
+
+
+ The current group name.
+
+
+
+
+ Get the archive's record size. Tar archives are composed of
+ a series of RECORDS each containing a number of BLOCKS.
+ This allowed tar archives to match the IO characteristics of
+ the physical device being used. Archives are expected
+ to be properly "blocked".
+
+
+ The record size this archive is using.
+
+
+
+
+ Sets the IsStreamOwner property on the underlying stream.
+ Set this to false to prevent the Close of the TarArchive from closing the stream.
+
+
+
+
+ Close the archive.
+
+
+
+
+ Perform the "list" command for the archive contents.
+
+ NOTE That this method uses the progress event to actually list
+ the contents. If the progress display event is not set, nothing will be listed!
+
+
+
+
+ Perform the "extract" command and extract the contents of the archive.
+
+
+ The destination directory into which to extract.
+
+
+
+
+ Perform the "extract" command and extract the contents of the archive.
+
+
+ The destination directory into which to extract.
+
+ Allow parent directory traversal in file paths (e.g. ../file)
+
+
+
+ Extract an entry from the archive. This method assumes that the
+ tarIn stream has been properly set with a call to GetNextEntry().
+
+
+ The destination directory into which to extract.
+
+
+ The TarEntry returned by tarIn.GetNextEntry().
+
+ Allow parent directory traversal in file paths (e.g. ../file)
+
+
+
+ Write an entry to the archive. This method will call the putNextEntry
+ and then write the contents of the entry, and finally call closeEntry()
+ for entries that are files. For directories, it will call putNextEntry(),
+ and then, if the recurse flag is true, process each entry that is a
+ child of the directory.
+
+
+ The TarEntry representing the entry to write to the archive.
+
+
+ If true, process the children of directory entries.
+
+
+
+
+ Write an entry to the archive. This method will call the putNextEntry
+ and then write the contents of the entry, and finally call closeEntry()
+ for entries that are files. For directories, it will call putNextEntry(),
+ and then, if the recurse flag is true, process each entry that is a
+ child of the directory.
+
+
+ The TarEntry representing the entry to write to the archive.
+
+
+ If true, process the children of directory entries.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases the unmanaged resources used by the FileStream and optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only unmanaged resources.
+
+
+
+ Closes the archive and releases any associated resources.
+
+
+
+
+ Ensures that resources are freed and other cleanup operations are performed
+ when the garbage collector reclaims the .
+
+
+
+
+ The TarBuffer class implements the tar archive concept
+ of a buffered input stream. This concept goes back to the
+ days of blocked tape drives and special io devices. In the
+ C# universe, the only real function that this class
+ performs is to ensure that files have the correct "record"
+ size, or other tars will complain.
+
+ You should never have a need to access this class directly.
+ TarBuffers are created by Tar IO Streams.
+
+
+
+
+
+ The size of a block in a tar archive in bytes.
+
+ This is 512 bytes.
+
+
+
+ The number of blocks in a default record.
+
+
+ The default value is 20 blocks per record.
+
+
+
+
+ The size in bytes of a default record.
+
+
+ The default size is 10KB.
+
+
+
+
+ Get the record size for this buffer
+
+ The record size in bytes.
+ This is equal to the multiplied by the
+
+
+
+ Get the TAR Buffer's record size.
+
+ The record size in bytes.
+ This is equal to the multiplied by the
+
+
+
+ Get the Blocking factor for the buffer
+
+ This is the number of blocks in each record.
+
+
+
+ Get the TAR Buffer's block factor
+
+ The block factor; the number of blocks per record.
+
+
+
+ Construct a default TarBuffer
+
+
+
+
+ Create TarBuffer for reading with default BlockFactor
+
+ Stream to buffer
+ A new suitable for input.
+
+
+
+ Construct TarBuffer for reading inputStream setting BlockFactor
+
+ Stream to buffer
+ Blocking factor to apply
+ A new suitable for input.
+
+
+
+ Construct TarBuffer for writing with default BlockFactor
+
+ output stream for buffer
+ A new suitable for output.
+
+
+
+ Construct TarBuffer for writing Tar output to streams.
+
+ Output stream to write to.
+ Blocking factor to apply
+ A new suitable for output.
+
+
+
+ Initialization common to all constructors.
+
+
+
+
+ Determine if an archive block indicates End of Archive. End of
+ archive is indicated by a block that consists entirely of null bytes.
+ All remaining blocks for the record should also be null's
+ However some older tars only do a couple of null blocks (Old GNU tar for one)
+ and also partial records
+
+ The data block to check.
+ Returns true if the block is an EOF block; false otherwise.
+
+
+
+ Determine if an archive block indicates the End of an Archive has been reached.
+ End of archive is indicated by a block that consists entirely of null bytes.
+ All remaining blocks for the record should also be null's
+ However some older tars only do a couple of null blocks (Old GNU tar for one)
+ and also partial records
+
+ The data block to check.
+ Returns true if the block is an EOF block; false otherwise.
+
+
+
+ Skip over a block on the input stream.
+
+
+
+
+ Skip over a block on the input stream.
+
+
+
+
+ Read a block from the input stream.
+
+
+ The block of data read.
+
+
+
+
+ Read a record from data stream.
+
+
+ false if End-Of-File, else true.
+
+
+
+
+ Get the current block number, within the current record, zero based.
+
+ Block numbers are zero based values
+
+
+
+
+ Gets or sets a flag indicating ownership of underlying stream.
+ When the flag is true will close the underlying stream also.
+
+ The default value is true.
+
+
+
+ Get the current block number, within the current record, zero based.
+
+
+ The current zero based block number.
+
+
+ The absolute block number = (record number * block factor) + block number.
+
+
+
+
+ Get the current record number.
+
+
+ The current zero based record number.
+
+
+
+
+ Get the current record number.
+
+
+ The current zero based record number.
+
+
+
+
+ Write a block of data to the archive.
+
+
+ The data to write to the archive.
+
+
+
+
+
+ Write a block of data to the archive.
+
+
+ The data to write to the archive.
+
+
+
+
+ Write an archive record to the archive, where the record may be
+ inside of a larger array buffer. The buffer must be "offset plus
+ record size" long.
+
+
+ The buffer containing the record data to write.
+
+
+ The offset of the record data within buffer.
+
+
+
+
+
+ Write an archive record to the archive, where the record may be
+ inside of a larger array buffer. The buffer must be "offset plus
+ record size" long.
+
+
+ The buffer containing the record data to write.
+
+
+ The offset of the record data within buffer.
+
+
+
+
+ Write a TarBuffer record to the archive.
+
+
+
+
+ WriteFinalRecord writes the current record buffer to output any unwritten data is present.
+
+ Any trailing bytes are set to zero which is by definition correct behaviour
+ for the end of a tar stream.
+
+
+
+ Close the TarBuffer. If this is an output buffer, also flush the
+ current block before closing.
+
+
+
+
+ Close the TarBuffer. If this is an output buffer, also flush the
+ current block before closing.
+
+
+
+
+ This class represents an entry in a Tar archive. It consists
+ of the entry's header, as well as the entry's File. Entries
+ can be instantiated in one of three ways, depending on how
+ they are to be used.
+
+ TarEntries that are created from the header bytes read from
+ an archive are instantiated with the TarEntry( byte[] )
+ constructor. These entries will be used when extracting from
+ or listing the contents of an archive. These entries have their
+ header filled in using the header bytes. They also set the File
+ to null, since they reference an archive entry not a file.
+
+ TarEntries that are created from files that are to be written
+ into an archive are instantiated with the CreateEntryFromFile(string)
+ pseudo constructor. These entries have their header filled in using
+ the File's information. They also keep a reference to the File
+ for convenience when writing entries.
+
+ Finally, TarEntries can be constructed from nothing but a name.
+ This allows the programmer to construct the entry by hand, for
+ instance when only an InputStream is available for writing to
+ the archive, and the header information is constructed from
+ other information. In this case the header fields are set to
+ defaults and the File is set to null.
+
+
+
+
+
+ Initialise a default instance of .
+
+
+
+
+ Construct an entry from an archive's header bytes. File is set
+ to null.
+
+
+ The header bytes from a tar archive entry.
+
+
+
+
+ Construct an entry from an archive's header bytes. File is set
+ to null.
+
+
+ The header bytes from a tar archive entry.
+
+
+ The used for the Name fields, or null for ASCII only
+
+
+
+
+ Construct a TarEntry using the header provided
+
+ Header details for entry
+
+
+
+ Clone this tar entry.
+
+ Returns a clone of this entry.
+
+
+
+ Construct an entry with only a name.
+ This allows the programmer to construct the entry's header "by hand".
+
+ The name to use for the entry
+ Returns the newly created
+
+
+
+ Construct an entry for a file. File is set to file, and the
+ header is constructed from information from the file.
+
+ The file name that the entry represents.
+ Returns the newly created
+
+
+
+ Determine if the two entries are equal. Equality is determined
+ by the header names being equal.
+
+ The to compare with the current Object.
+
+ True if the entries are equal; false if not.
+
+
+
+
+ Derive a Hash value for the current
+
+ A Hash code for the current
+
+
+
+ Determine if the given entry is a descendant of this entry.
+ Descendancy is determined by the name of the descendant
+ starting with this entry's name.
+
+
+ Entry to be checked as a descendent of this.
+
+
+ True if entry is a descendant of this.
+
+
+
+
+ Get this entry's header.
+
+
+ This entry's TarHeader.
+
+
+
+
+ Get/Set this entry's name.
+
+
+
+
+ Get/set this entry's user id.
+
+
+
+
+ Get/set this entry's group id.
+
+
+
+
+ Get/set this entry's user name.
+
+
+
+
+ Get/set this entry's group name.
+
+
+
+
+ Convenience method to set this entry's group and user ids.
+
+
+ This entry's new user id.
+
+
+ This entry's new group id.
+
+
+
+
+ Convenience method to set this entry's group and user names.
+
+
+ This entry's new user name.
+
+
+ This entry's new group name.
+
+
+
+
+ Get/Set the modification time for this entry
+
+
+
+
+ Get this entry's file.
+
+
+ This entry's file.
+
+
+
+
+ Get/set this entry's recorded file size.
+
+
+
+
+ Return true if this entry represents a directory, false otherwise
+
+
+ True if this entry is a directory.
+
+
+
+
+ Fill in a TarHeader with information from a File.
+
+
+ The TarHeader to fill in.
+
+
+ The file from which to get the header information.
+
+
+
+
+ Get entries for all files present in this entries directory.
+ If this entry doesnt represent a directory zero entries are returned.
+
+
+ An array of TarEntry's for this entry's children.
+
+
+
+
+ Write an entry's header information to a header buffer.
+
+
+ The tar entry header buffer to fill in.
+
+
+
+
+ Write an entry's header information to a header buffer.
+
+
+ The tar entry header buffer to fill in.
+
+
+ The used for the Name fields, or null for ASCII only
+
+
+
+
+ Convenience method that will modify an entry's name directly
+ in place in an entry header buffer byte array.
+
+
+ The buffer containing the entry header to modify.
+
+
+ The new name to place into the header buffer.
+
+
+
+
+ Convenience method that will modify an entry's name directly
+ in place in an entry header buffer byte array.
+
+
+ The buffer containing the entry header to modify.
+
+
+ The new name to place into the header buffer.
+
+
+ The used for the Name fields, or null for ASCII only
+
+
+
+
+ Fill in a TarHeader given only the entry's name.
+
+
+ The tar entry name.
+
+
+
+
+ The name of the file this entry represents or null if the entry is not based on a file.
+
+
+
+
+ The entry's header information.
+
+
+
+
+ TarException represents exceptions specific to Tar classes and code.
+
+
+
+
+ Initialise a new instance of .
+
+
+
+
+ Initialise a new instance of with its message string.
+
+ A that describes the error.
+
+
+
+ Initialise a new instance of .
+
+ A that describes the error.
+ The that caused this exception.
+
+
+
+ Initializes a new instance of the TarException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ Reads the extended header of a Tar stream
+
+
+
+
+ Creates a new .
+
+
+
+
+ Read bytes from
+
+
+
+
+
+
+ Returns the parsed headers as key-value strings
+
+
+
+
+ This class encapsulates the Tar Entry Header used in Tar Archives.
+ The class also holds a number of tar constants, used mostly in headers.
+
+
+ The tar format and its POSIX successor PAX have a long history which makes for compatability
+ issues when creating and reading files.
+
+ This is further complicated by a large number of programs with variations on formats
+ One common issue is the handling of names longer than 100 characters.
+ GNU style long names are currently supported.
+
+ This is the ustar (Posix 1003.1) header.
+
+ struct header
+ {
+ char t_name[100]; // 0 Filename
+ char t_mode[8]; // 100 Permissions
+ char t_uid[8]; // 108 Numerical User ID
+ char t_gid[8]; // 116 Numerical Group ID
+ char t_size[12]; // 124 Filesize
+ char t_mtime[12]; // 136 st_mtime
+ char t_chksum[8]; // 148 Checksum
+ char t_typeflag; // 156 Type of File
+ char t_linkname[100]; // 157 Target of Links
+ char t_magic[6]; // 257 "ustar" or other...
+ char t_version[2]; // 263 Version fixed to 00
+ char t_uname[32]; // 265 User Name
+ char t_gname[32]; // 297 Group Name
+ char t_devmajor[8]; // 329 Major for devices
+ char t_devminor[8]; // 337 Minor for devices
+ char t_prefix[155]; // 345 Prefix for t_name
+ char t_mfill[12]; // 500 Filler up to 512
+ };
+
+
+
+
+ The length of the name field in a header buffer.
+
+
+
+
+ The length of the mode field in a header buffer.
+
+
+
+
+ The length of the user id field in a header buffer.
+
+
+
+
+ The length of the group id field in a header buffer.
+
+
+
+
+ The length of the checksum field in a header buffer.
+
+
+
+
+ Offset of checksum in a header buffer.
+
+
+
+
+ The length of the size field in a header buffer.
+
+
+
+
+ The length of the magic field in a header buffer.
+
+
+
+
+ The length of the version field in a header buffer.
+
+
+
+
+ The length of the modification time field in a header buffer.
+
+
+
+
+ The length of the user name field in a header buffer.
+
+
+
+
+ The length of the group name field in a header buffer.
+
+
+
+
+ The length of the devices field in a header buffer.
+
+
+
+
+ The length of the name prefix field in a header buffer.
+
+
+
+
+ The "old way" of indicating a normal file.
+
+
+
+
+ Normal file type.
+
+
+
+
+ Link file type.
+
+
+
+
+ Symbolic link file type.
+
+
+
+
+ Character device file type.
+
+
+
+
+ Block device file type.
+
+
+
+
+ Directory file type.
+
+
+
+
+ FIFO (pipe) file type.
+
+
+
+
+ Contiguous file type.
+
+
+
+
+ Posix.1 2001 global extended header
+
+
+
+
+ Posix.1 2001 extended header
+
+
+
+
+ Solaris access control list file type
+
+
+
+
+ GNU dir dump file type
+ This is a dir entry that contains the names of files that were in the
+ dir at the time the dump was made
+
+
+
+
+ Solaris Extended Attribute File
+
+
+
+
+ Inode (metadata only) no file content
+
+
+
+
+ Identifies the next file on the tape as having a long link name
+
+
+
+
+ Identifies the next file on the tape as having a long name
+
+
+
+
+ Continuation of a file that began on another volume
+
+
+
+
+ For storing filenames that dont fit in the main header (old GNU)
+
+
+
+
+ GNU Sparse file
+
+
+
+
+ GNU Tape/volume header ignore on extraction
+
+
+
+
+ The magic tag representing a POSIX tar archive. (would be written with a trailing NULL)
+
+
+
+
+ The magic tag representing an old GNU tar archive where version is included in magic and overwrites it
+
+
+
+
+ Initialise a default TarHeader instance
+
+
+
+
+ Get/set the name for this tar entry.
+
+ Thrown when attempting to set the property to null.
+
+
+
+ Get the name of this entry.
+
+ The entry's name.
+
+
+
+ Get/set the entry's Unix style permission mode.
+
+
+
+
+ The entry's user id.
+
+
+ This is only directly relevant to unix systems.
+ The default is zero.
+
+
+
+
+ Get/set the entry's group id.
+
+
+ This is only directly relevant to linux/unix systems.
+ The default value is zero.
+
+
+
+
+ Get/set the entry's size.
+
+ Thrown when setting the size to less than zero.
+
+
+
+ Get/set the entry's modification time.
+
+
+ The modification time is only accurate to within a second.
+
+ Thrown when setting the date time to less than 1/1/1970.
+
+
+
+ Get the entry's checksum. This is only valid/updated after writing or reading an entry.
+
+
+
+
+ Get value of true if the header checksum is valid, false otherwise.
+
+
+
+
+ Get/set the entry's type flag.
+
+
+
+
+ The entry's link name.
+
+ Thrown when attempting to set LinkName to null.
+
+
+
+ Get/set the entry's magic tag.
+
+ Thrown when attempting to set Magic to null.
+
+
+
+ The entry's version.
+
+ Thrown when attempting to set Version to null.
+
+
+
+ The entry's user name.
+
+
+
+
+ Get/set the entry's group name.
+
+
+ This is only directly relevant to unix systems.
+
+
+
+
+ Get/set the entry's major device number.
+
+
+
+
+ Get/set the entry's minor device number.
+
+
+
+
+ Create a new that is a copy of the current instance.
+
+ A new that is a copy of the current instance.
+
+
+
+ Parse TarHeader information from a header buffer.
+
+
+ The tar entry header buffer to get information from.
+
+
+ The used for the Name field, or null for ASCII only
+
+
+
+
+ Parse TarHeader information from a header buffer.
+
+
+ The tar entry header buffer to get information from.
+
+
+
+
+ 'Write' header information to buffer provided, updating the check sum.
+
+ output buffer for header information
+
+
+
+ 'Write' header information to buffer provided, updating the check sum.
+
+ output buffer for header information
+ The used for the Name field, or null for ASCII only
+
+
+
+ Get a hash code for the current object.
+
+ A hash code for the current object.
+
+
+
+ Determines if this instance is equal to the specified object.
+
+ The object to compare with.
+ true if the objects are equal, false otherwise.
+
+
+
+ Set defaults for values used when constructing a TarHeader instance.
+
+ Value to apply as a default for userId.
+ Value to apply as a default for userName.
+ Value to apply as a default for groupId.
+ Value to apply as a default for groupName.
+
+
+
+ Parse an octal string from a header buffer.
+
+ The header buffer from which to parse.
+ The offset into the buffer from which to parse.
+ The number of header bytes to parse.
+ The long equivalent of the octal string.
+
+
+
+ Parse a name from a header buffer.
+
+
+ The header buffer from which to parse.
+
+
+ The offset into the buffer from which to parse.
+
+
+ The number of header bytes to parse.
+
+
+ The name parsed.
+
+
+
+
+ Parse a name from a header buffer.
+
+
+ The header buffer from which to parse.
+
+
+ name encoding, or null for ASCII only
+
+
+ The name parsed.
+
+
+
+
+ Add name to the buffer as a collection of bytes
+
+ The name to add
+ The offset of the first character
+ The buffer to add to
+ The index of the first byte to add
+ The number of characters/bytes to add
+ The next free index in the
+
+
+
+ Add name to the buffer as a collection of bytes
+
+ The name to add
+ The offset of the first character
+ The buffer to add to
+ The index of the first byte to add
+ The number of characters/bytes to add
+ The next free index in the
+
+
+
+ Add name to the buffer as a collection of bytes
+
+ The name to add
+ The offset of the first character
+ The buffer to add to
+ The index of the first byte to add
+ The number of characters/bytes to add
+ name encoding, or null for ASCII only
+ The next free index in the
+
+
+
+ Add an entry name to the buffer
+
+
+ The name to add
+
+
+ The buffer to add to
+
+
+ The offset into the buffer from which to start adding
+
+
+ The number of header bytes to add
+
+
+ The index of the next free byte in the buffer
+
+ TODO: what should be default behavior?(omit upper byte or UTF8?)
+
+
+
+ Add an entry name to the buffer
+
+
+ The name to add
+
+
+ The buffer to add to
+
+
+ The offset into the buffer from which to start adding
+
+
+ The number of header bytes to add
+
+
+
+
+ The index of the next free byte in the buffer
+
+
+
+
+ Add an entry name to the buffer
+
+ The name to add
+ The buffer to add to
+ The offset into the buffer from which to start adding
+ The number of header bytes to add
+ The index of the next free byte in the buffer
+ TODO: what should be default behavior?(omit upper byte or UTF8?)
+
+
+
+ Add an entry name to the buffer
+
+ The name to add
+ The buffer to add to
+ The offset into the buffer from which to start adding
+ The number of header bytes to add
+
+ The index of the next free byte in the buffer
+
+
+
+ Add a string to a buffer as a collection of ascii bytes.
+
+ The string to add
+ The offset of the first character to add.
+ The buffer to add to.
+ The offset to start adding at.
+ The number of ascii characters to add.
+ The next free index in the buffer.
+
+
+
+ Add a string to a buffer as a collection of ascii bytes.
+
+ The string to add
+ The offset of the first character to add.
+ The buffer to add to.
+ The offset to start adding at.
+ The number of ascii characters to add.
+ String encoding, or null for ASCII only
+ The next free index in the buffer.
+
+
+
+ Put an octal representation of a value into a buffer
+
+
+ the value to be converted to octal
+
+
+ buffer to store the octal string
+
+
+ The offset into the buffer where the value starts
+
+
+ The length of the octal string to create
+
+
+ The offset of the character next byte after the octal string
+
+
+
+
+ Put an octal or binary representation of a value into a buffer
+
+ Value to be convert to octal
+ The buffer to update
+ The offset into the buffer to store the value
+ The length of the octal string. Must be 12.
+ Index of next byte
+
+
+
+ Add the checksum integer to header buffer.
+
+
+ The header buffer to set the checksum for
+ The offset into the buffer for the checksum
+ The number of header bytes to update.
+ It's formatted differently from the other fields: it has 6 digits, a
+ null, then a space -- rather than digits, a space, then a null.
+ The final space is already there, from checksumming
+
+ The modified buffer offset
+
+
+
+ Compute the checksum for a tar entry header.
+ The checksum field must be all spaces prior to this happening
+
+ The tar entry's header buffer.
+ The computed checksum.
+
+
+
+ Make a checksum for a tar entry ignoring the checksum contents.
+
+ The tar entry's header buffer.
+ The checksum for the buffer
+
+
+
+ The TarInputStream reads a UNIX tar archive as an InputStream.
+ methods are provided to position at each successive entry in
+ the archive, and the read each entry as a normal input stream
+ using read().
+
+
+
+
+ Construct a TarInputStream with default block factor
+
+ stream to source data from
+
+
+
+ Construct a TarInputStream with default block factor
+
+ stream to source data from
+ The used for the Name fields, or null for ASCII only
+
+
+
+ Construct a TarInputStream with user specified block factor
+
+ stream to source data from
+ block factor to apply to archive
+
+
+
+ Construct a TarInputStream with user specified block factor
+
+ stream to source data from
+ block factor to apply to archive
+ The used for the Name fields, or null for ASCII only
+
+
+
+ Gets or sets a flag indicating ownership of underlying stream.
+ When the flag is true will close the underlying stream also.
+
+ The default value is true.
+
+
+
+ Gets a value indicating whether the current stream supports reading
+
+
+
+
+ Gets a value indicating whether the current stream supports seeking
+ This property always returns false.
+
+
+
+
+ Gets a value indicating if the stream supports writing.
+ This property always returns false.
+
+
+
+
+ The length in bytes of the stream
+
+
+
+
+ Gets or sets the position within the stream.
+ Setting the Position is not supported and throws a NotSupportedExceptionNotSupportedException
+
+ Any attempt to set position
+
+
+
+ Flushes the baseInputStream
+
+
+
+
+ Flushes the baseInputStream
+
+
+
+
+
+ Set the streams position. This operation is not supported and will throw a NotSupportedException
+
+ The offset relative to the origin to seek to.
+ The to start seeking from.
+ The new position in the stream.
+ Any access
+
+
+
+ Sets the length of the stream
+ This operation is not supported and will throw a NotSupportedException
+
+ The new stream length.
+ Any access
+
+
+
+ Writes a block of bytes to this stream using data from a buffer.
+ This operation is not supported and will throw a NotSupportedException
+
+ The buffer containing bytes to write.
+ The offset in the buffer of the frist byte to write.
+ The number of bytes to write.
+ Any access
+
+
+
+ Writes a byte to the current position in the file stream.
+ This operation is not supported and will throw a NotSupportedException
+
+ The byte value to write.
+ Any access
+
+
+
+ Reads a byte from the current tar archive entry.
+
+ A byte cast to an int; -1 if the at the end of the stream.
+
+
+
+ Reads bytes from the current tar archive entry.
+
+ This method is aware of the boundaries of the current
+ entry in the archive and will deal with them appropriately
+
+
+ The buffer into which to place bytes read.
+
+
+ The offset at which to place bytes read.
+
+
+ The number of bytes to read.
+
+
+
+ The number of bytes read, or 0 at end of stream/EOF.
+
+
+
+
+ Reads bytes from the current tar archive entry.
+
+ This method is aware of the boundaries of the current
+ entry in the archive and will deal with them appropriately
+
+
+ The buffer into which to place bytes read.
+
+
+ The offset at which to place bytes read.
+
+
+ The number of bytes to read.
+
+
+ The number of bytes read, or 0 at end of stream/EOF.
+
+
+
+
+ Closes this stream. Calls the TarBuffer's close() method.
+ The underlying stream is closed by the TarBuffer.
+
+
+
+
+ Set the entry factory for this instance.
+
+ The factory for creating new entries
+
+
+
+ Get the record size being used by this stream's TarBuffer.
+
+
+
+
+ Get the record size being used by this stream's TarBuffer.
+
+
+ TarBuffer record size.
+
+
+
+
+ Get the available data that can be read from the current
+ entry in the archive. This does not indicate how much data
+ is left in the entire archive, only in the current entry.
+ This value is determined from the entry's size header field
+ and the amount of data already read from the current entry.
+
+
+ The number of available bytes for the current entry.
+
+
+
+
+ Skip bytes in the input buffer. This skips bytes in the
+ current entry's data, not the entire archive, and will
+ stop at the end of the current entry's data if the number
+ to skip extends beyond that point.
+
+
+ The number of bytes to skip.
+
+
+
+
+
+ Skip bytes in the input buffer. This skips bytes in the
+ current entry's data, not the entire archive, and will
+ stop at the end of the current entry's data if the number
+ to skip extends beyond that point.
+
+
+ The number of bytes to skip.
+
+
+
+
+ Return a value of true if marking is supported; false otherwise.
+
+ Currently marking is not supported, the return value is always false.
+
+
+
+ Since we do not support marking just yet, we do nothing.
+
+
+ The limit to mark.
+
+
+
+
+ Since we do not support marking just yet, we do nothing.
+
+
+
+
+ Get the next entry in this tar archive. This will skip
+ over any remaining data in the current entry, if there
+ is one, and place the input stream at the header of the
+ next entry, and read the header and instantiate a new
+ TarEntry from the header bytes and return that entry.
+ If there are no more entries in the archive, null will
+ be returned to indicate that the end of the archive has
+ been reached.
+
+
+ The next TarEntry in the archive, or null.
+
+
+
+
+ Get the next entry in this tar archive. This will skip
+ over any remaining data in the current entry, if there
+ is one, and place the input stream at the header of the
+ next entry, and read the header and instantiate a new
+ TarEntry from the header bytes and return that entry.
+ If there are no more entries in the archive, null will
+ be returned to indicate that the end of the archive has
+ been reached.
+
+
+ The next TarEntry in the archive, or null.
+
+
+
+
+ Copies the contents of the current tar archive entry directly into
+ an output stream.
+
+
+ The OutputStream into which to write the entry's data.
+
+
+
+
+
+ Copies the contents of the current tar archive entry directly into
+ an output stream.
+
+
+ The OutputStream into which to write the entry's data.
+
+
+
+
+ This interface is provided, along with the method , to allow
+ the programmer to have their own subclass instantiated for the
+ entries return from .
+
+
+
+
+ Create an entry based on name alone
+
+
+ Name of the new EntryPointNotFoundException to create
+
+ created TarEntry or descendant class
+
+
+
+ Create an instance based on an actual file
+
+
+ Name of file to represent in the entry
+
+
+ Created TarEntry or descendant class
+
+
+
+
+ Create a tar entry based on the header information passed
+
+
+ Buffer containing header information to create an entry from.
+
+
+ Created TarEntry or descendant class
+
+
+
+
+ Standard entry factory class creating instances of the class TarEntry
+
+
+
+
+ Construct standard entry factory class with ASCII name encoding
+
+
+
+
+ Construct standard entry factory with name encoding
+
+ The used for the Name fields, or null for ASCII only
+
+
+
+ Create a based on named
+
+ The name to use for the entry
+ A new
+
+
+
+ Create a tar entry with details obtained from file
+
+ The name of the file to retrieve details from.
+ A new
+
+
+
+ Create an entry based on details in header
+
+ The buffer containing entry details.
+ A new
+
+
+
+ Flag set when last block has been read
+
+
+
+
+ Size of this entry as recorded in header
+
+
+
+
+ Number of bytes read for this entry so far
+
+
+
+
+ Buffer used with calls to Read()
+
+
+
+
+ Working buffer
+
+
+
+
+ Current entry being read
+
+
+
+
+ Factory used to create TarEntry or descendant class instance
+
+
+
+
+ Stream used as the source of input data.
+
+
+
+
+ The TarOutputStream writes a UNIX tar archive as an OutputStream.
+ Methods are provided to put entries, and then write their contents
+ by writing to this stream using write().
+
+ public
+
+
+
+ Construct TarOutputStream using default block factor
+
+ stream to write to
+
+
+
+ Construct TarOutputStream using default block factor
+
+ stream to write to
+ The used for the Name fields, or null for ASCII only
+
+
+
+ Construct TarOutputStream with user specified block factor
+
+ stream to write to
+ blocking factor
+
+
+
+ Construct TarOutputStream with user specified block factor
+
+ stream to write to
+ blocking factor
+ The used for the Name fields, or null for ASCII only
+
+
+
+ Gets or sets a flag indicating ownership of underlying stream.
+ When the flag is true will close the underlying stream also.
+
+ The default value is true.
+
+
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ true if stream supports writing; otherwise, false.
+
+
+
+
+ length of stream in bytes
+
+
+
+
+ gets or sets the position within the current stream.
+
+
+
+
+ set the position within the current stream
+
+ The offset relative to the to seek to
+ The to seek from.
+ The new position in the stream.
+
+
+
+ Set the length of the current stream
+
+ The new stream length.
+
+
+
+ Read a byte from the stream and advance the position within the stream
+ by one byte or returns -1 if at the end of the stream.
+
+ The byte value or -1 if at end of stream
+
+
+
+ read bytes from the current stream and advance the position within the
+ stream by the number of bytes read.
+
+ The buffer to store read bytes in.
+ The index into the buffer to being storing bytes at.
+ The desired number of bytes to read.
+ The total number of bytes read, or zero if at the end of the stream.
+ The number of bytes may be less than the count
+ requested if data is not available.
+
+
+
+ read bytes from the current stream and advance the position within the
+ stream by the number of bytes read.
+
+ The buffer to store read bytes in.
+ The index into the buffer to being storing bytes at.
+ The desired number of bytes to read.
+
+ The total number of bytes read, or zero if at the end of the stream.
+ The number of bytes may be less than the count
+ requested if data is not available.
+
+
+
+ All buffered data is written to destination
+
+
+
+
+ All buffered data is written to destination
+
+
+
+
+ Ends the TAR archive without closing the underlying OutputStream.
+ The result is that the EOF block of nulls is written.
+
+
+
+
+ Ends the TAR archive without closing the underlying OutputStream.
+ The result is that the EOF block of nulls is written.
+
+
+
+
+ Ends the TAR archive and closes the underlying OutputStream.
+
+ This means that Finish() is called followed by calling the
+ TarBuffer's Close().
+
+
+
+ Get the record size being used by this stream's TarBuffer.
+
+
+
+
+ Get the record size being used by this stream's TarBuffer.
+
+
+ The TarBuffer record size.
+
+
+
+
+ Get a value indicating whether an entry is open, requiring more data to be written.
+
+
+
+
+ Put an entry on the output stream. This writes the entry's
+ header and positions the output stream for writing
+ the contents of the entry. Once this method is called, the
+ stream is ready for calls to write() to write the entry's
+ contents. Once the contents are written, closeEntry()
+ MUST be called to ensure that all buffered data
+ is completely written to the output stream.
+
+
+ The TarEntry to be written to the archive.
+
+
+
+
+
+ Put an entry on the output stream. This writes the entry's
+ header and positions the output stream for writing
+ the contents of the entry. Once this method is called, the
+ stream is ready for calls to write() to write the entry's
+ contents. Once the contents are written, closeEntry()
+ MUST be called to ensure that all buffered data
+ is completely written to the output stream.
+
+
+ The TarEntry to be written to the archive.
+
+
+
+
+ Close an entry. This method MUST be called for all file
+ entries that contain data. The reason is that we must
+ buffer data written to the stream in order to satisfy
+ the buffer's block based writes. Thus, there may be
+ data fragments still being assembled that must be written
+ to the output stream before this entry is closed and the
+ next entry written.
+
+
+
+
+ Close an entry. This method MUST be called for all file
+ entries that contain data. The reason is that we must
+ buffer data written to the stream in order to satisfy
+ the buffer's block based writes. Thus, there may be
+ data fragments still being assembled that must be written
+ to the output stream before this entry is closed and the
+ next entry written.
+
+
+
+
+ Writes a byte to the current tar archive entry.
+ This method simply calls Write(byte[], int, int).
+
+
+ The byte to be written.
+
+
+
+
+ Writes bytes to the current tar archive entry. This method
+ is aware of the current entry and will throw an exception if
+ you attempt to write bytes past the length specified for the
+ current entry. The method is also (painfully) aware of the
+ record buffering required by TarBuffer, and manages buffers
+ that are not a multiple of recordsize in length, including
+ assembling records from small buffers.
+
+
+ The buffer to write to the archive.
+
+
+ The offset in the buffer from which to get bytes.
+
+
+ The number of bytes to write.
+
+
+
+
+ Writes bytes to the current tar archive entry. This method
+ is aware of the current entry and will throw an exception if
+ you attempt to write bytes past the length specified for the
+ current entry. The method is also (painfully) aware of the
+ record buffering required by TarBuffer, and manages buffers
+ that are not a multiple of recordsize in length, including
+ assembling records from small buffers.
+
+
+ The buffer to write to the archive.
+
+
+ The offset in the buffer from which to get bytes.
+
+
+ The number of bytes to write.
+
+
+
+
+
+ Write an EOF (end of archive) block to the tar archive.
+ The end of the archive is indicated by two blocks consisting entirely of zero bytes.
+
+
+
+
+ bytes written for this entry so far
+
+
+
+
+ current 'Assembly' buffer length
+
+
+
+
+ Flag indicating whether this instance has been closed or not.
+
+
+
+
+ Size for the current entry
+
+
+
+
+ single block working buffer
+
+
+
+
+ 'Assembly' buffer used to assemble data before writing
+
+
+
+
+ TarBuffer used to provide correct blocking factor
+
+
+
+
+ the destination stream for the archive contents
+
+
+
+
+ name encoding
+
+
+
+
+ This is the Deflater class. The deflater class compresses input
+ with the deflate algorithm described in RFC 1951. It has several
+ compression levels and three different strategies described below.
+
+ This class is not thread safe. This is inherent in the API, due
+ to the split of deflate and setInput.
+
+ author of the original java version : Jochen Hoenicke
+
+
+
+
+ The best and slowest compression level. This tries to find very
+ long and distant string repetitions.
+
+
+
+
+ The worst but fastest compression level.
+
+
+
+
+ The default compression level.
+
+
+
+
+ This level won't compress at all but output uncompressed blocks.
+
+
+
+
+ The compression method. This is the only method supported so far.
+ There is no need to use this constant at all.
+
+
+
+
+ Compression Level as an enum for safer use
+
+
+
+
+ The best and slowest compression level. This tries to find very
+ long and distant string repetitions.
+
+
+
+
+ The worst but fastest compression level.
+
+
+
+
+ The default compression level.
+
+
+
+
+ This level won't compress at all but output uncompressed blocks.
+
+
+
+
+ The compression method. This is the only method supported so far.
+ There is no need to use this constant at all.
+
+
+
+
+ Creates a new deflater with default compression level.
+
+
+
+
+ Creates a new deflater with given compression level.
+
+
+ the compression level, a value between NO_COMPRESSION
+ and BEST_COMPRESSION, or DEFAULT_COMPRESSION.
+
+ if lvl is out of range.
+
+
+
+ Creates a new deflater with given compression level.
+
+
+ the compression level, a value between NO_COMPRESSION
+ and BEST_COMPRESSION.
+
+
+ true, if we should suppress the Zlib/RFC1950 header at the
+ beginning and the adler checksum at the end of the output. This is
+ useful for the GZIP/PKZIP formats.
+
+ if lvl is out of range.
+
+
+
+ Resets the deflater. The deflater acts afterwards as if it was
+ just created with the same compression level and strategy as it
+ had before.
+
+
+
+
+ Gets the current adler checksum of the data that was processed so far.
+
+
+
+
+ Gets the number of input bytes processed so far.
+
+
+
+
+ Gets the number of output bytes so far.
+
+
+
+
+ Flushes the current input block. Further calls to deflate() will
+ produce enough output to inflate everything in the current input
+ block. This is not part of Sun's JDK so I have made it package
+ private. It is used by DeflaterOutputStream to implement
+ flush().
+
+
+
+
+ Finishes the deflater with the current input block. It is an error
+ to give more input after this method was called. This method must
+ be called to force all bytes to be flushed.
+
+
+
+
+ Returns true if the stream was finished and no more output bytes
+ are available.
+
+
+
+
+ Returns true, if the input buffer is empty.
+ You should then call setInput().
+ NOTE: This method can also return true when the stream
+ was finished.
+
+
+
+
+ Sets the data which should be compressed next. This should be only
+ called when needsInput indicates that more input is needed.
+ If you call setInput when needsInput() returns false, the
+ previous input that is still pending will be thrown away.
+ The given byte array should not be changed, before needsInput() returns
+ true again.
+ This call is equivalent to setInput(input, 0, input.length).
+
+
+ the buffer containing the input data.
+
+
+ if the buffer was finished() or ended().
+
+
+
+
+ Sets the data which should be compressed next. This should be
+ only called when needsInput indicates that more input is needed.
+ The given byte array should not be changed, before needsInput() returns
+ true again.
+
+
+ the buffer containing the input data.
+
+
+ the start of the data.
+
+
+ the number of data bytes of input.
+
+
+ if the buffer was Finish()ed or if previous input is still pending.
+
+
+
+
+ Sets the compression level. There is no guarantee of the exact
+ position of the change, but if you call this when needsInput is
+ true the change of compression level will occur somewhere near
+ before the end of the so far given input.
+
+
+ the new compression level.
+
+
+
+
+ Get current compression level
+
+ Returns the current compression level
+
+
+
+ Sets the compression strategy. Strategy is one of
+ DEFAULT_STRATEGY, HUFFMAN_ONLY and FILTERED. For the exact
+ position where the strategy is changed, the same as for
+ SetLevel() applies.
+
+
+ The new compression strategy.
+
+
+
+
+ Deflates the current input block with to the given array.
+
+
+ The buffer where compressed data is stored
+
+
+ The number of compressed bytes added to the output, or 0 if either
+ IsNeedingInput() or IsFinished returns true or length is zero.
+
+
+
+
+ Deflates the current input block to the given array.
+
+
+ Buffer to store the compressed data.
+
+
+ Offset into the output array.
+
+
+ The maximum number of bytes that may be stored.
+
+
+ The number of compressed bytes added to the output, or 0 if either
+ needsInput() or finished() returns true or length is zero.
+
+
+ If Finish() was previously called.
+
+
+ If offset or length don't match the array length.
+
+
+
+
+ Sets the dictionary which should be used in the deflate process.
+ This call is equivalent to setDictionary(dict, 0, dict.Length).
+
+
+ the dictionary.
+
+
+ if SetInput () or Deflate () were already called or another dictionary was already set.
+
+
+
+
+ Sets the dictionary which should be used in the deflate process.
+ The dictionary is a byte array containing strings that are
+ likely to occur in the data which should be compressed. The
+ dictionary is not stored in the compressed output, only a
+ checksum. To decompress the output you need to supply the same
+ dictionary again.
+
+
+ The dictionary data
+
+
+ The index where dictionary information commences.
+
+
+ The number of bytes in the dictionary.
+
+
+ If SetInput () or Deflate() were already called or another dictionary was already set.
+
+
+
+
+ Compression level.
+
+
+
+
+ If true no Zlib/RFC1950 headers or footers are generated
+
+
+
+
+ The current state.
+
+
+
+
+ The total bytes of output written.
+
+
+
+
+ The pending output.
+
+
+
+
+ The deflater engine.
+
+
+
+
+ This class contains constants used for deflation.
+
+
+
+
+ Set to true to enable debugging
+
+
+
+
+ Written to Zip file to identify a stored block
+
+
+
+
+ Identifies static tree in Zip file
+
+
+
+
+ Identifies dynamic tree in Zip file
+
+
+
+
+ Header flag indicating a preset dictionary for deflation
+
+
+
+
+ Sets internal buffer sizes for Huffman encoding
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Strategies for deflater
+
+
+
+
+ The default strategy
+
+
+
+
+ This strategy will only allow longer string repetitions. It is
+ useful for random data with a small character set.
+
+
+
+
+ This strategy will not look for string repetitions at all. It
+ only encodes with Huffman trees (which means, that more common
+ characters get a smaller encoding.
+
+
+
+
+ Low level compression engine for deflate algorithm which uses a 32K sliding window
+ with secondary compression from Huffman/Shannon-Fano codes.
+
+
+
+
+ Construct instance with pending buffer
+ Adler calculation will be performed
+
+
+ Pending buffer to use
+
+
+
+
+ Construct instance with pending buffer
+
+
+ Pending buffer to use
+
+
+ If no adler calculation should be performed
+
+
+
+
+ Deflate drives actual compression of data
+
+ True to flush input buffers
+ Finish deflation with the current input.
+ Returns true if progress has been made.
+
+
+
+ Sets input data to be deflated. Should only be called when NeedsInput()
+ returns true
+
+ The buffer containing input data.
+ The offset of the first byte of data.
+ The number of bytes of data to use as input.
+
+
+
+ Determines if more input is needed.
+
+ Return true if input is needed via SetInput
+
+
+
+ Set compression dictionary
+
+ The buffer containing the dictionary data
+ The offset in the buffer for the first byte of data
+ The length of the dictionary data.
+
+
+
+ Reset internal state
+
+
+
+
+ Reset Adler checksum
+
+
+
+
+ Get current value of Adler checksum
+
+
+
+
+ Total data processed
+
+
+
+
+ Get/set the deflate strategy
+
+
+
+
+ Set the deflate level (0-9)
+
+ The value to set the level to.
+
+
+
+ Fill the window
+
+
+
+
+ Inserts the current string in the head hash and returns the previous
+ value for this hash.
+
+ The previous hash value
+
+
+
+ Find the best (longest) string in the window matching the
+ string starting at strstart.
+
+ Preconditions:
+
+ strstart + DeflaterConstants.MAX_MATCH <= window.length.
+
+
+ True if a match greater than the minimum length is found
+
+
+
+ Hashtable, hashing three characters to an index for window, so
+ that window[index]..window[index+2] have this hash code.
+ Note that the array should really be unsigned short, so you need
+ to and the values with 0xffff.
+
+
+
+
+ prev[index & WMASK] points to the previous index that has the
+ same hash code as the string starting at index. This way
+ entries with the same hash code are in a linked list.
+ Note that the array should really be unsigned short, so you need
+ to and the values with 0xffff.
+
+
+
+
+ Points to the current character in the window.
+
+
+
+
+ lookahead is the number of characters starting at strstart in
+ window that are valid.
+ So window[strstart] until window[strstart+lookahead-1] are valid
+ characters.
+
+
+
+
+ This array contains the part of the uncompressed stream that
+ is of relevance. The current character is indexed by strstart.
+
+
+
+
+ The current compression function.
+
+
+
+
+ The input data for compression.
+
+
+
+
+ The total bytes of input read.
+
+
+
+
+ The offset into inputBuf, where input data starts.
+
+
+
+
+ The end offset of the input data.
+
+
+
+
+ The adler checksum
+
+
+
+
+ This is the DeflaterHuffman class.
+
+ This class is not thread safe. This is inherent in the API, due
+ to the split of Deflate and SetInput.
+
+ author of the original java version : Jochen Hoenicke
+
+
+
+
+ Resets the internal state of the tree
+
+
+
+
+ Check that all frequencies are zero
+
+
+ At least one frequency is non-zero
+
+
+
+
+ Set static codes and length
+
+ new codes
+ length for new codes
+
+
+
+ Build dynamic codes and lengths
+
+
+
+
+ Get encoded length
+
+ Encoded length, the sum of frequencies * lengths
+
+
+
+ Scan a literal or distance tree to determine the frequencies of the codes
+ in the bit length tree.
+
+
+
+
+ Write tree values
+
+ Tree to write
+
+
+
+ Pending buffer to use
+
+
+
+
+ Construct instance with pending buffer
+
+ Pending buffer to use
+
+
+
+ Reset internal state
+
+
+
+
+ Write all trees to pending buffer
+
+ The number/rank of treecodes to send.
+
+
+
+ Compress current buffer writing data to pending buffer
+
+
+
+
+ Flush block to output with no compression
+
+ Data to write
+ Index of first byte to write
+ Count of bytes to write
+ True if this is the last block
+
+
+
+ Flush block to output with compression
+
+ Data to flush
+ Index of first byte to flush
+ Count of bytes to flush
+ True if this is the last block
+
+
+
+ Get value indicating if internal buffer is full
+
+ true if buffer is full
+
+
+
+ Add literal to buffer
+
+ Literal value to add to buffer.
+ Value indicating internal buffer is full
+
+
+
+ Add distance code and length to literal and distance trees
+
+ Distance code
+ Length
+ Value indicating if internal buffer is full
+
+
+
+ Reverse the bits of a 16 bit value.
+
+ Value to reverse bits
+ Value with bits reversed
+
+
+
+ This class stores the pending output of the Deflater.
+
+ author of the original java version : Jochen Hoenicke
+
+
+
+
+ Construct instance with default buffer size
+
+
+
+
+ Inflater is used to decompress data that has been compressed according
+ to the "deflate" standard described in rfc1951.
+
+ By default Zlib (rfc1950) headers and footers are expected in the input.
+ You can use constructor public Inflater(bool noHeader) passing true
+ if there is no Zlib header information
+
+ The usage is as following. First you have to set some input with
+ SetInput(), then Inflate() it. If inflate doesn't
+ inflate any bytes there may be three reasons:
+
+ - IsNeedingInput() returns true because the input buffer is empty.
+ You have to provide more input with
SetInput().
+ NOTE: IsNeedingInput() also returns true when, the stream is finished.
+
+ - IsNeedingDictionary() returns true, you have to provide a preset
+ dictionary with
SetDictionary().
+ - IsFinished returns true, the inflater has finished.
+
+ Once the first output byte is produced, a dictionary will not be
+ needed at a later stage.
+
+ author of the original java version : John Leuner, Jochen Hoenicke
+
+
+
+
+ Copy lengths for literal codes 257..285
+
+
+
+
+ Extra bits for literal codes 257..285
+
+
+
+
+ Copy offsets for distance codes 0..29
+
+
+
+
+ Extra bits for distance codes
+
+
+
+
+ These are the possible states for an inflater
+
+
+
+
+ This variable contains the current state.
+
+
+
+
+ The adler checksum of the dictionary or of the decompressed
+ stream, as it is written in the header resp. footer of the
+ compressed stream.
+ Only valid if mode is DECODE_DICT or DECODE_CHKSUM.
+
+
+
+
+ The number of bits needed to complete the current state. This
+ is valid, if mode is DECODE_DICT, DECODE_CHKSUM,
+ DECODE_HUFFMAN_LENBITS or DECODE_HUFFMAN_DISTBITS.
+
+
+
+
+ True, if the last block flag was set in the last block of the
+ inflated stream. This means that the stream ends after the
+ current block.
+
+
+
+
+ The total number of inflated bytes.
+
+
+
+
+ The total number of bytes set with setInput(). This is not the
+ value returned by the TotalIn property, since this also includes the
+ unprocessed input.
+
+
+
+
+ This variable stores the noHeader flag that was given to the constructor.
+ True means, that the inflated stream doesn't contain a Zlib header or
+ footer.
+
+
+
+
+ Creates a new inflater or RFC1951 decompressor
+ RFC1950/Zlib headers and footers will be expected in the input data
+
+
+
+
+ Creates a new inflater.
+
+
+ True if no RFC1950/Zlib header and footer fields are expected in the input data
+
+ This is used for GZIPed/Zipped input.
+
+ For compatibility with
+ Sun JDK you should provide one byte of input more than needed in
+ this case.
+
+
+
+
+ Resets the inflater so that a new stream can be decompressed. All
+ pending input and output will be discarded.
+
+
+
+
+ Decodes a zlib/RFC1950 header.
+
+
+ False if more input is needed.
+
+
+ The header is invalid.
+
+
+
+
+ Decodes the dictionary checksum after the deflate header.
+
+
+ False if more input is needed.
+
+
+
+
+ Decodes the huffman encoded symbols in the input stream.
+
+
+ false if more input is needed, true if output window is
+ full or the current block ends.
+
+
+ if deflated stream is invalid.
+
+
+
+
+ Decodes the adler checksum after the deflate stream.
+
+
+ false if more input is needed.
+
+
+ If checksum doesn't match.
+
+
+
+
+ Decodes the deflated stream.
+
+
+ false if more input is needed, or if finished.
+
+
+ if deflated stream is invalid.
+
+
+
+
+ Sets the preset dictionary. This should only be called, if
+ needsDictionary() returns true and it should set the same
+ dictionary, that was used for deflating. The getAdler()
+ function returns the checksum of the dictionary needed.
+
+
+ The dictionary.
+
+
+
+
+ Sets the preset dictionary. This should only be called, if
+ needsDictionary() returns true and it should set the same
+ dictionary, that was used for deflating. The getAdler()
+ function returns the checksum of the dictionary needed.
+
+
+ The dictionary.
+
+
+ The index into buffer where the dictionary starts.
+
+
+ The number of bytes in the dictionary.
+
+
+ No dictionary is needed.
+
+
+ The adler checksum for the buffer is invalid
+
+
+
+
+ Sets the input. This should only be called, if needsInput()
+ returns true.
+
+
+ the input.
+
+
+
+
+ Sets the input. This should only be called, if needsInput()
+ returns true.
+
+
+ The source of input data
+
+
+ The index into buffer where the input starts.
+
+
+ The number of bytes of input to use.
+
+
+ No input is needed.
+
+
+ The index and/or count are wrong.
+
+
+
+
+ Inflates the compressed stream to the output buffer. If this
+ returns 0, you should check, whether IsNeedingDictionary(),
+ IsNeedingInput() or IsFinished() returns true, to determine why no
+ further output is produced.
+
+
+ the output buffer.
+
+
+ The number of bytes written to the buffer, 0 if no further
+ output can be produced.
+
+
+ if buffer has length 0.
+
+
+ if deflated stream is invalid.
+
+
+
+
+ Inflates the compressed stream to the output buffer. If this
+ returns 0, you should check, whether needsDictionary(),
+ needsInput() or finished() returns true, to determine why no
+ further output is produced.
+
+
+ the output buffer.
+
+
+ the offset in buffer where storing starts.
+
+
+ the maximum number of bytes to output.
+
+
+ the number of bytes written to the buffer, 0 if no further output can be produced.
+
+
+ if count is less than 0.
+
+
+ if the index and / or count are wrong.
+
+
+ if deflated stream is invalid.
+
+
+
+
+ Returns true, if the input buffer is empty.
+ You should then call setInput().
+ NOTE: This method also returns true when the stream is finished.
+
+
+
+
+ Returns true, if a preset dictionary is needed to inflate the input.
+
+
+
+
+ Returns true, if the inflater has finished. This means, that no
+ input is needed and no output can be produced.
+
+
+
+
+ Gets the adler checksum. This is either the checksum of all
+ uncompressed bytes returned by inflate(), or if needsDictionary()
+ returns true (and thus no output was yet produced) this is the
+ adler checksum of the expected dictionary.
+
+
+ the adler checksum.
+
+
+
+
+ Gets the total number of output bytes returned by Inflate().
+
+
+ the total number of output bytes.
+
+
+
+
+ Gets the total number of processed compressed input bytes.
+
+
+ The total number of bytes of processed input bytes.
+
+
+
+
+ Gets the number of unprocessed input bytes. Useful, if the end of the
+ stream is reached and you want to further process the bytes after
+ the deflate stream.
+
+
+ The number of bytes of the input which have not been processed.
+
+
+
+
+ Continue decoding header from until more bits are needed or decoding has been completed
+
+ Returns whether decoding could be completed
+
+
+
+ Get literal/length huffman tree, must not be used before has returned true
+
+ If hader has not been successfully read by the state machine
+
+
+
+ Get distance huffman tree, must not be used before has returned true
+
+ If hader has not been successfully read by the state machine
+
+
+
+ Huffman tree used for inflation
+
+
+
+
+ Literal length tree
+
+
+
+
+ Distance tree
+
+
+
+
+ Constructs a Huffman tree from the array of code lengths.
+
+
+ the array of code lengths
+
+
+
+
+ Reads the next symbol from input. The symbol is encoded using the
+ huffman tree.
+
+
+ input the input source.
+
+
+ the next symbol, or -1 if not enough input is available.
+
+
+
+
+ This class is general purpose class for writing data to a buffer.
+
+ It allows you to write bits as well as bytes
+ Based on DeflaterPending.java
+
+ author of the original java version : Jochen Hoenicke
+
+
+
+
+ Internal work buffer
+
+
+
+
+ construct instance using default buffer size of 4096
+
+
+
+
+ construct instance using specified buffer size
+
+
+ size to use for internal buffer
+
+
+
+
+ Clear internal state/buffers
+
+
+
+
+ Write a byte to buffer
+
+
+ The value to write
+
+
+
+
+ Write a short value to buffer LSB first
+
+
+ The value to write.
+
+
+
+
+ write an integer LSB first
+
+ The value to write.
+
+
+
+ Write a block of data to buffer
+
+ data to write
+ offset of first byte to write
+ number of bytes to write
+
+
+
+ The number of bits written to the buffer
+
+
+
+
+ Align internal buffer on a byte boundary
+
+
+
+
+ Write bits to internal buffer
+
+ source of bits
+ number of bits to write
+
+
+
+ Write a short value to internal buffer most significant byte first
+
+ value to write
+
+
+
+ Indicates if buffer has been flushed
+
+
+
+
+ Flushes the pending buffer into the given output array. If the
+ output array is to small, only a partial flush is done.
+
+ The output array.
+ The offset into output array.
+ The maximum number of bytes to store.
+ The number of bytes flushed.
+
+
+
+ Convert internal buffer to byte array.
+ Buffer is empty on completion
+
+
+ The internal buffer contents converted to a byte array.
+
+
+
+
+ A special stream deflating or compressing the bytes that are
+ written to it. It uses a Deflater to perform actual deflating.
+ Authors of the original java version : Tom Tromey, Jochen Hoenicke
+
+
+
+
+ Creates a new DeflaterOutputStream with a default Deflater and default buffer size.
+
+
+ the output stream where deflated output should be written.
+
+
+
+
+ Creates a new DeflaterOutputStream with the given Deflater and
+ default buffer size.
+
+
+ the output stream where deflated output should be written.
+
+
+ the underlying deflater.
+
+
+
+
+ Creates a new DeflaterOutputStream with the given Deflater and
+ buffer size.
+
+
+ The output stream where deflated output is written.
+
+
+ The underlying deflater to use
+
+
+ The buffer size in bytes to use when deflating (minimum value 512)
+
+
+ bufsize is less than or equal to zero.
+
+
+ baseOutputStream does not support writing
+
+
+ deflater instance is null
+
+
+
+
+ Finishes the stream by calling finish() on the deflater.
+
+
+ Not all input is deflated
+
+
+
+
+ Finishes the stream by calling finish() on the deflater.
+
+ The that can be used to cancel the operation.
+
+ Not all input is deflated
+
+
+
+
+ Gets or sets a flag indicating ownership of underlying stream.
+ When the flag is true will close the underlying stream also.
+
+ The default value is true.
+
+
+
+ Allows client to determine if an entry can be patched after its added
+
+
+
+
+ The CryptoTransform currently being used to encrypt the compressed data.
+
+
+
+
+ Returns the 10 byte AUTH CODE to be appended immediately following the AES data stream.
+
+
+
+
+
+
+
+ Encrypt a block of data
+
+
+ Data to encrypt. NOTE the original contents of the buffer are lost
+
+
+ Offset of first byte in buffer to encrypt
+
+
+ Number of bytes in buffer to encrypt
+
+
+
+
+ Deflates everything in the input buffers. This will call
+ def.deflate() until all bytes from the input buffers
+ are processed.
+
+
+
+
+ Gets value indicating stream can be read from
+
+
+
+
+ Gets a value indicating if seeking is supported for this stream
+ This property always returns false
+
+
+
+
+ Get value indicating if this stream supports writing
+
+
+
+
+ Get current length of stream
+
+
+
+
+ Gets the current position within the stream.
+
+ Any attempt to set position
+
+
+
+ Sets the current position of this stream to the given value. Not supported by this class!
+
+ The offset relative to the to seek.
+ The to seek from.
+ The new position in the stream.
+ Any access
+
+
+
+ Sets the length of this stream to the given value. Not supported by this class!
+
+ The new stream length.
+ Any access
+
+
+
+ Read a byte from stream advancing position by one
+
+ The byte read cast to an int. THe value is -1 if at the end of the stream.
+ Any access
+
+
+
+ Read a block of bytes from stream
+
+ The buffer to store read data in.
+ The offset to start storing at.
+ The maximum number of bytes to read.
+ The actual number of bytes read. Zero if end of stream is detected.
+ Any access
+
+
+
+ Flushes the stream by calling Flush on the deflater and then
+ on the underlying stream. This ensures that all bytes are flushed.
+
+
+
+
+
+
+
+ Calls and closes the underlying
+ stream when is true.
+
+
+
+
+ Get the Auth code for AES encrypted entries
+
+
+
+
+ Writes a single byte to the compressed output stream.
+
+
+ The byte value.
+
+
+
+
+ Writes bytes from an array to the compressed stream.
+
+
+ The byte array
+
+
+ The offset into the byte array where to start.
+
+
+ The number of bytes to write.
+
+
+
+
+
+
+
+ This buffer is used temporarily to retrieve the bytes from the
+ deflater and write them to the underlying output stream.
+
+
+
+
+ The deflater which is used to deflate the stream.
+
+
+
+
+ Base stream the deflater depends on.
+
+
+
+
+
+
+
+ An input buffer customised for use by
+
+
+ The buffer supports decryption of incoming data.
+
+
+
+
+ Initialise a new instance of with a default buffer size
+
+ The stream to buffer.
+
+
+
+ Initialise a new instance of
+
+ The stream to buffer.
+ The size to use for the buffer
+ A minimum buffer size of 1KB is permitted. Lower sizes are treated as 1KB.
+
+
+
+ Get the length of bytes in the
+
+
+
+
+ Get the contents of the raw data buffer.
+
+ This may contain encrypted data.
+
+
+
+ Get the number of useable bytes in
+
+
+
+
+ Get the contents of the clear text buffer.
+
+
+
+
+ Get/set the number of bytes available
+
+
+
+
+ Call passing the current clear text buffer contents.
+
+ The inflater to set input for.
+
+
+
+ Fill the buffer from the underlying input stream.
+
+
+
+
+ Read a buffer directly from the input stream
+
+ The buffer to fill
+ Returns the number of bytes read.
+
+
+
+ Read a buffer directly from the input stream
+
+ The buffer to read into
+ The offset to start reading data into.
+ The number of bytes to read.
+ Returns the number of bytes read.
+
+
+
+ Read clear text data from the input stream.
+
+ The buffer to add data to.
+ The offset to start adding data at.
+ The number of bytes to read.
+ Returns the number of bytes actually read.
+
+
+
+ Read a from the input stream.
+
+ Returns the byte read.
+
+
+
+ Read an in little endian byte order.
+
+ The short value read case to an int.
+
+
+
+ Read an in little endian byte order.
+
+ The int value read.
+
+
+
+ Read a in little endian byte order.
+
+ The long value read.
+
+
+
+ Get/set the to apply to any data.
+
+ Set this value to null to have no transform applied.
+
+
+
+ This filter stream is used to decompress data compressed using the "deflate"
+ format. The "deflate" format is described in RFC 1951.
+
+ This stream may form the basis for other decompression filters, such
+ as the GZipInputStream.
+
+ Author of the original java version : John Leuner.
+
+
+
+
+ Create an InflaterInputStream with the default decompressor
+ and a default buffer size of 4KB.
+
+
+ The InputStream to read bytes from
+
+
+
+
+ Create an InflaterInputStream with the specified decompressor
+ and a default buffer size of 4KB.
+
+
+ The source of input data
+
+
+ The decompressor used to decompress data read from baseInputStream
+
+
+
+
+ Create an InflaterInputStream with the specified decompressor
+ and the specified buffer size.
+
+
+ The InputStream to read bytes from
+
+
+ The decompressor to use
+
+
+ Size of the buffer to use
+
+
+
+
+ Gets or sets a flag indicating ownership of underlying stream.
+ When the flag is true will close the underlying stream also.
+
+ The default value is true.
+
+
+
+ Skip specified number of bytes of uncompressed data
+
+
+ Number of bytes to skip
+
+
+ The number of bytes skipped, zero if the end of
+ stream has been reached
+
+
+ The number of bytes to skip is less than or equal to zero.
+
+
+
+
+ Clear any cryptographic state.
+
+
+
+
+ Returns 0 once the end of the stream (EOF) has been reached.
+ Otherwise returns 1.
+
+
+
+
+ Fills the buffer with more data to decompress.
+
+
+ Stream ends early
+
+
+
+
+ Gets a value indicating whether the current stream supports reading
+
+
+
+
+ Gets a value of false indicating seeking is not supported for this stream.
+
+
+
+
+ Gets a value of false indicating that this stream is not writeable.
+
+
+
+
+ A value representing the length of the stream in bytes.
+
+
+
+
+ The current position within the stream.
+ Throws a NotSupportedException when attempting to set the position
+
+ Attempting to set the position
+
+
+
+ Flushes the baseInputStream
+
+
+
+
+ Sets the position within the current stream
+ Always throws a NotSupportedException
+
+ The relative offset to seek to.
+ The defining where to seek from.
+ The new position in the stream.
+ Any access
+
+
+
+ Set the length of the current stream
+ Always throws a NotSupportedException
+
+ The new length value for the stream.
+ Any access
+
+
+
+ Writes a sequence of bytes to stream and advances the current position
+ This method always throws a NotSupportedException
+
+ The buffer containing data to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+ Any access
+
+
+
+ Writes one byte to the current stream and advances the current position
+ Always throws a NotSupportedException
+
+ The byte to write.
+ Any access
+
+
+
+ Closes the input stream. When
+ is true the underlying stream is also closed.
+
+
+
+
+ Reads decompressed data into the provided buffer byte array
+
+
+ The array to read and decompress data into
+
+
+ The offset indicating where the data should be placed
+
+
+ The number of bytes to decompress
+
+ The number of bytes read. Zero signals the end of stream
+
+ Inflater needs a dictionary
+
+
+
+
+ Decompressor for this stream
+
+
+
+
+ Input buffer for this stream.
+
+
+
+
+ Base stream the inflater reads from.
+
+
+
+
+ The compressed size
+
+
+
+
+ Flag indicating whether this instance has been closed or not.
+
+
+
+
+ Contains the output from the Inflation process.
+ We need to have a window so that we can refer backwards into the output stream
+ to repeat stuff.
+ Author of the original java version : John Leuner
+
+
+
+
+ Write a byte to this output window
+
+ value to write
+
+ if window is full
+
+
+
+
+ Append a byte pattern already in the window itself
+
+ length of pattern to copy
+ distance from end of window pattern occurs
+
+ If the repeated data overflows the window
+
+
+
+
+ Copy from input manipulator to internal window
+
+ source of data
+ length of data to copy
+ the number of bytes copied
+
+
+
+ Copy dictionary to window
+
+ source dictionary
+ offset of start in source dictionary
+ length of dictionary
+
+ If window isnt empty
+
+
+
+
+ Get remaining unfilled space in window
+
+ Number of bytes left in window
+
+
+
+ Get bytes available for output in window
+
+ Number of bytes filled
+
+
+
+ Copy contents of window to output
+
+ buffer to copy to
+ offset to start at
+ number of bytes to count
+ The number of bytes copied
+
+ If a window underflow occurs
+
+
+
+
+ Reset by clearing window so GetAvailable returns 0
+
+
+
+
+ This class allows us to retrieve a specified number of bits from
+ the input buffer, as well as copy big byte blocks.
+
+ It uses an int buffer to store up to 31 bits for direct
+ manipulation. This guarantees that we can get at least 16 bits,
+ but we only need at most 15, so this is all safe.
+
+ There are some optimizations in this class, for example, you must
+ never peek more than 8 bits more than needed, and you must first
+ peek bits before you may drop them. This is not a general purpose
+ class but optimized for the behaviour of the Inflater.
+
+ authors of the original java version : John Leuner, Jochen Hoenicke
+
+
+
+
+ Get the next sequence of bits but don't increase input pointer. bitCount must be
+ less or equal 16 and if this call succeeds, you must drop
+ at least n - 8 bits in the next call.
+
+ The number of bits to peek.
+
+ the value of the bits, or -1 if not enough bits available. */
+
+
+
+
+ Tries to grab the next bits from the input and
+ sets to the value, adding .
+
+ true if enough bits could be read, otherwise false
+
+
+
+ Tries to grab the next bits from the input and
+ sets of to the value.
+
+ true if enough bits could be read, otherwise false
+
+
+
+ Drops the next n bits from the input. You should have called PeekBits
+ with a bigger or equal n before, to make sure that enough bits are in
+ the bit buffer.
+
+ The number of bits to drop.
+
+
+
+ Gets the next n bits and increases input pointer. This is equivalent
+ to followed by , except for correct error handling.
+
+ The number of bits to retrieve.
+
+ the value of the bits, or -1 if not enough bits available.
+
+
+
+
+ Gets the number of bits available in the bit buffer. This must be
+ only called when a previous PeekBits() returned -1.
+
+
+ the number of bits available.
+
+
+
+
+ Gets the number of bytes available.
+
+
+ The number of bytes available.
+
+
+
+
+ Skips to the next byte boundary.
+
+
+
+
+ Returns true when SetInput can be called
+
+
+
+
+ Copies bytes from input buffer to output buffer starting
+ at output[offset]. You have to make sure, that the buffer is
+ byte aligned. If not enough bytes are available, copies fewer
+ bytes.
+
+
+ The buffer to copy bytes to.
+
+
+ The offset in the buffer at which copying starts
+
+
+ The length to copy, 0 is allowed.
+
+
+ The number of bytes copied, 0 if no bytes were available.
+
+
+ Length is less than zero
+
+
+ Bit buffer isnt byte aligned
+
+
+
+
+ Resets state and empties internal buffers
+
+
+
+
+ Add more input for consumption.
+ Only call when IsNeedingInput returns true
+
+ data to be input
+ offset of first byte of input
+ number of bytes of input to add.
+
+
+
+ FastZipEvents supports all events applicable to FastZip operations.
+
+
+
+
+ Delegate to invoke when processing directories.
+
+
+
+
+ Delegate to invoke when processing files.
+
+
+
+
+ Delegate to invoke during processing of files.
+
+
+
+
+ Delegate to invoke when processing for a file has been completed.
+
+
+
+
+ Delegate to invoke when processing directory failures.
+
+
+
+
+ Delegate to invoke when processing file failures.
+
+
+
+
+ Raise the directory failure event.
+
+ The directory causing the failure.
+ The exception for this event.
+ A boolean indicating if execution should continue or not.
+
+
+
+ Fires the file failure handler delegate.
+
+ The file causing the failure.
+ The exception for this failure.
+ A boolean indicating if execution should continue or not.
+
+
+
+ Fires the ProcessFile delegate.
+
+ The file being processed.
+ A boolean indicating if execution should continue or not.
+
+
+
+ Fires the delegate
+
+ The file whose processing has been completed.
+ A boolean indicating if execution should continue or not.
+
+
+
+ Fires the process directory delegate.
+
+ The directory being processed.
+ Flag indicating if the directory has matching files as determined by the current filter.
+ A of true if the operation should continue; false otherwise.
+
+
+
+ The minimum timespan between events.
+
+ The minimum period of time between events.
+
+ The default interval is three seconds.
+
+
+
+ FastZip provides facilities for creating and extracting zip files.
+
+
+
+
+ Defines the desired handling when overwriting files during extraction.
+
+
+
+
+ Prompt the user to confirm overwriting
+
+
+
+
+ Never overwrite files.
+
+
+
+
+ Always overwrite files.
+
+
+
+
+ Initialise a default instance of .
+
+
+
+
+ Initialise a new instance of using the specified
+
+ The time setting to use when creating or extracting Zip entries.
+ Using TimeSetting.LastAccessTime[Utc] when
+ creating an archive will set the file time to the moment of reading.
+
+
+
+
+ Initialise a new instance of using the specified
+
+ The time to set all values for created or extracted Zip Entries.
+
+
+
+ Initialise a new instance of
+
+ The events to use during operations.
+
+
+
+ Get/set a value indicating whether empty directories should be created.
+
+
+
+
+ Get / set the password value.
+
+
+
+
+ Get / set the method of encrypting entries.
+
+
+ Only applies when is set.
+ Defaults to ZipCrypto for backwards compatibility purposes.
+
+
+
+
+ Get or set the active when creating Zip files.
+
+
+
+
+
+ Get or set the active when creating Zip files.
+
+
+
+
+ Gets or sets the setting for Zip64 handling when writing.
+
+
+ The default value is dynamic which is not backwards compatible with old
+ programs and can cause problems with XP's built in compression which cant
+ read Zip64 archives. However it does avoid the situation were a large file
+ is added and cannot be completed correctly.
+ NOTE: Setting the size for entries before they are added is the best solution!
+ By default the EntryFactory used by FastZip will set the file size.
+
+
+
+
+ Get/set a value indicating whether file dates and times should
+ be restored when extracting files from an archive.
+
+ The default value is false.
+
+
+
+ Get/set a value indicating whether file attributes should
+ be restored during extract operations
+
+
+
+
+ Get/set the Compression Level that will be used
+ when creating the zip
+
+
+
+
+ Reflects the opposite of the internal , setting it to false overrides the encoding used for reading and writing zip entries
+
+
+
+ Gets or sets the code page used for reading/writing zip file entries when unicode is disabled
+
+
+
+
+
+
+ Delegate called when confirming overwriting of files.
+
+
+
+
+ Create a zip file.
+
+ The name of the zip file to create.
+ The directory to source files from.
+ True to recurse directories, false for no recursion.
+ The file filter to apply.
+ The directory filter to apply.
+
+
+
+ Create a zip file/archive.
+
+ The name of the zip file to create.
+ The directory to obtain files and directories from.
+ True to recurse directories, false for no recursion.
+ The file filter to apply.
+
+
+
+ Create a zip archive sending output to the passed.
+
+ The stream to write archive data to.
+ The directory to source files from.
+ True to recurse directories, false for no recursion.
+ The file filter to apply.
+ The directory filter to apply.
+ The is closed after creation.
+
+
+
+ Create a zip archive sending output to the passed.
+
+ The stream to write archive data to.
+ The directory to source files from.
+ True to recurse directories, false for no recursion.
+ The file filter to apply.
+ The directory filter to apply.
+ true to leave open after the zip has been created, false to dispose it.
+
+
+
+ Create a zip file.
+
+ The name of the zip file to create.
+ The directory to source files from.
+ True to recurse directories, false for no recursion.
+ The file filter to apply.
+ The directory filter to apply.
+
+
+
+ Create a zip archive sending output to the passed.
+
+ The stream to write archive data to.
+ The directory to source files from.
+ True to recurse directories, false for no recursion.
+ The file filter to apply.
+ The directory filter to apply.
+ true to leave open after the zip has been created, false to dispose it.
+
+
+
+ Create a zip archive sending output to the passed.
+
+ The stream to write archive data to.
+ The directory to source files from.
+ True to recurse directories, false for no recursion.
+ For performing the actual file system scan
+ true to leave open after the zip has been created, false to dispose it.
+ The is closed after creation.
+
+
+
+ Extract the contents of a zip file.
+
+ The zip file to extract from.
+ The directory to save extracted information in.
+ A filter to apply to files.
+
+
+
+ Extract the contents of a zip file.
+
+ The zip file to extract from.
+ The directory to save extracted information in.
+ The style of overwriting to apply.
+ A delegate to invoke when confirming overwriting.
+ A filter to apply to files.
+ A filter to apply to directories.
+ Flag indicating whether to restore the date and time for extracted files.
+ Allow parent directory traversal in file paths (e.g. ../file)
+
+
+
+ Extract the contents of a zip file held in a stream.
+
+ The seekable input stream containing the zip to extract from.
+ The directory to save extracted information in.
+ The style of overwriting to apply.
+ A delegate to invoke when confirming overwriting.
+ A filter to apply to files.
+ A filter to apply to directories.
+ Flag indicating whether to restore the date and time for extracted files.
+ Flag indicating whether the inputStream will be closed by this method.
+ Allow parent directory traversal in file paths (e.g. ../file)
+
+
+
+ Defines factory methods for creating new values.
+
+
+
+
+ Create a for a file given its name
+
+ The name of the file to create an entry for.
+ Returns a file entry based on the passed.
+
+
+
+ Create a for a file given its name
+
+ The name of the file to create an entry for.
+ If true get details from the file system if the file exists.
+ Returns a file entry based on the passed.
+
+
+
+ Create a for a file given its actual name and optional override name
+
+ The name of the file to create an entry for.
+ An alternative name to be used for the new entry. Null if not applicable.
+ If true get details from the file system if the file exists.
+ Returns a file entry based on the passed.
+
+
+
+ Create a for a directory given its name
+
+ The name of the directory to create an entry for.
+ Returns a directory entry based on the passed.
+
+
+
+ Create a for a directory given its name
+
+ The name of the directory to create an entry for.
+ If true get details from the file system for this directory if it exists.
+ Returns a directory entry based on the passed.
+
+
+
+ Get/set the applicable.
+
+
+
+
+ Get the in use.
+
+
+
+
+ Get the value to use when is set to ,
+ or if not specified, the value of when the class was the initialized
+
+
+
+
+ WindowsNameTransform transforms names to windows compatible ones.
+
+
+
+
+ The maximum windows path name permitted.
+
+ This may not valid for all windows systems - CE?, etc but I cant find the equivalent in the CLR.
+
+
+
+ In this case we need Windows' invalid path characters.
+ Path.GetInvalidPathChars() only returns a subset invalid on all platforms.
+
+
+
+
+ Initialises a new instance of
+
+
+ Allow parent directory traversal in file paths (e.g. ../file)
+
+
+
+ Initialise a default instance of
+
+
+
+
+ Gets or sets a value containing the target directory to prefix values with.
+
+
+
+
+ Allow parent directory traversal in file paths (e.g. ../file)
+
+
+
+
+ Gets or sets a value indicating whether paths on incoming values should be removed.
+
+
+
+
+ Transform a Zip directory name to a windows directory name.
+
+ The directory name to transform.
+ The transformed name.
+
+
+
+ Transform a Zip format file name to a windows style one.
+
+ The file name to transform.
+ The transformed name.
+
+
+
+ Test a name to see if it is a valid name for a windows filename as extracted from a Zip archive.
+
+ The name to test.
+ Returns true if the name is a valid zip name; false otherwise.
+ The filename isnt a true windows path in some fundamental ways like no absolute paths, no rooted paths etc.
+
+
+
+ Force a name to be valid by replacing invalid characters with a fixed value
+
+ The name to make valid
+ The replacement character to use for any invalid characters.
+ Returns a valid name
+
+
+
+ Gets or set the character to replace invalid characters during transformations.
+
+
+
+
+ Determines how entries are tested to see if they should use Zip64 extensions or not.
+
+
+
+
+ Zip64 will not be forced on entries during processing.
+
+ An entry can have this overridden if required
+
+
+
+ Zip64 should always be used.
+
+
+
+
+ #ZipLib will determine use based on entry values when added to archive.
+
+
+
+
+ The kind of compression used for an entry in an archive
+
+
+
+
+ A direct copy of the file contents is held in the archive
+
+
+
+
+ Common Zip compression method using a sliding dictionary
+ of up to 32KB and secondary compression from Huffman/Shannon-Fano trees
+
+
+
+
+ An extension to deflate with a 64KB window. Not supported by #Zip currently
+
+
+
+
+ BZip2 compression. Not supported by #Zip.
+
+
+
+
+ LZMA compression. Not supported by #Zip.
+
+
+
+
+ PPMd compression. Not supported by #Zip.
+
+
+
+
+ WinZip special for AES encryption, Now supported by #Zip.
+
+
+
+
+ Identifies the encryption algorithm used for an entry
+
+
+
+
+ No encryption has been used.
+
+
+
+
+ Encrypted using PKZIP 2.0 or 'classic' encryption.
+
+
+
+
+ DES encryption has been used.
+
+
+
+
+ RC2 encryption has been used for encryption.
+
+
+
+
+ Triple DES encryption with 168 bit keys has been used for this entry.
+
+
+
+
+ Triple DES with 112 bit keys has been used for this entry.
+
+
+
+
+ AES 128 has been used for encryption.
+
+
+
+
+ AES 192 has been used for encryption.
+
+
+
+
+ AES 256 has been used for encryption.
+
+
+
+
+ RC2 corrected has been used for encryption.
+
+
+
+
+ Blowfish has been used for encryption.
+
+
+
+
+ Twofish has been used for encryption.
+
+
+
+
+ RC4 has been used for encryption.
+
+
+
+
+ An unknown algorithm has been used for encryption.
+
+
+
+
+ Defines the contents of the general bit flags field for an archive entry.
+
+
+
+
+ Bit 0 if set indicates that the file is encrypted
+
+
+
+
+ Bits 1 and 2 - Two bits defining the compression method (only for Method 6 Imploding and 8,9 Deflating)
+
+
+
+
+ Bit 3 if set indicates a trailing data descriptor is appended to the entry data
+
+
+
+
+ Bit 4 is reserved for use with method 8 for enhanced deflation
+
+
+
+
+ Bit 5 if set indicates the file contains Pkzip compressed patched data.
+ Requires version 2.7 or greater.
+
+
+
+
+ Bit 6 if set indicates strong encryption has been used for this entry.
+
+
+
+
+ Bit 7 is currently unused
+
+
+
+
+ Bit 8 is currently unused
+
+
+
+
+ Bit 9 is currently unused
+
+
+
+
+ Bit 10 is currently unused
+
+
+
+
+ Bit 11 if set indicates the filename and
+ comment fields for this file must be encoded using UTF-8.
+
+
+
+
+ Bit 12 is documented as being reserved by PKware for enhanced compression.
+
+
+
+
+ Bit 13 if set indicates that values in the local header are masked to hide
+ their actual values, and the central directory is encrypted.
+
+
+ Used when encrypting the central directory contents.
+
+
+
+
+ Bit 14 is documented as being reserved for use by PKware
+
+
+
+
+ Bit 15 is documented as being reserved for use by PKware
+
+
+
+
+ Helpers for
+
+
+
+
+ This is equivalent of in .NET Core, but since the .NET FW
+ version is really slow (due to un-/boxing and reflection) we use this wrapper.
+
+
+
+
+
+
+
+ This class contains constants used for Zip format files
+
+
+
+
+ The version made by field for entries in the central header when created by this library
+
+
+ This is also the Zip version for the library when comparing against the version required to extract
+ for an entry. See .
+
+
+
+
+ The version made by field for entries in the central header when created by this library
+
+
+ This is also the Zip version for the library when comparing against the version required to extract
+ for an entry. See ZipInputStream.CanDecompressEntry.
+
+
+
+
+ The minimum version required to support strong encryption
+
+
+
+
+ The minimum version required to support strong encryption
+
+
+
+
+ Version indicating AES encryption
+
+
+
+
+ The version required for Zip64 extensions (4.5 or higher)
+
+
+
+
+ The version required for BZip2 compression (4.6 or higher)
+
+
+
+
+ Size of local entry header (excluding variable length fields at end)
+
+
+
+
+ Size of local entry header (excluding variable length fields at end)
+
+
+
+
+ Size of Zip64 data descriptor
+
+
+
+
+ Size of data descriptor
+
+
+
+
+ Size of data descriptor
+
+
+
+
+ Size of central header entry (excluding variable fields)
+
+
+
+
+ Size of central header entry
+
+
+
+
+ Size of end of central record (excluding variable fields)
+
+
+
+
+ Size of end of central record (excluding variable fields)
+
+
+
+
+ Size of 'classic' cryptographic header stored before any entry data
+
+
+
+
+ Size of cryptographic header stored before entry data
+
+
+
+
+ The size of the Zip64 central directory locator.
+
+
+
+
+ Signature for local entry header
+
+
+
+
+ Signature for local entry header
+
+
+
+
+ Signature for spanning entry
+
+
+
+
+ Signature for spanning entry
+
+
+
+
+ Signature for temporary spanning entry
+
+
+
+
+ Signature for temporary spanning entry
+
+
+
+
+ Signature for data descriptor
+
+
+ This is only used where the length, Crc, or compressed size isnt known when the
+ entry is created and the output stream doesnt support seeking.
+ The local entry cannot be 'patched' with the correct values in this case
+ so the values are recorded after the data prefixed by this header, as well as in the central directory.
+
+
+
+
+ Signature for data descriptor
+
+
+ This is only used where the length, Crc, or compressed size isnt known when the
+ entry is created and the output stream doesnt support seeking.
+ The local entry cannot be 'patched' with the correct values in this case
+ so the values are recorded after the data prefixed by this header, as well as in the central directory.
+
+
+
+
+ Signature for central header
+
+
+
+
+ Signature for central header
+
+
+
+
+ Signature for Zip64 central file header
+
+
+
+
+ Signature for Zip64 central file header
+
+
+
+
+ Signature for Zip64 central directory locator
+
+
+
+
+ Signature for archive extra data signature (were headers are encrypted).
+
+
+
+
+ Central header digital signature
+
+
+
+
+ Central header digital signature
+
+
+
+
+ End of central directory record signature
+
+
+
+
+ End of central directory record signature
+
+
+
+
+ GeneralBitFlags helper extensions
+
+
+
+
+ Efficiently check if any of the flags are set without enum un-/boxing
+
+
+
+ Returns whether any of flags are set
+
+
+
+ Efficiently check if all the flags are set without enum un-/boxing
+
+
+
+ Returns whether the flags are all set
+
+
+
+ The method of encrypting entries when creating zip archives.
+
+
+
+
+ No encryption will be used.
+
+
+
+
+ Encrypt entries with ZipCrypto.
+
+
+
+
+ Encrypt entries with AES 128.
+
+
+
+
+ Encrypt entries with AES 256.
+
+
+
+
+ Defines known values for the property.
+
+
+
+
+ Host system = MSDOS
+
+
+
+
+ Host system = Amiga
+
+
+
+
+ Host system = Open VMS
+
+
+
+
+ Host system = Unix
+
+
+
+
+ Host system = VMCms
+
+
+
+
+ Host system = Atari ST
+
+
+
+
+ Host system = OS2
+
+
+
+
+ Host system = Macintosh
+
+
+
+
+ Host system = ZSystem
+
+
+
+
+ Host system = Cpm
+
+
+
+
+ Host system = Windows NT
+
+
+
+
+ Host system = MVS
+
+
+
+
+ Host system = VSE
+
+
+
+
+ Host system = Acorn RISC
+
+
+
+
+ Host system = VFAT
+
+
+
+
+ Host system = Alternate MVS
+
+
+
+
+ Host system = BEOS
+
+
+
+
+ Host system = Tandem
+
+
+
+
+ Host system = OS400
+
+
+
+
+ Host system = OSX
+
+
+
+
+ Host system = WinZIP AES
+
+
+
+
+ This class represents an entry in a zip archive. This can be a file
+ or a directory
+ ZipFile and ZipInputStream will give you instances of this class as
+ information about the members in an archive. ZipOutputStream
+ uses an instance of this class when creating an entry in a Zip file.
+
+
Author of the original java version : Jochen Hoenicke
+
+
+
+
+ Creates a zip entry with the given name.
+
+
+ The name for this entry. Can include directory components.
+ The convention for names is 'unix' style paths with relative names only.
+ There are with no device names and path elements are separated by '/' characters.
+
+
+ The name passed is null
+
+
+
+
+ Creates a zip entry with the given name and version required to extract
+
+
+ The name for this entry. Can include directory components.
+ The convention for names is 'unix' style paths with no device names and
+ path elements separated by '/' characters. This is not enforced see CleanName
+ on how to ensure names are valid if this is desired.
+
+
+ The minimum 'feature version' required this entry
+
+
+ The name passed is null
+
+
+
+
+ Initializes an entry with the given name and made by information
+
+ Name for this entry
+ Version and HostSystem Information
+ Minimum required zip feature version required to extract this entry
+ Compression method for this entry.
+ Whether the entry uses unicode for name and comment
+
+ The name passed is null
+
+
+ versionRequiredToExtract should be 0 (auto-calculate) or > 10
+
+
+ This constructor is used by the ZipFile class when reading from the central header
+ It is not generally useful, use the constructor specifying the name only.
+
+
+
+
+ Creates a deep copy of the given zip entry.
+
+
+ The entry to copy.
+
+
+
+
+ Get a value indicating whether the entry has a CRC value available.
+
+
+
+
+ Get/Set flag indicating if entry is encrypted.
+ A simple helper routine to aid interpretation of flags
+
+ This is an assistant that interprets the flags property.
+
+
+
+ Get / set a flag indicating whether entry name and comment text are
+ encoded in unicode UTF8.
+
+ This is an assistant that interprets the flags property.
+
+
+
+ Value used during password checking for PKZIP 2.0 / 'classic' encryption.
+
+
+
+
+ Get/Set general purpose bit flag for entry
+
+
+ General purpose bit flag
+
+ Bit 0: If set, indicates the file is encrypted
+ Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
+ Imploding:
+ Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
+ Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
+
+ Deflating:
+ Bit 2 Bit 1
+ 0 0 Normal compression was used
+ 0 1 Maximum compression was used
+ 1 0 Fast compression was used
+ 1 1 Super fast compression was used
+
+ Bit 3: If set, the fields crc-32, compressed size
+ and uncompressed size are were not able to be written during zip file creation
+ The correct values are held in a data descriptor immediately following the compressed data.
+ Bit 4: Reserved for use by PKZIP for enhanced deflating
+ Bit 5: If set indicates the file contains compressed patch data
+ Bit 6: If set indicates strong encryption was used.
+ Bit 7-10: Unused or reserved
+ Bit 11: If set the name and comments for this entry are in unicode.
+ Bit 12-15: Unused or reserved
+
+
+
+
+
+
+ Get/Set index of this entry in Zip file
+
+ This is only valid when the entry is part of a
+
+
+
+ Get/set offset for use in central header
+
+
+
+
+ Get/Set external file attributes as an integer.
+ The values of this are operating system dependent see
+ HostSystem for details
+
+
+
+
+ Get the version made by for this entry or zero if unknown.
+ The value / 10 indicates the major version number, and
+ the value mod 10 is the minor version number
+
+
+
+
+ Get a value indicating this entry is for a DOS/Windows system.
+
+
+
+
+ Test the external attributes for this to
+ see if the external attributes are Dos based (including WINNT and variants)
+ and match the values
+
+ The attributes to test.
+ Returns true if the external attributes are known to be DOS/Windows
+ based and have the same attributes set as the value passed.
+
+
+
+ Gets the compatibility information for the external file attribute
+ If the external file attributes are compatible with MS-DOS and can be read
+ by PKZIP for DOS version 2.04g then this value will be zero. Otherwise the value
+ will be non-zero and identify the host system on which the attributes are compatible.
+
+
+
+ The values for this as defined in the Zip File format and by others are shown below. The values are somewhat
+ misleading in some cases as they are not all used as shown. You should consult the relevant documentation
+ to obtain up to date and correct information. The modified appnote by the infozip group is
+ particularly helpful as it documents a lot of peculiarities. The document is however a little dated.
+
+ - 0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems)
+ - 1 - Amiga
+ - 2 - OpenVMS
+ - 3 - Unix
+ - 4 - VM/CMS
+ - 5 - Atari ST
+ - 6 - OS/2 HPFS
+ - 7 - Macintosh
+ - 8 - Z-System
+ - 9 - CP/M
+ - 10 - Windows NTFS
+ - 11 - MVS (OS/390 - Z/OS)
+ - 12 - VSE
+ - 13 - Acorn Risc
+ - 14 - VFAT
+ - 15 - Alternate MVS
+ - 16 - BeOS
+ - 17 - Tandem
+ - 18 - OS/400
+ - 19 - OS/X (Darwin)
+ - 99 - WinZip AES
+ - remainder - unused
+
+
+
+
+
+ Get minimum Zip feature version required to extract this entry
+
+
+ Minimum features are defined as:
+ 1.0 - Default value
+ 1.1 - File is a volume label
+ 2.0 - File is a folder/directory
+ 2.0 - File is compressed using Deflate compression
+ 2.0 - File is encrypted using traditional encryption
+ 2.1 - File is compressed using Deflate64
+ 2.5 - File is compressed using PKWARE DCL Implode
+ 2.7 - File is a patch data set
+ 4.5 - File uses Zip64 format extensions
+ 4.6 - File is compressed using BZIP2 compression
+ 5.0 - File is encrypted using DES
+ 5.0 - File is encrypted using 3DES
+ 5.0 - File is encrypted using original RC2 encryption
+ 5.0 - File is encrypted using RC4 encryption
+ 5.1 - File is encrypted using AES encryption
+ 5.1 - File is encrypted using corrected RC2 encryption
+ 5.1 - File is encrypted using corrected RC2-64 encryption
+ 6.1 - File is encrypted using non-OAEP key wrapping
+ 6.2 - Central directory encryption (not confirmed yet)
+ 6.3 - File is compressed using LZMA
+ 6.3 - File is compressed using PPMD+
+ 6.3 - File is encrypted using Blowfish
+ 6.3 - File is encrypted using Twofish
+
+
+
+
+
+ Get a value indicating whether this entry can be decompressed by the library.
+
+ This is based on the and
+ whether the compression method is supported.
+
+
+
+ Force this entry to be recorded using Zip64 extensions.
+
+
+
+
+ Get a value indicating whether Zip64 extensions were forced.
+
+ A value of true if Zip64 extensions have been forced on; false if not.
+
+
+
+ Gets a value indicating if the entry requires Zip64 extensions
+ to store the full entry values.
+
+ A value of true if a local header requires Zip64 extensions; false if not.
+
+
+
+ Get a value indicating whether the central directory entry requires Zip64 extensions to be stored.
+
+
+
+
+ Get/Set DosTime value.
+
+
+ The MS-DOS date format can only represent dates between 1/1/1980 and 12/31/2107.
+
+
+
+
+ Gets/Sets the time of last modification of the entry.
+
+
+ The property is updated to match this as far as possible.
+
+
+
+
+ Returns the entry name.
+
+
+ The unix naming convention is followed.
+ Path components in the entry should always separated by forward slashes ('/').
+ Dos device names like C: should also be removed.
+ See the class, or
+
+
+
+
+ Gets/Sets the size of the uncompressed data.
+
+
+ The size or -1 if unknown.
+
+ Setting the size before adding an entry to an archive can help
+ avoid compatibility problems with some archivers which don't understand Zip64 extensions.
+
+
+
+ Gets/Sets the size of the compressed data.
+
+
+ The compressed entry size or -1 if unknown.
+
+
+
+
+ Gets/Sets the crc of the uncompressed data.
+
+
+ Crc is not in the range 0..0xffffffffL
+
+
+ The crc value or -1 if unknown.
+
+
+
+
+ Gets/Sets the compression method.
+
+
+ The compression method for this entry
+
+
+
+
+ Gets the compression method for outputting to the local or central header.
+ Returns same value as CompressionMethod except when AES encrypting, which
+ places 99 in the method and places the real method in the extra data.
+
+
+
+
+ Gets/Sets the extra data.
+
+
+ Extra data is longer than 64KB (0xffff) bytes.
+
+
+ Extra data or null if not set.
+
+
+
+
+ For AES encrypted files returns or sets the number of bits of encryption (128, 192 or 256).
+ When setting, only 0 (off), 128 or 256 is supported.
+
+
+
+
+ AES Encryption strength for storage in extra data in entry header.
+ 1 is 128 bit, 2 is 192 bit, 3 is 256 bit.
+
+
+
+
+ Returns the length of the salt, in bytes
+
+ Key size -> Salt length: 128 bits = 8 bytes, 192 bits = 12 bytes, 256 bits = 16 bytes.
+
+
+
+ Number of extra bytes required to hold the AES Header fields (Salt, Pwd verify, AuthCode)
+
+ File format:
+ Bytes | Content
+ ---------+---------------------------
+ Variable | Salt value
+ 2 | Password verification value
+ Variable | Encrypted file data
+ 10 | Authentication code
+
+
+
+ Number of extra bytes required to hold the encryption header fields.
+
+
+
+
+ Process extra data fields updating the entry based on the contents.
+
+ True if the extra data fields should be handled
+ for a local header, rather than for a central header.
+
+
+
+
+ Gets/Sets the entry comment.
+
+
+ If comment is longer than 0xffff.
+
+
+ The comment or null if not set.
+
+
+ A comment is only available for entries when read via the class.
+ The class doesn't have the comment data available.
+
+
+
+
+ Gets a value indicating if the entry is a directory.
+ however.
+
+
+ A directory is determined by an entry name with a trailing slash '/'.
+ The external file attributes can also indicate an entry is for a directory.
+ Currently only dos/windows attributes are tested in this manner.
+ The trailing slash convention should always be followed.
+
+
+
+
+ Get a value of true if the entry appears to be a file; false otherwise
+
+
+ This only takes account of DOS/Windows attributes. Other operating systems are ignored.
+ For linux and others the result may be incorrect.
+
+
+
+
+ Test entry to see if data can be extracted.
+
+ Returns true if data can be extracted for this entry; false otherwise.
+
+
+
+ Creates a copy of this zip entry.
+
+ An that is a copy of the current instance.
+
+
+
+ Gets a string representation of this ZipEntry.
+
+ A readable textual representation of this
+
+
+
+ Test a compression method to see if this library
+ supports extracting data compressed with that method
+
+ The compression method to test.
+ Returns true if the compression method is supported; false otherwise
+
+
+
+ Cleans a name making it conform to Zip file conventions.
+ Devices names ('c:\') and UNC share names ('\\server\share') are removed
+ and back slashes ('\') are converted to forward slashes ('/').
+ Names are made relative by trimming leading slashes which is compatible
+ with the ZIP naming convention.
+
+ The name to clean
+ The 'cleaned' name.
+
+ The Zip name transform class is more flexible.
+
+
+
+
+ General ZipEntry helper extensions
+
+
+
+
+ Efficiently check if a flag is set without enum un-/boxing
+
+
+
+ Returns whether the flag was set
+
+
+
+ Efficiently set a flag without enum un-/boxing
+
+
+
+ Whether the passed flag should be set (1) or cleared (0)
+
+
+
+ Basic implementation of
+
+
+
+
+ Defines the possible values to be used for the .
+
+
+
+
+ Use the recorded LastWriteTime value for the file.
+
+
+
+
+ Use the recorded LastWriteTimeUtc value for the file
+
+
+
+
+ Use the recorded CreateTime value for the file.
+
+
+
+
+ Use the recorded CreateTimeUtc value for the file.
+
+
+
+
+ Use the recorded LastAccessTime value for the file.
+
+
+
+
+ Use the recorded LastAccessTimeUtc value for the file.
+
+
+
+
+ Use a fixed value.
+
+ The actual value used can be
+ specified via the constructor or
+ using the with the setting set
+ to which will use the when this class was constructed.
+ The property can also be used to set this value.
+
+
+
+ Initialise a new instance of the class.
+
+ A default , and the LastWriteTime for files is used.
+
+
+
+ Initialise a new instance of using the specified
+
+ The time setting to use when creating Zip entries.
+
+
+
+ Initialise a new instance of using the specified
+
+ The time to set all values to.
+
+
+
+ Get / set the to be used when creating new values.
+
+
+ Setting this property to null will cause a default name transform to be used.
+
+
+
+
+ Get / set the in use.
+
+
+
+
+ Get / set the value to use when is set to
+
+
+
+
+ A bitmask defining the attributes to be retrieved from the actual file.
+
+ The default is to get all possible attributes from the actual file.
+
+
+
+ A bitmask defining which attributes are to be set on.
+
+ By default no attributes are set on.
+
+
+
+ Get set a value indicating whether unicode text should be set on.
+
+
+
+
+ Make a new for a file.
+
+ The name of the file to create a new entry for.
+ Returns a new based on the .
+
+
+
+ Make a new for a file.
+
+ The name of the file to create a new entry for.
+ If true entry detail is retrieved from the file system if the file exists.
+ Returns a new based on the .
+
+
+
+ Make a new from a name.
+
+ The name of the file to create a new entry for.
+ An alternative name to be used for the new entry. Null if not applicable.
+ If true entry detail is retrieved from the file system if the file exists.
+ Returns a new based on the .
+
+
+
+ Make a new for a directory.
+
+ The raw untransformed name for the new directory
+ Returns a new representing a directory.
+
+
+
+ Make a new for a directory.
+
+ The raw untransformed name for the new directory
+ If true entry detail is retrieved from the file system if the file exists.
+ Returns a new representing a directory.
+
+
+
+ ZipException represents exceptions specific to Zip classes and code.
+
+
+
+
+ Initialise a new instance of .
+
+
+
+
+ Initialise a new instance of with its message string.
+
+ A that describes the error.
+
+
+
+ Initialise a new instance of .
+
+ A that describes the error.
+ The that caused this exception.
+
+
+
+ Initializes a new instance of the ZipException class with serialized data.
+
+
+ The System.Runtime.Serialization.SerializationInfo that holds the serialized
+ object data about the exception being thrown.
+
+
+ The System.Runtime.Serialization.StreamingContext that contains contextual information
+ about the source or destination.
+
+
+
+
+ ExtraData tagged value interface.
+
+
+
+
+ Get the ID for this tagged data value.
+
+
+
+
+ Set the contents of this instance from the data passed.
+
+ The data to extract contents from.
+ The offset to begin extracting data from.
+ The number of bytes to extract.
+
+
+
+ Get the data representing this instance.
+
+ Returns the data for this instance.
+
+
+
+ A raw binary tagged value
+
+
+
+
+ Initialise a new instance.
+
+ The tag ID.
+
+
+
+ Get the ID for this tagged data value.
+
+
+
+
+ Set the data from the raw values provided.
+
+ The raw data to extract values from.
+ The index to start extracting values from.
+ The number of bytes available.
+
+
+
+ Get the binary data representing this instance.
+
+ The raw binary data representing this instance.
+
+
+
+ Get /set the binary data representing this instance.
+
+ The raw binary data representing this instance.
+
+
+
+ The tag ID for this instance.
+
+
+
+
+ Class representing extended unix date time values.
+
+
+
+
+ Flags indicate which values are included in this instance.
+
+
+
+
+ The modification time is included
+
+
+
+
+ The access time is included
+
+
+
+
+ The create time is included.
+
+
+
+
+ Get the ID
+
+
+
+
+ Set the data from the raw values provided.
+
+ The raw data to extract values from.
+ The index to start extracting values from.
+ The number of bytes available.
+
+
+
+ Get the binary data representing this instance.
+
+ The raw binary data representing this instance.
+
+
+
+ Test a value to see if is valid and can be represented here.
+
+ The value to test.
+ Returns true if the value is valid and can be represented; false if not.
+ The standard Unix time is a signed integer data type, directly encoding the Unix time number,
+ which is the number of seconds since 1970-01-01.
+ Being 32 bits means the values here cover a range of about 136 years.
+ The minimum representable time is 1901-12-13 20:45:52,
+ and the maximum representable time is 2038-01-19 03:14:07.
+
+
+
+
+ Get /set the Modification Time
+
+
+
+
+
+
+ Get / set the Access Time
+
+
+
+
+
+
+ Get / Set the Create Time
+
+
+
+
+
+
+ Get/set the values to include.
+
+
+
+
+ Class handling NT date time values.
+
+
+
+
+ Get the ID for this tagged data value.
+
+
+
+
+ Set the data from the raw values provided.
+
+ The raw data to extract values from.
+ The index to start extracting values from.
+ The number of bytes available.
+
+
+
+ Get the binary data representing this instance.
+
+ The raw binary data representing this instance.
+
+
+
+ Test a valuie to see if is valid and can be represented here.
+
+ The value to test.
+ Returns true if the value is valid and can be represented; false if not.
+
+ NTFS filetimes are 64-bit unsigned integers, stored in Intel
+ (least significant byte first) byte order. They determine the
+ number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch",
+ which is "01-Jan-1601 00:00:00 UTC". 28 May 60056 is the upper limit
+
+
+
+
+ Get/set the last modification time.
+
+
+
+
+ Get /set the create time
+
+
+
+
+ Get /set the last access time.
+
+
+
+
+ A factory that creates tagged data instances.
+
+
+
+
+ Get data for a specific tag value.
+
+ The tag ID to find.
+ The data to search.
+ The offset to begin extracting data from.
+ The number of bytes to extract.
+ The located value found, or null if not found.
+
+
+
+
+ A class to handle the extra data field for Zip entries
+
+
+ Extra data contains 0 or more values each prefixed by a header tag and length.
+ They contain zero or more bytes of actual data.
+ The data is held internally using a copy on write strategy. This is more efficient but
+ means that for extra data created by passing in data can have the values modified by the caller
+ in some circumstances.
+
+
+
+
+ Initialise a default instance.
+
+
+
+
+ Initialise with known extra data.
+
+ The extra data.
+
+
+
+ Get the raw extra data value
+
+ Returns the raw byte[] extra data this instance represents.
+
+
+
+ Clear the stored data.
+
+
+
+
+ Gets the current extra data length.
+
+
+
+
+ Get a read-only for the associated tag.
+
+ The tag to locate data for.
+ Returns a containing tag data or null if no tag was found.
+
+
+
+ Get the tagged data for a tag.
+
+ The tag to search for.
+ Returns a tagged value or null if none found.
+
+
+
+ Get the length of the last value found by
+
+ This is only valid if has previously returned true.
+
+
+
+ Get the index for the current read value.
+
+ This is only valid if has previously returned true.
+ Initially the result will be the index of the first byte of actual data. The value is updated after calls to
+ , and .
+
+
+
+ Get the number of bytes remaining to be read for the current value;
+
+
+
+
+ Find an extra data value
+
+ The identifier for the value to find.
+ Returns true if the value was found; false otherwise.
+
+
+
+ Add a new entry to extra data.
+
+ The value to add.
+
+
+
+ Add a new entry to extra data
+
+ The ID for this entry.
+ The data to add.
+ If the ID already exists its contents are replaced.
+
+
+
+ Start adding a new entry.
+
+ Add data using , , , or .
+ The new entry is completed and actually added by calling
+
+
+
+
+ Add entry data added since using the ID passed.
+
+ The identifier to use for this entry.
+
+
+
+ Add a byte of data to the pending new entry.
+
+ The byte to add.
+
+
+
+
+ Add data to a pending new entry.
+
+ The data to add.
+
+
+
+
+ Add a short value in little endian order to the pending new entry.
+
+ The data to add.
+
+
+
+
+ Add an integer value in little endian order to the pending new entry.
+
+ The data to add.
+
+
+
+
+ Add a long value in little endian order to the pending new entry.
+
+ The data to add.
+
+
+
+
+ Delete an extra data field.
+
+ The identifier of the field to delete.
+ Returns true if the field was found and deleted.
+
+
+
+ Read a long in little endian form from the last found data value
+
+ Returns the long value read.
+
+
+
+ Read an integer in little endian form from the last found data value.
+
+ Returns the integer read.
+
+
+
+ Read a short value in little endian form from the last found data value.
+
+ Returns the short value read.
+
+
+
+ Read a byte from an extra data
+
+ The byte value read or -1 if the end of data has been reached.
+
+
+
+ Skip data during reading.
+
+ The number of bytes to skip.
+
+
+
+ Internal form of that reads data at any location.
+
+ Returns the short value read.
+
+
+
+ Dispose of this instance.
+
+
+
+
+ Arguments used with KeysRequiredEvent
+
+
+
+
+ Initialise a new instance of
+
+ The name of the file for which keys are required.
+
+
+
+ Initialise a new instance of
+
+ The name of the file for which keys are required.
+ The current key value.
+
+
+
+ Gets the name of the file for which keys are required.
+
+
+
+
+ Gets or sets the key value
+
+
+
+
+ The strategy to apply to testing.
+
+
+
+
+ Find the first error only.
+
+
+
+
+ Find all possible errors.
+
+
+
+
+ The operation in progress reported by a during testing.
+
+ TestArchive
+
+
+
+ Setting up testing.
+
+
+
+
+ Testing an individual entries header
+
+
+
+
+ Testing an individual entries data
+
+
+
+
+ Testing an individual entry has completed.
+
+
+
+
+ Running miscellaneous tests
+
+
+
+
+ Testing is complete
+
+
+
+
+ Status returned by during testing.
+
+ TestArchive
+
+
+
+ Initialise a new instance of
+
+ The this status applies to.
+
+
+
+ Get the current in progress.
+
+
+
+
+ Get the this status is applicable to.
+
+
+
+
+ Get the current/last entry tested.
+
+
+
+
+ Get the number of errors detected so far.
+
+
+
+
+ Get the number of bytes tested so far for the current entry.
+
+
+
+
+ Get a value indicating whether the last entry test was valid.
+
+
+
+
+ Delegate invoked during testing if supplied indicating current progress and status.
+
+ If the message is non-null an error has occured. If the message is null
+ the operation as found in status has started.
+
+
+
+ The possible ways of applying updates to an archive.
+
+
+
+
+ Perform all updates on temporary files ensuring that the original file is saved.
+
+
+
+
+ Update the archive directly, which is faster but less safe.
+
+
+
+
+ This class represents a Zip archive. You can ask for the contained
+ entries, or get an input stream for a file entry. The entry is
+ automatically decompressed.
+
+ You can also update the archive adding or deleting entries.
+
+ This class is thread safe for input: You can open input streams for arbitrary
+ entries in different threads.
+
+
Author of the original java version : Jochen Hoenicke
+
+
+
+ using System;
+ using System.Text;
+ using System.Collections;
+ using System.IO;
+
+ using ICSharpCode.SharpZipLib.Zip;
+
+ class MainClass
+ {
+ static public void Main(string[] args)
+ {
+ using (ZipFile zFile = new ZipFile(args[0])) {
+ Console.WriteLine("Listing of : " + zFile.Name);
+ Console.WriteLine("");
+ Console.WriteLine("Raw Size Size Date Time Name");
+ Console.WriteLine("-------- -------- -------- ------ ---------");
+ foreach (ZipEntry e in zFile) {
+ if ( e.IsFile ) {
+ DateTime d = e.DateTime;
+ Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize,
+ d.ToString("dd-MM-yy"), d.ToString("HH:mm"),
+ e.Name);
+ }
+ }
+ }
+ }
+ }
+
+
+
+
+
+ Delegate for handling keys/password setting during compression/decompression.
+
+
+
+
+ Event handler for handling encryption keys.
+
+
+
+
+ Handles getting of encryption keys when required.
+
+ The file for which encryption keys are required.
+
+
+
+ Get/set the encryption key value.
+
+
+
+
+ Password to be used for encrypting/decrypting files.
+
+ Set to null if no password is required.
+
+
+
+ Get a value indicating whether encryption keys are currently available.
+
+
+
+
+ Opens a Zip file with the given name for reading.
+
+ The name of the file to open.
+
+ The argument supplied is null.
+
+ An i/o error occurs
+
+
+ The file doesn't contain a valid zip archive.
+
+
+
+
+ Opens a Zip file reading the given .
+
+ The to read archive data from.
+ The supplied argument is null.
+
+ An i/o error occurs.
+
+
+ The file doesn't contain a valid zip archive.
+
+
+
+
+ Opens a Zip file reading the given .
+
+ The to read archive data from.
+ true to leave the file open when the ZipFile is disposed, false to dispose of it
+ The supplied argument is null.
+
+ An i/o error occurs.
+
+
+ The file doesn't contain a valid zip archive.
+
+
+
+
+ Opens a Zip file reading the given .
+
+ The to read archive data from.
+
+ An i/o error occurs
+
+
+ The stream doesn't contain a valid zip archive.
+
+
+ The stream doesnt support seeking.
+
+
+ The stream argument is null.
+
+
+
+
+ Opens a Zip file reading the given .
+
+ The to read archive data from.
+ true to leave the stream open when the ZipFile is disposed, false to dispose of it
+
+
+ An i/o error occurs
+
+
+ The stream doesn't contain a valid zip archive.
+
+
+ The stream doesnt support seeking.
+
+
+ The stream argument is null.
+
+
+
+
+ Initialises a default instance with no entries and no file storage.
+
+
+
+
+ Finalize this instance.
+
+
+
+
+ Closes the ZipFile. If the stream is owned then this also closes the underlying input stream.
+ Once closed, no further instance methods should be called.
+
+
+ An i/o error occurs.
+
+
+
+
+ Create a new whose data will be stored in a file.
+
+ The name of the archive to create.
+ Returns the newly created
+ is null
+
+
+
+ Create a new whose data will be stored on a stream.
+
+ The stream providing data storage.
+ Returns the newly created
+ is null
+ doesnt support writing.
+
+
+
+ Get/set a flag indicating if the underlying stream is owned by the ZipFile instance.
+ If the flag is true then the stream will be closed when Close is called.
+
+
+ The default value is true in all cases.
+
+
+
+
+ Get a value indicating whether
+ this archive is embedded in another file or not.
+
+
+
+
+ Get a value indicating that this archive is a new one.
+
+
+
+
+ Gets the comment for the zip file.
+
+
+
+
+ Gets the name of this zip file.
+
+
+
+
+ Gets the number of entries in this zip file.
+
+
+ The Zip file has been closed.
+
+
+
+
+ Get the number of entries contained in this .
+
+
+
+
+ Indexer property for ZipEntries
+
+
+
+
+
+
+
+
+
+
+ Gets an enumerator for the Zip entries in this Zip file.
+
+ Returns an for this archive.
+
+ The Zip file has been closed.
+
+
+
+
+ Return the index of the entry with a matching name
+
+ Entry name to find
+ If true the comparison is case insensitive
+ The index position of the matching entry or -1 if not found
+
+ The Zip file has been closed.
+
+
+
+
+ Searches for a zip entry in this archive with the given name.
+ String comparisons are case insensitive
+
+
+ The name to find. May contain directory components separated by slashes ('/').
+
+
+ A clone of the zip entry, or null if no entry with that name exists.
+
+
+ The Zip file has been closed.
+
+
+
+
+ Gets an input stream for reading the given zip entry data in an uncompressed form.
+ Normally the should be an entry returned by GetEntry().
+
+ The to obtain a data for
+ An input containing data for this
+
+ The ZipFile has already been closed
+
+
+ The compression method for the entry is unknown
+
+
+ The entry is not found in the ZipFile
+
+
+
+
+ Creates an input stream reading a zip entry
+
+ The index of the entry to obtain an input stream for.
+
+ An input containing data for this
+
+
+ The ZipFile has already been closed
+
+
+ The compression method for the entry is unknown
+
+
+ The entry is not found in the ZipFile
+
+
+
+
+ Test an archive for integrity/validity
+
+ Perform low level data Crc check
+ true if all tests pass, false otherwise
+ Testing will terminate on the first error found.
+
+
+
+ Test an archive for integrity/validity
+
+ Perform low level data Crc check
+ The to apply.
+ The handler to call during testing.
+ true if all tests pass, false otherwise
+ The object has already been closed.
+
+
+
+ Test a local header against that provided from the central directory
+
+
+ The entry to test against
+
+ The type of tests to carry out.
+ The offset of the entries data in the file
+
+
+
+ The kind of update to apply.
+
+
+
+
+ Get / set the to apply to names when updating.
+
+
+
+
+ Get/set the used to generate values
+ during updates.
+
+
+
+
+ Get /set the buffer size to be used when updating this zip file.
+
+
+
+
+ Get a value indicating an update has been started.
+
+
+
+
+ Get / set a value indicating how Zip64 Extension usage is determined when adding entries.
+
+
+
+
+ Begin updating this archive.
+
+ The archive storage for use during the update.
+ The data source to utilise during updating.
+ ZipFile has been closed.
+ One of the arguments provided is null
+ ZipFile has been closed.
+
+
+
+ Begin updating to this archive.
+
+ The storage to use during the update.
+
+
+
+ Begin updating this archive.
+
+
+
+
+
+
+
+ Commit current updates, updating this archive.
+
+
+
+ ZipFile has been closed.
+
+
+
+ Abort updating leaving the archive unchanged.
+
+
+
+
+
+
+ Set the file comment to be recorded when the current update is commited.
+
+ The comment to record.
+ ZipFile has been closed.
+
+
+
+ Add a new entry to the archive.
+
+ The name of the file to add.
+ The compression method to use.
+ Ensure Unicode text is used for name and comment for this entry.
+ Argument supplied is null.
+ ZipFile has been closed.
+ Compression method is not supported for creating entries.
+
+
+
+ Add a new entry to the archive.
+
+ The name of the file to add.
+ The compression method to use.
+ ZipFile has been closed.
+ Compression method is not supported for creating entries.
+
+
+
+ Add a file to the archive.
+
+ The name of the file to add.
+ Argument supplied is null.
+
+
+
+ Add a file to the archive.
+
+ The name of the file to add.
+ The name to use for the on the Zip file created.
+ Argument supplied is null.
+
+
+
+ Add a file entry with data.
+
+ The source of the data for this entry.
+ The name to give to the entry.
+
+
+
+ Add a file entry with data.
+
+ The source of the data for this entry.
+ The name to give to the entry.
+ The compression method to use.
+ Compression method is not supported for creating entries.
+
+
+
+ Add a file entry with data.
+
+ The source of the data for this entry.
+ The name to give to the entry.
+ The compression method to use.
+ Ensure Unicode text is used for name and comments for this entry.
+ Compression method is not supported for creating entries.
+
+
+
+ Add a that contains no data.
+
+ The entry to add.
+ This can be used to add directories, volume labels, or empty file entries.
+
+
+
+ Add a with data.
+
+ The source of the data for this entry.
+ The entry to add.
+ This can be used to add file entries with a custom data source.
+
+ The encryption method specified in is unsupported.
+
+ Compression method is not supported for creating entries.
+
+
+
+ Add a directory entry to the archive.
+
+ The directory to add.
+
+
+
+ Check if the specified compression method is supported for adding a new entry.
+
+ The compression method for the new entry.
+
+
+
+ Delete an entry by name
+
+ The filename to delete
+ True if the entry was found and deleted; false otherwise.
+
+
+
+ Delete a from the archive.
+
+ The entry to delete.
+
+
+
+ Write an unsigned short in little endian byte order.
+
+
+
+
+ Write an int in little endian byte order.
+
+
+
+
+ Write an unsigned int in little endian byte order.
+
+
+
+
+ Write a long in little endian byte order.
+
+
+
+
+ Get a raw memory buffer.
+
+ Returns a raw memory buffer.
+
+
+
+ Get the size of the source descriptor for a .
+
+ The update to get the size for.
+ Whether to include the signature size
+ The descriptor size, zero if there isn't one.
+
+
+
+ Get an output stream for the specified
+
+ The entry to get an output stream for.
+ The output stream obtained for the entry.
+
+
+
+ Class used to sort updates.
+
+
+
+
+ Compares two objects and returns a value indicating whether one is
+ less than, equal to or greater than the other.
+
+ First object to compare
+ Second object to compare.
+ Compare result.
+
+
+
+ Represents a pending update to a Zip file.
+
+
+
+
+ Copy an existing entry.
+
+ The existing entry to copy.
+
+
+
+ Get the for this update.
+
+ This is the source or original entry.
+
+
+
+ Get the that will be written to the updated/new file.
+
+
+
+
+ Get the command for this update.
+
+
+
+
+ Get the filename if any for this update. Null if none exists.
+
+
+
+
+ Get/set the location of the size patch for this update.
+
+
+
+
+ Get /set the location of the crc patch for this update.
+
+
+
+
+ Get/set the size calculated by offset.
+ Specifically, the difference between this and next entry's starting offset.
+
+
+
+
+ Releases the unmanaged resources used by the this instance and optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only unmanaged resources.
+
+
+
+ Read an unsigned short in little endian byte order.
+
+ Returns the value read.
+
+ The stream ends prematurely
+
+
+
+
+ Read a uint in little endian byte order.
+
+ Returns the value read.
+
+ An i/o error occurs.
+
+
+ The file ends prematurely
+
+
+
+
+ Search for and read the central directory of a zip file filling the entries array.
+
+
+ An i/o error occurs.
+
+
+ The central directory is malformed or cannot be found
+
+
+
+
+ Locate the data for a given entry.
+
+
+ The start offset of the data.
+
+
+ The stream ends prematurely
+
+
+ The local header signature is invalid, the entry and central header file name lengths are different
+ or the local and entry compression methods dont match
+
+
+
+
+ Skip the verification of the local header when reading an archive entry. Set this to attempt to read the
+ entries even if the headers should indicate that doing so would fail or produce an unexpected output.
+
+
+
+
+ Represents a string from a which is stored as an array of bytes.
+
+
+
+
+ Initialise a with a string.
+
+ The textual string form.
+
+
+
+
+ Initialise a using a string in its binary 'raw' form.
+
+
+
+
+
+
+ Get a value indicating the original source of data for this instance.
+ True if the source was a string; false if the source was binary data.
+
+
+
+
+ Get the length of the comment when represented as raw bytes.
+
+
+
+
+ Get the comment in its 'raw' form as plain bytes.
+
+
+
+
+ Reset the comment to its initial state.
+
+
+
+
+ Implicit conversion of comment to a string.
+
+ The to convert to a string.
+ The textual equivalent for the input value.
+
+
+
+ An enumerator for Zip entries
+
+
+
+
+ An is a stream that you can write uncompressed data
+ to and flush, but cannot read, seek or do anything else to.
+
+
+
+
+ Gets a value indicating whether the current stream supports reading.
+
+
+
+
+ Write any buffered data to underlying storage.
+
+
+
+
+ Gets a value indicating whether the current stream supports writing.
+
+
+
+
+ Gets a value indicating whether the current stream supports seeking.
+
+
+
+
+ Get the length in bytes of the stream.
+
+
+
+
+ Gets or sets the position within the current stream.
+
+
+
+
+ Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in buffer at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+ The sum of offset and count is larger than the buffer length.
+ Methods were called after the stream was closed.
+ The stream does not support reading.
+ buffer is null.
+ An I/O error occurs.
+ offset or count is negative.
+
+
+
+ Sets the position within the current stream.
+
+ A byte offset relative to the origin parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+ An I/O error occurs.
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+ Methods were called after the stream was closed.
+
+
+
+ Sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+ An I/O error occurs.
+ Methods were called after the stream was closed.
+
+
+
+ Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies count bytes from buffer to the current stream.
+ The zero-based byte offset in buffer at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+ An I/O error occurs.
+ The stream does not support writing.
+ Methods were called after the stream was closed.
+ buffer is null.
+ The sum of offset and count is greater than the buffer length.
+ offset or count is negative.
+
+
+
+ A is an
+ whose data is only a part or subsection of a file.
+
+
+
+
+ Initialise a new instance of the class.
+
+ The containing the underlying stream to use for IO.
+ The start of the partial data.
+ The length of the partial data.
+
+
+
+ Read a byte from this stream.
+
+ Returns the byte read or -1 on end of stream.
+
+
+
+ Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in buffer at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+ The sum of offset and count is larger than the buffer length.
+ Methods were called after the stream was closed.
+ The stream does not support reading.
+ buffer is null.
+ An I/O error occurs.
+ offset or count is negative.
+
+
+
+ Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies count bytes from buffer to the current stream.
+ The zero-based byte offset in buffer at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+ An I/O error occurs.
+ The stream does not support writing.
+ Methods were called after the stream was closed.
+ buffer is null.
+ The sum of offset and count is greater than the buffer length.
+ offset or count is negative.
+
+
+
+ When overridden in a derived class, sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+ An I/O error occurs.
+ Methods were called after the stream was closed.
+
+
+
+ When overridden in a derived class, sets the position within the current stream.
+
+ A byte offset relative to the origin parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+ An I/O error occurs.
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+ Methods were called after the stream was closed.
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+ An I/O error occurs.
+
+
+
+ Gets or sets the position within the current stream.
+
+
+ The current position within the stream.
+ An I/O error occurs.
+ The stream does not support seeking.
+ Methods were called after the stream was closed.
+
+
+
+ Gets the length in bytes of the stream.
+
+
+ A long value representing the length of the stream in bytes.
+ A class derived from Stream does not support seeking.
+ Methods were called after the stream was closed.
+
+
+
+ Gets a value indicating whether the current stream supports writing.
+
+ false
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Gets a value indicating whether the current stream supports seeking.
+
+ true
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Gets a value indicating whether the current stream supports reading.
+
+ true.
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Gets a value that determines whether the current stream can time out.
+
+
+ A value that determines whether the current stream can time out.
+
+
+
+ Provides a static way to obtain a source of data for an entry.
+
+
+
+
+ Get a source of data by creating a new stream.
+
+ Returns a to use for compression input.
+ Ideally a new stream is created and opened to achieve this, to avoid locking problems.
+
+
+
+ Represents a source of data that can dynamically provide
+ multiple data sources based on the parameters passed.
+
+
+
+
+ Get a data source.
+
+ The to get a source for.
+ The name for data if known.
+ Returns a to use for compression input.
+ Ideally a new stream is created and opened to achieve this, to avoid locking problems.
+
+
+
+ Default implementation of a for use with files stored on disk.
+
+
+
+
+ Initialise a new instance of
+
+ The name of the file to obtain data from.
+
+
+
+ Get a providing data.
+
+ Returns a providing data.
+
+
+
+ Default implementation of for files stored on disk.
+
+
+
+
+ Get a providing data for an entry.
+
+ The entry to provide data for.
+ The file name for data if known.
+ Returns a stream providing data; or null if not available
+
+
+
+ Defines facilities for data storage when updating Zip Archives.
+
+
+
+
+ Get the to apply during updates.
+
+
+
+
+ Get an empty that can be used for temporary output.
+
+ Returns a temporary output
+
+
+
+
+ Convert a temporary output stream to a final stream.
+
+ The resulting final
+
+
+
+
+ Make a temporary copy of the original stream.
+
+ The to copy.
+ Returns a temporary output that is a copy of the input.
+
+
+
+ Return a stream suitable for performing direct updates on the original source.
+
+ The current stream.
+ Returns a stream suitable for direct updating.
+ This may be the current stream passed.
+
+
+
+ Dispose of this instance.
+
+
+
+
+ An abstract suitable for extension by inheritance.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The update mode.
+
+
+
+ Gets a temporary output
+
+ Returns the temporary output stream.
+
+
+
+
+ Converts the temporary to its final form.
+
+ Returns a that can be used to read
+ the final storage for the archive.
+
+
+
+
+ Make a temporary copy of a .
+
+ The to make a copy of.
+ Returns a temporary output that is a copy of the input.
+
+
+
+ Return a stream suitable for performing direct updates on the original source.
+
+ The to open for direct update.
+ Returns a stream suitable for direct updating.
+
+
+
+ Disposes this instance.
+
+
+
+
+ Gets the update mode applicable.
+
+ The update mode.
+
+
+
+ An implementation suitable for hard disks.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The file.
+ The update mode.
+
+
+
+ Initializes a new instance of the class.
+
+ The file.
+
+
+
+ Gets a temporary output for performing updates on.
+
+ Returns the temporary output stream.
+
+
+
+ Converts a temporary to its final form.
+
+ Returns a that can be used to read
+ the final storage for the archive.
+
+
+
+ Make a temporary copy of a stream.
+
+ The to copy.
+ Returns a temporary output that is a copy of the input.
+
+
+
+ Return a stream suitable for performing direct updates on the original source.
+
+ The current stream.
+ Returns a stream suitable for direct updating.
+ If the is not null this is used as is.
+
+
+
+ Disposes this instance.
+
+
+
+
+ An implementation suitable for in memory streams.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The to use
+ This constructor is for testing as memory streams dont really require safe mode.
+
+
+
+ Get the stream returned by if this was in fact called.
+
+
+
+
+ Gets the temporary output
+
+ Returns the temporary output stream.
+
+
+
+ Converts the temporary to its final form.
+
+ Returns a that can be used to read
+ the final storage for the archive.
+
+
+
+ Make a temporary copy of the original stream.
+
+ The to copy.
+ Returns a temporary output that is a copy of the input.
+
+
+
+ Return a stream suitable for performing direct updates on the original source.
+
+ The original source stream
+ Returns a stream suitable for direct updating.
+ If the passed is not null this is used;
+ otherwise a new is returned.
+
+
+
+ Disposes this instance.
+
+
+
+
+ Holds data pertinent to a data descriptor.
+
+
+
+
+ Get /set the compressed size of data.
+
+
+
+
+ Get / set the uncompressed size of data
+
+
+
+
+ Get /set the crc value.
+
+
+
+
+ This class assists with writing/reading from Zip files.
+
+
+
+
+ Locates a block with the desired .
+
+
+ The signature to find.
+ Location, marking the end of block.
+ Minimum size of the block.
+ The maximum variable data.
+ Returns the offset of the first byte after the signature; -1 if not found
+
+
+
+
+
+
+ Write Zip64 end of central directory records (File header and locator).
+
+
+ The number of entries in the central directory.
+ The size of entries in the central directory.
+ The offset of the central directory.
+
+
+
+
+
+
+ Write the required records to end the central directory.
+
+
+ The number of entries in the directory.
+ The size of the entries in the directory.
+ The start of the central directory.
+ The archive comment. (This can be null).
+
+
+
+ Write a data descriptor.
+
+
+ The entry to write a descriptor for.
+ Returns the number of descriptor bytes written.
+
+
+
+ Read data descriptor at the end of compressed data.
+
+
+ if set to true [zip64].
+ The data to fill in.
+ Returns the number of bytes read in the descriptor.
+
+
+
+ This is an InflaterInputStream that reads the files baseInputStream an zip archive
+ one after another. It has a special method to get the zip entry of
+ the next file. The zip entry contains information about the file name
+ size, compressed size, Crc, etc.
+ It includes support for Stored and Deflated entries.
+
+
Author of the original java version : Jochen Hoenicke
+
+
+ This sample shows how to read a zip file
+
+ using System;
+ using System.Text;
+ using System.IO;
+
+ using ICSharpCode.SharpZipLib.Zip;
+
+ class MainClass
+ {
+ public static void Main(string[] args)
+ {
+ using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) {
+
+ ZipEntry theEntry;
+ const int size = 2048;
+ byte[] data = new byte[2048];
+
+ while ((theEntry = s.GetNextEntry()) != null) {
+ if ( entry.IsFile ) {
+ Console.Write("Show contents (y/n) ?");
+ if (Console.ReadLine() == "y") {
+ while (true) {
+ size = s.Read(data, 0, data.Length);
+ if (size > 0) {
+ Console.Write(new ASCIIEncoding().GetString(data, 0, size));
+ } else {
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+
+
+
+ Delegate for reading bytes from a stream.
+
+
+
+
+ The current reader this instance.
+
+
+
+
+ Creates a new Zip input stream, for reading a zip archive.
+
+ The underlying providing data.
+
+
+
+ Creates a new Zip input stream, for reading a zip archive.
+
+ The underlying providing data.
+ Size of the buffer.
+
+
+
+ Creates a new Zip input stream, for reading a zip archive.
+
+ The underlying providing data.
+
+
+
+
+ Optional password used for encryption when non-null
+
+ A password for all encrypted entries in this
+
+
+
+ Gets a value indicating if there is a current entry and it can be decompressed
+
+
+ The entry can only be decompressed if the library supports the zip features required to extract it.
+ See the ZipEntry Version property for more details.
+
+ Since uses the local headers for extraction, entries with no compression combined with the
+ flag set, cannot be extracted as the end of the entry data cannot be deduced.
+
+
+
+
+ Is the compression method for the specified entry supported?
+
+
+ Uses entry.CompressionMethodForHeader so that entries of type WinZipAES will be rejected.
+
+ the entry to check.
+ true if the compression method is supported, false if not.
+
+
+
+ Advances to the next entry in the archive
+
+
+ The next entry in the archive or null if there are no more entries.
+
+
+ If the previous entry is still open CloseEntry is called.
+
+
+ Input stream is closed
+
+
+ Password is not set, password is invalid, compression method is invalid,
+ version required to extract is not supported
+
+
+
+
+ Reads bytes from the input stream until either a local file header signature, or another signature
+ indicating that no more entries should be present, is found.
+
+ Thrown if the end of the input stream is reached without any signatures found
+ Returns whether the found signature is for a local entry header
+
+
+
+ Read data descriptor at the end of compressed data.
+
+
+
+
+ Complete cleanup as the final part of closing.
+
+ True if the crc value should be tested
+
+
+
+ Closes the current zip entry and moves to the next one.
+
+
+ The stream is closed
+
+
+ The Zip stream ends early
+
+
+
+
+ Returns 1 if there is an entry available
+ Otherwise returns 0.
+
+
+
+
+ Returns the current size that can be read from the current entry if available
+
+ Thrown if the entry size is not known.
+ Thrown if no entry is currently available.
+
+
+
+ Reads a byte from the current zip entry.
+
+
+ The byte or -1 if end of stream is reached.
+
+
+
+
+ Handle attempts to read by throwing an .
+
+ The destination array to store data in.
+ The offset at which data read should be stored.
+ The maximum number of bytes to read.
+ Returns the number of bytes actually read.
+
+
+
+ Handle attempts to read from this entry by throwing an exception
+
+
+
+
+ Handle attempts to read from this entry by throwing an exception
+
+
+
+
+ Perform the initial read on an entry which may include
+ reading encryption headers and setting up inflation.
+
+ The destination to fill with data read.
+ The offset to start reading at.
+ The maximum number of bytes to read.
+ The actual number of bytes read.
+
+
+
+ Read a block of bytes from the stream.
+
+ The destination for the bytes.
+ The index to start storing data.
+ The number of bytes to attempt to read.
+ Returns the number of bytes read.
+ Zero bytes read means end of stream.
+
+
+
+ Reads a block of bytes from the current zip entry.
+
+
+ The number of bytes read (this may be less than the length requested, even before the end of stream), or 0 on end of stream.
+
+
+ An i/o error occurred.
+
+
+ The deflated stream is corrupted.
+
+
+ The stream is not open.
+
+
+
+
+ Closes the zip input stream
+
+
+
+
+ ZipNameTransform transforms names as per the Zip file naming convention.
+
+ The use of absolute names is supported although its use is not valid
+ according to Zip naming conventions, and should not be used if maximum compatability is desired.
+
+
+
+ Initialize a new instance of
+
+
+
+
+ Initialize a new instance of
+
+ The string to trim from the front of paths if found.
+
+
+
+ Static constructor.
+
+
+
+
+ Transform a windows directory name according to the Zip file naming conventions.
+
+ The directory name to transform.
+ The transformed name.
+
+
+
+ Transform a windows file name according to the Zip file naming conventions.
+
+ The file name to transform.
+ The transformed name.
+
+
+
+ Get/set the path prefix to be trimmed from paths if present.
+
+ The prefix is trimmed before any conversion from
+ a windows path is done.
+
+
+
+ Force a name to be valid by replacing invalid characters with a fixed value
+
+ The name to force valid
+ The replacement character to use.
+ Returns a valid name
+
+
+
+ Test a name to see if it is a valid name for a zip entry.
+
+ The name to test.
+ If true checking is relaxed about windows file names and absolute paths.
+ Returns true if the name is a valid zip name; false otherwise.
+ Zip path names are actually in Unix format, and should only contain relative paths.
+ This means that any path stored should not contain a drive or
+ device letter, or a leading slash. All slashes should forward slashes '/'.
+ An empty name is valid for a file where the input comes from standard input.
+ A null name is not considered valid.
+
+
+
+
+ Test a name to see if it is a valid name for a zip entry.
+
+ The name to test.
+ Returns true if the name is a valid zip name; false otherwise.
+ Zip path names are actually in unix format,
+ and should only contain relative paths if a path is present.
+ This means that the path stored should not contain a drive or
+ device letter, or a leading slash. All slashes should forward slashes '/'.
+ An empty name is valid where the input comes from standard input.
+ A null name is not considered valid.
+
+
+
+
+ An implementation of INameTransform that transforms entry paths as per the Zip file naming convention.
+ Strips path roots and puts directory separators in the correct format ('/')
+
+
+
+
+ Initialize a new instance of
+
+
+
+
+ Transform a windows directory name according to the Zip file naming conventions.
+
+ The directory name to transform.
+ The transformed name.
+
+
+
+ Transform a windows file name according to the Zip file naming conventions.
+
+ The file name to transform.
+ The transformed name.
+
+
+
+ This is a DeflaterOutputStream that writes the files into a zip
+ archive one after another. It has a special method to start a new
+ zip entry. The zip entries contains information about the file name
+ size, compressed size, CRC, etc.
+
+ It includes support for Stored and Deflated entries.
+ This class is not thread safe.
+
+
Author of the original java version : Jochen Hoenicke
+
+ This sample shows how to create a zip file
+
+ using System;
+ using System.IO;
+
+ using ICSharpCode.SharpZipLib.Core;
+ using ICSharpCode.SharpZipLib.Zip;
+
+ class MainClass
+ {
+ public static void Main(string[] args)
+ {
+ string[] filenames = Directory.GetFiles(args[0]);
+ byte[] buffer = new byte[4096];
+
+ using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) {
+
+ s.SetLevel(9); // 0 - store only to 9 - means best compression
+
+ foreach (string file in filenames) {
+ ZipEntry entry = new ZipEntry(file);
+ s.PutNextEntry(entry);
+
+ using (FileStream fs = File.OpenRead(file)) {
+ StreamUtils.Copy(fs, s, buffer);
+ }
+ }
+ }
+ }
+ }
+
+
+
+
+
+ Creates a new Zip output stream, writing a zip archive.
+
+
+ The output stream to which the archive contents are written.
+
+
+
+
+ Creates a new Zip output stream, writing a zip archive.
+
+ The output stream to which the archive contents are written.
+ Size of the buffer to use.
+
+
+
+ Creates a new Zip output stream, writing a zip archive.
+
+ The output stream to which the archive contents are written.
+
+
+
+
+ Gets a flag value of true if the central header has been added for this archive; false if it has not been added.
+
+ No further entries can be added once this has been done.
+
+
+
+ Set the zip file comment.
+
+
+ The comment text for the entire archive.
+
+
+ The converted comment is longer than 0xffff bytes.
+
+
+
+
+ Sets the compression level. The new level will be activated
+ immediately.
+
+ The new compression level (1 to 9).
+
+ Level specified is not supported.
+
+
+
+
+
+ Get the current deflater compression level
+
+ The current compression level
+
+
+
+ Get / set a value indicating how Zip64 Extension usage is determined when adding entries.
+
+ Older archivers may not understand Zip64 extensions.
+ If backwards compatability is an issue be careful when adding entries to an archive.
+ Setting this property to off is workable but less desirable as in those circumstances adding a file
+ larger then 4GB will fail.
+
+
+
+ Used for transforming the names of entries added by .
+ Defaults to , set to null to disable transforms and use names as supplied.
+
+
+
+
+ Get/set the password used for encryption.
+
+ When set to null or if the password is empty no encryption is performed
+
+
+
+ Write an unsigned short in little endian byte order.
+
+
+
+
+ Write an int in little endian byte order.
+
+
+
+
+ Write an int in little endian byte order.
+
+
+
+
+ Starts a new Zip entry. It automatically closes the previous
+ entry if present.
+ All entry elements bar name are optional, but must be correct if present.
+ If the compression method is stored and the output is not patchable
+ the compression for that entry is automatically changed to deflate level 0
+
+
+ the entry.
+
+
+ if entry passed is null.
+
+
+ if an I/O error occurred.
+
+
+ if stream was finished
+
+
+ Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+
+ The Compression method specified for the entry is unsupported.
+
+
+
+
+ Starts a new passthrough Zip entry. It automatically closes the previous
+ entry if present.
+ Passthrough entry is an entry that is created from compressed data.
+ It is useful to avoid recompression to save CPU resources if compressed data is already disposable.
+ All entry elements bar name, crc, size and compressed size are optional, but must be correct if present.
+ Compression should be set to Deflated.
+
+
+ the entry.
+
+
+ if entry passed is null.
+
+
+ if an I/O error occurred.
+
+
+ if stream was finished.
+
+
+ Crc is not set
+ Size is not set
+ CompressedSize is not set
+ CompressionMethod is not Deflate
+ Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+
+ The Compression method specified for the entry is unsupported
+ Entry is encrypted
+
+
+
+
+ Starts a new Zip entry. It automatically closes the previous
+ entry if present.
+ All entry elements bar name are optional, but must be correct if present.
+ If the compression method is stored and the output is not patchable
+ the compression for that entry is automatically changed to deflate level 0
+
+
+ the entry.
+
+ The that can be used to cancel the operation.
+
+ if entry passed is null.
+
+
+ if an I/O error occured.
+
+
+ if stream was finished
+
+
+ Too many entries in the Zip file
+ Entry name is too long
+ Finish has already been called
+
+
+ The Compression method specified for the entry is unsupported.
+
+
+
+
+ Closes the current entry, updating header and footer information as required
+
+
+ Invalid entry field values.
+
+
+ An I/O error occurs.
+
+
+ No entry is active.
+
+
+
+
+
+
+
+ Initializes encryption keys based on given password.
+
+
+
+
+ Initializes encryption keys based on given .
+
+ The password.
+
+
+
+ Writes the given buffer to the current entry.
+
+ The buffer containing data to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+ Archive size is invalid
+ No entry is active.
+
+
+
+
+
+
+ Finishes the stream. This will write the central directory at the
+ end of the zip file and flush the stream.
+
+
+ This is automatically called when the stream is closed.
+
+
+ An I/O error occurs.
+
+
+ Comment exceeds the maximum length
+ Entry name exceeds the maximum length
+
+
+
+ >
+
+
+
+ Flushes the stream by calling Flush on the deflater stream unless
+ the current compression method is . Then it flushes the underlying output stream.
+
+
+
+
+ The entries for the archive.
+
+
+
+
+ Used to track the crc of data added to entries.
+
+
+
+
+ The current entry being added.
+
+
+
+
+ Used to track the size of data for an entry during writing.
+
+
+
+
+ Offset to be recorded for each entry in the central header.
+
+
+
+
+ Comment for the entire archive recorded in central header.
+
+
+
+
+ Flag indicating that header patching is required for the current entry.
+
+
+
+
+ The values to patch in the entry local header
+
+
+
+
+ The password to use when encrypting archive entries.
+
+
+
+
+ Deprecated way of setting zip encoding provided for backwards compability.
+ Use when possible.
+
+
+ If any ZipStrings properties are being modified, it will enter a backwards compatibility mode, mimicking the
+ old behaviour where a single instance was shared between all Zip* instances.
+
+
+
+
+ Returns a new instance or the shared backwards compatible instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Utility class for resolving the encoding used for reading and writing strings
+
+
+
+
+ Creates a StringCodec that uses the system default encoder or UTF-8 depending on whether the zip entry Unicode flag is set
+
+
+
+
+ Creates a StringCodec that uses an encoding from the specified code page except for zip entries with the Unicode flag
+
+
+
+
+ Creates a StringCodec that uses an the specified encoding, except for zip entries with the Unicode flag
+
+
+
+
+ Creates a StringCodec that uses the zip specification encoder or UTF-8 depending on whether the zip entry Unicode flag is set
+
+
+
+
+ If set, use the encoding set by for zip entries instead of the defaults
+
+
+
+
+ The default encoding used for ZipCrypto passwords in zip files, set to
+ for greatest compability.
+
+
+
+
+ Returns the encoding for an output .
+ Unless overriden by it returns .
+
+
+
+
+ Returns if is set, otherwise it returns the encoding indicated by
+
+
+
+
+ Returns the appropriate encoding for an input according to .
+ If overridden by , it always returns the encoding indicated by .
+
+
+
+
+
+
+
+
+ Code page encoding, used for non-unicode strings
+
+ The original Zip specification (https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) states
+ that file names should only be encoded with IBM Code Page 437 or UTF-8.
+ In practice, most zip apps use OEM or system encoding (typically cp437 on Windows).
+
+
+
+
+ Returns the UTF-8 code page (65001) used for zip entries with unicode flag set
+
+
+
+
+ Code page used for non-unicode strings and legacy zip encoding (if is set).
+ Default value is
+
+
+
+
+ The non-unicode code page that should be used according to the zip specification
+
+
+
+
+ Operating system default codepage.
+
+
+
+
+ The system default encoding.
+
+
+
+
+ The encoding used for the zip archive comment. Defaults to the encoding for , since
+ no unicode flag can be set for it in the files.
+
+
+
+
+ The encoding used for the ZipCrypto passwords. Defaults to .
+
+
+
+
+ Create a copy of this StringCodec with the specified zip archive comment encoding
+
+
+
+
+
+
+ Create a copy of this StringCodec with the specified zip crypto password encoding
+
+
+
+
+
+
+ Create a copy of this StringCodec that ignores the Unicode flag when reading entries
+
+
+
+
+
diff --git a/bin/MathNet.Numerics.dll b/bin/MathNet.Numerics.dll
new file mode 100644
index 0000000..71d89ab
Binary files /dev/null and b/bin/MathNet.Numerics.dll differ
diff --git a/bin/MathNet.Numerics.xml b/bin/MathNet.Numerics.xml
new file mode 100644
index 0000000..3d573a1
--- /dev/null
+++ b/bin/MathNet.Numerics.xml
@@ -0,0 +1,53733 @@
+
+
+
+ MathNet.Numerics
+
+
+
+
+ AppContext based switches to disable functionality, controllable through also in the
+ host application through AppContext or by configuration with AppContextSwitchOverride.
+ https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element
+
+
+ Since AppContext is not supported on .NET Framework 4.0, a local implementation is used there instead,
+ which cannot be controlled though configuration or through AppContext.
+
+
+
+
+ Useful extension methods for Arrays.
+
+
+
+
+ Copies the values from on array to another.
+
+ The source array.
+ The destination array.
+
+
+
+ Copies the values from on array to another.
+
+ The source array.
+ The destination array.
+
+
+
+ Copies the values from on array to another.
+
+ The source array.
+ The destination array.
+
+
+
+ Copies the values from on array to another.
+
+ The source array.
+ The destination array.
+
+
+
+ Enumerative Combinatorics and Counting.
+
+
+
+
+ Count the number of possible variations without repetition.
+ The order matters and each object can be chosen only once.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Each element is chosen at most once.
+ Maximum number of distinct variations.
+
+
+
+ Count the number of possible variations with repetition.
+ The order matters and each object can be chosen more than once.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Each element is chosen 0, 1 or multiple times.
+ Maximum number of distinct variations with repetition.
+
+
+
+ Count the number of possible combinations without repetition.
+ The order does not matter and each object can be chosen only once.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Each element is chosen at most once.
+ Maximum number of combinations.
+
+
+
+ Count the number of possible combinations with repetition.
+ The order does not matter and an object can be chosen more than once.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Each element is chosen 0, 1 or multiple times.
+ Maximum number of combinations with repetition.
+
+
+
+ Count the number of possible permutations (without repetition).
+
+ Number of (distinguishable) elements in the set.
+ Maximum number of permutations without repetition.
+
+
+
+ Generate a random permutation, without repetition, by generating the index numbers 0 to N-1 and shuffle them randomly.
+ Implemented using Fisher-Yates Shuffling.
+
+ An array of length N that contains (in any order) the integers of the interval [0, N).
+ Number of (distinguishable) elements in the set.
+ The random number generator to use. Optional; the default random source will be used if null.
+
+
+
+ Select a random permutation, without repetition, from a data array by reordering the provided array in-place.
+ Implemented using Fisher-Yates Shuffling. The provided data array will be modified.
+
+ The data array to be reordered. The array will be modified by this routine.
+ The random number generator to use. Optional; the default random source will be used if null.
+
+
+
+ Select a random permutation from a data sequence by returning the provided data in random order.
+ Implemented using Fisher-Yates Shuffling.
+
+ The data elements to be reordered.
+ The random number generator to use. Optional; the default random source will be used if null.
+
+
+
+ Generate a random combination, without repetition, by randomly selecting some of N elements.
+
+ Number of elements in the set.
+ The random number generator to use. Optional; the default random source will be used if null.
+ Boolean mask array of length N, for each item true if it is selected.
+
+
+
+ Generate a random combination, without repetition, by randomly selecting k of N elements.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Each element is chosen at most once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ Boolean mask array of length N, for each item true if it is selected.
+
+
+
+ Select a random combination, without repetition, from a data sequence by selecting k elements in original order.
+
+ The data source to choose from.
+ Number of elements (k) to choose from the data set. Each element is chosen at most once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ The chosen combination, in the original order.
+
+
+
+ Generates a random combination, with repetition, by randomly selecting k of N elements.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Elements can be chosen more than once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ Integer mask array of length N, for each item the number of times it was selected.
+
+
+
+ Select a random combination, with repetition, from a data sequence by selecting k elements in original order.
+
+ The data source to choose from.
+ Number of elements (k) to choose from the data set. Elements can be chosen more than once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ The chosen combination with repetition, in the original order.
+
+
+
+ Generate a random variation, without repetition, by randomly selecting k of n elements with order.
+ Implemented using partial Fisher-Yates Shuffling.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Each element is chosen at most once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ An array of length K that contains the indices of the selections as integers of the interval [0, N).
+
+
+
+ Generate a random variation, without repetition, by randomly selecting k of n elements with order. This is an O(k) space-complexity implementation optimized for very large N.
+ The space complexity of Fisher-Yates Shuffling is O(n+k). When N is very large, the algorithm will be unexecutable in limited memory, and a more memory-efficient algorithm is needed.
+ You can explicitly cast N to if N is out of range of or memory, so that this special implementation is called. However, this implementation is slower than Fisher-Yates Shuffling: don't call it if time is more critical than space.
+ The K of type seems impossible, because the returned array is of size K and must all be stored in memory.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Each element is chosen at most once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ An array of length K that contains the indices of the selections as integers of the interval [0, N).
+
+
+
+ Select a random variation, without repetition, from a data sequence by randomly selecting k elements in random order.
+ Implemented using partial Fisher-Yates Shuffling.
+
+ The data source to choose from.
+ Number of elements (k) to choose from the set. Each element is chosen at most once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ The chosen variation, in random order.
+
+
+
+ Generate a random variation, with repetition, by randomly selecting k of n elements with order.
+
+ Number of elements in the set.
+ Number of elements to choose from the set. Elements can be chosen more than once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ An array of length K that contains the indices of the selections as integers of the interval [0, N).
+
+
+
+ Select a random variation, with repetition, from a data sequence by randomly selecting k elements in random order.
+
+ The data source to choose from.
+ Number of elements (k) to choose from the data set. Elements can be chosen more than once.
+ The random number generator to use. Optional; the default random source will be used if null.
+ The chosen variation with repetition, in random order.
+
+
+
+ 32-bit single precision complex numbers class.
+
+
+
+ The class Complex32 provides all elementary operations
+ on complex numbers. All the operators +, -,
+ *, /, ==, != are defined in the
+ canonical way. Additional complex trigonometric functions
+ are also provided. Note that the Complex32 structures
+ has two special constant values and
+ .
+
+
+
+ Complex32 x = new Complex32(1f,2f);
+ Complex32 y = Complex32.FromPolarCoordinates(1f, Math.Pi);
+ Complex32 z = (x + y) / (x - y);
+
+
+
+ For mathematical details about complex numbers, please
+ have a look at the
+ Wikipedia
+
+
+
+
+
+ The real component of the complex number.
+
+
+
+
+ The imaginary component of the complex number.
+
+
+
+
+ Initializes a new instance of the Complex32 structure with the given real
+ and imaginary parts.
+
+ The value for the real component.
+ The value for the imaginary component.
+
+
+
+ Creates a complex number from a point's polar coordinates.
+
+ A complex number.
+ The magnitude, which is the distance from the origin (the intersection of the x-axis and the y-axis) to the number.
+ The phase, which is the angle from the line to the horizontal axis, measured in radians.
+
+
+
+ Returns a new instance
+ with a real number equal to zero and an imaginary number equal to zero.
+
+
+
+
+ Returns a new instance
+ with a real number equal to one and an imaginary number equal to zero.
+
+
+
+
+ Returns a new instance
+ with a real number equal to zero and an imaginary number equal to one.
+
+
+
+
+ Returns a new instance
+ with real and imaginary numbers positive infinite.
+
+
+
+
+ Returns a new instance
+ with real and imaginary numbers not a number.
+
+
+
+
+ Gets the real component of the complex number.
+
+ The real component of the complex number.
+
+
+
+ Gets the real imaginary component of the complex number.
+
+ The real imaginary component of the complex number.
+
+
+
+ Gets the phase or argument of this Complex32.
+
+
+ Phase always returns a value bigger than negative Pi and
+ smaller or equal to Pi. If this Complex32 is zero, the Complex32
+ is assumed to be positive real with an argument of zero.
+
+ The phase or argument of this Complex32
+
+
+
+ Gets the magnitude (or absolute value) of a complex number.
+
+ Assuming that magnitude of (inf,a) and (a,inf) and (inf,inf) is inf and (NaN,a), (a,NaN) and (NaN,NaN) is NaN
+ The magnitude of the current instance.
+
+
+
+ Gets the squared magnitude (or squared absolute value) of a complex number.
+
+ The squared magnitude of the current instance.
+
+
+
+ Gets the unity of this complex (same argument, but on the unit circle; exp(I*arg))
+
+ The unity of this Complex32.
+
+
+
+ Gets a value indicating whether the Complex32 is zero.
+
+ true if this instance is zero; otherwise, false.
+
+
+
+ Gets a value indicating whether the Complex32 is one.
+
+ true if this instance is one; otherwise, false.
+
+
+
+ Gets a value indicating whether the Complex32 is the imaginary unit.
+
+ true if this instance is ImaginaryOne; otherwise, false.
+
+
+
+ Gets a value indicating whether the provided Complex32evaluates
+ to a value that is not a number.
+
+
+ true if this instance is ; otherwise,
+ false.
+
+
+
+
+ Gets a value indicating whether the provided Complex32 evaluates to an
+ infinite value.
+
+
+ true if this instance is infinite; otherwise, false.
+
+
+ True if it either evaluates to a complex infinity
+ or to a directed infinity.
+
+
+
+
+ Gets a value indicating whether the provided Complex32 is real.
+
+ true if this instance is a real number; otherwise, false.
+
+
+
+ Gets a value indicating whether the provided Complex32 is real and not negative, that is >= 0.
+
+
+ true if this instance is real nonnegative number; otherwise, false.
+
+
+
+
+ Exponential of this Complex32 (exp(x), E^x).
+
+
+ The exponential of this complex number.
+
+
+
+
+ Natural Logarithm of this Complex32 (Base E).
+
+ The natural logarithm of this complex number.
+
+
+
+ Common Logarithm of this Complex32 (Base 10).
+
+ The common logarithm of this complex number.
+
+
+
+ Logarithm of this Complex32 with custom base.
+
+ The logarithm of this complex number.
+
+
+
+ Raise this Complex32 to the given value.
+
+
+ The exponent.
+
+
+ The complex number raised to the given exponent.
+
+
+
+
+ Raise this Complex32 to the inverse of the given value.
+
+
+ The root exponent.
+
+
+ The complex raised to the inverse of the given exponent.
+
+
+
+
+ The Square (power 2) of this Complex32
+
+
+ The square of this complex number.
+
+
+
+
+ The Square Root (power 1/2) of this Complex32
+
+
+ The square root of this complex number.
+
+
+
+
+ Evaluate all square roots of this Complex32.
+
+
+
+
+ Evaluate all cubic roots of this Complex32.
+
+
+
+
+ Equality test.
+
+ One of complex numbers to compare.
+ The other complex numbers to compare.
+ true if the real and imaginary components of the two complex numbers are equal; false otherwise.
+
+
+
+ Inequality test.
+
+ One of complex numbers to compare.
+ The other complex numbers to compare.
+ true if the real or imaginary components of the two complex numbers are not equal; false otherwise.
+
+
+
+ Unary addition.
+
+ The complex number to operate on.
+ Returns the same complex number.
+
+
+
+ Unary minus.
+
+ The complex number to operate on.
+ The negated value of the .
+
+
+ Addition operator. Adds two complex numbers together.
+ The result of the addition.
+ One of the complex numbers to add.
+ The other complex numbers to add.
+
+
+ Subtraction operator. Subtracts two complex numbers.
+ The result of the subtraction.
+ The complex number to subtract from.
+ The complex number to subtract.
+
+
+ Addition operator. Adds a complex number and float together.
+ The result of the addition.
+ The complex numbers to add.
+ The float value to add.
+
+
+ Subtraction operator. Subtracts float value from a complex value.
+ The result of the subtraction.
+ The complex number to subtract from.
+ The float value to subtract.
+
+
+ Addition operator. Adds a complex number and float together.
+ The result of the addition.
+ The float value to add.
+ The complex numbers to add.
+
+
+ Subtraction operator. Subtracts complex value from a float value.
+ The result of the subtraction.
+ The float vale to subtract from.
+ The complex value to subtract.
+
+
+ Multiplication operator. Multiplies two complex numbers.
+ The result of the multiplication.
+ One of the complex numbers to multiply.
+ The other complex number to multiply.
+
+
+ Multiplication operator. Multiplies a complex number with a float value.
+ The result of the multiplication.
+ The float value to multiply.
+ The complex number to multiply.
+
+
+ Multiplication operator. Multiplies a complex number with a float value.
+ The result of the multiplication.
+ The complex number to multiply.
+ The float value to multiply.
+
+
+ Division operator. Divides a complex number by another.
+ Enhanced Smith's algorithm for dividing two complex numbers
+
+ The result of the division.
+ The dividend.
+ The divisor.
+
+
+
+ Helper method for dividing.
+
+ Re first
+ Im first
+ Re second
+ Im second
+
+
+
+
+ Division operator. Divides a float value by a complex number.
+ Algorithm based on Smith's algorithm
+
+ The result of the division.
+ The dividend.
+ The divisor.
+
+
+ Division operator. Divides a complex number by a float value.
+ The result of the division.
+ The dividend.
+ The divisor.
+
+
+
+ Computes the conjugate of a complex number and returns the result.
+
+
+
+
+ Returns the multiplicative inverse of a complex number.
+
+
+
+
+ Converts the value of the current complex number to its equivalent string representation in Cartesian form.
+
+ The string representation of the current instance in Cartesian form.
+
+
+
+ Converts the value of the current complex number to its equivalent string representation
+ in Cartesian form by using the specified format for its real and imaginary parts.
+
+ The string representation of the current instance in Cartesian form.
+ A standard or custom numeric format string.
+
+ is not a valid format string.
+
+
+
+ Converts the value of the current complex number to its equivalent string representation
+ in Cartesian form by using the specified culture-specific formatting information.
+
+ The string representation of the current instance in Cartesian form, as specified by .
+ An object that supplies culture-specific formatting information.
+
+
+ Converts the value of the current complex number to its equivalent string representation
+ in Cartesian form by using the specified format and culture-specific format information for its real and imaginary parts.
+ The string representation of the current instance in Cartesian form, as specified by and .
+ A standard or custom numeric format string.
+ An object that supplies culture-specific formatting information.
+
+ is not a valid format string.
+
+
+
+ Checks if two complex numbers are equal. Two complex numbers are equal if their
+ corresponding real and imaginary components are equal.
+
+
+ Returns true if the two objects are the same object, or if their corresponding
+ real and imaginary components are equal, false otherwise.
+
+
+ The complex number to compare to with.
+
+
+
+
+ The hash code for the complex number.
+
+
+ The hash code of the complex number.
+
+
+ The hash code is calculated as
+ System.Math.Exp(ComplexMath.Absolute(complexNumber)).
+
+
+
+
+ Checks if two complex numbers are equal. Two complex numbers are equal if their
+ corresponding real and imaginary components are equal.
+
+
+ Returns true if the two objects are the same object, or if their corresponding
+ real and imaginary components are equal, false otherwise.
+
+
+ The complex number to compare to with.
+
+
+
+
+ Creates a complex number based on a string. The string can be in the
+ following formats (without the quotes): 'n', 'ni', 'n +/- ni',
+ 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a float.
+
+
+ A complex number containing the value specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific
+ formatting information.
+
+
+
+
+ Parse a part (real or complex) from a complex number.
+
+ Start Token.
+ Is set to true if the part identified itself as being imaginary.
+
+ An that supplies culture-specific
+ formatting information.
+
+ Resulting part as float.
+
+
+
+
+ Converts the string representation of a complex number to a single-precision complex number equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex number to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized
+
+
+
+
+ Converts the string representation of a complex number to single-precision complex number equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex number to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized
+
+
+
+
+ Explicit conversion of a real decimal to a Complex32.
+
+ The decimal value to convert.
+ The result of the conversion.
+
+
+
+ Explicit conversion of a Complex to a Complex32.
+
+ The decimal value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a real byte to a Complex32.
+
+ The byte value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a real short to a Complex32.
+
+ The short value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a signed byte to a Complex32.
+
+ The signed byte value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a unsigned real short to a Complex32.
+
+ The unsigned short value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a real int to a Complex32.
+
+ The int value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a BigInteger int to a Complex32.
+
+ The BigInteger value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a real long to a Complex32.
+
+ The long value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a real uint to a Complex32.
+
+ The uint value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a real ulong to a Complex32.
+
+ The ulong value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a real float to a Complex32.
+
+ The float value to convert.
+ The result of the conversion.
+
+
+
+ Implicit conversion of a real double to a Complex32.
+
+ The double value to convert.
+ The result of the conversion.
+
+
+
+ Converts this Complex32 to a .
+
+ A with the same values as this Complex32.
+
+
+
+ Returns the additive inverse of a specified complex number.
+
+ The result of the real and imaginary components of the value parameter multiplied by -1.
+ A complex number.
+
+
+
+ Computes the conjugate of a complex number and returns the result.
+
+ The conjugate of .
+ A complex number.
+
+
+
+ Adds two complex numbers and returns the result.
+
+ The sum of and .
+ The first complex number to add.
+ The second complex number to add.
+
+
+
+ Subtracts one complex number from another and returns the result.
+
+ The result of subtracting from .
+ The value to subtract from (the minuend).
+ The value to subtract (the subtrahend).
+
+
+
+ Returns the product of two complex numbers.
+
+ The product of the and parameters.
+ The first complex number to multiply.
+ The second complex number to multiply.
+
+
+
+ Divides one complex number by another and returns the result.
+
+ The quotient of the division.
+ The complex number to be divided.
+ The complex number to divide by.
+
+
+
+ Returns the multiplicative inverse of a complex number.
+
+ The reciprocal of .
+ A complex number.
+
+
+
+ Returns the square root of a specified complex number.
+
+ The square root of .
+ A complex number.
+
+
+
+ Gets the absolute value (or magnitude) of a complex number.
+
+ The absolute value of .
+ A complex number.
+
+
+
+ Returns e raised to the power specified by a complex number.
+
+ The number e raised to the power .
+ A complex number that specifies a power.
+
+
+
+ Returns a specified complex number raised to a power specified by a complex number.
+
+ The complex number raised to the power .
+ A complex number to be raised to a power.
+ A complex number that specifies a power.
+
+
+
+ Returns a specified complex number raised to a power specified by a single-precision floating-point number.
+
+ The complex number raised to the power .
+ A complex number to be raised to a power.
+ A single-precision floating-point number that specifies a power.
+
+
+
+ Returns the natural (base e) logarithm of a specified complex number.
+
+ The natural (base e) logarithm of .
+ A complex number.
+
+
+
+ Returns the logarithm of a specified complex number in a specified base.
+
+ The logarithm of in base .
+ A complex number.
+ The base of the logarithm.
+
+
+
+ Returns the base-10 logarithm of a specified complex number.
+
+ The base-10 logarithm of .
+ A complex number.
+
+
+
+ Returns the sine of the specified complex number.
+
+ The sine of .
+ A complex number.
+
+
+
+ Returns the cosine of the specified complex number.
+
+ The cosine of .
+ A complex number.
+
+
+
+ Returns the tangent of the specified complex number.
+
+ The tangent of .
+ A complex number.
+
+
+
+ Returns the angle that is the arc sine of the specified complex number.
+
+ The angle which is the arc sine of .
+ A complex number.
+
+
+
+ Returns the angle that is the arc cosine of the specified complex number.
+
+ The angle, measured in radians, which is the arc cosine of .
+ A complex number that represents a cosine.
+
+
+
+ Returns the angle that is the arc tangent of the specified complex number.
+
+ The angle that is the arc tangent of .
+ A complex number.
+
+
+
+ Returns the hyperbolic sine of the specified complex number.
+
+ The hyperbolic sine of .
+ A complex number.
+
+
+
+ Returns the hyperbolic cosine of the specified complex number.
+
+ The hyperbolic cosine of .
+ A complex number.
+
+
+
+ Returns the hyperbolic tangent of the specified complex number.
+
+ The hyperbolic tangent of .
+ A complex number.
+
+
+
+ Extension methods for the Complex type provided by System.Numerics
+
+
+
+
+ Gets the squared magnitude of the Complex number.
+
+ The number to perform this operation on.
+ The squared magnitude of the Complex number.
+
+
+
+ Gets the squared magnitude of the Complex number.
+
+ The number to perform this operation on.
+ The squared magnitude of the Complex number.
+
+
+
+ Gets the unity of this complex (same argument, but on the unit circle; exp(I*arg))
+
+ The unity of this Complex.
+
+
+
+ Gets the conjugate of the Complex number.
+
+ The number to perform this operation on.
+
+ The semantic of setting the conjugate is such that
+
+ // a, b of type Complex32
+ a.Conjugate = b;
+
+ is equivalent to
+
+ // a, b of type Complex32
+ a = b.Conjugate
+
+
+ The conjugate of the number.
+
+
+
+ Returns the multiplicative inverse of a complex number.
+
+
+
+
+ Exponential of this Complex (exp(x), E^x).
+
+ The number to perform this operation on.
+
+ The exponential of this complex number.
+
+
+
+
+ Natural Logarithm of this Complex (Base E).
+
+ The number to perform this operation on.
+
+ The natural logarithm of this complex number.
+
+
+
+
+ Common Logarithm of this Complex (Base 10).
+
+ The common logarithm of this complex number.
+
+
+
+ Logarithm of this Complex with custom base.
+
+ The logarithm of this complex number.
+
+
+
+ Raise this Complex to the given value.
+
+ The number to perform this operation on.
+
+ The exponent.
+
+
+ The complex number raised to the given exponent.
+
+
+
+
+ Raise this Complex to the inverse of the given value.
+
+ The number to perform this operation on.
+
+ The root exponent.
+
+
+ The complex raised to the inverse of the given exponent.
+
+
+
+
+ The Square (power 2) of this Complex
+
+ The number to perform this operation on.
+
+ The square of this complex number.
+
+
+
+
+ The Square Root (power 1/2) of this Complex
+
+ The number to perform this operation on.
+
+ The square root of this complex number.
+
+
+
+
+ Evaluate all square roots of this Complex.
+
+
+
+
+ Evaluate all cubic roots of this Complex.
+
+
+
+
+ Gets a value indicating whether the Complex32 is zero.
+
+ The number to perform this operation on.
+ true if this instance is zero; otherwise, false.
+
+
+
+ Gets a value indicating whether the Complex32 is one.
+
+ The number to perform this operation on.
+ true if this instance is one; otherwise, false.
+
+
+
+ Gets a value indicating whether the Complex32 is the imaginary unit.
+
+ true if this instance is ImaginaryOne; otherwise, false.
+ The number to perform this operation on.
+
+
+
+ Gets a value indicating whether the provided Complex32evaluates
+ to a value that is not a number.
+
+ The number to perform this operation on.
+
+ true if this instance is NaN; otherwise,
+ false.
+
+
+
+
+ Gets a value indicating whether the provided Complex32 evaluates to an
+ infinite value.
+
+ The number to perform this operation on.
+
+ true if this instance is infinite; otherwise, false.
+
+
+ True if it either evaluates to a complex infinity
+ or to a directed infinity.
+
+
+
+
+ Gets a value indicating whether the provided Complex32 is real.
+
+ The number to perform this operation on.
+ true if this instance is a real number; otherwise, false.
+
+
+
+ Gets a value indicating whether the provided Complex32 is real and not negative, that is >= 0.
+
+ The number to perform this operation on.
+
+ true if this instance is real nonnegative number; otherwise, false.
+
+
+
+
+ Returns a Norm of a value of this type, which is appropriate for measuring how
+ close this value is to zero.
+
+
+
+
+ Returns a Norm of a value of this type, which is appropriate for measuring how
+ close this value is to zero.
+
+
+
+
+ Returns a Norm of the difference of two values of this type, which is
+ appropriate for measuring how close together these two values are.
+
+
+
+
+ Returns a Norm of the difference of two values of this type, which is
+ appropriate for measuring how close together these two values are.
+
+
+
+
+ Creates a complex number based on a string. The string can be in the
+ following formats (without the quotes): 'n', 'ni', 'n +/- ni',
+ 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double.
+
+
+ A complex number containing the value specified by the given string.
+
+
+ The string to parse.
+
+
+
+
+ Creates a complex number based on a string. The string can be in the
+ following formats (without the quotes): 'n', 'ni', 'n +/- ni',
+ 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double.
+
+
+ A complex number containing the value specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific
+ formatting information.
+
+
+
+
+ Parse a part (real or complex) from a complex number.
+
+ Start Token.
+ Is set to true if the part identified itself as being imaginary.
+
+ An that supplies culture-specific
+ formatting information.
+
+ Resulting part as double.
+
+
+
+
+ Converts the string representation of a complex number to a double-precision complex number equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex number to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will contain Complex.Zero. This parameter is passed uninitialized.
+
+
+
+
+ Converts the string representation of a complex number to double-precision complex number equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex number to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized
+
+
+
+
+ Creates a Complex32 number based on a string. The string can be in the
+ following formats (without the quotes): 'n', 'ni', 'n +/- ni',
+ 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double.
+
+
+ A complex number containing the value specified by the given string.
+
+
+ the string to parse.
+
+
+
+
+ Creates a Complex32 number based on a string. The string can be in the
+ following formats (without the quotes): 'n', 'ni', 'n +/- ni',
+ 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double.
+
+
+ A complex number containing the value specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific
+ formatting information.
+
+
+
+
+ Converts the string representation of a complex number to a single-precision complex number equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex number to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized.
+
+
+
+
+ Converts the string representation of a complex number to single-precision complex number equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex number to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will contain Complex.Zero. This parameter is passed uninitialized.
+
+
+
+
+ A collection of frequently used mathematical constants.
+
+
+
+ The number e
+
+
+ The number log[2](e)
+
+
+ The number log[10](e)
+
+
+ The number log[e](2)
+
+
+ The number log[e](10)
+
+
+ The number log[e](pi)
+
+
+ The number log[e](2*pi)/2
+
+
+ The number 1/e
+
+
+ The number sqrt(e)
+
+
+ The number sqrt(2)
+
+
+ The number sqrt(3)
+
+
+ The number sqrt(1/2) = 1/sqrt(2) = sqrt(2)/2
+
+
+ The number sqrt(3)/2
+
+
+ The number pi
+
+
+ The number pi*2
+
+
+ The number pi/2
+
+
+ The number pi*3/2
+
+
+ The number pi/4
+
+
+ The number sqrt(pi)
+
+
+ The number sqrt(2pi)
+
+
+ The number sqrt(pi/2)
+
+
+ The number sqrt(2*pi*e)
+
+
+ The number log(sqrt(2*pi))
+
+
+ The number log(sqrt(2*pi*e))
+
+
+ The number log(2 * sqrt(e / pi))
+
+
+ The number 1/pi
+
+
+ The number 2/pi
+
+
+ The number 1/sqrt(pi)
+
+
+ The number 1/sqrt(2pi)
+
+
+ The number 2/sqrt(pi)
+
+
+ The number 2 * sqrt(e / pi)
+
+
+ The number (pi)/180 - factor to convert from Degree (deg) to Radians (rad).
+
+
+
+
+ The number (pi)/200 - factor to convert from NewGrad (grad) to Radians (rad).
+
+
+
+
+ The number ln(10)/20 - factor to convert from Power Decibel (dB) to Neper (Np). Use this version when the Decibel represent a power gain but the compared values are not powers (e.g. amplitude, current, voltage).
+
+
+ The number ln(10)/10 - factor to convert from Neutral Decibel (dB) to Neper (Np). Use this version when either both or neither of the Decibel and the compared values represent powers.
+
+
+ The Catalan constant
+ Sum(k=0 -> inf){ (-1)^k/(2*k + 1)2 }
+
+
+ The Euler-Mascheroni constant
+ lim(n -> inf){ Sum(k=1 -> n) { 1/k - log(n) } }
+
+
+ The number (1+sqrt(5))/2, also known as the golden ratio
+
+
+ The Glaisher constant
+ e^(1/12 - Zeta(-1))
+
+
+ The Khinchin constant
+ prod(k=1 -> inf){1+1/(k*(k+2))^log(k,2)}
+
+
+
+ The size of a double in bytes.
+
+
+
+
+ The size of an int in bytes.
+
+
+
+
+ The size of a float in bytes.
+
+
+
+
+ The size of a Complex in bytes.
+
+
+
+
+ The size of a Complex in bytes.
+
+
+
+ Speed of Light in Vacuum: c_0 = 2.99792458e8 [m s^-1] (defined, exact; 2007 CODATA)
+
+
+ Magnetic Permeability in Vacuum: mu_0 = 4*Pi * 10^-7 [N A^-2 = kg m A^-2 s^-2] (defined, exact; 2007 CODATA)
+
+
+ Electric Permittivity in Vacuum: epsilon_0 = 1/(mu_0*c_0^2) [F m^-1 = A^2 s^4 kg^-1 m^-3] (defined, exact; 2007 CODATA)
+
+
+ Characteristic Impedance of Vacuum: Z_0 = mu_0*c_0 [Ohm = m^2 kg s^-3 A^-2] (defined, exact; 2007 CODATA)
+
+
+ Newtonian Constant of Gravitation: G = 6.67429e-11 [m^3 kg^-1 s^-2] (2007 CODATA)
+
+
+ Planck's constant: h = 6.62606896e-34 [J s = m^2 kg s^-1] (2007 CODATA)
+
+
+ Reduced Planck's constant: h_bar = h / (2*Pi) [J s = m^2 kg s^-1] (2007 CODATA)
+
+
+ Planck mass: m_p = (h_bar*c_0/G)^(1/2) [kg] (2007 CODATA)
+
+
+ Planck temperature: T_p = (h_bar*c_0^5/G)^(1/2)/k [K] (2007 CODATA)
+
+
+ Planck length: l_p = h_bar/(m_p*c_0) [m] (2007 CODATA)
+
+
+ Planck time: t_p = l_p/c_0 [s] (2007 CODATA)
+
+
+ Elementary Electron Charge: e = 1.602176487e-19 [C = A s] (2007 CODATA)
+
+
+ Magnetic Flux Quantum: theta_0 = h/(2*e) [Wb = m^2 kg s^-2 A^-1] (2007 CODATA)
+
+
+ Conductance Quantum: G_0 = 2*e^2/h [S = m^-2 kg^-1 s^3 A^2] (2007 CODATA)
+
+
+ Josephson Constant: K_J = 2*e/h [Hz V^-1] (2007 CODATA)
+
+
+ Von Klitzing Constant: R_K = h/e^2 [Ohm = m^2 kg s^-3 A^-2] (2007 CODATA)
+
+
+ Bohr Magneton: mu_B = e*h_bar/2*m_e [J T^-1] (2007 CODATA)
+
+
+ Nuclear Magneton: mu_N = e*h_bar/2*m_p [J T^-1] (2007 CODATA)
+
+
+ Fine Structure Constant: alpha = e^2/4*Pi*e_0*h_bar*c_0 [1] (2007 CODATA)
+
+
+ Rydberg Constant: R_infty = alpha^2*m_e*c_0/2*h [m^-1] (2007 CODATA)
+
+
+ Bor Radius: a_0 = alpha/4*Pi*R_infty [m] (2007 CODATA)
+
+
+ Hartree Energy: E_h = 2*R_infty*h*c_0 [J] (2007 CODATA)
+
+
+ Quantum of Circulation: h/2*m_e [m^2 s^-1] (2007 CODATA)
+
+
+ Fermi Coupling Constant: G_F/(h_bar*c_0)^3 [GeV^-2] (2007 CODATA)
+
+
+ Weak Mixin Angle: sin^2(theta_W) [1] (2007 CODATA)
+
+
+ Electron Mass: [kg] (2007 CODATA)
+
+
+ Electron Mass Energy Equivalent: [J] (2007 CODATA)
+
+
+ Electron Molar Mass: [kg mol^-1] (2007 CODATA)
+
+
+ Electron Compton Wavelength: [m] (2007 CODATA)
+
+
+ Classical Electron Radius: [m] (2007 CODATA)
+
+
+ Thomson Cross Section: [m^2] (2002 CODATA)
+
+
+ Electron Magnetic Moment: [J T^-1] (2007 CODATA)
+
+
+ Electon G-Factor: [1] (2007 CODATA)
+
+
+ Muon Mass: [kg] (2007 CODATA)
+
+
+ Muon Mass Energy Equivalent: [J] (2007 CODATA)
+
+
+ Muon Molar Mass: [kg mol^-1] (2007 CODATA)
+
+
+ Muon Compton Wavelength: [m] (2007 CODATA)
+
+
+ Muon Magnetic Moment: [J T^-1] (2007 CODATA)
+
+
+ Muon G-Factor: [1] (2007 CODATA)
+
+
+ Tau Mass: [kg] (2007 CODATA)
+
+
+ Tau Mass Energy Equivalent: [J] (2007 CODATA)
+
+
+ Tau Molar Mass: [kg mol^-1] (2007 CODATA)
+
+
+ Tau Compton Wavelength: [m] (2007 CODATA)
+
+
+ Proton Mass: [kg] (2007 CODATA)
+
+
+ Proton Mass Energy Equivalent: [J] (2007 CODATA)
+
+
+ Proton Molar Mass: [kg mol^-1] (2007 CODATA)
+
+
+ Proton Compton Wavelength: [m] (2007 CODATA)
+
+
+ Proton Magnetic Moment: [J T^-1] (2007 CODATA)
+
+
+ Proton G-Factor: [1] (2007 CODATA)
+
+
+ Proton Shielded Magnetic Moment: [J T^-1] (2007 CODATA)
+
+
+ Proton Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA)
+
+
+ Proton Shielded Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA)
+
+
+ Neutron Mass: [kg] (2007 CODATA)
+
+
+ Neutron Mass Energy Equivalent: [J] (2007 CODATA)
+
+
+ Neutron Molar Mass: [kg mol^-1] (2007 CODATA)
+
+
+ Neuron Compton Wavelength: [m] (2007 CODATA)
+
+
+ Neutron Magnetic Moment: [J T^-1] (2007 CODATA)
+
+
+ Neutron G-Factor: [1] (2007 CODATA)
+
+
+ Neutron Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA)
+
+
+ Deuteron Mass: [kg] (2007 CODATA)
+
+
+ Deuteron Mass Energy Equivalent: [J] (2007 CODATA)
+
+
+ Deuteron Molar Mass: [kg mol^-1] (2007 CODATA)
+
+
+ Deuteron Magnetic Moment: [J T^-1] (2007 CODATA)
+
+
+ Helion Mass: [kg] (2007 CODATA)
+
+
+ Helion Mass Energy Equivalent: [J] (2007 CODATA)
+
+
+ Helion Molar Mass: [kg mol^-1] (2007 CODATA)
+
+
+ Avogadro constant: [mol^-1] (2010 CODATA)
+
+
+ The SI prefix factor corresponding to 1 000 000 000 000 000 000 000 000
+
+
+ The SI prefix factor corresponding to 1 000 000 000 000 000 000 000
+
+
+ The SI prefix factor corresponding to 1 000 000 000 000 000 000
+
+
+ The SI prefix factor corresponding to 1 000 000 000 000 000
+
+
+ The SI prefix factor corresponding to 1 000 000 000 000
+
+
+ The SI prefix factor corresponding to 1 000 000 000
+
+
+ The SI prefix factor corresponding to 1 000 000
+
+
+ The SI prefix factor corresponding to 1 000
+
+
+ The SI prefix factor corresponding to 100
+
+
+ The SI prefix factor corresponding to 10
+
+
+ The SI prefix factor corresponding to 0.1
+
+
+ The SI prefix factor corresponding to 0.01
+
+
+ The SI prefix factor corresponding to 0.001
+
+
+ The SI prefix factor corresponding to 0.000 001
+
+
+ The SI prefix factor corresponding to 0.000 000 001
+
+
+ The SI prefix factor corresponding to 0.000 000 000 001
+
+
+ The SI prefix factor corresponding to 0.000 000 000 000 001
+
+
+ The SI prefix factor corresponding to 0.000 000 000 000 000 001
+
+
+ The SI prefix factor corresponding to 0.000 000 000 000 000 000 001
+
+
+ The SI prefix factor corresponding to 0.000 000 000 000 000 000 000 001
+
+
+
+ Sets parameters for the library.
+
+
+
+
+ Use a specific provider if configured, e.g. using
+ environment variables, or fall back to the best providers.
+
+
+
+
+ Use the best provider available.
+
+
+
+
+ Use the Intel MKL native provider for linear algebra.
+ Throws if it is not available or failed to initialize, in which case the previous provider is still active.
+
+
+
+
+ Try to use the Intel MKL native provider for linear algebra.
+
+
+ True if the provider was found and initialized successfully.
+ False if it failed and the previous provider is still active.
+
+
+
+
+ Use the Nvidia CUDA native provider for linear algebra.
+ Throws if it is not available or failed to initialize, in which case the previous provider is still active.
+
+
+
+
+ Try to use the Nvidia CUDA native provider for linear algebra.
+
+
+ True if the provider was found and initialized successfully.
+ False if it failed and the previous provider is still active.
+
+
+
+
+ Use the OpenBLAS native provider for linear algebra.
+ Throws if it is not available or failed to initialize, in which case the previous provider is still active.
+
+
+
+
+ Try to use the OpenBLAS native provider for linear algebra.
+
+
+ True if the provider was found and initialized successfully.
+ False if it failed and the previous provider is still active.
+
+
+
+
+ Try to use any available native provider in an undefined order.
+
+
+ True if one of the native providers was found and successfully initialized.
+ False if it failed and the previous provider is still active.
+
+
+
+
+ Gets or sets a value indicating whether the distribution classes check validate each parameter.
+ For the multivariate distributions this could involve an expensive matrix factorization.
+ The default setting of this property is true.
+
+
+
+
+ Gets or sets a value indicating whether to use thread safe random number generators (RNG).
+ Thread safe RNG about two and half time slower than non-thread safe RNG.
+
+
+ true to use thread safe random number generators ; otherwise, false.
+
+
+
+
+ Optional path to try to load native provider binaries from.
+
+
+
+
+ Gets or sets a value indicating how many parallel worker threads shall be used
+ when parallelization is applicable.
+
+ Default to the number of processor cores, must be between 1 and 1024 (inclusive).
+
+
+
+ Gets or sets the TaskScheduler used to schedule the worker tasks.
+
+
+
+
+ Gets or sets the order of the matrix when linear algebra provider
+ must calculate multiply in parallel threads.
+
+ The order. Default 64, must be at least 3.
+
+
+
+ Gets or sets the number of elements a vector or matrix
+ must contain before we multiply threads.
+
+ Number of elements. Default 300, must be at least 3.
+
+
+
+ Numerical Derivative.
+
+
+
+
+ Initialized a NumericalDerivative with the given points and center.
+
+
+
+
+ Initialized a NumericalDerivative with the default points and center for the given order.
+
+
+
+
+ Evaluates the derivative of a scalar univariate function.
+
+ Univariate function handle.
+ Point at which to evaluate the derivative.
+ Derivative order.
+
+
+
+ Creates a function handle for the derivative of a scalar univariate function.
+
+ Univariate function handle.
+ Derivative order.
+
+
+
+ Evaluates the first derivative of a scalar univariate function.
+
+ Univariate function handle.
+ Point at which to evaluate the derivative.
+
+
+
+ Creates a function handle for the first derivative of a scalar univariate function.
+
+ Univariate function handle.
+
+
+
+ Evaluates the second derivative of a scalar univariate function.
+
+ Univariate function handle.
+ Point at which to evaluate the derivative.
+
+
+
+ Creates a function handle for the second derivative of a scalar univariate function.
+
+ Univariate function handle.
+
+
+
+ Evaluates the partial derivative of a multivariate function.
+
+ Multivariate function handle.
+ Vector at which to evaluate the derivative.
+ Index of independent variable for partial derivative.
+ Derivative order.
+
+
+
+ Creates a function handle for the partial derivative of a multivariate function.
+
+ Multivariate function handle.
+ Index of independent variable for partial derivative.
+ Derivative order.
+
+
+
+ Evaluates the first partial derivative of a multivariate function.
+
+ Multivariate function handle.
+ Vector at which to evaluate the derivative.
+ Index of independent variable for partial derivative.
+
+
+
+ Creates a function handle for the first partial derivative of a multivariate function.
+
+ Multivariate function handle.
+ Index of independent variable for partial derivative.
+
+
+
+ Evaluates the partial derivative of a bivariate function.
+
+ Bivariate function handle.
+ First argument at which to evaluate the derivative.
+ Second argument at which to evaluate the derivative.
+ Index of independent variable for partial derivative.
+ Derivative order.
+
+
+
+ Creates a function handle for the partial derivative of a bivariate function.
+
+ Bivariate function handle.
+ Index of independent variable for partial derivative.
+ Derivative order.
+
+
+
+ Evaluates the first partial derivative of a bivariate function.
+
+ Bivariate function handle.
+ First argument at which to evaluate the derivative.
+ Second argument at which to evaluate the derivative.
+ Index of independent variable for partial derivative.
+
+
+
+ Creates a function handle for the first partial derivative of a bivariate function.
+
+ Bivariate function handle.
+ Index of independent variable for partial derivative.
+
+
+
+ Class to calculate finite difference coefficients using Taylor series expansion method.
+
+
+ For n points, coefficients are calculated up to the maximum derivative order possible (n-1).
+ The current function value position specifies the "center" for surrounding coefficients.
+ Selecting the first, middle or last positions represent forward, backwards and central difference methods.
+
+
+
+
+
+
+ Number of points for finite difference coefficients. Changing this value recalculates the coefficients table.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Number of finite difference coefficients.
+
+
+
+ Gets the finite difference coefficients for a specified center and order.
+
+ Current function position with respect to coefficients. Must be within point range.
+ Order of finite difference coefficients.
+ Vector of finite difference coefficients.
+
+
+
+ Gets the finite difference coefficients for all orders at a specified center.
+
+ Current function position with respect to coefficients. Must be within point range.
+ Rectangular array of coefficients, with columns specifying order.
+
+
+
+ Type of finite different step size.
+
+
+
+
+ The absolute step size value will be used in numerical derivatives, regardless of order or function parameters.
+
+
+
+
+ A base step size value, h, will be scaled according to the function input parameter. A common example is hx = h*(1+abs(x)), however
+ this may vary depending on implementation. This definition only guarantees that the only scaling will be relative to the
+ function input parameter and not the order of the finite difference derivative.
+
+
+
+
+ A base step size value, eps (typically machine precision), is scaled according to the finite difference coefficient order
+ and function input parameter. The initial scaling according to finite different coefficient order can be thought of as producing a
+ base step size, h, that is equivalent to scaling. This step size is then scaled according to the function
+ input parameter. Although implementation may vary, an example of second order accurate scaling may be (eps)^(1/3)*(1+abs(x)).
+
+
+
+
+ Class to evaluate the numerical derivative of a function using finite difference approximations.
+ Variable point and center methods can be initialized .
+ This class can also be used to return function handles (delegates) for a fixed derivative order and variable.
+ It is possible to evaluate the derivative and partial derivative of univariate and multivariate functions respectively.
+
+
+
+
+ Initializes a NumericalDerivative class with the default 3 point center difference method.
+
+
+
+
+ Initialized a NumericalDerivative class.
+
+ Number of points for finite difference derivatives.
+ Location of the center with respect to other points. Value ranges from zero to points-1.
+
+
+
+ Sets and gets the finite difference step size. This value is for each function evaluation if relative step size types are used.
+ If the base step size used in scaling is desired, see .
+
+
+ Setting then getting the StepSize may return a different value. This is not unusual since a user-defined step size is converted to a
+ base-2 representable number to improve finite difference accuracy.
+
+
+
+
+ Sets and gets the base finite difference step size. This assigned value to this parameter is only used if is set to RelativeX.
+ However, if the StepType is Relative, it will contain the base step size computed from based on the finite difference order.
+
+
+
+
+ Sets and gets the base finite difference step size. This parameter is only used if is set to Relative.
+ By default this is set to machine epsilon, from which is computed.
+
+
+
+
+ Sets and gets the location of the center point for the finite difference derivative.
+
+
+
+
+ Number of times a function is evaluated for numerical derivatives.
+
+
+
+
+ Type of step size for computing finite differences. If set to absolute, dx = h.
+ If set to relative, dx = (1+abs(x))*h^(2/(order+1)). This provides accurate results when
+ h is approximately equal to the square-root of machine accuracy, epsilon.
+
+
+
+
+ Evaluates the derivative of equidistant points using the finite difference method.
+
+ Vector of points StepSize apart.
+ Derivative order.
+ Finite difference step size.
+ Derivative of points of the specified order.
+
+
+
+ Evaluates the derivative of a scalar univariate function.
+
+
+ Supplying the optional argument currentValue will reduce the number of function evaluations
+ required to calculate the finite difference derivative.
+
+ Function handle.
+ Point at which to compute the derivative.
+ Derivative order.
+ Current function value at center.
+ Function derivative at x of the specified order.
+
+
+
+ Creates a function handle for the derivative of a scalar univariate function.
+
+ Input function handle.
+ Derivative order.
+ Function handle that evaluates the derivative of input function at a fixed order.
+
+
+
+ Evaluates the partial derivative of a multivariate function.
+
+ Multivariate function handle.
+ Vector at which to evaluate the derivative.
+ Index of independent variable for partial derivative.
+ Derivative order.
+ Current function value at center.
+ Function partial derivative at x of the specified order.
+
+
+
+ Evaluates the partial derivatives of a multivariate function array.
+
+
+ This function assumes the input vector x is of the correct length for f.
+
+ Multivariate vector function array handle.
+ Vector at which to evaluate the derivatives.
+ Index of independent variable for partial derivative.
+ Derivative order.
+ Current function value at center.
+ Vector of functions partial derivatives at x of the specified order.
+
+
+
+ Creates a function handle for the partial derivative of a multivariate function.
+
+ Input function handle.
+ Index of the independent variable for partial derivative.
+ Derivative order.
+ Function handle that evaluates partial derivative of input function at a fixed order.
+
+
+
+ Creates a function handle for the partial derivative of a vector multivariate function.
+
+ Input function handle.
+ Index of the independent variable for partial derivative.
+ Derivative order.
+ Function handle that evaluates partial derivative of input function at fixed order.
+
+
+
+ Evaluates the mixed partial derivative of variable order for multivariate functions.
+
+
+ This function recursively uses to evaluate mixed partial derivative.
+ Therefore, it is more efficient to call for higher order derivatives of
+ a single independent variable.
+
+ Multivariate function handle.
+ Points at which to evaluate the derivative.
+ Vector of indices for the independent variables at descending derivative orders.
+ Highest order of differentiation.
+ Current function value at center.
+ Function mixed partial derivative at x of the specified order.
+
+
+
+ Evaluates the mixed partial derivative of variable order for multivariate function arrays.
+
+
+ This function recursively uses to evaluate mixed partial derivative.
+ Therefore, it is more efficient to call for higher order derivatives of
+ a single independent variable.
+
+ Multivariate function array handle.
+ Vector at which to evaluate the derivative.
+ Vector of indices for the independent variables at descending derivative orders.
+ Highest order of differentiation.
+ Current function value at center.
+ Function mixed partial derivatives at x of the specified order.
+
+
+
+ Creates a function handle for the mixed partial derivative of a multivariate function.
+
+ Input function handle.
+ Vector of indices for the independent variables at descending derivative orders.
+ Highest derivative order.
+ Function handle that evaluates the fixed mixed partial derivative of input function at fixed order.
+
+
+
+ Creates a function handle for the mixed partial derivative of a multivariate vector function.
+
+ Input vector function handle.
+ Vector of indices for the independent variables at descending derivative orders.
+ Highest derivative order.
+ Function handle that evaluates the fixed mixed partial derivative of input function at fixed order.
+
+
+
+ Resets the evaluation counter.
+
+
+
+
+ Class for evaluating the Hessian of a smooth continuously differentiable function using finite differences.
+ By default, a central 3-point method is used.
+
+
+
+
+ Number of function evaluations.
+
+
+
+
+ Creates a numerical Hessian object with a three point central difference method.
+
+
+
+
+ Creates a numerical Hessian with a specified differentiation scheme.
+
+ Number of points for Hessian evaluation.
+ Center point for differentiation.
+
+
+
+ Evaluates the Hessian of the scalar univariate function f at points x.
+
+ Scalar univariate function handle.
+ Point at which to evaluate Hessian.
+ Hessian tensor.
+
+
+
+ Evaluates the Hessian of a multivariate function f at points x.
+
+
+ This method of computing the Hessian is only valid for Lipschitz continuous functions.
+ The function mirrors the Hessian along the diagonal since d2f/dxdy = d2f/dydx for continuously differentiable functions.
+
+ Multivariate function handle.>
+ Points at which to evaluate Hessian.>
+ Hessian tensor.
+
+
+
+ Resets the function evaluation counter for the Hessian.
+
+
+
+
+ Class for evaluating the Jacobian of a function using finite differences.
+ By default, a central 3-point method is used.
+
+
+
+
+ Number of function evaluations.
+
+
+
+
+ Creates a numerical Jacobian object with a three point central difference method.
+
+
+
+
+ Creates a numerical Jacobian with a specified differentiation scheme.
+
+ Number of points for Jacobian evaluation.
+ Center point for differentiation.
+
+
+
+ Evaluates the Jacobian of scalar univariate function f at point x.
+
+ Scalar univariate function handle.
+ Point at which to evaluate Jacobian.
+ Jacobian vector.
+
+
+
+ Evaluates the Jacobian of a multivariate function f at vector x.
+
+
+ This function assumes that the length of vector x consistent with the argument count of f.
+
+ Multivariate function handle.
+ Points at which to evaluate Jacobian.
+ Jacobian vector.
+
+
+
+ Evaluates the Jacobian of a multivariate function f at vector x given a current function value.
+
+
+ To minimize the number of function evaluations, a user can supply the current value of the function
+ to be used in computing the Jacobian. This value must correspond to the "center" location for the
+ finite differencing. If a scheme is used where the center value is not evaluated, this will provide no
+ added efficiency. This method also assumes that the length of vector x consistent with the argument count of f.
+
+ Multivariate function handle.
+ Points at which to evaluate Jacobian.
+ Current function value at finite difference center.
+ Jacobian vector.
+
+
+
+ Evaluates the Jacobian of a multivariate function array f at vector x.
+
+ Multivariate function array handle.
+ Vector at which to evaluate Jacobian.
+ Jacobian matrix.
+
+
+
+ Evaluates the Jacobian of a multivariate function array f at vector x given a vector of current function values.
+
+
+ To minimize the number of function evaluations, a user can supply a vector of current values of the functions
+ to be used in computing the Jacobian. These value must correspond to the "center" location for the
+ finite differencing. If a scheme is used where the center value is not evaluated, this will provide no
+ added efficiency. This method also assumes that the length of vector x consistent with the argument count of f.
+
+ Multivariate function array handle.
+ Vector at which to evaluate Jacobian.
+ Vector of current function values.
+ Jacobian matrix.
+
+
+
+ Resets the function evaluation counter for the Jacobian.
+
+
+
+
+ Evaluates the Riemann-Liouville fractional derivative that uses the double exponential integration.
+
+
+ order = 1.0 : normal derivative
+ order = 0.5 : semi-derivative
+ order = -0.5 : semi-integral
+ order = -1.0 : normal integral
+
+ The analytic smooth function to differintegrate.
+ The evaluation point.
+ The order of fractional derivative.
+ The reference point of integration.
+ The expected relative accuracy of the Double-Exponential integration.
+ Approximation of the differintegral of order n at x.
+
+
+
+ Evaluates the Riemann-Liouville fractional derivative that uses the Gauss-Legendre integration.
+
+
+ order = 1.0 : normal derivative
+ order = 0.5 : semi-derivative
+ order = -0.5 : semi-integral
+ order = -1.0 : normal integral
+
+ The analytic smooth function to differintegrate.
+ The evaluation point.
+ The order of fractional derivative.
+ The reference point of integration.
+ The number of Gauss-Legendre points.
+ Approximation of the differintegral of order n at x.
+
+
+
+ Evaluates the Riemann-Liouville fractional derivative that uses the Gauss-Kronrod integration.
+
+
+ order = 1.0 : normal derivative
+ order = 0.5 : semi-derivative
+ order = -0.5 : semi-integral
+ order = -1.0 : normal integral
+
+ The analytic smooth function to differintegrate.
+ The evaluation point.
+ The order of fractional derivative.
+ The reference point of integration.
+ The expected relative accuracy of the Gauss-Kronrod integration.
+ The number of Gauss-Kronrod points. Pre-computed for 15, 21, 31, 41, 51 and 61 points.
+ Approximation of the differintegral of order n at x.
+
+
+
+ Metrics to measure the distance between two structures.
+
+
+
+
+ Sum of Absolute Difference (SAD), i.e. the L1-norm (Manhattan) of the difference.
+
+
+
+
+ Sum of Absolute Difference (SAD), i.e. the L1-norm (Manhattan) of the difference.
+
+
+
+
+ Sum of Absolute Difference (SAD), i.e. the L1-norm (Manhattan) of the difference.
+
+
+
+
+ Mean-Absolute Error (MAE), i.e. the normalized L1-norm (Manhattan) of the difference.
+
+
+
+
+ Mean-Absolute Error (MAE), i.e. the normalized L1-norm (Manhattan) of the difference.
+
+
+
+
+ Mean-Absolute Error (MAE), i.e. the normalized L1-norm (Manhattan) of the difference.
+
+
+
+
+ Sum of Squared Difference (SSD), i.e. the squared L2-norm (Euclidean) of the difference.
+
+
+
+
+ Sum of Squared Difference (SSD), i.e. the squared L2-norm (Euclidean) of the difference.
+
+
+
+
+ Sum of Squared Difference (SSD), i.e. the squared L2-norm (Euclidean) of the difference.
+
+
+
+
+ Mean-Squared Error (MSE), i.e. the normalized squared L2-norm (Euclidean) of the difference.
+
+
+
+
+ Mean-Squared Error (MSE), i.e. the normalized squared L2-norm (Euclidean) of the difference.
+
+
+
+
+ Mean-Squared Error (MSE), i.e. the normalized squared L2-norm (Euclidean) of the difference.
+
+
+
+
+ Euclidean Distance, i.e. the L2-norm of the difference.
+
+
+
+
+ Euclidean Distance, i.e. the L2-norm of the difference.
+
+
+
+
+ Euclidean Distance, i.e. the L2-norm of the difference.
+
+
+
+
+ Manhattan Distance, i.e. the L1-norm of the difference.
+
+
+
+
+ Manhattan Distance, i.e. the L1-norm of the difference.
+
+
+
+
+ Manhattan Distance, i.e. the L1-norm of the difference.
+
+
+
+
+ Chebyshev Distance, i.e. the Infinity-norm of the difference.
+
+
+
+
+ Chebyshev Distance, i.e. the Infinity-norm of the difference.
+
+
+
+
+ Chebyshev Distance, i.e. the Infinity-norm of the difference.
+
+
+
+
+ Minkowski Distance, i.e. the generalized p-norm of the difference.
+
+
+
+
+ Minkowski Distance, i.e. the generalized p-norm of the difference.
+
+
+
+
+ Minkowski Distance, i.e. the generalized p-norm of the difference.
+
+
+
+
+ Canberra Distance, a weighted version of the L1-norm of the difference.
+
+
+
+
+ Canberra Distance, a weighted version of the L1-norm of the difference.
+
+
+
+
+ Cosine Distance, representing the angular distance while ignoring the scale.
+
+
+
+
+ Cosine Distance, representing the angular distance while ignoring the scale.
+
+
+
+
+ Hamming Distance, i.e. the number of positions that have different values in the vectors.
+
+
+
+
+ Hamming Distance, i.e. the number of positions that have different values in the vectors.
+
+
+
+
+ Pearson's distance, i.e. 1 - the person correlation coefficient.
+
+
+
+
+ Jaccard distance, i.e. 1 - the Jaccard index.
+
+ Thrown if a or b are null.
+ Throw if a and b are of different lengths.
+ Jaccard distance.
+
+
+
+ Jaccard distance, i.e. 1 - the Jaccard index.
+
+ Thrown if a or b are null.
+ Throw if a and b are of different lengths.
+ Jaccard distance.
+
+
+
+ Discrete Univariate Bernoulli distribution.
+ The Bernoulli distribution is a distribution over bits. The parameter
+ p specifies the probability that a 1 is generated.
+ Wikipedia - Bernoulli distribution.
+
+
+
+
+ Initializes a new instance of the Bernoulli class.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ If the Bernoulli parameter is not in the range [0,1].
+
+
+
+ Initializes a new instance of the Bernoulli class.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ The random number generator which is used to draw random samples.
+ If the Bernoulli parameter is not in the range [0,1].
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Gets the probability of generating a one. Range: 0 ≤ p ≤ 1.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets all modes of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ the cumulative distribution at location .
+
+
+
+
+ Generates one sample from the Bernoulli distribution.
+
+ The random source to use.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ A random sample from the Bernoulli distribution.
+
+
+
+ Samples a Bernoulli distributed random variable.
+
+ A sample from the Bernoulli distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of Bernoulli distributed random variables.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples a Bernoulli distributed random variable.
+
+ The random number generator to use.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ A sample from the Bernoulli distribution.
+
+
+
+ Samples a sequence of Bernoulli distributed random variables.
+
+ The random number generator to use.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ a sequence of samples from the distribution.
+
+
+
+ Samples a Bernoulli distributed random variable.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ A sample from the Bernoulli distribution.
+
+
+
+ Samples a sequence of Bernoulli distributed random variables.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Beta distribution.
+ For details about this distribution, see
+ Wikipedia - Beta distribution.
+
+
+ There are a few special cases for the parameterization of the Beta distribution. When both
+ shape parameters are positive infinity, the Beta distribution degenerates to a point distribution
+ at 0.5. When one of the shape parameters is positive infinity, the distribution degenerates to a point
+ distribution at the positive infinity. When both shape parameters are 0.0, the Beta distribution
+ degenerates to a Bernoulli distribution with parameter 0.5. When one shape parameter is 0.0, the
+ distribution degenerates to a point distribution at the non-zero shape parameter.
+
+
+
+
+ Initializes a new instance of the Beta class.
+
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+
+
+
+ Initializes a new instance of the Beta class.
+
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ A string representation of the Beta distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+
+
+
+ Gets the α shape parameter of the Beta distribution. Range: α ≥ 0.
+
+
+
+
+ Gets the β shape parameter of the Beta distribution. Range: β ≥ 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the Beta distribution.
+
+
+
+
+ Gets the variance of the Beta distribution.
+
+
+
+
+ Gets the standard deviation of the Beta distribution.
+
+
+
+
+ Gets the entropy of the Beta distribution.
+
+
+
+
+ Gets the skewness of the Beta distribution.
+
+
+
+
+ Gets the mode of the Beta distribution; when there are multiple answers, this routine will return 0.5.
+
+
+
+
+ Gets the median of the Beta distribution.
+
+
+
+
+ Gets the minimum of the Beta distribution.
+
+
+
+
+ Gets the maximum of the Beta distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+ WARNING: currently not an explicit implementation, hence slow and unreliable.
+
+
+
+ Generates a sample from the Beta distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Beta distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples Beta distributed random variables by sampling two Gamma variables and normalizing.
+
+ The random number generator to use.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ a random number from the Beta distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ the inverse cumulative density at .
+
+ WARNING: currently not an explicit implementation, hence slow and unreliable.
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Discrete Univariate Beta-Binomial distribution.
+ The beta-binomial distribution is a family of discrete probability distributions on a finite support of non-negative integers arising
+ when the probability of success in each of a fixed or known number of Bernoulli trials is either unknown or random.
+ The beta-binomial distribution is the binomial distribution in which the probability of success at each of n trials is not fixed but randomly drawn from a beta distribution.
+ It is frequently used in Bayesian statistics, empirical Bayes methods and classical statistics to capture overdispersion in binomial type distributed data.
+ Wikipedia - Beta-Binomial distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of Bernoulli trials n - n is a positive integer
+ Shape parameter alpha of the Beta distribution. Range: a > 0.
+ Shape parameter beta of the Beta distribution. Range: b > 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The number of Bernoulli trials n - n is a positive integer
+ Shape parameter alpha of the Beta distribution. Range: a > 0.
+ Shape parameter beta of the Beta distribution. Range: b > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The number of Bernoulli trials n - n is a positive integer
+ Shape parameter alpha of the Beta distribution. Range: a > 0.
+ Shape parameter beta of the Beta distribution. Range: b > 0.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The number of Bernoulli trials n - n is a positive integer
+ Shape parameter alpha of the Beta distribution. Range: a > 0.
+ Shape parameter beta of the Beta distribution. Range: b > 0.
+ The location in the domain where we want to evaluate the probability mass function.
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The number of Bernoulli trials n - n is a positive integer
+ Shape parameter alpha of the Beta distribution. Range: a > 0.
+ Shape parameter beta of the Beta distribution. Range: b > 0.
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The number of Bernoulli trials n - n is a positive integer
+ Shape parameter alpha of the Beta distribution. Range: a > 0.
+ Shape parameter beta of the Beta distribution. Range: b > 0.
+ The location in the domain where we want to evaluate the probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The number of Bernoulli trials n - n is a positive integer
+ Shape parameter alpha of the Beta distribution. Range: a > 0.
+ Shape parameter beta of the Beta distribution. Range: b > 0.
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Samples BetaBinomial distributed random variables by sampling a Beta distribution then passing to a Binomial distribution.
+
+ The random number generator to use.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ The number of trials (n). Range: n ≥ 0.
+ a random number from the BetaBinomial distribution.
+
+
+
+ Samples a BetaBinomial distributed random variable.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of BetaBinomial distributed random variables.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples a BetaBinomial distributed random variable.
+
+ The random number generator to use.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ The number of trials (n). Range: n ≥ 0.
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ The number of trials (n). Range: n ≥ 0.
+
+
+
+ Samples an array of BetaBinomial distributed random variables.
+
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ The number of trials (n). Range: n ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The α shape parameter of the Beta distribution. Range: α ≥ 0.
+ The β shape parameter of the Beta distribution. Range: β ≥ 0.
+ The number of trials (n). Range: n ≥ 0.
+
+
+
+ Initializes a new instance of the BetaScaled class.
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+
+
+
+ Initializes a new instance of the BetaScaled class.
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ Create a Beta PERT distribution, used in risk analysis and other domains where an expert forecast
+ is used to construct an underlying beta distribution.
+
+ The minimum value.
+ The maximum value.
+ The most likely value (mode).
+ The random number generator which is used to draw random samples.
+ The Beta distribution derived from the PERT parameters.
+
+
+
+ A string representation of the distribution.
+
+ A string representation of the BetaScaled distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+
+
+
+ Gets the α shape parameter of the BetaScaled distribution. Range: α > 0.
+
+
+
+
+ Gets the β shape parameter of the BetaScaled distribution. Range: β > 0.
+
+
+
+
+ Gets the location (μ) of the BetaScaled distribution.
+
+
+
+
+ Gets the scale (σ) of the BetaScaled distribution. Range: σ > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the BetaScaled distribution.
+
+
+
+
+ Gets the variance of the BetaScaled distribution.
+
+
+
+
+ Gets the standard deviation of the BetaScaled distribution.
+
+
+
+
+ Gets the entropy of the BetaScaled distribution.
+
+
+
+
+ Gets the skewness of the BetaScaled distribution.
+
+
+
+
+ Gets the mode of the BetaScaled distribution; when there are multiple answers, this routine will return 0.5.
+
+
+
+
+ Gets the median of the BetaScaled distribution.
+
+
+
+
+ Gets the minimum of the BetaScaled distribution.
+
+
+
+
+ Gets the maximum of the BetaScaled distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+ WARNING: currently not an explicit implementation, hence slow and unreliable.
+
+
+
+ Generates a sample from the distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+ WARNING: currently not an explicit implementation, hence slow and unreliable.
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The α shape parameter of the BetaScaled distribution. Range: α > 0.
+ The β shape parameter of the BetaScaled distribution. Range: β > 0.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Discrete Univariate Binomial distribution.
+ For details about this distribution, see
+ Wikipedia - Binomial distribution.
+
+
+ The distribution is parameterized by a probability (between 0.0 and 1.0).
+
+
+
+
+ Initializes a new instance of the Binomial class.
+
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ If is not in the interval [0.0,1.0].
+ If is negative.
+
+
+
+ Initializes a new instance of the Binomial class.
+
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ The random number generator which is used to draw random samples.
+ If is not in the interval [0.0,1.0].
+ If is negative.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+
+
+
+ Gets the success probability in each trial. Range: 0 ≤ p ≤ 1.
+
+
+
+
+ Gets the number of trials. Range: n ≥ 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets all modes of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the Binomial distribution without doing parameter checking.
+
+ The random number generator to use.
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ The number of successful trials.
+
+
+
+ Samples a Binomially distributed random variable.
+
+ The number of successes in N trials.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of Binomially distributed random variables.
+
+ a sequence of successes in N trials.
+
+
+
+ Samples a binomially distributed random variable.
+
+ The random number generator to use.
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ The number of successes in trials.
+
+
+
+ Samples a sequence of binomially distributed random variable.
+
+ The random number generator to use.
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ a sequence of successes in trials.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ a sequence of successes in trials.
+
+
+
+ Samples a binomially distributed random variable.
+
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ The number of successes in trials.
+
+
+
+ Samples a sequence of binomially distributed random variable.
+
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ a sequence of successes in trials.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The success probability (p) in each trial. Range: 0 ≤ p ≤ 1.
+ The number of trials (n). Range: n ≥ 0.
+ a sequence of successes in trials.
+
+
+
+ Gets the scale (a) of the distribution. Range: a > 0.
+
+
+
+
+ Gets the first shape parameter (c) of the distribution. Range: c > 0.
+
+
+
+
+ Gets the second shape parameter (k) of the distribution. Range: k > 0.
+
+
+
+
+ Initializes a new instance of the Burr Type XII class.
+
+ The scale parameter a of the Burr distribution. Range: a > 0.
+ The first shape parameter c of the Burr distribution. Range: c > 0.
+ The second shape parameter k of the Burr distribution. Range: k > 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The scale parameter a of the Burr distribution. Range: a > 0.
+ The first shape parameter c of the Burr distribution. Range: c > 0.
+ The second shape parameter k of the Burr distribution. Range: k > 0.
+
+
+
+ Gets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the Burr distribution.
+
+
+
+
+ Gets the variance of the Burr distribution.
+
+
+
+
+ Gets the standard deviation of the Burr distribution.
+
+
+
+
+ Gets the mode of the Burr distribution.
+
+
+
+
+ Gets the minimum of the Burr distribution.
+
+
+
+
+ Gets the maximum of the Burr distribution.
+
+
+
+
+ Gets the entropy of the Burr distribution (currently not supported).
+
+
+
+
+ Gets the skewness of the Burr distribution.
+
+
+
+
+ Gets the median of the Burr distribution.
+
+
+
+
+ Generates a sample from the Burr distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+
+
+
+ Generates a sequence of samples from the Burr distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the Burr distribution.
+
+ The random number generator to use.
+ The scale parameter a of the Burr distribution. Range: a > 0.
+ The first shape parameter c of the Burr distribution. Range: c > 0.
+ The second shape parameter k of the Burr distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The scale parameter a of the Burr distribution. Range: a > 0.
+ The first shape parameter c of the Burr distribution. Range: c > 0.
+ The second shape parameter k of the Burr distribution. Range: k > 0.
+
+
+
+ Generates a sequence of samples from the Burr distribution.
+
+ The random number generator to use.
+ The scale parameter a of the Burr distribution. Range: a > 0.
+ The first shape parameter c of the Burr distribution. Range: c > 0.
+ The second shape parameter k of the Burr distribution. Range: k > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Gets the n-th raw moment of the distribution.
+
+ The order (n) of the moment. Range: n ≥ 1.
+ the n-th moment of the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The scale parameter a of the Burr distribution. Range: a > 0.
+ The first shape parameter c of the Burr distribution. Range: c > 0.
+ The second shape parameter k of the Burr distribution. Range: k > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The scale parameter a of the Burr distribution. Range: a > 0.
+ The first shape parameter c of the Burr distribution. Range: c > 0.
+ The second shape parameter k of the Burr distribution. Range: k > 0.
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The scale parameter a of the Burr distribution. Range: a > 0.
+ The first shape parameter c of the Burr distribution. Range: c > 0.
+ The second shape parameter k of the Burr distribution. Range: k > 0.
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Discrete Univariate Categorical distribution.
+ For details about this distribution, see
+ Wikipedia - Categorical distribution. This
+ distribution is sometimes called the Discrete distribution.
+
+
+ The distribution is parameterized by a vector of ratios: in other words, the parameter
+ does not have to be normalized and sum to 1. The reason is that some vectors can't be exactly normalized
+ to sum to 1 in floating point representation.
+
+
+ Support: 0..k where k = length(probability mass array)-1
+
+
+
+
+ Initializes a new instance of the Categorical class.
+
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ If any of the probabilities are negative or do not sum to one.
+
+
+
+ Initializes a new instance of the Categorical class.
+
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ The random number generator which is used to draw random samples.
+ If any of the probabilities are negative or do not sum to one.
+
+
+
+ Initializes a new instance of the Categorical class from a . The distribution
+ will not be automatically updated when the histogram changes. The categorical distribution will have
+ one value for each bucket and a probability for that value proportional to the bucket count.
+
+ The histogram from which to create the categorical variable.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Checks whether the parameters of the distribution are valid.
+
+ An array of nonnegative ratios: this array does not need to be normalized as this is often impossible using floating point arithmetic.
+ If any of the probabilities are negative returns false, or if the sum of parameters is 0.0; otherwise true
+
+
+
+ Checks whether the parameters of the distribution are valid.
+
+ An array of nonnegative ratios: this array does not need to be normalized as this is often impossible using floating point arithmetic.
+ If any of the probabilities are negative returns false, or if the sum of parameters is 0.0; otherwise true
+
+
+
+ Gets the probability mass vector (non-negative ratios) of the multinomial.
+
+ Sometimes the normalized probability vector cannot be represented exactly in a floating point representation.
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+ Throws a .
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets he mode of the distribution.
+
+ Throws a .
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability.
+
+ A real number between 0 and 1.
+ An integer between 0 and the size of the categorical (exclusive), that corresponds to the inverse CDF for the given probability.
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability.
+
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ A real number between 0 and 1.
+ An integer between 0 and the size of the categorical (exclusive), that corresponds to the inverse CDF for the given probability.
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability.
+
+ An array corresponding to a CDF for a categorical distribution. Not assumed to be normalized.
+ A real number between 0 and 1.
+ An integer between 0 and the size of the categorical (exclusive), that corresponds to the inverse CDF for the given probability.
+
+
+
+ Computes the cumulative distribution function. This method performs no parameter checking.
+ If the probability mass was normalized, the resulting cumulative distribution is normalized as well (up to numerical errors).
+
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ An array representing the unnormalized cumulative distribution function.
+
+
+
+ Returns one trials from the categorical distribution.
+
+ The random number generator to use.
+ The (unnormalized) cumulative distribution of the probability distribution.
+ One sample from the categorical distribution implied by .
+
+
+
+ Samples a Binomially distributed random variable.
+
+ The number of successful trials.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of Bernoulli distributed random variables.
+
+ a sequence of successful trial counts.
+
+
+
+ Samples one categorical distributed random variable; also known as the Discrete distribution.
+
+ The random number generator to use.
+ An array of nonnegative ratios. Not assumed to be normalized.
+ One random integer between 0 and the size of the categorical (exclusive).
+
+
+
+ Samples a categorically distributed random variable.
+
+ The random number generator to use.
+ An array of nonnegative ratios. Not assumed to be normalized.
+ random integers between 0 and the size of the categorical (exclusive).
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ An array of nonnegative ratios. Not assumed to be normalized.
+ random integers between 0 and the size of the categorical (exclusive).
+
+
+
+ Samples one categorical distributed random variable; also known as the Discrete distribution.
+
+ An array of nonnegative ratios. Not assumed to be normalized.
+ One random integer between 0 and the size of the categorical (exclusive).
+
+
+
+ Samples a categorically distributed random variable.
+
+ An array of nonnegative ratios. Not assumed to be normalized.
+ random integers between 0 and the size of the categorical (exclusive).
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ An array of nonnegative ratios. Not assumed to be normalized.
+ random integers between 0 and the size of the categorical (exclusive).
+
+
+
+ Samples one categorical distributed random variable; also known as the Discrete distribution.
+
+ The random number generator to use.
+ An array of the cumulative distribution. Not assumed to be normalized.
+ One random integer between 0 and the size of the categorical (exclusive).
+
+
+
+ Samples a categorically distributed random variable.
+
+ The random number generator to use.
+ An array of the cumulative distribution. Not assumed to be normalized.
+ random integers between 0 and the size of the categorical (exclusive).
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ An array of the cumulative distribution. Not assumed to be normalized.
+ random integers between 0 and the size of the categorical (exclusive).
+
+
+
+ Samples one categorical distributed random variable; also known as the Discrete distribution.
+
+ An array of the cumulative distribution. Not assumed to be normalized.
+ One random integer between 0 and the size of the categorical (exclusive).
+
+
+
+ Samples a categorically distributed random variable.
+
+ An array of the cumulative distribution. Not assumed to be normalized.
+ random integers between 0 and the size of the categorical (exclusive).
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ An array of the cumulative distribution. Not assumed to be normalized.
+ random integers between 0 and the size of the categorical (exclusive).
+
+
+
+ Continuous Univariate Cauchy distribution.
+ The Cauchy distribution is a symmetric continuous probability distribution. For details about this distribution, see
+ Wikipedia - Cauchy distribution.
+
+
+
+
+ Initializes a new instance of the class with the location parameter set to 0 and the scale parameter set to 1
+
+
+
+
+ Initializes a new instance of the class.
+
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+
+
+
+ Gets the location (x0) of the distribution.
+
+
+
+
+ Gets the scale (γ) of the distribution. Range: γ > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Draws a random sample from the distribution.
+
+ A random number from this distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Cauchy distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The location (x0) of the distribution.
+ The scale (γ) of the distribution. Range: γ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Chi distribution.
+ This distribution is a continuous probability distribution. The distribution usually arises when a k-dimensional vector's orthogonal
+ components are independent and each follow a standard normal distribution. The length of the vector will
+ then have a chi distribution.
+ Wikipedia - Chi distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+
+
+
+ Gets the degrees of freedom (k) of the Chi distribution. Range: k > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the Chi distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Chi distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples the distribution.
+
+ The random number generator to use.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a random number from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Chi-Squared distribution.
+ This distribution is a sum of the squares of k independent standard normal random variables.
+ Wikipedia - ChiSquare distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+
+
+
+ Gets the degrees of freedom (k) of the Chi-Squared distribution. Range: k > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the ChiSquare distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the ChiSquare distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples the distribution.
+
+ The random number generator to use.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a random number from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+ Generates a sample from the ChiSquare distribution.
+
+ The random number generator to use.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sample from the ChiSquare distribution.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The degrees of freedom (k) of the distribution. Range: k > 0.
+ a sample from the distribution.
+
+
+
+ Continuous Univariate Uniform distribution.
+ The continuous uniform distribution is a distribution over real numbers. For details about this distribution, see
+ Wikipedia - Continuous uniform distribution.
+
+
+
+
+ Initializes a new instance of the ContinuousUniform class with lower bound 0 and upper bound 1.
+
+
+
+
+ Initializes a new instance of the ContinuousUniform class with given lower and upper bounds.
+
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ If the upper bound is smaller than the lower bound.
+
+
+
+ Initializes a new instance of the ContinuousUniform class with given lower and upper bounds.
+
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ The random number generator which is used to draw random samples.
+ If the upper bound is smaller than the lower bound.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+
+
+
+ Gets the lower bound of the distribution.
+
+
+
+
+ Gets the upper bound of the distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the ContinuousUniform distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the ContinuousUniform distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the ContinuousUniform distribution.
+
+ The random number generator to use.
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ a uniformly distributed sample.
+
+
+
+ Generates a sequence of samples from the ContinuousUniform distribution.
+
+ The random number generator to use.
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ a sequence of uniformly distributed samples.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the ContinuousUniform distribution.
+
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ a uniformly distributed sample.
+
+
+
+ Generates a sequence of samples from the ContinuousUniform distribution.
+
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ a sequence of uniformly distributed samples.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ Lower bound. Range: lower ≤ upper.
+ Upper bound. Range: lower ≤ upper.
+ a sequence of samples from the distribution.
+
+
+
+ Discrete Univariate Conway-Maxwell-Poisson distribution.
+ The Conway-Maxwell-Poisson distribution is a generalization of the Poisson, Geometric and Bernoulli
+ distributions. It is parameterized by two real numbers "lambda" and "nu". For
+
+ - nu = 0 the distribution reverts to a Geometric distribution
+ - nu = 1 the distribution reverts to the Poisson distribution
+ - nu -> infinity the distribution converges to a Bernoulli distribution
+
+ This implementation will cache the value of the normalization constant.
+ Wikipedia - ConwayMaxwellPoisson distribution.
+
+
+
+
+ The mean of the distribution.
+
+
+
+
+ The variance of the distribution.
+
+
+
+
+ Caches the value of the normalization constant.
+
+
+
+
+ Since many properties of the distribution can only be computed approximately, the tolerance
+ level specifies how much error we accept.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ Returns a that represents this instance.
+
+ A that represents this instance.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+ Gets the lambda (λ) parameter. Range: λ > 0.
+
+
+
+
+ Gets the rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+ the cumulative distribution at location .
+
+
+
+
+ Gets the normalization constant of the Conway-Maxwell-Poisson distribution.
+
+
+
+
+ Computes an approximate normalization constant for the CMP distribution.
+
+ The lambda (λ) parameter for the CMP distribution.
+ The rate of decay (ν) parameter for the CMP distribution.
+
+ an approximate normalization constant for the CMP distribution.
+
+
+
+
+ Returns one trials from the distribution.
+
+ The random number generator to use.
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+ The z parameter.
+
+ One sample from the distribution implied by , , and .
+
+
+
+
+ Samples a Conway-Maxwell-Poisson distributed random variable.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples a sequence of a Conway-Maxwell-Poisson distributed random variables.
+
+
+ a sequence of samples from a Conway-Maxwell-Poisson distribution.
+
+
+
+
+ Samples a random variable.
+
+ The random number generator to use.
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+ Samples a sequence of this random variable.
+
+ The random number generator to use.
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+ Samples a random variable.
+
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+ Samples a sequence of this random variable.
+
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The lambda (λ) parameter. Range: λ > 0.
+ The rate of decay (ν) parameter. Range: ν ≥ 0.
+
+
+
+ Multivariate Dirichlet distribution. For details about this distribution, see
+ Wikipedia - Dirichlet distribution.
+
+
+
+
+ Initializes a new instance of the Dirichlet class. The distribution will
+ be initialized with the default random number generator.
+
+ An array with the Dirichlet parameters.
+
+
+
+ Initializes a new instance of the Dirichlet class. The distribution will
+ be initialized with the default random number generator.
+
+ An array with the Dirichlet parameters.
+ The random number generator which is used to draw random samples.
+
+
+
+ Initializes a new instance of the class.
+ random number generator.
+ The value of each parameter of the Dirichlet distribution.
+ The dimension of the Dirichlet distribution.
+
+
+
+ Initializes a new instance of the class.
+ random number generator.
+ The value of each parameter of the Dirichlet distribution.
+ The dimension of the Dirichlet distribution.
+ The random number generator which is used to draw random samples.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+ No parameter can be less than zero and at least one parameter should be larger than zero.
+
+ The parameters of the Dirichlet distribution.
+
+
+
+ Gets or sets the parameters of the Dirichlet distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the dimension of the Dirichlet distribution.
+
+
+
+
+ Gets the sum of the Dirichlet parameters.
+
+
+
+
+ Gets the mean of the Dirichlet distribution.
+
+
+
+
+ Gets the variance of the Dirichlet distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Computes the density of the distribution.
+
+ The locations at which to compute the density.
+ the density at .
+ The Dirichlet distribution requires that the sum of the components of x equals 1.
+ You can also leave out the last component, and it will be computed from the others.
+
+
+
+ Computes the log density of the distribution.
+
+ The locations at which to compute the density.
+ the density at .
+
+
+
+ Samples a Dirichlet distributed random vector.
+
+ A sample from this distribution.
+
+
+
+ Samples a Dirichlet distributed random vector.
+
+ The random number generator to use.
+ The Dirichlet distribution parameter.
+ a sample from the distribution.
+
+
+
+ Discrete Univariate Uniform distribution.
+ The discrete uniform distribution is a distribution over integers. The distribution
+ is parameterized by a lower and upper bound (both inclusive).
+ Wikipedia - Discrete uniform distribution.
+
+
+
+
+ Initializes a new instance of the DiscreteUniform class.
+
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+
+
+
+ Initializes a new instance of the DiscreteUniform class.
+
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ The random number generator which is used to draw random samples.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+
+
+
+ Gets the inclusive lower bound of the probability distribution.
+
+
+
+
+ Gets the inclusive upper bound of the probability distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the mode of the distribution; since every element in the domain has the same probability this method returns the middle one.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ the cumulative distribution at location .
+
+
+
+
+ Generates one sample from the discrete uniform distribution. This method does not do any parameter checking.
+
+ The random source to use.
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ A random sample from the discrete uniform distribution.
+
+
+
+ Draws a random sample from the distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of uniformly distributed random variables.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples a uniformly distributed random variable.
+
+ The random number generator to use.
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ A sample from the discrete uniform distribution.
+
+
+
+ Samples a sequence of uniformly distributed random variables.
+
+ The random number generator to use.
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ a sequence of samples from the discrete uniform distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ a sequence of samples from the discrete uniform distribution.
+
+
+
+ Samples a uniformly distributed random variable.
+
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ A sample from the discrete uniform distribution.
+
+
+
+ Samples a sequence of uniformly distributed random variables.
+
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ a sequence of samples from the discrete uniform distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ Lower bound, inclusive. Range: lower ≤ upper.
+ Upper bound, inclusive. Range: lower ≤ upper.
+ a sequence of samples from the discrete uniform distribution.
+
+
+
+ Continuous Univariate Erlang distribution.
+ This distribution is a continuous probability distribution with wide applicability primarily due to its
+ relation to the exponential and Gamma distributions.
+ Wikipedia - Erlang distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ Constructs a Erlang distribution from a shape and scale parameter. The distribution will
+ be initialized with the default random number generator.
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The scale (μ) of the Erlang distribution. Range: μ ≥ 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+
+
+
+ Constructs a Erlang distribution from a shape and inverse scale parameter. The distribution will
+ be initialized with the default random number generator.
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+
+
+
+ Gets the shape (k) of the Erlang distribution. Range: k ≥ 0.
+
+
+
+
+ Gets the rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+
+
+
+
+ Gets the scale of the Erlang distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum value.
+
+
+
+
+ Gets the Maximum value.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the Erlang distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Erlang distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The shape (k) of the Erlang distribution. Range: k ≥ 0.
+ The rate or inverse scale (λ) of the Erlang distribution. Range: λ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Exponential distribution.
+ The exponential distribution is a distribution over the real numbers parameterized by one non-negative parameter.
+ Wikipedia - exponential distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+
+
+
+ Gets the rate (λ) parameter of the distribution. Range: λ ≥ 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Draws a random sample from the distribution.
+
+ A random number from this distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Exponential distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ the inverse cumulative density at .
+
+
+
+
+ Draws a random sample from the distribution.
+
+ The random number generator to use.
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ A random number from this distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sequence of samples from the Exponential distribution.
+
+ The random number generator to use.
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Draws a random sample from the distribution.
+
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ A random number from this distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sequence of samples from the Exponential distribution.
+
+ The rate (λ) parameter of the distribution. Range: λ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate F-distribution, also known as Fisher-Snedecor distribution.
+ For details about this distribution, see
+ Wikipedia - FisherSnedecor distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+
+
+
+ Gets the first degree of freedom (d1) of the distribution. Range: d1 > 0.
+
+
+
+
+ Gets the second degree of freedom (d2) of the distribution. Range: d2 > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+ WARNING: currently not an explicit implementation, hence slow and unreliable.
+
+
+
+ Generates a sample from the FisherSnedecor distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the FisherSnedecor distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Generates one sample from the FisherSnedecor distribution without parameter checking.
+
+ The random number generator to use.
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ a FisherSnedecor distributed random number.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ the inverse cumulative density at .
+
+ WARNING: currently not an explicit implementation, hence slow and unreliable.
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The first degree of freedom (d1) of the distribution. Range: d1 > 0.
+ The second degree of freedom (d2) of the distribution. Range: d2 > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Gamma distribution.
+ For details about this distribution, see
+ Wikipedia - Gamma distribution.
+
+
+ The Gamma distribution is parametrized by a shape and inverse scale parameter. When we want
+ to specify a Gamma distribution which is a point distribution we set the shape parameter to be the
+ location of the point distribution and the inverse scale as positive infinity. The distribution
+ with shape and inverse scale both zero is undefined.
+
+ Random number generation for the Gamma distribution is based on the algorithm in:
+ "A Simple Method for Generating Gamma Variables" - Marsaglia & Tsang
+ ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000, Pages 363–372.
+
+
+
+
+ Initializes a new instance of the Gamma class.
+
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+
+
+
+ Initializes a new instance of the Gamma class.
+
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ Constructs a Gamma distribution from a shape and scale parameter. The distribution will
+ be initialized with the default random number generator.
+
+ The shape (k) of the Gamma distribution. Range: k ≥ 0.
+ The scale (θ) of the Gamma distribution. Range: θ ≥ 0
+ The random number generator which is used to draw random samples. Optional, can be null.
+
+
+
+ Constructs a Gamma distribution from a shape and inverse scale parameter. The distribution will
+ be initialized with the default random number generator.
+
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+
+
+
+ Gets or sets the shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+
+
+
+
+ Gets or sets the rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+
+
+
+
+ Gets or sets the scale (θ) of the Gamma distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the Gamma distribution.
+
+
+
+
+ Gets the variance of the Gamma distribution.
+
+
+
+
+ Gets the standard deviation of the Gamma distribution.
+
+
+
+
+ Gets the entropy of the Gamma distribution.
+
+
+
+
+ Gets the skewness of the Gamma distribution.
+
+
+
+
+ Gets the mode of the Gamma distribution.
+
+
+
+
+ Gets the median of the Gamma distribution.
+
+
+
+
+ Gets the minimum of the Gamma distribution.
+
+
+
+
+ Gets the maximum of the Gamma distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the Gamma distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Gamma distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Sampling implementation based on:
+ "A Simple Method for Generating Gamma Variables" - Marsaglia & Tsang
+ ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000, Pages 363–372.
+ This method performs no parameter checks.
+
+ The random number generator to use.
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ A sample from a Gamma distributed random variable.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the Gamma distribution.
+
+ The random number generator to use.
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Gamma distribution.
+
+ The random number generator to use.
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the Gamma distribution.
+
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Gamma distribution.
+
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The shape (k, α) of the Gamma distribution. Range: α ≥ 0.
+ The rate or inverse scale (β) of the Gamma distribution. Range: β ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Discrete Univariate Geometric distribution.
+ The Geometric distribution is a distribution over positive integers parameterized by one positive real number.
+ This implementation of the Geometric distribution will never generate 0's.
+ Wikipedia - geometric distribution.
+
+
+
+
+ Initializes a new instance of the Geometric class.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Initializes a new instance of the Geometric class.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ The random number generator which is used to draw random samples.
+
+
+
+ Returns a that represents this instance.
+
+ A that represents this instance.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Gets the probability of generating a one. Range: 0 ≤ p ≤ 1.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+ Throws a not supported exception.
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ the cumulative distribution at location .
+
+
+
+
+ Returns one sample from the distribution.
+
+ The random number generator to use.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+ One sample from the distribution implied by .
+
+
+
+ Samples a Geometric distributed random variable.
+
+ A sample from the Geometric distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of Geometric distributed random variables.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples a random variable.
+
+ The random number generator to use.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Samples a sequence of this random variable.
+
+ The random number generator to use.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Samples a random variable.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Samples a sequence of this random variable.
+
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The probability (p) of generating one. Range: 0 ≤ p ≤ 1.
+
+
+
+ Discrete Univariate Hypergeometric distribution.
+ This distribution is a discrete probability distribution that describes the number of successes in a sequence
+ of n draws from a finite population without replacement, just as the binomial distribution
+ describes the number of successes for draws with replacement
+ Wikipedia - Hypergeometric distribution.
+
+
+
+
+ Initializes a new instance of the Hypergeometric class.
+
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+
+
+
+ Initializes a new instance of the Hypergeometric class.
+
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+ The random number generator which is used to draw random samples.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the size of the population (N).
+
+
+
+
+ Gets the number of draws without replacement (n).
+
+
+
+
+ Gets the number successes within the population (K, M).
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the Hypergeometric distribution without doing parameter checking.
+
+ The random number generator to use.
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The n parameter of the distribution.
+ a random number from the Hypergeometric distribution.
+
+
+
+ Samples a Hypergeometric distributed random variable.
+
+ The number of successes in n trials.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of Hypergeometric distributed random variables.
+
+ a sequence of successes in n trials.
+
+
+
+ Samples a random variable.
+
+ The random number generator to use.
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+
+
+
+ Samples a sequence of this random variable.
+
+ The random number generator to use.
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+
+
+
+ Samples a random variable.
+
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+
+
+
+ Samples a sequence of this random variable.
+
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The size of the population (N).
+ The number successes within the population (K, M).
+ The number of draws without replacement (n).
+
+
+
+ Continuous Univariate Probability Distribution.
+
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distribution which can be represented by a double.
+
+
+
+
+ Gets the largest element in the domain of the distribution which can be represented by a double.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+ Draws a random sample from the distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Draws a sequence of random samples from the distribution.
+
+ an infinite sequence of samples from the distribution.
+
+
+
+ Discrete Univariate Probability Distribution.
+
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distribution which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distribution which can be represented by an integer.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Draws a random sample from the distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Draws a sequence of random samples from the distribution.
+
+ an infinite sequence of samples from the distribution.
+
+
+
+ Probability Distribution.
+
+
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Continuous Univariate Inverse Gamma distribution.
+ The inverse Gamma distribution is a distribution over the positive real numbers parameterized by
+ two positive parameters.
+ Wikipedia - InverseGamma distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+
+
+
+ Gets or sets the shape (α) parameter. Range: α > 0.
+
+
+
+
+ Gets or sets The scale (β) parameter. Range: β > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+ Throws .
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Draws a random sample from the distribution.
+
+ A random number from this distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Cauchy distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The shape (α) of the distribution. Range: α > 0.
+ The scale (β) of the distribution. Range: β > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Gets the mean (μ) of the distribution. Range: μ > 0.
+
+
+
+
+ Gets the shape (λ) of the distribution. Range: λ > 0.
+
+
+
+
+ Initializes a new instance of the InverseGaussian class.
+
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+
+
+
+ Gets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the Inverse Gaussian distribution.
+
+
+
+
+ Gets the variance of the Inverse Gaussian distribution.
+
+
+
+
+ Gets the standard deviation of the Inverse Gaussian distribution.
+
+
+
+
+ Gets the median of the Inverse Gaussian distribution.
+ No closed form analytical expression exists, so this value is approximated numerically and can throw an exception.
+
+
+
+
+ Gets the minimum of the Inverse Gaussian distribution.
+
+
+
+
+ Gets the maximum of the Inverse Gaussian distribution.
+
+
+
+
+ Gets the skewness of the Inverse Gaussian distribution.
+
+
+
+
+ Gets the kurtosis of the Inverse Gaussian distribution.
+
+
+
+
+ Gets the mode of the Inverse Gaussian distribution.
+
+
+
+
+ Gets the entropy of the Inverse Gaussian distribution (currently not supported).
+
+
+
+
+ Generates a sample from the inverse Gaussian distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+
+
+
+ Generates a sequence of samples from the inverse Gaussian distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the inverse Gaussian distribution.
+
+ The random number generator to use.
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+
+
+
+ Generates a sequence of samples from the Burr distribution.
+
+ The random number generator to use.
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse cumulative distribution (CDF) of the distribution at p, i.e. solving for P(X ≤ x) = p.
+
+ The location at which to compute the inverse cumulative distribution function.
+ the inverse cumulative distribution at location .
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse cumulative distribution (CDF) of the distribution at p, i.e. solving for P(X ≤ x) = p.
+
+ The mean (μ) of the distribution. Range: μ > 0.
+ The shape (λ) of the distribution. Range: λ > 0.
+ The location at which to compute the inverse cumulative distribution function.
+ the inverse cumulative distribution at location .
+
+
+
+
+ Estimates the Inverse Gaussian parameters from sample data with maximum-likelihood.
+
+ The samples to estimate the distribution parameters from.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ An Inverse Gaussian distribution.
+
+
+
+ Multivariate Inverse Wishart distribution. This distribution is
+ parameterized by the degrees of freedom nu and the scale matrix S. The inverse Wishart distribution
+ is the conjugate prior for the covariance matrix of a multivariate normal distribution.
+ Wikipedia - Inverse-Wishart distribution.
+
+
+
+
+ Caches the Cholesky factorization of the scale matrix.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The degree of freedom (ν) for the inverse Wishart distribution.
+ The scale matrix (Ψ) for the inverse Wishart distribution.
+
+
+
+ Initializes a new instance of the class.
+
+ The degree of freedom (ν) for the inverse Wishart distribution.
+ The scale matrix (Ψ) for the inverse Wishart distribution.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The degree of freedom (ν) for the inverse Wishart distribution.
+ The scale matrix (Ψ) for the inverse Wishart distribution.
+
+
+
+ Gets or sets the degree of freedom (ν) for the inverse Wishart distribution.
+
+
+
+
+ Gets or sets the scale matrix (Ψ) for the inverse Wishart distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean.
+
+ The mean of the distribution.
+
+
+
+ Gets the mode of the distribution.
+
+ The mode of the distribution.
+ A. O'Hagan, and J. J. Forster (2004). Kendall's Advanced Theory of Statistics: Bayesian Inference. 2B (2 ed.). Arnold. ISBN 0-340-80752-0.
+
+
+
+ Gets the variance of the distribution.
+
+ The variance of the distribution.
+ Kanti V. Mardia, J. T. Kent and J. M. Bibby (1979). Multivariate Analysis.
+
+
+
+ Evaluates the probability density function for the inverse Wishart distribution.
+
+ The matrix at which to evaluate the density at.
+ If the argument does not have the same dimensions as the scale matrix.
+ the density at .
+
+
+
+ Samples an inverse Wishart distributed random variable by sampling
+ a Wishart random variable and inverting the matrix.
+
+ a sample from the distribution.
+
+
+
+ Samples an inverse Wishart distributed random variable by sampling
+ a Wishart random variable and inverting the matrix.
+
+ The random number generator to use.
+ The degree of freedom (ν) for the inverse Wishart distribution.
+ The scale matrix (Ψ) for the inverse Wishart distribution.
+ a sample from the distribution.
+
+
+
+ Univariate Probability Distribution.
+
+
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Continuous Univariate Laplace distribution.
+ The Laplace distribution is a distribution over the real numbers parameterized by a mean and
+ scale parameter. The PDF is:
+ p(x) = \frac{1}{2 * scale} \exp{- |x - mean| / scale}.
+ Wikipedia - Laplace distribution.
+
+
+
+
+ Initializes a new instance of the class (location = 0, scale = 1).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ If is negative.
+
+
+
+ Initializes a new instance of the class.
+
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ The random number generator which is used to draw random samples.
+ If is negative.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+
+
+
+ Gets the location (μ) of the Laplace distribution.
+
+
+
+
+ Gets the scale (b) of the Laplace distribution. Range: b > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Samples a Laplace distributed random variable.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sample from the Laplace distribution.
+
+ a sample from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The location (μ) of the distribution.
+ The scale (b) of the distribution. Range: b > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Logistic distribution.
+ For details about this distribution, see
+ Wikipedia - Logistic distribution.
+
+
+
+
+ Initializes a new instance of the Logistic class. This is a logistic distribution with mean 0.0
+ and scale 1.0. The distribution will be initialized with the default
+ random number generator.
+
+
+
+
+ Initializes a new instance of the Logistic class. This is a logistic distribution with mean 0.0
+ and scale 1.0. The distribution will be initialized with the default
+ random number generator.
+
+ The random number generator which is used to draw random samples.
+
+
+
+ Initializes a new instance of the Logistic class with a particular mean and scale parameter. The
+ distribution will be initialized with the default random number generator.
+
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+
+
+
+ Initializes a new instance of the Logistic class with a particular mean and standard deviation. The distribution will
+ be initialized with the default random number generator.
+
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ Constructs a logistic distribution from a mean and scale parameter.
+
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ a logistic distribution.
+
+
+
+ Constructs a logistic distribution from a mean and standard deviation.
+
+ The mean (μ) of the logistic distribution.
+ The standard deviation (σ) of the logistic distribution. Range: σ > 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ a logistic distribution.
+
+
+
+ Constructs a logistic distribution from a mean and variance.
+
+ The mean (μ) of the logistic distribution.
+ The variance (σ^2) of the logistic distribution. Range: (σ^2) > 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ A logistic distribution.
+
+
+
+ Constructs a logistic distribution from a mean and precision.
+
+ The mean (μ) of the logistic distribution.
+ The precision of the logistic distribution. Range: precision > 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ A logistic distribution.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+
+
+
+ Gets the scale parameter of the Logistic distribution. Range: s > 0.
+
+
+
+
+ Gets the mean (μ) of the logistic distribution.
+
+
+
+
+ Gets the standard deviation (σ) of the logistic distribution. Range: σ > 0.
+
+
+
+
+ Gets the variance of the logistic distribution.
+
+
+
+
+ Gets the precision of the logistic distribution.
+
+
+
+
+ Gets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the entropy of the logistic distribution.
+
+
+
+
+ Gets the skewness of the logistic distribution.
+
+
+
+
+ Gets the mode of the logistic distribution.
+
+
+
+
+ Gets the median of the logistic distribution.
+
+
+
+
+ Gets the minimum of the logistic distribution.
+
+
+
+
+ Gets the maximum of the logistic distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the logistic distribution using the Box-Muller algorithm.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the logistic distribution using the Box-Muller algorithm.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ the cumulative distribution at location .
+
+ MATLAB: normcdf
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ the inverse cumulative density at .
+
+ MATLAB: norminv
+
+
+
+ Generates a sample from the logistic distribution using the Box-Muller algorithm.
+
+ The random number generator to use.
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the logistic distribution using the Box-Muller algorithm.
+
+ The random number generator to use.
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the logistic distribution using the Box-Muller algorithm.
+
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the logistic distribution using the Box-Muller algorithm.
+
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The mean (μ) of the logistic distribution.
+ The scale (s) of the logistic distribution. Range: s > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Log-Normal distribution.
+ For details about this distribution, see
+ Wikipedia - Log-Normal distribution.
+
+
+
+
+ Initializes a new instance of the class.
+ The distribution will be initialized with the default
+ random number generator.
+
+ The log-scale (μ) of the logarithm of the distribution.
+ The shape (σ) of the logarithm of the distribution. Range: σ ≥ 0.
+
+
+
+ Initializes a new instance of the class.
+ The distribution will be initialized with the default
+ random number generator.
+
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ Constructs a log-normal distribution with the desired mu and sigma parameters.
+
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ A log-normal distribution.
+
+
+
+ Constructs a log-normal distribution with the desired mean and variance.
+
+ The mean of the log-normal distribution.
+ The variance of the log-normal distribution.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ A log-normal distribution.
+
+
+
+ Estimates the log-normal distribution parameters from sample data with maximum-likelihood.
+
+ The samples to estimate the distribution parameters from.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ A log-normal distribution.
+ MATLAB: lognfit
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+
+
+
+ Gets the log-scale (μ) (mean of the logarithm) of the distribution.
+
+
+
+
+ Gets the shape (σ) (standard deviation of the logarithm) of the distribution. Range: σ ≥ 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mu of the log-normal distribution.
+
+
+
+
+ Gets the variance of the log-normal distribution.
+
+
+
+
+ Gets the standard deviation of the log-normal distribution.
+
+
+
+
+ Gets the entropy of the log-normal distribution.
+
+
+
+
+ Gets the skewness of the log-normal distribution.
+
+
+
+
+ Gets the mode of the log-normal distribution.
+
+
+
+
+ Gets the median of the log-normal distribution.
+
+
+
+
+ Gets the minimum of the log-normal distribution.
+
+
+
+
+ Gets the maximum of the log-normal distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the log-normal distribution using the Box-Muller algorithm.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the log-normal distribution using the Box-Muller algorithm.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ the density at .
+
+ MATLAB: lognpdf
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the density.
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ the cumulative distribution at location .
+
+ MATLAB: logncdf
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ the inverse cumulative density at .
+
+ MATLAB: logninv
+
+
+
+ Generates a sample from the log-normal distribution using the Box-Muller algorithm.
+
+ The random number generator to use.
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the log-normal distribution using the Box-Muller algorithm.
+
+ The random number generator to use.
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the log-normal distribution using the Box-Muller algorithm.
+
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the log-normal distribution using the Box-Muller algorithm.
+
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The log-scale (μ) of the distribution.
+ The shape (σ) of the distribution. Range: σ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Multivariate Matrix-valued Normal distributions. The distribution
+ is parameterized by a mean matrix (M), a covariance matrix for the rows (V) and a covariance matrix
+ for the columns (K). If the dimension of M is d-by-m then V is d-by-d and K is m-by-m.
+ Wikipedia - MatrixNormal distribution.
+
+
+
+
+ The mean of the matrix normal distribution.
+
+
+
+
+ The covariance matrix for the rows.
+
+
+
+
+ The covariance matrix for the columns.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The mean of the matrix normal.
+ The covariance matrix for the rows.
+ The covariance matrix for the columns.
+ If the dimensions of the mean and two covariance matrices don't match.
+
+
+
+ Initializes a new instance of the class.
+
+ The mean of the matrix normal.
+ The covariance matrix for the rows.
+ The covariance matrix for the columns.
+ The random number generator which is used to draw random samples.
+ If the dimensions of the mean and two covariance matrices don't match.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The mean of the matrix normal.
+ The covariance matrix for the rows.
+ The covariance matrix for the columns.
+
+
+
+ Gets the mean. (M)
+
+ The mean of the distribution.
+
+
+
+ Gets the row covariance. (V)
+
+ The row covariance.
+
+
+
+ Gets the column covariance. (K)
+
+ The column covariance.
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Evaluates the probability density function for the matrix normal distribution.
+
+ The matrix at which to evaluate the density at.
+ the density at
+ If the argument does not have the correct dimensions.
+
+
+
+ Samples a matrix normal distributed random variable.
+
+ A random number from this distribution.
+
+
+
+ Samples a matrix normal distributed random variable.
+
+ The random number generator to use.
+ The mean of the matrix normal.
+ The covariance matrix for the rows.
+ The covariance matrix for the columns.
+ If the dimensions of the mean and two covariance matrices don't match.
+ a sequence of samples from the distribution.
+
+
+
+ Samples a vector normal distributed random variable.
+
+ The random number generator to use.
+ The mean of the vector normal distribution.
+ The covariance matrix of the vector normal distribution.
+ a sequence of samples from defined distribution.
+
+
+
+ Multivariate Multinomial distribution. For details about this distribution, see
+ Wikipedia - Multinomial distribution.
+
+
+ The distribution is parameterized by a vector of ratios: in other words, the parameter
+ does not have to be normalized and sum to 1. The reason is that some vectors can't be exactly normalized
+ to sum to 1 in floating point representation.
+
+
+
+
+ Stores the normalized multinomial probabilities.
+
+
+
+
+ The number of trials.
+
+
+
+
+ Initializes a new instance of the Multinomial class.
+
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ The number of trials.
+ If any of the probabilities are negative or do not sum to one.
+ If is negative.
+
+
+
+ Initializes a new instance of the Multinomial class.
+
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ The number of trials.
+ The random number generator which is used to draw random samples.
+ If any of the probabilities are negative or do not sum to one.
+ If is negative.
+
+
+
+ Initializes a new instance of the Multinomial class from histogram . The distribution will
+ not be automatically updated when the histogram changes.
+
+ Histogram instance
+ The number of trials.
+ If any of the probabilities are negative or do not sum to one.
+ If is negative.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ The number of trials.
+ If any of the probabilities are negative returns false,
+ if the sum of parameters is 0.0, or if the number of trials is negative; otherwise true.
+
+
+
+ Gets the proportion of ratios.
+
+
+
+
+ Gets the number of trials.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Computes values of the probability mass function.
+
+ Non-negative integers x1, ..., xk
+ The probability mass at location .
+ When is null.
+ When length of is not equal to event probabilities count.
+
+
+
+ Computes values of the log probability mass function.
+
+ Non-negative integers x1, ..., xk
+ The log probability mass at location .
+ When is null.
+ When length of is not equal to event probabilities count.
+
+
+
+ Samples one multinomial distributed random variable.
+
+ the counts for each of the different possible values.
+
+
+
+ Samples a sequence multinomially distributed random variables.
+
+ a sequence of counts for each of the different possible values.
+
+
+
+ Samples one multinomial distributed random variable.
+
+ The random number generator to use.
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ The number of trials.
+ the counts for each of the different possible values.
+
+
+
+ Samples a multinomially distributed random variable.
+
+ The random number generator to use.
+ An array of nonnegative ratios: this array does not need to be normalized
+ as this is often impossible using floating point arithmetic.
+ The number of variables needed.
+ a sequence of counts for each of the different possible values.
+
+
+
+ Discrete Univariate Negative Binomial distribution.
+ The negative binomial is a distribution over the natural numbers with two parameters r, p. For the special
+ case that r is an integer one can interpret the distribution as the number of failures before the r'th success
+ when the probability of success is p.
+ Wikipedia - NegativeBinomial distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+
+
+
+ Initializes a new instance of the class.
+
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+ The random number generator which is used to draw random samples.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+
+
+
+ Gets the number of successes. Range: r ≥ 0.
+
+
+
+
+ Gets the probability of success. Range: 0 ≤ p ≤ 1.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+ the cumulative distribution at location .
+
+
+
+
+ Samples a negative binomial distributed random variable.
+
+ The random number generator to use.
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+ a sample from the distribution.
+
+
+
+ Samples a NegativeBinomial distributed random variable.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of NegativeBinomial distributed random variables.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples a random variable.
+
+ The random number generator to use.
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+
+
+
+ Samples a sequence of this random variable.
+
+ The random number generator to use.
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+
+
+
+ Samples a random variable.
+
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+
+
+
+ Samples a sequence of this random variable.
+
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The number of successes (r) required to stop the experiment. Range: r ≥ 0.
+ The probability (p) of a trial resulting in success. Range: 0 ≤ p ≤ 1.
+
+
+
+ Continuous Univariate Normal distribution, also known as Gaussian distribution.
+ For details about this distribution, see
+ Wikipedia - Normal distribution.
+
+
+
+
+ Initializes a new instance of the Normal class. This is a normal distribution with mean 0.0
+ and standard deviation 1.0. The distribution will
+ be initialized with the default random number generator.
+
+
+
+
+ Initializes a new instance of the Normal class. This is a normal distribution with mean 0.0
+ and standard deviation 1.0. The distribution will
+ be initialized with the default random number generator.
+
+ The random number generator which is used to draw random samples.
+
+
+
+ Initializes a new instance of the Normal class with a particular mean and standard deviation. The distribution will
+ be initialized with the default random number generator.
+
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+
+
+
+ Initializes a new instance of the Normal class with a particular mean and standard deviation. The distribution will
+ be initialized with the default random number generator.
+
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ Constructs a normal distribution from a mean and standard deviation.
+
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ a normal distribution.
+
+
+
+ Constructs a normal distribution from a mean and variance.
+
+ The mean (μ) of the normal distribution.
+ The variance (σ^2) of the normal distribution.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ A normal distribution.
+
+
+
+ Constructs a normal distribution from a mean and precision.
+
+ The mean (μ) of the normal distribution.
+ The precision of the normal distribution.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ A normal distribution.
+
+
+
+ Estimates the normal distribution parameters from sample data with maximum-likelihood.
+
+ The samples to estimate the distribution parameters from.
+ The random number generator which is used to draw random samples. Optional, can be null.
+ A normal distribution.
+ MATLAB: normfit
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+
+
+
+ Gets the mean (μ) of the normal distribution.
+
+
+
+
+ Gets the standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+
+
+
+
+ Gets the variance of the normal distribution.
+
+
+
+
+ Gets the precision of the normal distribution.
+
+
+
+
+ Gets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the entropy of the normal distribution.
+
+
+
+
+ Gets the skewness of the normal distribution.
+
+
+
+
+ Gets the mode of the normal distribution.
+
+
+
+
+ Gets the median of the normal distribution.
+
+
+
+
+ Gets the minimum of the normal distribution.
+
+
+
+
+ Gets the maximum of the normal distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the normal distribution using the Box-Muller algorithm.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the normal distribution using the Box-Muller algorithm.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ The location at which to compute the density.
+ the density at .
+
+ MATLAB: normpdf
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ the cumulative distribution at location .
+
+ MATLAB: normcdf
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ the inverse cumulative density at .
+
+ MATLAB: norminv
+
+
+
+ Generates a sample from the normal distribution using the Box-Muller algorithm.
+
+ The random number generator to use.
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the normal distribution using the Box-Muller algorithm.
+
+ The random number generator to use.
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the normal distribution using the Box-Muller algorithm.
+
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the normal distribution using the Box-Muller algorithm.
+
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The mean (μ) of the normal distribution.
+ The standard deviation (σ) of the normal distribution. Range: σ ≥ 0.
+ a sequence of samples from the distribution.
+
+
+
+ This structure represents the type over which the distribution
+ is defined.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The mean of the pair.
+ The precision of the pair.
+
+
+
+ Gets or sets the mean of the pair.
+
+
+
+
+ Gets or sets the precision of the pair.
+
+
+
+
+ Multivariate Normal-Gamma Distribution.
+ The distribution is the conjugate prior distribution for the
+ distribution. It specifies a prior over the mean and precision of the distribution.
+ It is parameterized by four numbers: the mean location, the mean scale, the precision shape and the
+ precision inverse scale.
+ The distribution NG(mu, tau | mloc,mscale,psscale,pinvscale) = Normal(mu | mloc, 1/(mscale*tau)) * Gamma(tau | psscale,pinvscale).
+ The following degenerate cases are special: when the precision is known,
+ the precision shape will encode the value of the precision while the precision inverse scale is positive
+ infinity. When the mean is known, the mean location will encode the value of the mean while the scale
+ will be positive infinity. A completely degenerate NormalGamma distribution with known mean and precision is possible as well.
+ Wikipedia - Normal-Gamma distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The location of the mean.
+ The scale of the mean.
+ The shape of the precision.
+ The inverse scale of the precision.
+
+
+
+ Initializes a new instance of the class.
+
+ The location of the mean.
+ The scale of the mean.
+ The shape of the precision.
+ The inverse scale of the precision.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The location of the mean.
+ The scale of the mean.
+ The shape of the precision.
+ The inverse scale of the precision.
+
+
+
+ Gets the location of the mean.
+
+
+
+
+ Gets the scale of the mean.
+
+
+
+
+ Gets the shape of the precision.
+
+
+
+
+ Gets the inverse scale of the precision.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Returns the marginal distribution for the mean of the NormalGamma distribution.
+
+ the marginal distribution for the mean of the NormalGamma distribution.
+
+
+
+ Returns the marginal distribution for the precision of the distribution.
+
+ The marginal distribution for the precision of the distribution/
+
+
+
+ Gets the mean of the distribution.
+
+ The mean of the distribution.
+
+
+
+ Gets the variance of the distribution.
+
+ The mean of the distribution.
+
+
+
+ Evaluates the probability density function for a NormalGamma distribution.
+
+ The mean/precision pair of the distribution
+ Density value
+
+
+
+ Evaluates the probability density function for a NormalGamma distribution.
+
+ The mean of the distribution
+ The precision of the distribution
+ Density value
+
+
+
+ Evaluates the log probability density function for a NormalGamma distribution.
+
+ The mean/precision pair of the distribution
+ The log of the density value
+
+
+
+ Evaluates the log probability density function for a NormalGamma distribution.
+
+ The mean of the distribution
+ The precision of the distribution
+ The log of the density value
+
+
+
+ Generates a sample from the NormalGamma distribution.
+
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the NormalGamma distribution
+
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the NormalGamma distribution.
+
+ The random number generator to use.
+ The location of the mean.
+ The scale of the mean.
+ The shape of the precision.
+ The inverse scale of the precision.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the NormalGamma distribution
+
+ The random number generator to use.
+ The location of the mean.
+ The scale of the mean.
+ The shape of the precision.
+ The inverse scale of the precision.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Pareto distribution.
+ The Pareto distribution is a power law probability distribution that coincides with social,
+ scientific, geophysical, actuarial, and many other types of observable phenomena.
+ For details about this distribution, see
+ Wikipedia - Pareto distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ If or are negative.
+
+
+
+ Initializes a new instance of the class.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The random number generator which is used to draw random samples.
+ If or are negative.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+
+
+
+ Gets the scale (xm) of the distribution. Range: xm > 0.
+
+
+
+
+ Gets the shape (α) of the distribution. Range: α > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Draws a random sample from the distribution.
+
+ A random number from this distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Pareto distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Discrete Univariate Poisson distribution.
+
+
+ Distribution is described at Wikipedia - Poisson distribution.
+ Knuth's method is used to generate Poisson distributed random variables.
+ f(x) = exp(-λ)*λ^x/x!;
+
+
+
+
+ Initializes a new instance of the class.
+
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ If is equal or less then 0.0.
+
+
+
+ Initializes a new instance of the class.
+
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ The random number generator which is used to draw random samples.
+ If is equal or less then 0.0.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+
+
+
+ Gets the Poisson distribution parameter λ. Range: λ > 0.
+
+
+
+
+ Gets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+ Approximation, see Wikipedia Poisson distribution
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+ Approximation, see Wikipedia Poisson distribution
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Generates one sample from the Poisson distribution.
+
+ The random source to use.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ A random sample from the Poisson distribution.
+
+
+
+ Generates one sample from the Poisson distribution by Knuth's method.
+
+ The random source to use.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ A random sample from the Poisson distribution.
+
+
+
+ Generates one sample from the Poisson distribution by "Rejection method PA".
+
+ The random source to use.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ A random sample from the Poisson distribution.
+ "Rejection method PA" from "The Computer Generation of Poisson Random Variables" by A. C. Atkinson,
+ Journal of the Royal Statistical Society Series C (Applied Statistics) Vol. 28, No. 1. (1979)
+ The article is on pages 29-35. The algorithm given here is on page 32.
+
+
+
+ Samples a Poisson distributed random variable.
+
+ A sample from the Poisson distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of Poisson distributed random variables.
+
+ a sequence of successes in N trials.
+
+
+
+ Samples a Poisson distributed random variable.
+
+ The random number generator to use.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ A sample from the Poisson distribution.
+
+
+
+ Samples a sequence of Poisson distributed random variables.
+
+ The random number generator to use.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Samples a Poisson distributed random variable.
+
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ A sample from the Poisson distribution.
+
+
+
+ Samples a sequence of Poisson distributed random variables.
+
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The lambda (λ) parameter of the Poisson distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Rayleigh distribution.
+ The Rayleigh distribution (pronounced /ˈreɪli/) is a continuous probability distribution. As an
+ example of how it arises, the wind speed will have a Rayleigh distribution if the components of
+ the two-dimensional wind velocity vector are uncorrelated and normally distributed with equal variance.
+ For details about this distribution, see
+ Wikipedia - Rayleigh distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The scale (σ) of the distribution. Range: σ > 0.
+ If is negative.
+
+
+
+ Initializes a new instance of the class.
+
+ The scale (σ) of the distribution. Range: σ > 0.
+ The random number generator which is used to draw random samples.
+ If is negative.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The scale (σ) of the distribution. Range: σ > 0.
+
+
+
+ Gets the scale (σ) of the distribution. Range: σ > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Draws a random sample from the distribution.
+
+ A random number from this distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Rayleigh distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The scale (σ) of the distribution. Range: σ > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The scale (σ) of the distribution. Range: σ > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The scale (σ) of the distribution. Range: σ > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The scale (σ) of the distribution. Range: σ > 0.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The scale (σ) of the distribution. Range: σ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Skewed Generalized Error Distribution (SGED).
+ Implements the univariate Skewed Generalized Error Distribution. For details about this
+ distribution, see
+
+ Wikipedia - Generalized Error Distribution.
+ It includes Laplace, Normal and Student-t distributions.
+ This is the distribution with q=Inf.
+
+ This implementation is based on the R package dsgt and corresponding viginette, see
+ https://cran.r-project.org/web/packages/sgt/vignettes/sgt.pdf. Compared to that
+ implementation, the options for mean adjustment and variance adjustment are always true.
+ The location (μ) is the mean of the distribution.
+ The scale (σ) squared is the variance of the distribution.
+
+ The distribution will use the by
+ default. Users can get/set the random number generator by using the
+ property.
+ The statistics classes will check all the incoming parameters
+ whether they are in the allowed range.
+
+
+
+ Initializes a new instance of the SkewedGeneralizedError class. This is a generalized error distribution
+ with location=0.0, scale=1.0, skew=0.0 and p=2.0 (a standard normal distribution).
+
+
+
+
+ Initializes a new instance of the SkewedGeneralizedT class with a particular location, scale, skew
+ and kurtosis parameters. Different parameterizations result in different distributions.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ Parameter that controls kurtosis. Range: p > 0
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ Parameter that controls kurtosis. Range: p > 0
+
+
+
+ Gets the location (μ) of the Skewed Generalized t-distribution.
+
+
+
+
+ Gets the scale (σ) of the Skewed Generalized t-distribution. Range: σ > 0.
+
+
+
+
+ Gets the skew (λ) of the Skewed Generalized t-distribution. Range: 1 > λ > -1.
+
+
+
+
+ Gets the parameter that controls the kurtosis of the distribution. Range: p > 0.
+
+
+
+
+ Generates a sample from the Skew Generalized Error distribution.
+
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ Parameter that controls kurtosis. Range: p > 0
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Skew Generalized Error distribution using inverse transform.
+
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ Parameter that controls kurtosis. Range: p > 0
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples from the Skew Generalized Error distribution using inverse transform.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ Parameter that controls kurtosis. Range: p > 0
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the Skew Generalized Error distribution.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ Parameter that controls kurtosis. Range: p > 0
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Skew Generalized Error distribution using inverse transform.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ Parameter that controls kurtosis. Range: p > 0
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples from the Skew Generalized Error distribution using inverse transform.
+
+ The array to fill with the samples.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ Parameter that controls kurtosis. Range: p > 0
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Skewed Generalized T-distribution.
+ Implements the univariate Skewed Generalized t-distribution. For details about this
+ distribution, see
+
+ Wikipedia - Skewed generalized t-distribution.
+ The skewed generalized t-distribution contains many different distributions within it
+ as special cases based on the parameterization chosen.
+
+ This implementation is based on the R package dsgt and corresponding viginette, see
+ https://cran.r-project.org/web/packages/sgt/vignettes/sgt.pdf. Compared to that
+ implementation, the options for mean adjustment and variance adjustment are always true.
+ The location (μ) is the mean of the distribution.
+ The scale (σ) squared is the variance of the distribution.
+
+ The distribution will use the by
+ default. Users can get/set the random number generator by using the
+ property.
+ The statistics classes will check all the incoming parameters
+ whether they are in the allowed range.
+
+
+
+ Initializes a new instance of the SkewedGeneralizedT class. This is a skewed generalized t-distribution
+ with location=0.0, scale=1.0, skew=0.0, p=2.0 and q=Inf (a standard normal distribution).
+
+
+
+
+ Initializes a new instance of the SkewedGeneralizedT class with a particular location, scale, skew
+ and kurtosis parameters. Different parameterizations result in different distributions.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+
+
+
+ Given a parameter set, returns the distribution that matches this parameterization.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ Null if no known distribution matches the parameterization, else the distribution.
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+
+
+
+ Gets the location (μ) of the Skewed Generalized t-distribution.
+
+
+
+
+ Gets the scale (σ) of the Skewed Generalized t-distribution. Range: σ > 0.
+
+
+
+
+ Gets the skew (λ) of the Skewed Generalized t-distribution. Range: 1 > λ > -1.
+
+
+
+
+ Gets the first parameter that controls the kurtosis of the distribution. Range: p > 0.
+
+
+
+
+ Gets the second parameter that controls the kurtosis of the distribution. Range: q > 0.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ the inverse cumulative density at .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the Skew Generalized t-distribution.
+
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Skew Generalized t-distribution using inverse transform.
+
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples from the Skew Generalized t-distribution using inverse transform.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the Skew Generalized t-distribution.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Skew Generalized t-distribution using inverse transform.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples from the Skew Generalized t-distribution using inverse transform.
+
+ The array to fill with the samples.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The skew, 1 > λ > -1
+ First parameter that controls kurtosis. Range: p > 0
+ Second parameter that controls kurtosis. Range: q > 0
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Stable distribution.
+ A random variable is said to be stable (or to have a stable distribution) if it has
+ the property that a linear combination of two independent copies of the variable has
+ the same distribution, up to location and scale parameters.
+ For details about this distribution, see
+ Wikipedia - Stable distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+
+
+
+ Initializes a new instance of the class.
+
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+
+
+
+ Gets the stability (α) of the distribution. Range: 2 ≥ α > 0.
+
+
+
+
+ Gets The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+
+
+
+
+ Gets the scale (c) of the distribution. Range: c > 0.
+
+
+
+
+ Gets the location (μ) of the distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets he entropy of the distribution.
+
+ Always throws a not supported exception.
+
+
+
+ Gets the skewness of the distribution.
+
+ Throws a not supported exception of Alpha != 2.
+
+
+
+ Gets the mode of the distribution.
+
+ Throws a not supported exception if Beta != 0.
+
+
+
+ Gets the median of the distribution.
+
+ Throws a not supported exception if Beta != 0.
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+ Throws a not supported exception if Alpha != 2, (Alpha != 1 and Beta !=0), or (Alpha != 0.5 and Beta != 1)
+
+
+
+ Samples the distribution.
+
+ The random number generator to use.
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ a random number from the distribution.
+
+
+
+ Draws a random sample from the distribution.
+
+ A random number from this distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Stable distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the distribution.
+
+ The random number generator to use.
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The random number generator to use.
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the distribution.
+
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the distribution.
+
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The stability (α) of the distribution. Range: 2 ≥ α > 0.
+ The skewness (β) of the distribution. Range: 1 ≥ β ≥ -1.
+ The scale (c) of the distribution. Range: c > 0.
+ The location (μ) of the distribution.
+ a sequence of samples from the distribution.
+
+
+
+ Continuous Univariate Student's T-distribution.
+ Implements the univariate Student t-distribution. For details about this
+ distribution, see
+
+ Wikipedia - Student's t-distribution.
+
+ We use a slightly generalized version (compared to
+ Wikipedia) of the Student t-distribution. Namely, one which also
+ parameterizes the location and scale. See the book "Bayesian Data
+ Analysis" by Gelman et al. for more details.
+ The density of the Student t-distribution p(x|mu,scale,dof) =
+ Gamma((dof+1)/2) (1 + (x - mu)^2 / (scale * scale * dof))^(-(dof+1)/2) /
+ (Gamma(dof/2)*Sqrt(dof*pi*scale)).
+ The distribution will use the by
+ default. Users can get/set the random number generator by using the
+ property.
+ The statistics classes will check all the incoming parameters
+ whether they are in the allowed range. This might involve heavy
+ computation. Optionally, by setting Control.CheckDistributionParameters
+ to false, all parameter checks can be turned off.
+
+
+
+ Initializes a new instance of the StudentT class. This is a Student t-distribution with location 0.0
+ scale 1.0 and degrees of freedom 1.
+
+
+
+
+ Initializes a new instance of the StudentT class with a particular location, scale and degrees of
+ freedom.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+
+
+
+ Initializes a new instance of the StudentT class with a particular location, scale and degrees of
+ freedom.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+
+
+
+ Gets the location (μ) of the Student t-distribution.
+
+
+
+
+ Gets the scale (σ) of the Student t-distribution. Range: σ > 0.
+
+
+
+
+ Gets the degrees of freedom (ν) of the Student t-distribution. Range: ν > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the Student t-distribution.
+
+
+
+
+ Gets the variance of the Student t-distribution.
+
+
+
+
+ Gets the standard deviation of the Student t-distribution.
+
+
+
+
+ Gets the entropy of the Student t-distribution.
+
+
+
+
+ Gets the skewness of the Student t-distribution.
+
+
+
+
+ Gets the mode of the Student t-distribution.
+
+
+
+
+ Gets the median of the Student t-distribution.
+
+
+
+
+ Gets the minimum of the Student t-distribution.
+
+
+
+
+ Gets the maximum of the Student t-distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+ WARNING: currently not an explicit implementation, hence slow and unreliable.
+
+
+
+ Samples student-t distributed random variables.
+
+ The algorithm is method 2 in section 5, chapter 9
+ in L. Devroye's "Non-Uniform Random Variate Generation"
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ a random number from the standard student-t distribution.
+
+
+
+ Generates a sample from the Student t-distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Student t-distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ the inverse cumulative density at .
+
+ WARNING: currently not an explicit implementation, hence slow and unreliable.
+
+
+
+ Generates a sample from the Student t-distribution.
+
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Student t-distribution using the Box-Muller algorithm.
+
+ The random number generator to use.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the Student t-distribution.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Student t-distribution using the Box-Muller algorithm.
+
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The location (μ) of the distribution.
+ The scale (σ) of the distribution. Range: σ > 0.
+ The degrees of freedom (ν) for the distribution. Range: ν > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Triangular distribution.
+ For details, see Wikipedia - Triangular distribution.
+
+ The distribution will use the by default.
+ Users can get/set the random number generator by using the property.
+ The statistics classes will check whether all the incoming parameters are in the allowed range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters
+ to false, all parameter checks can be turned off.
+
+
+
+ Initializes a new instance of the Triangular class with the given lower bound, upper bound and mode.
+
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ If the upper bound is smaller than the mode or if the mode is smaller than the lower bound.
+
+
+
+ Initializes a new instance of the Triangular class with the given lower bound, upper bound and mode.
+
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ The random number generator which is used to draw random samples.
+ If the upper bound is smaller than the mode or if the mode is smaller than the lower bound.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+
+
+
+ Gets the lower bound of the distribution.
+
+
+
+
+ Gets the upper bound of the distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets or sets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+
+ Gets the minimum of the distribution.
+
+
+
+
+ Gets the maximum of the distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the Triangular distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Triangular distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse of the cumulative distribution function (InvCDF) for the distribution
+ at the given probability. This is also known as the quantile or percent point function.
+
+ The location at which to compute the inverse cumulative density.
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ the inverse cumulative density at .
+
+
+
+
+ Generates a sample from the Triangular distribution.
+
+ The random number generator to use.
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Triangular distribution.
+
+ The random number generator to use.
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the Triangular distribution.
+
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Triangular distribution.
+
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ Lower bound. Range: lower ≤ mode ≤ upper
+ Upper bound. Range: lower ≤ mode ≤ upper
+ Mode (most frequent value). Range: lower ≤ mode ≤ upper
+ a sequence of samples from the distribution.
+
+
+
+ Initializes a new instance of the TruncatedPareto class.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+ The random number generator which is used to draw random samples.
+ If or are non-positive or if T ≤ xm.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+
+
+
+ Gets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the scale (xm) of the distribution. Range: xm > 0.
+
+
+
+
+ Gets the shape (α) of the distribution. Range: α > 0.
+
+
+
+
+ Gets the truncation (T) of the distribution. Range: T > 0.
+
+
+
+
+ Gets the n-th raw moment of the distribution.
+
+ The order (n) of the moment. Range: n ≥ 1.
+ the n-th moment of the distribution.
+
+
+
+ Gets the mean of the truncated Pareto distribution.
+
+
+
+
+ Gets the variance of the truncated Pareto distribution.
+
+
+
+
+ Gets the standard deviation of the truncated Pareto distribution.
+
+
+
+
+ Gets the mode of the truncated Pareto distribution (not supported).
+
+
+
+
+ Gets the minimum of the truncated Pareto distribution.
+
+
+
+
+ Gets the maximum of the truncated Pareto distribution.
+
+
+
+
+ Gets the entropy of the truncated Pareto distribution (not supported).
+
+
+
+
+ Gets the skewness of the truncated Pareto distribution.
+
+
+
+
+ Gets the median of the truncated Pareto distribution.
+
+
+
+
+ Generates a sample from the truncated Pareto distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+
+
+
+ Generates a sequence of samples from the truncated Pareto distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the truncated Pareto distribution.
+
+ The random number generator to use.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+
+
+
+ Generates a sequence of samples from the truncated Pareto distribution.
+
+ The random number generator to use.
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Computes the inverse cumulative distribution (CDF) of the distribution at p, i.e. solving for P(X ≤ x) = p.
+
+ The location at which to compute the inverse cumulative distribution function.
+ the inverse cumulative distribution at location .
+
+
+
+ Computes the inverse cumulative distribution (CDF) of the distribution at p, i.e. solving for P(X ≤ x) = p.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+ The location at which to compute the inverse cumulative distribution function.
+ the inverse cumulative distribution at location .
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The scale (xm) of the distribution. Range: xm > 0.
+ The shape (α) of the distribution. Range: α > 0.
+ The truncation (T) of the distribution. Range: T > xm.
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+
+ Continuous Univariate Weibull distribution.
+ For details about this distribution, see
+ Wikipedia - Weibull distribution.
+
+
+ The Weibull distribution is parametrized by a shape and scale parameter.
+
+
+
+
+ Reusable intermediate result 1 / (_scale ^ _shape)
+
+
+ By caching this parameter we can get slightly better numerics precision
+ in certain constellations without any additional computations.
+
+
+
+
+ Initializes a new instance of the Weibull class.
+
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+
+
+
+ Initializes a new instance of the Weibull class.
+
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+
+
+
+ Gets the shape (k) of the Weibull distribution. Range: k > 0.
+
+
+
+
+ Gets the scale (λ) of the Weibull distribution. Range: λ > 0.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the Weibull distribution.
+
+
+
+
+ Gets the variance of the Weibull distribution.
+
+
+
+
+ Gets the standard deviation of the Weibull distribution.
+
+
+
+
+ Gets the entropy of the Weibull distribution.
+
+
+
+
+ Gets the skewness of the Weibull distribution.
+
+
+
+
+ Gets the mode of the Weibull distribution.
+
+
+
+
+ Gets the median of the Weibull distribution.
+
+
+
+
+ Gets the minimum of the Weibull distribution.
+
+
+
+
+ Gets the maximum of the Weibull distribution.
+
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The location at which to compute the density.
+ the density at .
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The location at which to compute the log density.
+ the log density at .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Generates a sample from the Weibull distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Generates a sequence of samples from the Weibull distribution.
+
+ a sequence of samples from the distribution.
+
+
+
+ Computes the probability density of the distribution (PDF) at x, i.e. ∂P(X ≤ x)/∂x.
+
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ The location at which to compute the density.
+ the density at .
+
+
+
+
+ Computes the log probability density of the distribution (lnPDF) at x, i.e. ln(∂P(X ≤ x)/∂x).
+
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ The location at which to compute the density.
+ the log density at .
+
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ the cumulative distribution at location .
+
+
+
+
+ Implemented according to: Parameter estimation of the Weibull probability distribution, 1994, Hongzhu Qiao, Chris P. Tsokos
+
+
+
+ Returns a Weibull distribution.
+
+
+
+ Generates a sample from the Weibull distribution.
+
+ The random number generator to use.
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Weibull distribution.
+
+ The random number generator to use.
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Generates a sample from the Weibull distribution.
+
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ a sample from the distribution.
+
+
+
+ Generates a sequence of samples from the Weibull distribution.
+
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The shape (k) of the Weibull distribution. Range: k > 0.
+ The scale (λ) of the Weibull distribution. Range: λ > 0.
+ a sequence of samples from the distribution.
+
+
+
+ Multivariate Wishart distribution. This distribution is
+ parameterized by the degrees of freedom nu and the scale matrix S. The Wishart distribution
+ is the conjugate prior for the precision (inverse covariance) matrix of the multivariate
+ normal distribution.
+ Wikipedia - Wishart distribution.
+
+
+
+
+ The degrees of freedom for the Wishart distribution.
+
+
+
+
+ The scale matrix for the Wishart distribution.
+
+
+
+
+ Caches the Cholesky factorization of the scale matrix.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The degrees of freedom (n) for the Wishart distribution.
+ The scale matrix (V) for the Wishart distribution.
+
+
+
+ Initializes a new instance of the class.
+
+ The degrees of freedom (n) for the Wishart distribution.
+ The scale matrix (V) for the Wishart distribution.
+ The random number generator which is used to draw random samples.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The degrees of freedom (n) for the Wishart distribution.
+ The scale matrix (V) for the Wishart distribution.
+
+
+
+ Gets or sets the degrees of freedom (n) for the Wishart distribution.
+
+
+
+
+ Gets or sets the scale matrix (V) for the Wishart distribution.
+
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+ The mean of the distribution.
+
+
+
+ Gets the mode of the distribution.
+
+ The mode of the distribution.
+
+
+
+ Gets the variance of the distribution.
+
+ The variance of the distribution.
+
+
+
+ Evaluates the probability density function for the Wishart distribution.
+
+ The matrix at which to evaluate the density at.
+ If the argument does not have the same dimensions as the scale matrix.
+ the density at .
+
+
+
+ Samples a Wishart distributed random variable using the method
+ Algorithm AS 53: Wishart Variate Generator
+ W. B. Smith and R. R. Hocking
+ Applied Statistics, Vol. 21, No. 3 (1972), pp. 341-345
+
+ A random number from this distribution.
+
+
+
+ Samples a Wishart distributed random variable using the method
+ Algorithm AS 53: Wishart Variate Generator
+ W. B. Smith and R. R. Hocking
+ Applied Statistics, Vol. 21, No. 3 (1972), pp. 341-345
+
+ The random number generator to use.
+ The degrees of freedom (n) for the Wishart distribution.
+ The scale matrix (V) for the Wishart distribution.
+ a sequence of samples from the distribution.
+
+
+
+ Samples the distribution.
+
+ The random number generator to use.
+ The degrees of freedom (n) for the Wishart distribution.
+ The scale matrix (V) for the Wishart distribution.
+ The cholesky decomposition to use.
+ a random number from the distribution.
+
+
+
+ Discrete Univariate Zipf distribution.
+ Zipf's law, an empirical law formulated using mathematical statistics, refers to the fact
+ that many types of data studied in the physical and social sciences can be approximated with
+ a Zipfian distribution, one of a family of related discrete power law probability distributions.
+ For details about this distribution, see
+ Wikipedia - Zipf distribution.
+
+
+
+
+ The s parameter of the distribution.
+
+
+
+
+ The n parameter of the distribution.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+
+
+
+ Initializes a new instance of the class.
+
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+ The random number generator which is used to draw random samples.
+
+
+
+ A string representation of the distribution.
+
+ a string representation of the distribution.
+
+
+
+ Tests whether the provided values are valid parameters for this distribution.
+
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+
+
+
+ Gets or sets the s parameter of the distribution.
+
+
+
+
+ Gets or sets the n parameter of the distribution.
+
+
+
+
+ Gets or sets the random number generator which is used to draw random samples.
+
+
+
+
+ Gets the mean of the distribution.
+
+
+
+
+ Gets the variance of the distribution.
+
+
+
+
+ Gets the standard deviation of the distribution.
+
+
+
+
+ Gets the entropy of the distribution.
+
+
+
+
+ Gets the skewness of the distribution.
+
+
+
+
+ Gets the mode of the distribution.
+
+
+
+
+ Gets the median of the distribution.
+
+
+
+
+ Gets the smallest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Gets the largest element in the domain of the distributions which can be represented by an integer.
+
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ the cumulative distribution at location .
+
+
+
+ Computes the probability mass (PMF) at k, i.e. P(X = k).
+
+ The location in the domain where we want to evaluate the probability mass function.
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+ the probability mass at location .
+
+
+
+ Computes the log probability mass (lnPMF) at k, i.e. ln(P(X = k)).
+
+ The location in the domain where we want to evaluate the log probability mass function.
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+ the log probability mass at location .
+
+
+
+ Computes the cumulative distribution (CDF) of the distribution at x, i.e. P(X ≤ x).
+
+ The location at which to compute the cumulative distribution function.
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+ the cumulative distribution at location .
+
+
+
+
+ Generates a sample from the Zipf distribution without doing parameter checking.
+
+ The random number generator to use.
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+ a random number from the Zipf distribution.
+
+
+
+ Draws a random sample from the distribution.
+
+ a sample from the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+
+
+
+ Samples an array of zipf distributed random variables.
+
+ a sequence of samples from the distribution.
+
+
+
+ Samples a random variable.
+
+ The random number generator to use.
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+
+
+
+ Samples a sequence of this random variable.
+
+ The random number generator to use.
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The random number generator to use.
+ The array to fill with the samples.
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+
+
+
+ Samples a random variable.
+
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+
+
+
+ Samples a sequence of this random variable.
+
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+
+
+
+ Fills an array with samples generated from the distribution.
+
+ The array to fill with the samples.
+ The s parameter of the distribution.
+ The n parameter of the distribution.
+
+
+
+ Integer number theory functions.
+
+
+
+
+ Canonical Modulus. The result has the sign of the divisor.
+
+
+
+
+ Canonical Modulus. The result has the sign of the divisor.
+
+
+
+
+ Canonical Modulus. The result has the sign of the divisor.
+
+
+
+
+ Canonical Modulus. The result has the sign of the divisor.
+
+
+
+
+ Canonical Modulus. The result has the sign of the divisor.
+
+
+
+
+ Remainder (% operator). The result has the sign of the dividend.
+
+
+
+
+ Remainder (% operator). The result has the sign of the dividend.
+
+
+
+
+ Remainder (% operator). The result has the sign of the dividend.
+
+
+
+
+ Remainder (% operator). The result has the sign of the dividend.
+
+
+
+
+ Remainder (% operator). The result has the sign of the dividend.
+
+
+
+
+ Find out whether the provided 32 bit integer is an even number.
+
+ The number to very whether it's even.
+ True if and only if it is an even number.
+
+
+
+ Find out whether the provided 64 bit integer is an even number.
+
+ The number to very whether it's even.
+ True if and only if it is an even number.
+
+
+
+ Find out whether the provided 32 bit integer is an odd number.
+
+ The number to very whether it's odd.
+ True if and only if it is an odd number.
+
+
+
+ Find out whether the provided 64 bit integer is an odd number.
+
+ The number to very whether it's odd.
+ True if and only if it is an odd number.
+
+
+
+ Find out whether the provided 32 bit integer is a perfect power of two.
+
+ The number to very whether it's a power of two.
+ True if and only if it is a power of two.
+
+
+
+ Find out whether the provided 64 bit integer is a perfect power of two.
+
+ The number to very whether it's a power of two.
+ True if and only if it is a power of two.
+
+
+
+ Find out whether the provided 32 bit integer is a perfect square, i.e. a square of an integer.
+
+ The number to very whether it's a perfect square.
+ True if and only if it is a perfect square.
+
+
+
+ Find out whether the provided 64 bit integer is a perfect square, i.e. a square of an integer.
+
+ The number to very whether it's a perfect square.
+ True if and only if it is a perfect square.
+
+
+
+ Raises 2 to the provided integer exponent (0 <= exponent < 31).
+
+ The exponent to raise 2 up to.
+ 2 ^ exponent.
+
+
+
+
+ Raises 2 to the provided integer exponent (0 <= exponent < 63).
+
+ The exponent to raise 2 up to.
+ 2 ^ exponent.
+
+
+
+
+ Evaluate the binary logarithm of an integer number.
+
+ Two-step method using a De Bruijn-like sequence table lookup.
+
+
+
+ Find the closest perfect power of two that is larger or equal to the provided
+ 32 bit integer.
+
+ The number of which to find the closest upper power of two.
+ A power of two.
+
+
+
+
+ Find the closest perfect power of two that is larger or equal to the provided
+ 64 bit integer.
+
+ The number of which to find the closest upper power of two.
+ A power of two.
+
+
+
+
+ Returns the greatest common divisor (gcd) of two integers using Euclid's algorithm.
+
+ First Integer: a.
+ Second Integer: b.
+ Greatest common divisor gcd(a,b)
+
+
+
+ Returns the greatest common divisor (gcd) of a set of integers using Euclid's
+ algorithm.
+
+ List of Integers.
+ Greatest common divisor gcd(list of integers)
+
+
+
+ Returns the greatest common divisor (gcd) of a set of integers using Euclid's algorithm.
+
+ List of Integers.
+ Greatest common divisor gcd(list of integers)
+
+
+
+ Computes the extended greatest common divisor, such that a*x + b*y = gcd(a,b).
+
+ First Integer: a.
+ Second Integer: b.
+ Resulting x, such that a*x + b*y = gcd(a,b).
+ Resulting y, such that a*x + b*y = gcd(a,b)
+ Greatest common divisor gcd(a,b)
+
+
+ long x,y,d;
+ d = Fn.GreatestCommonDivisor(45,18,out x, out y);
+ -> d == 9 && x == 1 && y == -2
+
+ The gcd of 45 and 18 is 9: 18 = 2*9, 45 = 5*9. 9 = 1*45 -2*18, therefore x=1 and y=-2.
+
+
+
+
+ Returns the least common multiple (lcm) of two integers using Euclid's algorithm.
+
+ First Integer: a.
+ Second Integer: b.
+ Least common multiple lcm(a,b)
+
+
+
+ Returns the least common multiple (lcm) of a set of integers using Euclid's algorithm.
+
+ List of Integers.
+ Least common multiple lcm(list of integers)
+
+
+
+ Returns the least common multiple (lcm) of a set of integers using Euclid's algorithm.
+
+ List of Integers.
+ Least common multiple lcm(list of integers)
+
+
+
+ Returns the greatest common divisor (gcd) of two big integers.
+
+ First Integer: a.
+ Second Integer: b.
+ Greatest common divisor gcd(a,b)
+
+
+
+ Returns the greatest common divisor (gcd) of a set of big integers.
+
+ List of Integers.
+ Greatest common divisor gcd(list of integers)
+
+
+
+ Returns the greatest common divisor (gcd) of a set of big integers.
+
+ List of Integers.
+ Greatest common divisor gcd(list of integers)
+
+
+
+ Computes the extended greatest common divisor, such that a*x + b*y = gcd(a,b).
+
+ First Integer: a.
+ Second Integer: b.
+ Resulting x, such that a*x + b*y = gcd(a,b).
+ Resulting y, such that a*x + b*y = gcd(a,b)
+ Greatest common divisor gcd(a,b)
+
+
+ long x,y,d;
+ d = Fn.GreatestCommonDivisor(45,18,out x, out y);
+ -> d == 9 && x == 1 && y == -2
+
+ The gcd of 45 and 18 is 9: 18 = 2*9, 45 = 5*9. 9 = 1*45 -2*18, therefore x=1 and y=-2.
+
+
+
+
+ Returns the least common multiple (lcm) of two big integers.
+
+ First Integer: a.
+ Second Integer: b.
+ Least common multiple lcm(a,b)
+
+
+
+ Returns the least common multiple (lcm) of a set of big integers.
+
+ List of Integers.
+ Least common multiple lcm(list of integers)
+
+
+
+ Returns the least common multiple (lcm) of a set of big integers.
+
+ List of Integers.
+ Least common multiple lcm(list of integers)
+
+
+
+ Collection of functions equivalent to those provided by Microsoft Excel
+ but backed instead by Math.NET Numerics.
+ We do not recommend to use them except in an intermediate phase when
+ porting over solutions previously implemented in Excel.
+
+
+
+
+ An algorithm failed to converge.
+
+
+
+
+ An algorithm failed to converge due to a numerical breakdown.
+
+
+
+
+ An error occurred calling native provider function.
+
+
+
+
+ An error occurred calling native provider function.
+
+
+
+
+ Native provider was unable to allocate sufficient memory.
+
+
+
+
+ Native provider failed LU inversion do to a singular U matrix.
+
+
+
+
+ Compound Monthly Return or Geometric Return or Annualized Return
+
+
+
+
+ Average Gain or Gain Mean
+ This is a simple average (arithmetic mean) of the periods with a gain. It is calculated by summing the returns for gain periods (return 0)
+ and then dividing the total by the number of gain periods.
+
+ http://www.offshore-library.com/kb/statistics.php
+
+
+
+ Average Loss or LossMean
+ This is a simple average (arithmetic mean) of the periods with a loss. It is calculated by summing the returns for loss periods (return < 0)
+ and then dividing the total by the number of loss periods.
+
+ http://www.offshore-library.com/kb/statistics.php
+
+
+
+ Calculation is similar to Standard Deviation , except it calculates an average (mean) return only for periods with a gain
+ and measures the variation of only the gain periods around the gain mean. Measures the volatility of upside performance.
+ © Copyright 1996, 1999 Gary L.Gastineau. First Edition. © 1992 Swiss Bank Corporation.
+
+
+
+
+ Similar to standard deviation, except this statistic calculates an average (mean) return for only the periods with a loss and then
+ measures the variation of only the losing periods around this loss mean. This statistic measures the volatility of downside performance.
+
+ http://www.offshore-library.com/kb/statistics.php
+
+
+
+ This measure is similar to the loss standard deviation except the downside deviation
+ considers only returns that fall below a defined minimum acceptable return (MAR) rather than the arithmetic mean.
+ For example, if the MAR is 7%, the downside deviation would measure the variation of each period that falls below
+ 7%. (The loss standard deviation, on the other hand, would take only losing periods, calculate an average return for
+ the losing periods, and then measure the variation between each losing return and the losing return average).
+
+
+
+
+ A measure of volatility in returns below the mean. It's similar to standard deviation, but it only
+ looks at periods where the investment return was less than average return.
+
+
+
+
+ Measures a fund’s average gain in a gain period divided by the fund’s average loss in a losing
+ period. Periods can be monthly or quarterly depending on the data frequency.
+
+
+
+
+ Find value x that minimizes the scalar function f(x), constrained within bounds, using the Golden Section algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Nelder-Mead Simplex algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Nelder-Mead Simplex algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Nelder-Mead Simplex algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Nelder-Mead Simplex algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Nelder-Mead Simplex algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Nelder-Mead Simplex algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x), constrained within bounds, using the Broyden–Fletcher–Goldfarb–Shanno Bounded (BFGS-B) algorithm.
+ The missing gradient is evaluated numerically (forward difference).
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm.
+ For more options and diagnostics consider to use directly.
+ An alternative routine using conjugate gradients (CG) is available in .
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm.
+ For more options and diagnostics consider to use directly.
+ An alternative routine using conjugate gradients (CG) is available in .
+
+
+
+
+ Find vector x that minimizes the function f(x), constrained within bounds, using the Broyden–Fletcher–Goldfarb–Shanno Bounded (BFGS-B) algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x), constrained within bounds, using the Broyden–Fletcher–Goldfarb–Shanno Bounded (BFGS-B) algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Newton algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+
+ Find vector x that minimizes the function f(x) using the Newton algorithm.
+ For more options and diagnostics consider to use directly.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The low value of the range where the root is supposed to be.
+ The high value of the range where the root is supposed to be.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14.
+ Maximum number of iterations. Example: 100.
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The first derivative of the function to find roots from.
+ The low value of the range where the root is supposed to be.
+ The high value of the range where the root is supposed to be.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14.
+ Maximum number of iterations. Example: 100.
+
+
+
+ Find both complex roots of the quadratic equation c + b*x + a*x^2 = 0.
+ Note the special coefficient order ascending by exponent (consistent with polynomials).
+
+
+
+
+ Find all three complex roots of the cubic equation d + c*x + b*x^2 + a*x^3 = 0.
+ Note the special coefficient order ascending by exponent (consistent with polynomials).
+
+
+
+
+ Find all roots of a polynomial by calculating the characteristic polynomial of the companion matrix
+
+ The coefficients of the polynomial in ascending order, e.g. new double[] {5, 0, 2} = "5 + 0 x^1 + 2 x^2"
+ The roots of the polynomial
+
+
+
+ Find all roots of a polynomial by calculating the characteristic polynomial of the companion matrix
+
+ The polynomial.
+ The roots of the polynomial
+
+
+
+ Find all roots of the Chebychev polynomial of the first kind.
+
+ The polynomial order and therefore the number of roots.
+ The real domain interval begin where to start sampling.
+ The real domain interval end where to stop sampling.
+ Samples in [a,b] at (b+a)/2+(b-1)/2*cos(pi*(2i-1)/(2n))
+
+
+
+ Find all roots of the Chebychev polynomial of the second kind.
+
+ The polynomial order and therefore the number of roots.
+ The real domain interval begin where to start sampling.
+ The real domain interval end where to stop sampling.
+ Samples in [a,b] at (b+a)/2+(b-1)/2*cos(pi*i/(n-1))
+
+
+
+ Least-Squares Curve Fitting Routines
+
+
+
+
+ Least-Squares fitting the points (x,y) to a line y : x -> a+b*x,
+ returning its best fitting parameters as (a, b) tuple,
+ where a is the intercept and b the slope.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a line y : x -> a+b*x,
+ returning a function y' for the best fitting line.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a line through origin y : x -> b*x,
+ returning its best fitting parameter b,
+ where the intercept is zero and b the slope.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a line through origin y : x -> b*x,
+ returning a function y' for the best fitting line.
+
+
+
+
+ Least-Squares fitting the points (x,y) to an exponential y : x -> a*exp(r*x),
+ returning its best fitting parameters as (a, r) tuple.
+
+
+
+
+ Least-Squares fitting the points (x,y) to an exponential y : x -> a*exp(r*x),
+ returning a function y' for the best fitting line.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a logarithm y : x -> a + b*ln(x),
+ returning its best fitting parameters as (a, b) tuple.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a logarithm y : x -> a + b*ln(x),
+ returning a function y' for the best fitting line.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a power y : x -> a*x^b,
+ returning its best fitting parameters as (a, b) tuple.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a power y : x -> a*x^b,
+ returning a function y' for the best fitting line.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k,
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array, compatible with Polynomial.Evaluate.
+ A polynomial with order/degree k has (k+1) coefficients and thus requires at least (k+1) samples.
+
+
+
+
+ Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k,
+ returning a function y' for the best fitting polynomial.
+ A polynomial with order/degree k has (k+1) coefficients and thus requires at least (k+1) samples.
+
+
+
+
+ Weighted Least-Squares fitting the points (x,y) and weights w to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k,
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array, compatible with Polynomial.Evaluate.
+ A polynomial with order/degree k has (k+1) coefficients and thus requires at least (k+1) samples.
+
+
+
+
+ Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array.
+
+
+
+
+ Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ returning a function y' for the best fitting combination.
+
+
+
+
+ Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array.
+
+
+
+
+ Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ returning a function y' for the best fitting combination.
+
+
+
+
+ Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to a linear surface y : X -> p0*x0 + p1*x1 + ... + pk*xk,
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array.
+ If an intercept is added, its coefficient will be prepended to the resulting parameters.
+
+
+
+
+ Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to a linear surface y : X -> p0*x0 + p1*x1 + ... + pk*xk,
+ returning a function y' for the best fitting combination.
+ If an intercept is added, its coefficient will be prepended to the resulting parameters.
+
+
+
+
+ Weighted Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) and weights w to a linear surface y : X -> p0*x0 + p1*x1 + ... + pk*xk,
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array.
+
+
+
+
+ Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to an arbitrary linear combination y : X -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array.
+
+
+
+
+ Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to an arbitrary linear combination y : X -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ returning a function y' for the best fitting combination.
+
+
+
+
+ Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to an arbitrary linear combination y : X -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array.
+
+
+
+
+ Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to an arbitrary linear combination y : X -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ returning a function y' for the best fitting combination.
+
+
+
+
+ Least-Squares fitting the points (T,y) = (T,y) to an arbitrary linear combination y : X -> p0*f0(T) + p1*f1(T) + ... + pk*fk(T),
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array.
+
+
+
+
+ Least-Squares fitting the points (T,y) = (T,y) to an arbitrary linear combination y : X -> p0*f0(T) + p1*f1(T) + ... + pk*fk(T),
+ returning a function y' for the best fitting combination.
+
+
+
+
+ Least-Squares fitting the points (T,y) = (T,y) to an arbitrary linear combination y : X -> p0*f0(T) + p1*f1(T) + ... + pk*fk(T),
+ returning its best fitting parameters as [p0, p1, p2, ..., pk] array.
+
+
+
+
+ Least-Squares fitting the points (T,y) = (T,y) to an arbitrary linear combination y : X -> p0*f0(T) + p1*f1(T) + ... + pk*fk(T),
+ returning a function y' for the best fitting combination.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p, x),
+ returning its best fitting parameter p.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p0, p1, x),
+ returning its best fitting parameter p0 and p1.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p0, p1, p2, x),
+ returning its best fitting parameter p0, p1 and p2.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p0, p1, p2, p3, x),
+ returning its best fitting parameter p0, p1, p2 and p3.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p0, p1, p2, p3, p4, x),
+ returning its best fitting parameter p0, p1, p2, p3 and p4.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p, x),
+ returning a function y' for the best fitting curve.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p0, p1, x),
+ returning a function y' for the best fitting curve.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p0, p1, p2, x),
+ returning a function y' for the best fitting curve.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p0, p1, p2, p3, x),
+ returning a function y' for the best fitting curve.
+
+
+
+
+ Non-linear least-squares fitting the points (x,y) to an arbitrary function y : x -> f(p0, p1, p2, p3, p4, x),
+ returning a function y' for the best fitting curve.
+
+
+
+
+ Generate samples by sampling a function at the provided points.
+
+
+
+
+ Generate a sample sequence by sampling a function at the provided point sequence.
+
+
+
+
+ Generate samples by sampling a function at the provided points.
+
+
+
+
+ Generate a sample sequence by sampling a function at the provided point sequence.
+
+
+
+
+ Generate a linearly spaced sample vector of the given length between the specified values (inclusive).
+ Equivalent to MATLAB linspace but with the length as first instead of last argument.
+
+
+
+
+ Generate samples by sampling a function at linearly spaced points between the specified values (inclusive).
+
+
+
+
+ Generate a base 10 logarithmically spaced sample vector of the given length between the specified decade exponents (inclusive).
+ Equivalent to MATLAB logspace but with the length as first instead of last argument.
+
+
+
+
+ Generate samples by sampling a function at base 10 logarithmically spaced points between the specified decade exponents (inclusive).
+
+
+
+
+ Generate a linearly spaced sample vector within the inclusive interval (start, stop) and step 1.
+ Equivalent to MATLAB colon operator (:).
+
+
+
+
+ Generate a linearly spaced sample vector within the inclusive interval (start, stop) and step 1.
+ Equivalent to MATLAB colon operator (:).
+
+
+
+
+ Generate a linearly spaced sample vector within the inclusive interval (start, stop) and the provided step.
+ The start value is aways included as first value, but stop is only included if it stop-start is a multiple of step.
+ Equivalent to MATLAB double colon operator (::).
+
+
+
+
+ Generate a linearly spaced sample vector within the inclusive interval (start, stop) and the provided step.
+ The start value is aways included as first value, but stop is only included if it stop-start is a multiple of step.
+ Equivalent to MATLAB double colon operator (::).
+
+
+
+
+ Generate a linearly spaced sample vector within the inclusive interval (start, stop) and the provide step.
+ The start value is aways included as first value, but stop is only included if it stop-start is a multiple of step.
+ Equivalent to MATLAB double colon operator (::).
+
+
+
+
+ Generate samples by sampling a function at linearly spaced points within the inclusive interval (start, stop) and the provide step.
+ The start value is aways included as first value, but stop is only included if it stop-start is a multiple of step.
+
+
+
+
+ Create a periodic wave.
+
+ The number of samples to generate.
+ Samples per time unit (Hz). Must be larger than twice the frequency to satisfy the Nyquist criterion.
+ Frequency in periods per time unit (Hz).
+ The length of the period when sampled at one sample per time unit. This is the interval of the periodic domain, a typical value is 1.0, or 2*Pi for angular functions.
+ Optional phase offset.
+ Optional delay, relative to the phase.
+
+
+
+ Create a periodic wave.
+
+ The number of samples to generate.
+ The function to apply to each of the values and evaluate the resulting sample.
+ Samples per time unit (Hz). Must be larger than twice the frequency to satisfy the Nyquist criterion.
+ Frequency in periods per time unit (Hz).
+ The length of the period when sampled at one sample per time unit. This is the interval of the periodic domain, a typical value is 1.0, or 2*Pi for angular functions.
+ Optional phase offset.
+ Optional delay, relative to the phase.
+
+
+
+ Create an infinite periodic wave sequence.
+
+ Samples per time unit (Hz). Must be larger than twice the frequency to satisfy the Nyquist criterion.
+ Frequency in periods per time unit (Hz).
+ The length of the period when sampled at one sample per time unit. This is the interval of the periodic domain, a typical value is 1.0, or 2*Pi for angular functions.
+ Optional phase offset.
+ Optional delay, relative to the phase.
+
+
+
+ Create an infinite periodic wave sequence.
+
+ The function to apply to each of the values and evaluate the resulting sample.
+ Samples per time unit (Hz). Must be larger than twice the frequency to satisfy the Nyquist criterion.
+ Frequency in periods per time unit (Hz).
+ The length of the period when sampled at one sample per time unit. This is the interval of the periodic domain, a typical value is 1.0, or 2*Pi for angular functions.
+ Optional phase offset.
+ Optional delay, relative to the phase.
+
+
+
+ Create a Sine wave.
+
+ The number of samples to generate.
+ Samples per time unit (Hz). Must be larger than twice the frequency to satisfy the Nyquist criterion.
+ Frequency in periods per time unit (Hz).
+ The maximal reached peak.
+ The mean, or DC part, of the signal.
+ Optional phase offset.
+ Optional delay, relative to the phase.
+
+
+
+ Create an infinite Sine wave sequence.
+
+ Samples per unit.
+ Frequency in samples per unit.
+ The maximal reached peak.
+ The mean, or DC part, of the signal.
+ Optional phase offset.
+ Optional delay, relative to the phase.
+
+
+
+ Create a periodic square wave, starting with the high phase.
+
+ The number of samples to generate.
+ Number of samples of the high phase.
+ Number of samples of the low phase.
+ Sample value to be emitted during the low phase.
+ Sample value to be emitted during the high phase.
+ Optional delay.
+
+
+
+ Create an infinite periodic square wave sequence, starting with the high phase.
+
+ Number of samples of the high phase.
+ Number of samples of the low phase.
+ Sample value to be emitted during the low phase.
+ Sample value to be emitted during the high phase.
+ Optional delay.
+
+
+
+ Create a periodic triangle wave, starting with the raise phase from the lowest sample.
+
+ The number of samples to generate.
+ Number of samples of the raise phase.
+ Number of samples of the fall phase.
+ Lowest sample value.
+ Highest sample value.
+ Optional delay.
+
+
+
+ Create an infinite periodic triangle wave sequence, starting with the raise phase from the lowest sample.
+
+ Number of samples of the raise phase.
+ Number of samples of the fall phase.
+ Lowest sample value.
+ Highest sample value.
+ Optional delay.
+
+
+
+ Create a periodic sawtooth wave, starting with the lowest sample.
+
+ The number of samples to generate.
+ Number of samples a full sawtooth period.
+ Lowest sample value.
+ Highest sample value.
+ Optional delay.
+
+
+
+ Create an infinite periodic sawtooth wave sequence, starting with the lowest sample.
+
+ Number of samples a full sawtooth period.
+ Lowest sample value.
+ Highest sample value.
+ Optional delay.
+
+
+
+ Create an array with each field set to the same value.
+
+ The number of samples to generate.
+ The value that each field should be set to.
+
+
+
+ Create an infinite sequence where each element has the same value.
+
+ The value that each element should be set to.
+
+
+
+ Create a Heaviside Step sample vector.
+
+ The number of samples to generate.
+ The maximal reached peak.
+ Offset to the time axis.
+
+
+
+ Create an infinite Heaviside Step sample sequence.
+
+ The maximal reached peak.
+ Offset to the time axis.
+
+
+
+ Create a Kronecker Delta impulse sample vector.
+
+ The number of samples to generate.
+ The maximal reached peak.
+ Offset to the time axis. Zero or positive.
+
+
+
+ Create a Kronecker Delta impulse sample vector.
+
+ The maximal reached peak.
+ Offset to the time axis, hence the sample index of the impulse.
+
+
+
+ Create a periodic Kronecker Delta impulse sample vector.
+
+ The number of samples to generate.
+ impulse sequence period.
+ The maximal reached peak.
+ Offset to the time axis. Zero or positive.
+
+
+
+ Create a Kronecker Delta impulse sample vector.
+
+ impulse sequence period.
+ The maximal reached peak.
+ Offset to the time axis. Zero or positive.
+
+
+
+ Generate samples generated by the given computation.
+
+
+
+
+ Generate samples generated by the given computation.
+
+
+
+
+ Generate an infinite sequence generated by the given computation.
+
+
+
+
+ Generate an infinite sequence generated by the given computation.
+
+
+
+
+ Generate a Fibonacci sequence, including zero as first value.
+
+
+
+
+ Generate an infinite Fibonacci sequence, including zero as first value.
+
+
+
+
+ Create random samples, uniform between 0 and 1.
+ Faster than other methods but with reduced guarantees on randomness.
+
+
+
+
+ Create an infinite random sample sequence, uniform between 0 and 1.
+ Faster than other methods but with reduced guarantees on randomness.
+
+
+
+
+ Generate samples by sampling a function at samples from a probability distribution, uniform between 0 and 1.
+ Faster than other methods but with reduced guarantees on randomness.
+
+
+
+
+ Generate a sample sequence by sampling a function at samples from a probability distribution, uniform between 0 and 1.
+ Faster than other methods but with reduced guarantees on randomness.
+
+
+
+
+ Generate samples by sampling a function at sample pairs from a probability distribution, uniform between 0 and 1.
+ Faster than other methods but with reduced guarantees on randomness.
+
+
+
+
+ Generate a sample sequence by sampling a function at sample pairs from a probability distribution, uniform between 0 and 1.
+ Faster than other methods but with reduced guarantees on randomness.
+
+
+
+
+ Create samples with independent amplitudes of standard distribution.
+
+
+
+
+ Create an infinite sample sequence with independent amplitudes of standard distribution.
+
+
+
+
+ Create samples with independent amplitudes of normal distribution and a flat spectral density.
+
+
+
+
+ Create an infinite sample sequence with independent amplitudes of normal distribution and a flat spectral density.
+
+
+
+
+ Create random samples.
+
+
+
+
+ Create an infinite random sample sequence.
+
+
+
+
+ Create random samples.
+
+
+
+
+ Create an infinite random sample sequence.
+
+
+
+
+ Create random samples.
+
+
+
+
+ Create an infinite random sample sequence.
+
+
+
+
+ Create random samples.
+
+
+
+
+ Create an infinite random sample sequence.
+
+
+
+
+ Generate samples by sampling a function at samples from a probability distribution.
+
+
+
+
+ Generate a sample sequence by sampling a function at samples from a probability distribution.
+
+
+
+
+ Generate samples by sampling a function at sample pairs from a probability distribution.
+
+
+
+
+ Generate a sample sequence by sampling a function at sample pairs from a probability distribution.
+
+
+
+
+ Globalized String Handling Helpers
+
+
+
+
+ Tries to get a from the format provider,
+ returning the current culture if it fails.
+
+
+ An that supplies culture-specific
+ formatting information.
+
+ A instance.
+
+
+
+ Tries to get a from the format
+ provider, returning the current culture if it fails.
+
+
+ An that supplies culture-specific
+ formatting information.
+
+ A instance.
+
+
+
+ Tries to get a from the format provider, returning the current culture if it fails.
+
+
+ An that supplies culture-specific
+ formatting information.
+
+ A instance.
+
+
+
+ Globalized Parsing: Tokenize a node by splitting it into several nodes.
+
+ Node that contains the trimmed string to be tokenized.
+ List of keywords to tokenize by.
+ keywords to skip looking for (because they've already been handled).
+
+
+
+ Globalized Parsing: Parse a double number
+
+ First token of the number.
+ Culture Info.
+ The parsed double number using the given culture information.
+
+
+
+
+ Globalized Parsing: Parse a float number
+
+ First token of the number.
+ Culture Info.
+ The parsed float number using the given culture information.
+
+
+
+
+ Calculates r^2, the square of the sample correlation coefficient between
+ the observed outcomes and the observed predictor values.
+ Not to be confused with R^2, the coefficient of determination, see .
+
+ The modelled/predicted values
+ The observed/actual values
+ Squared Person product-momentum correlation coefficient.
+
+
+
+ Calculates r, the sample correlation coefficient between the observed outcomes
+ and the observed predictor values.
+
+ The modelled/predicted values
+ The observed/actual values
+ Person product-momentum correlation coefficient.
+
+
+
+ Calculates the Standard Error of the regression, given a sequence of
+ modeled/predicted values, and a sequence of actual/observed values
+
+ The modelled/predicted values
+ The observed/actual values
+ The Standard Error of the regression
+
+
+
+ Calculates the Standard Error of the regression, given a sequence of
+ modeled/predicted values, and a sequence of actual/observed values
+
+ The modelled/predicted values
+ The observed/actual values
+ The degrees of freedom by which the
+ number of samples is reduced for performing the Standard Error calculation
+ The Standard Error of the regression
+
+
+
+ Calculates the R-Squared value, also known as coefficient of determination,
+ given some modelled and observed values.
+
+ The values expected from the model.
+ The actual values obtained.
+ Coefficient of determination.
+
+
+
+ Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT).
+
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors.
+
+ Sample vector, where the FFT is evaluated in place.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors.
+
+ Sample vector, where the FFT is evaluated in place.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors.
+
+ Sample vector, where the FFT is evaluated in place.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors.
+
+ Sample vector, where the FFT is evaluated in place.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors.
+
+ Real part of the sample vector, where the FFT is evaluated in place.
+ Imaginary part of the sample vector, where the FFT is evaluated in place.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors.
+
+ Real part of the sample vector, where the FFT is evaluated in place.
+ Imaginary part of the sample vector, where the FFT is evaluated in place.
+ Fourier Transform Convention Options.
+
+
+
+ Packed Real-Complex forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors.
+ Since for real-valued time samples the complex spectrum is conjugate-even (symmetry),
+ the spectrum can be fully reconstructed from the positive frequencies only (first half).
+ The data array needs to be N+2 (if N is even) or N+1 (if N is odd) long in order to support such a packed spectrum.
+
+ Data array of length N+2 (if N is even) or N+1 (if N is odd).
+ The number of samples.
+ Fourier Transform Convention Options.
+
+
+
+ Packed Real-Complex forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors.
+ Since for real-valued time samples the complex spectrum is conjugate-even (symmetry),
+ the spectrum can be fully reconstructed form the positive frequencies only (first half).
+ The data array needs to be N+2 (if N is even) or N+1 (if N is odd) long in order to support such a packed spectrum.
+
+ Data array of length N+2 (if N is even) or N+1 (if N is odd).
+ The number of samples.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to multiple dimensional sample data.
+
+ Sample data, where the FFT is evaluated in place.
+
+ The data size per dimension. The first dimension is the major one.
+ For example, with two dimensions "rows" and "columns" the samples are assumed to be organized row by row.
+
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to multiple dimensional sample data.
+
+ Sample data, where the FFT is evaluated in place.
+
+ The data size per dimension. The first dimension is the major one.
+ For example, with two dimensions "rows" and "columns" the samples are assumed to be organized row by row.
+
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to two dimensional sample data.
+
+ Sample data, organized row by row, where the FFT is evaluated in place
+ The number of rows.
+ The number of columns.
+ Data available organized column by column instead of row by row can be processed directly by swapping the rows and columns arguments.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to two dimensional sample data.
+
+ Sample data, organized row by row, where the FFT is evaluated in place
+ The number of rows.
+ The number of columns.
+ Data available organized column by column instead of row by row can be processed directly by swapping the rows and columns arguments.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to a two dimensional data in form of a matrix.
+
+ Sample matrix, where the FFT is evaluated in place
+ Fourier Transform Convention Options.
+
+
+
+ Applies the forward Fast Fourier Transform (FFT) to a two dimensional data in form of a matrix.
+
+ Sample matrix, where the FFT is evaluated in place
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors.
+
+ Spectrum data, where the iFFT is evaluated in place.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors.
+
+ Spectrum data, where the iFFT is evaluated in place.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors.
+
+ Spectrum data, where the iFFT is evaluated in place.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors.
+
+ Spectrum data, where the iFFT is evaluated in place.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors.
+
+ Real part of the sample vector, where the iFFT is evaluated in place.
+ Imaginary part of the sample vector, where the iFFT is evaluated in place.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors.
+
+ Real part of the sample vector, where the iFFT is evaluated in place.
+ Imaginary part of the sample vector, where the iFFT is evaluated in place.
+ Fourier Transform Convention Options.
+
+
+
+ Packed Real-Complex inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors.
+ Since for real-valued time samples the complex spectrum is conjugate-even (symmetry),
+ the spectrum can be fully reconstructed form the positive frequencies only (first half).
+ The data array needs to be N+2 (if N is even) or N+1 (if N is odd) long in order to support such a packed spectrum.
+
+ Data array of length N+2 (if N is even) or N+1 (if N is odd).
+ The number of samples.
+ Fourier Transform Convention Options.
+
+
+
+ Packed Real-Complex inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors.
+ Since for real-valued time samples the complex spectrum is conjugate-even (symmetry),
+ the spectrum can be fully reconstructed form the positive frequencies only (first half).
+ The data array needs to be N+2 (if N is even) or N+1 (if N is odd) long in order to support such a packed spectrum.
+
+ Data array of length N+2 (if N is even) or N+1 (if N is odd).
+ The number of samples.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to multiple dimensional sample data.
+
+ Spectrum data, where the iFFT is evaluated in place.
+
+ The data size per dimension. The first dimension is the major one.
+ For example, with two dimensions "rows" and "columns" the samples are assumed to be organized row by row.
+
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to multiple dimensional sample data.
+
+ Spectrum data, where the iFFT is evaluated in place.
+
+ The data size per dimension. The first dimension is the major one.
+ For example, with two dimensions "rows" and "columns" the samples are assumed to be organized row by row.
+
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to two dimensional sample data.
+
+ Sample data, organized row by row, where the iFFT is evaluated in place
+ The number of rows.
+ The number of columns.
+ Data available organized column by column instead of row by row can be processed directly by swapping the rows and columns arguments.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to two dimensional sample data.
+
+ Sample data, organized row by row, where the iFFT is evaluated in place
+ The number of rows.
+ The number of columns.
+ Data available organized column by column instead of row by row can be processed directly by swapping the rows and columns arguments.
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to a two dimensional data in form of a matrix.
+
+ Sample matrix, where the iFFT is evaluated in place
+ Fourier Transform Convention Options.
+
+
+
+ Applies the inverse Fast Fourier Transform (iFFT) to a two dimensional data in form of a matrix.
+
+ Sample matrix, where the iFFT is evaluated in place
+ Fourier Transform Convention Options.
+
+
+
+ Generate the frequencies corresponding to each index in frequency space.
+ The frequency space has a resolution of sampleRate/N.
+ Index 0 corresponds to the DC part, the following indices correspond to
+ the positive frequencies up to the Nyquist frequency (sampleRate/2),
+ followed by the negative frequencies wrapped around.
+
+ Number of samples.
+ The sampling rate of the time-space data.
+
+
+
+ Fourier Transform Convention
+
+
+
+
+ Inverse integrand exponent (forward: positive sign; inverse: negative sign).
+
+
+
+
+ Only scale by 1/N in the inverse direction; No scaling in forward direction.
+
+
+
+
+ Don't scale at all (neither on forward nor on inverse transformation).
+
+
+
+
+ Universal; Symmetric scaling and common exponent (used in Maple).
+
+
+
+
+ Only scale by 1/N in the inverse direction; No scaling in forward direction (used in Matlab). [= AsymmetricScaling]
+
+
+
+
+ Inverse integrand exponent; No scaling at all (used in all Numerical Recipes based implementations). [= InverseExponent | NoScaling]
+
+
+
+
+ Fast (FHT) Implementation of the Discrete Hartley Transform (DHT).
+
+
+ Fast (FHT) Implementation of the Discrete Hartley Transform (DHT).
+
+
+
+
+ Naive forward DHT, useful e.g. to verify faster algorithms.
+
+ Time-space sample vector.
+ Hartley Transform Convention Options.
+ Corresponding frequency-space vector.
+
+
+
+ Naive inverse DHT, useful e.g. to verify faster algorithms.
+
+ Frequency-space sample vector.
+ Hartley Transform Convention Options.
+ Corresponding time-space vector.
+
+
+
+ Rescale FFT-the resulting vector according to the provided convention options.
+
+ Fourier Transform Convention Options.
+ Sample Vector.
+
+
+
+ Rescale the iFFT-resulting vector according to the provided convention options.
+
+ Fourier Transform Convention Options.
+ Sample Vector.
+
+
+
+ Naive generic DHT, useful e.g. to verify faster algorithms.
+
+ Time-space sample vector.
+ Corresponding frequency-space vector.
+
+
+
+ Hartley Transform Convention
+
+
+
+
+ Only scale by 1/N in the inverse direction; No scaling in forward direction.
+
+
+
+
+ Don't scale at all (neither on forward nor on inverse transformation).
+
+
+
+
+ Universal; Symmetric scaling.
+
+
+
+
+ Numerical Integration (Quadrature).
+
+
+
+
+ Approximation of the definite integral of an analytic smooth function on a closed interval.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ The expected relative accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation of the definite integral of an analytic smooth function on a closed interval.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximates a 2-dimensional definite integral using an Nth order Gauss-Legendre rule over the rectangle [a,b] x [c,d].
+
+ The 2-dimensional analytic smooth function to integrate.
+ Where the interval starts for the first (inside) integral, exclusive and finite.
+ Where the interval ends for the first (inside) integral, exclusive and finite.
+ Where the interval starts for the second (outside) integral, exclusive and finite.
+ /// Where the interval ends for the second (outside) integral, exclusive and finite.
+ Defines an Nth order Gauss-Legendre rule. The order also defines the number of abscissas and weights for the rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximates a 2-dimensional definite integral using an Nth order Gauss-Legendre rule over the rectangle [a,b] x [c,d].
+
+ The 2-dimensional analytic smooth function to integrate.
+ Where the interval starts for the first (inside) integral, exclusive and finite.
+ Where the interval ends for the first (inside) integral, exclusive and finite.
+ Where the interval starts for the second (outside) integral, exclusive and finite.
+ /// Where the interval ends for the second (outside) integral, exclusive and finite.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation of the definite integral of an analytic smooth function by double-exponential quadrature. When either or both limits are infinite, the integrand is assumed rapidly decayed to zero as x -> infinity.
+
+ The analytic smooth function to integrate.
+ Where the interval starts.
+ Where the interval stops.
+ The expected relative accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation of the definite integral of an analytic smooth function by Gauss-Legendre quadrature. When either or both limits are infinite, the integrand is assumed rapidly decayed to zero as x -> infinity.
+
+ The analytic smooth function to integrate.
+ Where the interval starts.
+ Where the interval stops.
+ Defines an Nth order Gauss-Legendre rule. The order also defines the number of abscissas and weights for the rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation of the definite integral of an analytic smooth function by Gauss-Kronrod quadrature. When either or both limits are infinite, the integrand is assumed rapidly decayed to zero as x -> infinity.
+
+ The analytic smooth function to integrate.
+ Where the interval starts.
+ Where the interval stops.
+ The expected relative accuracy of the approximation.
+ The maximum number of interval splittings permitted before stopping.
+ The number of Gauss-Kronrod points. Pre-computed for 15, 21, 31, 41, 51 and 61 points.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation of the definite integral of an analytic smooth function by Gauss-Kronrod quadrature. When either or both limits are infinite, the integrand is assumed rapidly decayed to zero as x -> infinity.
+
+ The analytic smooth function to integrate.
+ Where the interval starts.
+ Where the interval stops.
+ The difference between the (N-1)/2 point Gauss approximation and the N-point Gauss-Kronrod approximation
+ The L1 norm of the result, if there is a significant difference between this and the returned value, then the result is likely to be ill-conditioned.
+ The expected relative accuracy of the approximation.
+ The maximum number of interval splittings permitted before stopping
+ The number of Gauss-Kronrod points. Pre-computed for 15, 21, 31, 41, 51 and 61 points
+ Approximation of the finite integral in the given interval.
+
+
+
+ Numerical Contour Integration of a complex-valued function over a real variable,.
+
+
+
+
+ Approximation of the definite integral of an analytic smooth complex function by double-exponential quadrature. When either or both limits are infinite, the integrand is assumed rapidly decayed to zero as x -> infinity.
+
+ The analytic smooth complex function to integrate, defined on the real domain.
+ Where the interval starts.
+ Where the interval stops.
+ The expected relative accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation of the definite integral of an analytic smooth complex function by double-exponential quadrature. When either or both limits are infinite, the integrand is assumed rapidly decayed to zero as x -> infinity.
+
+ The analytic smooth complex function to integrate, defined on the real domain.
+ Where the interval starts.
+ Where the interval stops.
+ Defines an Nth order Gauss-Legendre rule. The order also defines the number of abscissas and weights for the rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation of the definite integral of an analytic smooth function by Gauss-Kronrod quadrature. When either or both limits are infinite, the integrand is assumed rapidly decayed to zero as x -> infinity.
+
+ The analytic smooth complex function to integrate, defined on the real domain.
+ Where the interval starts.
+ Where the interval stops.
+ The expected relative accuracy of the approximation.
+ The maximum number of interval splittings permitted before stopping
+ The number of Gauss-Kronrod points. Pre-computed for 15, 21, 31, 41, 51 and 61 points
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation of the definite integral of an analytic smooth function by Gauss-Kronrod quadrature. When either or both limits are infinite, the integrand is assumed rapidly decayed to zero as x -> infinity.
+
+ The analytic smooth complex function to integrate, defined on the real domain.
+ Where the interval starts.
+ Where the interval stops.
+ The difference between the (N-1)/2 point Gauss approximation and the N-point Gauss-Kronrod approximation
+ The L1 norm of the result, if there is a significant difference between this and the returned value, then the result is likely to be ill-conditioned.
+ The expected relative accuracy of the approximation.
+ The maximum number of interval splittings permitted before stopping
+ The number of Gauss-Kronrod points. Pre-computed for 15, 21, 31, 41, 51 and 61 points
+ Approximation of the finite integral in the given interval.
+
+
+
+ Analytic integration algorithm for smooth functions with no discontinuities
+ or derivative discontinuities and no poles inside the interval.
+
+
+
+
+ Maximum number of iterations, until the asked
+ maximum error is (likely to be) satisfied.
+
+
+
+
+ Approximate the integral by the double exponential transformation
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ The expected relative accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximate the integral by the double exponential transformation
+
+ The analytic smooth complex function to integrate, defined on the real domain.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ The expected relative accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Compute the abscissa vector for a single level.
+
+ The level to evaluate the abscissa vector for.
+ Abscissa Vector.
+
+
+
+ Compute the weight vector for a single level.
+
+ The level to evaluate the weight vector for.
+ Weight Vector.
+
+
+
+ Precomputed abscissa vector per level.
+
+
+
+
+ Precomputed weight vector per level.
+
+
+
+
+ Getter for the order.
+
+
+
+
+ Getter that returns a clone of the array containing the Kronrod abscissas.
+
+
+
+
+ Getter that returns a clone of the array containing the Kronrod weights.
+
+
+
+
+ Getter that returns a clone of the array containing the Gauss weights.
+
+
+
+
+ Performs adaptive Gauss-Kronrod quadrature on function f over the range (a,b)
+
+ The analytic smooth function to integrate
+ Where the interval starts
+ Where the interval stops
+ The difference between the (N-1)/2 point Gauss approximation and the N-point Gauss-Kronrod approximation
+ The L1 norm of the result, if there is a significant difference between this and the returned value, then the result is likely to be ill-conditioned.
+ The maximum relative error in the result
+ The maximum number of interval splittings permitted before stopping
+ The number of Gauss-Kronrod points. Pre-computed for 15, 21, 31, 41, 51 and 61 points
+
+
+
+ Performs adaptive Gauss-Kronrod quadrature on function f over the range (a,b)
+
+ The analytic smooth complex function to integrate, defined on the real axis.
+ Where the interval starts
+ Where the interval stops
+ The difference between the (N-1)/2 point Gauss approximation and the N-point Gauss-Kronrod approximation
+ The L1 norm of the result, if there is a significant difference between this and the returned value, then the result is likely to be ill-conditioned.
+ The maximum relative error in the result
+ The maximum number of interval splittings permitted before stopping
+ The number of Gauss-Kronrod points. Pre-computed for 15, 21, 31, 41, 51 and 61 points
+
+
+
+
+ Approximates a definite integral using an Nth order Gauss-Legendre rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Defines an Nth order Gauss-Legendre rule. The order also defines the number of abscissas and weights for the rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+
+
+
+ Gettter for the ith abscissa.
+
+ Index of the ith abscissa.
+ The ith abscissa.
+
+
+
+ Getter that returns a clone of the array containing the abscissas.
+
+
+
+
+ Getter for the ith weight.
+
+ Index of the ith weight.
+ The ith weight.
+
+
+
+ Getter that returns a clone of the array containing the weights.
+
+
+
+
+ Getter for the order.
+
+
+
+
+ Getter for the InvervalBegin.
+
+
+
+
+ Getter for the InvervalEnd.
+
+
+
+
+ Approximates a definite integral using an Nth order Gauss-Legendre rule.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, exclusive and finite.
+ Where the interval ends, exclusive and finite.
+ Defines an Nth order Gauss-Legendre rule. The order also defines the number of abscissas and weights for the rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximates a definite integral using an Nth order Gauss-Legendre rule.
+
+ The analytic smooth complex function to integrate, defined on the real domain.
+ Where the interval starts, exclusive and finite.
+ Where the interval ends, exclusive and finite.
+ Defines an Nth order Gauss-Legendre rule. The order also defines the number of abscissas and weights for the rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximates a 2-dimensional definite integral using an Nth order Gauss-Legendre rule over the rectangle [a,b] x [c,d].
+
+ The 2-dimensional analytic smooth function to integrate.
+ Where the interval starts for the first (inside) integral, exclusive and finite.
+ Where the interval ends for the first (inside) integral, exclusive and finite.
+ Where the interval starts for the second (outside) integral, exclusive and finite.
+ /// Where the interval ends for the second (outside) integral, exclusive and finite.
+ Defines an Nth order Gauss-Legendre rule. The order also defines the number of abscissas and weights for the rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Contains a method to compute the Gauss-Kronrod abscissas/weights and precomputed abscissas/weights for orders 15, 21, 31, 41, 51, 61.
+
+
+ Contains a method to compute the Gauss-Kronrod abscissas/weights.
+
+
+
+
+ Precomputed abscissas/weights for orders 15, 21, 31, 41, 51, 61.
+
+
+
+
+ Computes the Gauss-Kronrod abscissas/weights and Gauss weights.
+
+ Defines an Nth order Gauss-Kronrod rule. The order also defines the number of abscissas and weights for the rule.
+ Required precision to compute the abscissas/weights.
+ Object containing the non-negative abscissas/weights, order.
+
+
+
+ Returns coefficients of a Stieltjes polynomial in terms of Legendre polynomials.
+
+
+
+
+ Return value and derivative of a Legendre series at given points.
+
+
+
+
+ Return value and derivative of a Legendre polynomial of order at given points.
+
+
+
+
+ Creates a Gauss-Kronrod point.
+
+
+
+
+ Getter for the GaussKronrodPoint.
+
+ Defines an Nth order Gauss-Kronrod rule. Precomputed Gauss-Kronrod abscissas/weights for orders 15, 21, 31, 41, 51, 61 are used, otherwise they're calculated on the fly.
+ Object containing the non-negative abscissas/weights, and order.
+
+
+
+ Contains a method to compute the Gauss-Legendre abscissas/weights and precomputed abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024.
+
+
+ Contains a method to compute the Gauss-Legendre abscissas/weights and precomputed abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024.
+
+
+
+
+ Precomputed abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024.
+
+
+
+
+ Computes the Gauss-Legendre abscissas/weights.
+ See Pavel Holoborodko for a description of the algorithm.
+
+ Defines an Nth order Gauss-Legendre rule. The order also defines the number of abscissas and weights for the rule.
+ Required precision to compute the abscissas/weights. 1e-10 is usually fine.
+ Object containing the non-negative abscissas/weights, order, and intervalBegin/intervalEnd. The non-negative abscissas/weights are generated over the interval [-1,1] for the given order.
+
+
+
+ Creates and maps a Gauss-Legendre point.
+
+
+
+
+ Getter for the GaussPoint.
+
+ Defines an Nth order Gauss-Legendre rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+ Object containing the non-negative abscissas/weights, order, and intervalBegin/intervalEnd. The non-negative abscissas/weights are generated over the interval [-1,1] for the given order.
+
+
+
+ Getter for the GaussPoint.
+
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Defines an Nth order Gauss-Legendre rule. Precomputed Gauss-Legendre abscissas/weights for orders 2-20, 32, 64, 96, 100, 128, 256, 512, 1024 are used, otherwise they're calculated on the fly.
+ Object containing the abscissas/weights, order, and intervalBegin/intervalEnd.
+
+
+
+ Maps the non-negative abscissas/weights from the interval [-1, 1] to the interval [intervalBegin, intervalEnd].
+
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Object containing the non-negative abscissas/weights, order, and intervalBegin/intervalEnd. The non-negative abscissas/weights are generated over the interval [-1,1] for the given order.
+ Object containing the abscissas/weights, order, and intervalBegin/intervalEnd.
+
+
+
+ Contains the abscissas/weights, order, and intervalBegin/intervalEnd.
+
+
+
+
+ Contains two GaussPoint.
+
+
+
+
+ Approximation algorithm for definite integrals by the Trapezium rule of the Newton-Cotes family.
+
+
+ Wikipedia - Trapezium Rule
+
+
+
+
+ Direct 2-point approximation of the definite integral in the provided interval by the trapezium rule.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Direct 2-point approximation of the definite integral in the provided interval by the trapezium rule.
+
+ The analytic smooth complex function to integrate, defined on real domain.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Composite N-point approximation of the definite integral in the provided interval by the trapezium rule.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Number of composite subdivision partitions.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Composite N-point approximation of the definite integral in the provided interval by the trapezium rule.
+
+ The analytic smooth complex function to integrate, defined on real domain.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Number of composite subdivision partitions.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Adaptive approximation of the definite integral in the provided interval by the trapezium rule.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ The expected accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Adaptive approximation of the definite integral in the provided interval by the trapezium rule.
+
+ The analytic smooth complex function to integrate, define don real domain.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ The expected accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Adaptive approximation of the definite integral by the trapezium rule.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Abscissa vector per level provider.
+ Weight vector per level provider.
+ First Level Step
+ The expected relative accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Adaptive approximation of the definite integral by the trapezium rule.
+
+ The analytic smooth complex function to integrate, defined on the real domain.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Abscissa vector per level provider.
+ Weight vector per level provider.
+ First Level Step
+ The expected relative accuracy of the approximation.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Approximation algorithm for definite integrals by Simpson's rule.
+
+
+
+
+ Direct 3-point approximation of the definite integral in the provided interval by Simpson's rule.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Composite N-point approximation of the definite integral in the provided interval by Simpson's rule.
+
+ The analytic smooth function to integrate.
+ Where the interval starts, inclusive and finite.
+ Where the interval stops, inclusive and finite.
+ Even number of composite subdivision partitions.
+ Approximation of the finite integral in the given interval.
+
+
+
+ Interpolation Factory.
+
+
+
+
+ Creates an interpolation based on arbitrary points.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.Barycentric.InterpolateRationalFloaterHormannSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a Floater-Hormann rational pole-free interpolation based on arbitrary points.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.Barycentric.InterpolateRationalFloaterHormannSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a Bulirsch Stoer rational interpolation based on arbitrary points.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.BulirschStoerRationalInterpolation.InterpolateSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a barycentric polynomial interpolation where the given sample points are equidistant.
+
+ The sample points t, must be equidistant.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.Barycentric.InterpolatePolynomialEquidistantSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a Neville polynomial interpolation based on arbitrary points.
+ If the points happen to be equidistant, consider to use the much more robust PolynomialEquidistant instead.
+ Otherwise, consider whether RationalWithoutPoles would not be a more robust alternative.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.NevillePolynomialInterpolation.InterpolateSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a piecewise linear interpolation based on arbitrary points.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.LinearSpline.InterpolateSorted
+ instead, which is more efficient.
+
+
+
+
+ Create piecewise log-linear interpolation based on arbitrary points.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.LogLinear.InterpolateSorted
+ instead, which is more efficient.
+
+
+
+
+ Create an piecewise natural cubic spline interpolation based on arbitrary points,
+ with zero secondary derivatives at the boundaries.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.CubicSpline.InterpolateNaturalSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a piecewise cubic Akima spline interpolation based on arbitrary points.
+ Akima splines are robust to outliers.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.CubicSpline.InterpolateAkimaSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a piecewise cubic monotone spline interpolation based on arbitrary points.
+ This is a shape-preserving spline with continuous first derivative.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.CubicSpline.InterpolatePchipSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a piecewise cubic Hermite spline interpolation based on arbitrary points
+ and their slopes/first derivative.
+
+ The sample points t.
+ The sample point values x(t).
+ The slope at the sample points. Optimized for arrays.
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.CubicSpline.InterpolateHermiteSorted
+ instead, which is more efficient.
+
+
+
+
+ Create a step-interpolation based on arbitrary points.
+
+ The sample points t.
+ The sample point values x(t).
+
+ An interpolation scheme optimized for the given sample points and values,
+ which can then be used to compute interpolations and extrapolations
+ on arbitrary points.
+
+
+ if your data is already sorted in arrays, consider to use
+ MathNet.Numerics.Interpolation.StepInterpolation.InterpolateSorted
+ instead, which is more efficient.
+
+
+
+
+ Barycentric Interpolation Algorithm.
+
+ Supports neither differentiation nor integration.
+
+
+ Sample points (N), sorted ascendingly.
+ Sample values (N), sorted ascendingly by x.
+ Barycentric weights (N), sorted ascendingly by x.
+
+
+
+ Create a barycentric polynomial interpolation from a set of (x,y) value pairs with equidistant x, sorted ascendingly by x.
+
+
+
+
+ Create a barycentric polynomial interpolation from an unordered set of (x,y) value pairs with equidistant x.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a barycentric polynomial interpolation from an unsorted set of (x,y) value pairs with equidistant x.
+
+
+
+
+ Create a barycentric polynomial interpolation from a set of values related to linearly/equidistant spaced points within an interval.
+
+
+
+
+ Create a barycentric rational interpolation without poles, using Mike Floater and Kai Hormann's Algorithm.
+ The values are assumed to be sorted ascendingly by x.
+
+ Sample points (N), sorted ascendingly.
+ Sample values (N), sorted ascendingly by x.
+
+ Order of the interpolation scheme, 0 <= order <= N.
+ In most cases a value between 3 and 8 gives good results.
+
+
+
+
+ Create a barycentric rational interpolation without poles, using Mike Floater and Kai Hormann's Algorithm.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+ Sample points (N), no sorting assumed.
+ Sample values (N).
+
+ Order of the interpolation scheme, 0 <= order <= N.
+ In most cases a value between 3 and 8 gives good results.
+
+
+
+
+ Create a barycentric rational interpolation without poles, using Mike Floater and Kai Hormann's Algorithm.
+
+ Sample points (N), no sorting assumed.
+ Sample values (N).
+
+ Order of the interpolation scheme, 0 <= order <= N.
+ In most cases a value between 3 and 8 gives good results.
+
+
+
+
+ Create a barycentric rational interpolation without poles, using Mike Floater and Kai Hormann's Algorithm.
+ The values are assumed to be sorted ascendingly by x.
+
+ Sample points (N), sorted ascendingly.
+ Sample values (N), sorted ascendingly by x.
+
+
+
+ Create a barycentric rational interpolation without poles, using Mike Floater and Kai Hormann's Algorithm.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+ Sample points (N), no sorting assumed.
+ Sample values (N).
+
+
+
+ Create a barycentric rational interpolation without poles, using Mike Floater and Kai Hormann's Algorithm.
+
+ Sample points (N), no sorting assumed.
+ Sample values (N).
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t. NOT SUPPORTED.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t. NOT SUPPORTED.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t. NOT SUPPORTED.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b. NOT SUPPORTED.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Rational Interpolation (with poles) using Roland Bulirsch and Josef Stoer's Algorithm.
+
+
+
+ This algorithm supports neither differentiation nor integration.
+
+
+
+
+ Sample Points t, sorted ascendingly.
+ Sample Values x(t), sorted ascendingly by x.
+
+
+
+ Create a Bulirsch-Stoer rational interpolation from a set of (x,y) value pairs, sorted ascendingly by x.
+
+
+
+
+ Create a Bulirsch-Stoer rational interpolation from an unsorted set of (x,y) value pairs.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a Bulirsch-Stoer rational interpolation from an unsorted set of (x,y) value pairs.
+
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t. NOT SUPPORTED.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t. NOT SUPPORTED.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t. NOT SUPPORTED.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b. NOT SUPPORTED.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Cubic Spline Interpolation.
+
+ Supports both differentiation and integration.
+
+
+ sample points (N+1), sorted ascending
+ Zero order spline coefficients (N)
+ First order spline coefficients (N)
+ second order spline coefficients (N)
+ third order spline coefficients (N)
+
+
+
+ Create a Hermite cubic spline interpolation from a set of (x,y) value pairs and their slope (first derivative), sorted ascendingly by x.
+
+
+
+
+ Create a Hermite cubic spline interpolation from an unsorted set of (x,y) value pairs and their slope (first derivative).
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a Hermite cubic spline interpolation from an unsorted set of (x,y) value pairs and their slope (first derivative).
+
+
+
+
+ Create an Akima cubic spline interpolation from a set of (x,y) value pairs, sorted ascendingly by x.
+ Akima splines are robust to outliers.
+
+
+
+
+ Create an Akima cubic spline interpolation from an unsorted set of (x,y) value pairs.
+ Akima splines are robust to outliers.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create an Akima cubic spline interpolation from an unsorted set of (x,y) value pairs.
+ Akima splines are robust to outliers.
+
+
+
+
+ Create a piecewise cubic Hermite interpolating polynomial from an unsorted set of (x,y) value pairs.
+ Monotone-preserving interpolation with continuous first derivative.
+
+
+
+
+ Create a piecewise cubic Hermite interpolating polynomial from an unsorted set of (x,y) value pairs.
+ Monotone-preserving interpolation with continuous first derivative.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a piecewise cubic Hermite interpolating polynomial from an unsorted set of (x,y) value pairs.
+ Monotone-preserving interpolation with continuous first derivative.
+
+
+
+
+ Create a cubic spline interpolation from a set of (x,y) value pairs, sorted ascendingly by x,
+ and custom boundary/termination conditions.
+
+
+
+
+ Create a cubic spline interpolation from an unsorted set of (x,y) value pairs and custom boundary/termination conditions.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a cubic spline interpolation from an unsorted set of (x,y) value pairs and custom boundary/termination conditions.
+
+
+
+
+ Create a natural cubic spline interpolation from a set of (x,y) value pairs
+ and zero second derivatives at the two boundaries, sorted ascendingly by x.
+
+
+
+
+ Create a natural cubic spline interpolation from an unsorted set of (x,y) value pairs
+ and zero second derivatives at the two boundaries.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a natural cubic spline interpolation from an unsorted set of (x,y) value pairs
+ and zero second derivatives at the two boundaries.
+
+
+
+
+ Three-Point Differentiation Helper.
+
+ Sample Points t.
+ Sample Values x(t).
+ Index of the point of the differentiation.
+ Index of the first sample.
+ Index of the second sample.
+ Index of the third sample.
+ The derivative approximation.
+
+
+
+ Tridiagonal Solve Helper.
+
+ The a-vector[n].
+ The b-vector[n], will be modified by this function.
+ The c-vector[n].
+ The d-vector[n], will be modified by this function.
+ The x-vector[n]
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Find the index of the greatest sample point smaller than t,
+ or the left index of the closest segment for extrapolation.
+
+
+
+
+ Gets all the t values where the derivative is 0
+ see: https://mathworld.wolfram.com/StationaryPoint.html
+
+ An array of t values (in the domain of the function) where the derivative of the spline is 0
+
+
+
+ Returns the t values in the domain of the spline for which it takes the minimum and maximum value.
+
+ A tuple containing the t value for which the spline is minimum in the first component and maximum in the second component
+
+
+
+ Interpolation within the range of a discrete set of known data points.
+
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Piece-wise Linear Interpolation.
+
+ Supports both differentiation and integration.
+
+
+ Sample points (N+1), sorted ascending
+ Sample values (N or N+1) at the corresponding points; intercept, zero order coefficients
+ Slopes (N) at the sample points (first order coefficients): N
+
+
+
+ Create a linear spline interpolation from a set of (x,y) value pairs, sorted ascendingly by x.
+
+
+
+
+ Create a linear spline interpolation from an unsorted set of (x,y) value pairs.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a linear spline interpolation from an unsorted set of (x,y) value pairs.
+
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Find the index of the greatest sample point smaller than t,
+ or the left index of the closest segment for extrapolation.
+
+
+
+
+ Piece-wise Log-Linear Interpolation
+
+ This algorithm supports differentiation, not integration.
+
+
+
+ Internal Spline Interpolation
+
+
+
+ Sample points (N), sorted ascending
+ Natural logarithm of the sample values (N) at the corresponding points
+
+
+
+ Create a piecewise log-linear interpolation from a set of (x,y) value pairs, sorted ascendingly by x.
+
+
+
+
+ Create a piecewise log-linear interpolation from an unsorted set of (x,y) value pairs.
+ WARNING: Works in-place and can thus causes the data array to be reordered and modified.
+
+
+
+
+ Create a piecewise log-linear interpolation from an unsorted set of (x,y) value pairs.
+
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Lagrange Polynomial Interpolation using Neville's Algorithm.
+
+
+
+ This algorithm supports differentiation, but doesn't support integration.
+
+
+ When working with equidistant or Chebyshev sample points it is
+ recommended to use the barycentric algorithms specialized for
+ these cases instead of this arbitrary Neville algorithm.
+
+
+
+
+ Sample Points t, sorted ascendingly.
+ Sample Values x(t), sorted ascendingly by x.
+
+
+
+ Create a Neville polynomial interpolation from a set of (x,y) value pairs, sorted ascendingly by x.
+
+
+
+
+ Create a Neville polynomial interpolation from an unsorted set of (x,y) value pairs.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a Neville polynomial interpolation from an unsorted set of (x,y) value pairs.
+
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t. NOT SUPPORTED.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b. NOT SUPPORTED.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Quadratic Spline Interpolation.
+
+ Supports both differentiation and integration.
+
+
+ sample points (N+1), sorted ascending
+ Zero order spline coefficients (N)
+ First order spline coefficients (N)
+ second order spline coefficients (N)
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Find the index of the greatest sample point smaller than t,
+ or the left index of the closest segment for extrapolation.
+
+
+
+
+ Left and right boundary conditions.
+
+
+
+
+ Natural Boundary (Zero second derivative).
+
+
+
+
+ Parabolically Terminated boundary.
+
+
+
+
+ Fixed first derivative at the boundary.
+
+
+
+
+ Fixed second derivative at the boundary.
+
+
+
+
+ A step function where the start of each segment is included, and the last segment is open-ended.
+ Segment i is [x_i, x_i+1) for i < N, or [x_i, infinity] for i = N.
+ The domain of the function is all real numbers, such that y = 0 where x <.
+
+ Supports both differentiation and integration.
+
+
+ Sample points (N), sorted ascending
+ Samples values (N) of each segment starting at the corresponding sample point.
+
+
+
+ Create a linear spline interpolation from a set of (x,y) value pairs, sorted ascendingly by x.
+
+
+
+
+ Create a linear spline interpolation from an unsorted set of (x,y) value pairs.
+ WARNING: Works in-place and can thus causes the data array to be reordered.
+
+
+
+
+ Create a linear spline interpolation from an unsorted set of (x,y) value pairs.
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ Find the index of the greatest sample point smaller than t.
+
+
+
+
+ Wraps an interpolation with a transformation of the interpolated values.
+
+ Neither differentiation nor integration is supported.
+
+
+
+ Create a linear spline interpolation from a set of (x,y) value pairs, sorted ascendingly by x.
+
+
+
+
+ Create a linear spline interpolation from an unsorted set of (x,y) value pairs.
+ WARNING: Works in-place and can thus causes the data array to be reordered and modified.
+
+
+
+
+ Create a linear spline interpolation from an unsorted set of (x,y) value pairs.
+
+
+
+
+ Gets a value indicating whether the algorithm supports differentiation (interpolated derivative).
+
+
+
+
+ Gets a value indicating whether the algorithm supports integration (interpolated quadrature).
+
+
+
+
+ Interpolate at point t.
+
+ Point t to interpolate at.
+ Interpolated value x(t).
+
+
+
+ Differentiate at point t. NOT SUPPORTED.
+
+ Point t to interpolate at.
+ Interpolated first derivative at point t.
+
+
+
+ Differentiate twice at point t. NOT SUPPORTED.
+
+ Point t to interpolate at.
+ Interpolated second derivative at point t.
+
+
+
+ Indefinite integral at point t. NOT SUPPORTED.
+
+ Point t to integrate at.
+
+
+
+ Definite integral between points a and b. NOT SUPPORTED.
+
+ Left bound of the integration interval [a,b].
+ Right bound of the integration interval [a,b].
+
+
+
+ A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column).
+
+
+
+
+ Number of rows.
+
+ Using this instead of the RowCount property to speed up calculating
+ a matrix index in the data array.
+
+
+
+ Number of columns.
+
+ Using this instead of the ColumnCount property to speed up calculating
+ a matrix index in the data array.
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+
+ Create a new dense matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new dense matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to be in column-major order (column by column) and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+
+ Create a new dense matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new dense matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Create a new dense matrix with values sampled from the provided random distribution.
+
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of add
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the matrix and stores the result in the result vector.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ A vector using dense storage.
+
+
+
+
+ Number of elements
+
+
+
+
+ Gets the vector's data.
+
+
+
+
+ Create a new dense vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new dense vector with the given length.
+ All cells of the vector will be initialized to zero.
+
+ If length is less than one.
+
+
+
+ Create a new dense vector directly binding to a raw array.
+ The array is used directly without copying.
+ Very efficient, but changes to the array and the vector will affect each other.
+
+
+
+
+ Create a new dense vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given array.
+ This new vector will be independent from the array.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided value.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided init function.
+
+
+
+
+ Create a new dense vector with values sampled from the provided random distribution.
+
+
+
+
+ Gets the vector's data.
+
+ The vector's data.
+
+
+
+ Returns a reference to the internal data structure.
+
+ The DenseVector whose internal data we are
+ returning.
+
+ A reference to the internal date of the given vector.
+
+
+
+
+ Returns a vector bound directly to a reference of the provided array.
+
+ The array to bind to the DenseVector object.
+
+ A DenseVector whose values are bound to the given array.
+
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to add.
+ The vector to store the result of the addition.
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+ The vector to add to this one.
+ The vector to store the result of the addition.
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The vector to store the result of the subtraction.
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+ The vector to subtract from this one.
+ The vector to store the result of the subtraction.
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to multiply.
+ The vector to store the result of the multiplication.
+
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Multiplies a vector with a scalar.
+
+ The vector to scale.
+ The scalar value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a scalar.
+
+ The scalar value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a vector with a scalar.
+
+ The vector to divide.
+ The scalar value.
+ The result of the division.
+ If is .
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The divisor to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The divisor to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ of each element of the vector of the given divisor.
+
+ The vector whose elements we want to compute the remainder of.
+ The divisor to use,
+ If is .
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = ( ∑|this[i]|^p )^(1/p)
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Creates a double dense vector based on a string. The string can be in the following formats (without the
+ quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double.
+
+
+ A double dense vector containing the values specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific formatting information.
+
+
+
+
+ Converts the string representation of a real dense vector to double-precision dense vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a real vector to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Converts the string representation of a real dense vector to double-precision dense vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a real vector to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ A matrix type for diagonal matrices.
+
+
+ Diagonal matrices can be non-square matrices but the diagonal always starts
+ at element 0,0. A diagonal matrix will throw an exception if non diagonal
+ entries are set. The exception to this is when the off diagonal elements are
+ 0.0 or NaN; these settings will cause no change to the diagonal matrix.
+
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+
+ Create a new diagonal matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to contain the diagonal elements only and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+ Create a new diagonal matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ The matrix to copy from must be diagonal as well.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ The array to copy from must be diagonal as well.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided enumerable.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Create a new diagonal matrix with diagonal values sampled from the provided random distribution.
+
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar to add.
+ The matrix to store the result of the division.
+
+
+
+ Computes the determinant of this matrix.
+
+ The determinant of this matrix.
+
+
+
+ Returns the elements of the diagonal in a .
+
+ The elements of the diagonal.
+ For non-square matrices, the method returns Min(Rows, Columns) elements where
+ i == j (i is the row index, and j is the column index).
+
+
+
+ Copies the values of the given array to the diagonal.
+
+ The array to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+
+ Copies the values of the given to the diagonal.
+
+ The vector to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced L2 norm of the matrix.
+ The largest singular value of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+ Calculates the condition number of this matrix.
+ The condition number of the matrix.
+
+
+ Computes the inverse of this matrix.
+ If is not a square matrix.
+ If is singular.
+ The inverse of this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Creates a matrix that contains the values from the requested sub-matrix.
+
+ The row to start copying from.
+ The number of rows to copy. Must be positive.
+ The column to start copying from.
+ The number of columns to copy. Must be positive.
+ The requested sub-matrix.
+ If: - is
+ negative, or greater than or equal to the number of rows.
+ - is negative, or greater than or equal to the number
+ of columns.
+ - (columnIndex + columnLength) >= Columns
+ - (rowIndex + rowLength) >= Rows
+ If or
+ is not positive.
+
+
+
+ Permute the columns of a matrix according to a permutation.
+
+ The column permutation to apply to this matrix.
+ Always thrown
+ Permutation in diagonal matrix are senseless, because of matrix nature
+
+
+
+ Permute the rows of a matrix according to a permutation.
+
+ The row permutation to apply to this matrix.
+ Always thrown
+ Permutation in diagonal matrix are senseless, because of matrix nature
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Gets the determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ Gets the log determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization for dense matrices.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ Cholesky factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+ If does not have the same dimensions as the existing factor.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the eigenvalue decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ If it is known whether the matrix is symmetric or not the routine can skip checking it itself.
+ If is null.
+ If EVD algorithm failed to converge with matrix .
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Initializes a new instance of the class. This object creates an orthogonal matrix
+ using the modified Gram-Schmidt method.
+
+ The matrix to factor.
+ If is null.
+ If row count is less then column count
+ If is rank deficient
+
+
+
+ Factorize matrix using the modified Gram-Schmidt method.
+
+ Initial matrix. On exit is replaced by Q.
+ Number of rows in Q.
+ Number of columns in Q.
+ On exit is filled by R.
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ LU factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+
+
+
+
+ Gets or sets Tau vector. Contains additional information on Q - used for native solver.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ QR factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ The type of QR factorization to perform.
+ If is null.
+ If row count is less then column count
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD) for .
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the singular value decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ Compute the singular U and VT vectors or not.
+ If is null.
+ If SVD algorithm failed to converge with matrix .
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+ Matrix V is encoded in the property EigenVectors in the way that:
+ - column corresponding to real eigenvalue represents real eigenvector,
+ - columns corresponding to the pair of complex conjugate eigenvalues
+ lambda[i] and lambda[i+1] encode real and imaginary parts of eigenvectors.
+
+
+
+
+ Gets the absolute value of determinant of the square matrix for which the EVD was computed.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+ In the Math.NET implementation we also store a set of pivot elements for increased
+ numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Gets the determinant of the matrix for which the LU factorization was computed.
+
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+ If a factorization is performed, the resulting Q matrix is an m x m matrix
+ and the R matrix is an m x n matrix. If a factorization is performed, the
+ resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD).
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets the two norm of the .
+
+ The 2-norm of the .
+
+
+
+ Gets the condition number max(S) / min(S)
+
+ The condition number.
+
+
+
+ Gets the determinant of the square matrix for which the SVD was computed.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization for user matrices.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Computes the Cholesky factorization in-place.
+
+ On entry, the matrix to factor. On exit, the Cholesky factor matrix
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ Cholesky factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+ If does not have the same dimensions as the existing factor.
+
+
+
+ Calculate Cholesky step
+
+ Factor matrix
+ Number of rows
+ Column start
+ Total columns
+ Multipliers calculated previously
+ Number of available processors
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the eigenvalue decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ If it is known whether the matrix is symmetric or not the routine can skip checking it itself.
+ If is null.
+ If EVD algorithm failed to converge with matrix .
+
+
+
+ Symmetric Householder reduction to tridiagonal form.
+
+ The eigen vectors to work on.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tred2 by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Symmetric tridiagonal QL algorithm.
+
+ The eigen vectors to work on.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tql2, by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Nonsymmetric reduction to Hessenberg form.
+
+ The eigen vectors to work on.
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedures orthes and ortran,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutines in EISPACK.
+
+
+
+ Nonsymmetric reduction from Hessenberg to real Schur form.
+
+ The eigen vectors to work on.
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedure hqr2,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Complex scalar division X/Y.
+
+ Real part of X
+ Imaginary part of X
+ Real part of Y
+ Imaginary part of Y
+ Division result as a number.
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Initializes a new instance of the class. This object creates an orthogonal matrix
+ using the modified Gram-Schmidt method.
+
+ The matrix to factor.
+ If is null.
+ If row count is less then column count
+ If is rank deficient
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ LU factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ QR factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ The QR factorization method to use.
+ If is null.
+
+
+
+ Generate column from initial matrix to work array
+
+ Initial matrix
+ The first row
+ Column index
+ Generated vector
+
+
+
+ Perform calculation of Q or R
+
+ Work array
+ Q or R matrices
+ The first row
+ The last row
+ The first column
+ The last column
+ Number of available CPUs
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD) for .
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the singular value decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ Compute the singular U and VT vectors or not.
+ If is null.
+
+
+
+
+ Calculates absolute value of multiplied on signum function of
+
+ Double value z1
+ Double value z2
+ Result multiplication of signum function and absolute value
+
+
+
+ Swap column and
+
+ Source matrix
+ The number of rows in
+ Column A index to swap
+ Column B index to swap
+
+
+
+ Scale column by starting from row
+
+ Source matrix
+ The number of rows in
+ Column to scale
+ Row to scale from
+ Scale value
+
+
+
+ Scale vector by starting from index
+
+ Source vector
+ Row to scale from
+ Scale value
+
+
+
+ Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s
+ associated with the Givens rotation that zeros the y-coordinate of the point.
+
+ Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation
+ Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation
+ Contains the parameter c associated with the Givens rotation
+ Contains the parameter s associated with the Givens rotation
+ This is equivalent to the DROTG LAPACK routine.
+
+
+
+ Calculate Norm 2 of the column in matrix starting from row
+
+ Source matrix
+ The number of rows in
+ Column index
+ Start row index
+ Norm2 (Euclidean norm) of the column
+
+
+
+ Calculate Norm 2 of the vector starting from index
+
+ Source vector
+ Start index
+ Norm2 (Euclidean norm) of the vector
+
+
+
+ Calculate dot product of and
+
+ Source matrix
+ The number of rows in
+ Index of column A
+ Index of column B
+ Starting row index
+ Dot product value
+
+
+
+ Performs rotation of points in the plane. Given two vectors x and y ,
+ each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i)
+
+ Source matrix
+ The number of rows in
+ Index of column A
+ Index of column B
+ Scalar "c" value
+ Scalar "s" value
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ double version of the class.
+
+
+
+
+ Initializes a new instance of the Matrix class.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero.
+
+
+
+
+ Returns the conjugate transpose of this matrix.
+
+ The conjugate transpose of this matrix.
+
+
+
+ Puts the conjugate transpose of this matrix into the result matrix.
+
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract to this matrix.
+ The matrix to store the result of subtraction.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar to divide by each element of the matrix.
+ The matrix to store the result of the division.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The matrix to store the result of the pointwise power.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Computes the Moore-Penrose Pseudo-Inverse of this matrix.
+
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the p-norms of all row vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the p-norms of all column vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all row vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all column vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the value sum of each row vector.
+
+
+
+
+ Calculates the absolute value sum of each row vector.
+
+
+
+
+ Calculates the value sum of each column vector.
+
+
+
+
+ Calculates the absolute value sum of each column vector.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A Bi-Conjugate Gradient stabilized iterative matrix solver.
+
+
+
+ The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement'
+ of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the
+ BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the
+ proper preconditioner.
+
+
+ The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks
+ for iterative methods
+
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel,
+ June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo,
+ Charles Romine and Henk van der Vorst
+
+ Url: http://www.netlib.org/templates/Templates.html
+
+ Algorithm is described in Chapter 2, section 2.3.8, page 27
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient , A.
+ The solution , b.
+ The result , x.
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A composite matrix solver. The actual solver is made by a sequence of
+ matrix solvers.
+
+
+
+ Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373�387
+
+
+ Note that if an iterator is passed to this solver it will be used for all the sub-solvers.
+
+
+
+
+
+ The collection of solvers that will be used
+
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A diagonal preconditioner. The preconditioner uses the inverse
+ of the matrix diagonal as preconditioning values.
+
+
+
+
+ The inverse of the matrix diagonal.
+
+
+
+
+ Returns the decomposed matrix diagonal.
+
+ The matrix diagonal.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The upon which this preconditioner is based.
+ If is .
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ A Generalized Product Bi-Conjugate Gradient iterative matrix solver.
+
+
+
+ The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an
+ alternative version of the Bi-Conjugate Gradient stabilized (CG) solver.
+ Unlike the CG solver the GPBiCG solver can be used on
+ non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the
+ proper preconditioner.
+
+
+ The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with
+ efficiency and robustness
+
+ S. Fujino
+
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117
+
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Indicates the number of BiCGStab steps should be taken
+ before switching.
+
+
+
+
+ Indicates the number of GPBiCG steps should be taken
+ before switching.
+
+
+
+
+ Gets or sets the number of steps taken with the BiCgStab algorithm
+ before switching over to the GPBiCG algorithm.
+
+
+
+
+ Gets or sets the number of steps taken with the GPBiCG algorithm
+ before switching over to the BiCgStab algorithm.
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Decide if to do steps with BiCgStab
+
+ Number of iteration
+ true if yes, otherwise false
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ An incomplete, level 0, LU factorization preconditioner.
+
+
+ The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+
+
+ The matrix holding the lower (L) and upper (U) matrices. The
+ decomposition matrices are combined to reduce storage.
+
+
+
+
+ Returns the upper triagonal matrix that was created during the LU decomposition.
+
+ A new matrix containing the upper triagonal elements.
+
+
+
+ Returns the lower triagonal matrix that was created during the LU decomposition.
+
+ A new matrix containing the lower triagonal elements.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix upon which the preconditioner is based.
+ If is .
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ This class performs an Incomplete LU factorization with drop tolerance
+ and partial pivoting. The drop tolerance indicates which additional entries
+ will be dropped from the factorized LU matrices.
+
+
+ The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner
+
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22
+
+
+
+
+ The default fill level.
+
+
+
+
+ The default drop tolerance.
+
+
+
+
+ The decomposed upper triangular matrix.
+
+
+
+
+ The decomposed lower triangular matrix.
+
+
+
+
+ The array containing the pivot values.
+
+
+
+
+ The fill level.
+
+
+
+
+ The drop tolerance.
+
+
+
+
+ The pivot tolerance.
+
+
+
+
+ Initializes a new instance of the class with the default settings.
+
+
+
+
+ Initializes a new instance of the class with the specified settings.
+
+
+ The amount of fill that is allowed in the matrix. The value is a fraction of
+ the number of non-zero entries in the original matrix. Values should be positive.
+
+
+ The absolute drop tolerance which indicates below what absolute value an entry
+ will be dropped from the matrix. A drop tolerance of 0.0 means that no values
+ will be dropped. Values should always be positive.
+
+
+ The pivot tolerance which indicates at what level pivoting will take place. A
+ value of 0.0 means that no pivoting will take place.
+
+
+
+
+ Gets or sets the amount of fill that is allowed in the matrix. The
+ value is a fraction of the number of non-zero entries in the original
+ matrix. The standard value is 200.
+
+
+
+ Values should always be positive and can be higher than 1.0. A value lower
+ than 1.0 means that the eventual preconditioner matrix will have fewer
+ non-zero entries as the original matrix. A value higher than 1.0 means that
+ the eventual preconditioner can have more non-zero values than the original
+ matrix.
+
+
+ Note that any changes to the FillLevel after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Gets or sets the absolute drop tolerance which indicates below what absolute value
+ an entry will be dropped from the matrix. The standard value is 0.0001.
+
+
+
+ The values should always be positive and can be larger than 1.0. A low value will
+ keep more small numbers in the preconditioner matrix. A high value will remove
+ more small numbers from the preconditioner matrix.
+
+
+ Note that any changes to the DropTolerance after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Gets or sets the pivot tolerance which indicates at what level pivoting will
+ take place. The standard value is 0.0 which means pivoting will never take place.
+
+
+
+ The pivot tolerance is used to calculate if pivoting is necessary. Pivoting
+ will take place if any of the values in a row is bigger than the
+ diagonal value of that row divided by the pivot tolerance, i.e. pivoting
+ will take place if row(i,j) > row(i,i) / PivotTolerance for
+ any j that is not equal to i.
+
+
+ Note that any changes to the PivotTolerance after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Returns the upper triagonal matrix that was created during the LU decomposition.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ A new matrix containing the upper triagonal elements.
+
+
+
+ Returns the lower triagonal matrix that was created during the LU decomposition.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ A new matrix containing the lower triagonal elements.
+
+
+
+ Returns the pivot array. This array is not needed for normal use because
+ the preconditioner will return the solution vector values in the proper order.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ The pivot array.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The upon which this preconditioner is based. Note that the
+ method takes a general matrix type. However internally the data is stored
+ as a sparse matrix. Therefore it is not recommended to pass a dense matrix.
+
+ If is .
+ If is not a square matrix.
+
+
+
+ Pivot elements in the according to internal pivot array
+
+ Row to pivot in
+
+
+
+ Was pivoting already performed
+
+ Pivots already done
+ Current item to pivot
+ true if performed, otherwise false
+
+
+
+ Swap columns in the
+
+ Source .
+ First column index to swap
+ Second column index to swap
+
+
+
+ Sort vector descending, not changing vector but placing sorted indices to
+
+ Start sort form
+ Sort till upper bound
+ Array with sorted vector indices
+ Source
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ Pivot elements in according to internal pivot array
+
+ Source .
+ Result after pivoting.
+
+
+
+ An element sort algorithm for the class.
+
+
+ This sort algorithm is used to sort the columns in a sparse matrix based on
+ the value of the element on the diagonal of the matrix.
+
+
+
+
+ Sorts the elements of the vector in decreasing
+ fashion. The vector itself is not affected.
+
+ The starting index.
+ The stopping index.
+ An array that will contain the sorted indices once the algorithm finishes.
+ The that contains the values that need to be sorted.
+
+
+
+ Sorts the elements of the vector in decreasing
+ fashion using heap sort algorithm. The vector itself is not affected.
+
+ The starting index.
+ The stopping index.
+ An array that will contain the sorted indices once the algorithm finishes.
+ The that contains the values that need to be sorted.
+
+
+
+ Build heap for double indices
+
+ Root position
+ Length of
+ Indices of
+ Target
+
+
+
+ Sift double indices
+
+ Indices of
+ Target
+ Root position
+ Length of
+
+
+
+ Sorts the given integers in a decreasing fashion.
+
+ The values.
+
+
+
+ Sort the given integers in a decreasing fashion using heapsort algorithm
+
+ Array of values to sort
+ Length of
+
+
+
+ Build heap
+
+ Target values array
+ Root position
+ Length of
+
+
+
+ Sift values
+
+ Target value array
+ Root position
+ Length of
+
+
+
+ Exchange values in array
+
+ Target values array
+ First value to exchange
+ Second value to exchange
+
+
+
+ A simple milu(0) preconditioner.
+
+
+ Original Fortran code by Yousef Saad (07 January 2004)
+
+
+
+ Use modified or standard ILU(0)
+
+
+
+ Gets or sets a value indicating whether to use modified or standard ILU(0).
+
+
+
+
+ Gets a value indicating whether the preconditioner is initialized.
+
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix upon which the preconditioner is based.
+ If is .
+ If is not a square or is not an
+ instance of SparseCompressedRowMatrixStorage.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector b.
+ The left hand side vector x.
+
+
+
+ MILU0 is a simple milu(0) preconditioner.
+
+ Order of the matrix.
+ Matrix values in CSR format (input).
+ Column indices (input).
+ Row pointers (input).
+ Matrix values in MSR format (output).
+ Row pointers and column indices (output).
+ Pointer to diagonal elements (output).
+ True if the modified/MILU algorithm should be used (recommended)
+ Returns 0 on success or k > 0 if a zero pivot was encountered at step k.
+
+
+
+ A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver.
+
+
+
+ The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement'
+ of the standard BiCgStab solver.
+
+
+ The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors
+
+ Man-Chung Yeung and Tony F. Chan
+
+ SIAM Journal of Scientific Computing
+
+ Volume 21, Number 4, pp. 1263 - 1290
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ The default number of starting vectors.
+
+
+
+
+ The collection of starting vectors which are used as the basis for the Krylov sub-space.
+
+
+
+
+ The number of starting vectors used by the algorithm
+
+
+
+
+ Gets or sets the number of starting vectors.
+
+
+ Must be larger than 1 and smaller than the number of variables in the matrix that
+ for which this solver will be used.
+
+
+
+
+ Resets the number of starting vectors to the default value.
+
+
+
+
+ Gets or sets a series of orthonormal vectors which will be used as basis for the
+ Krylov sub-space.
+
+
+
+
+ Gets the number of starting vectors to create
+
+ Maximum number
+ Number of variables
+ Number of starting vectors to create
+
+
+
+ Returns an array of starting vectors.
+
+ The maximum number of starting vectors that should be created.
+ The number of variables.
+
+ An array with starting vectors. The array will never be larger than the
+ but it may be smaller if
+ the is smaller than
+ the .
+
+
+
+
+ Create random vectors array
+
+ Number of vectors
+ Size of each vector
+ Array of random vectors
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Source A.
+ Residual data.
+ x data.
+ b data.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver.
+
+
+
+ The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems.
+
+ Yousef Saad
+
+ Algorithm is described in Chapter 7, section 7.4.3, page 219
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Is even?
+
+ Number to check
+ true if even, otherwise false
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A Matrix with sparse storage, intended for very large matrices where most of the cells are zero.
+ The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format.
+ Wikipedia - CSR.
+
+
+
+
+ Gets the number of non zero elements in the matrix.
+
+ The number of non zero elements.
+
+
+
+ Create a new sparse matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square sparse matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new sparse matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new sparse matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in row-major order (row by row).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+
+ Create a new sparse matrix with the given number of rows and columns as a copy of the given array.
+ The array is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new sparse matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract to this matrix.
+ The matrix to store the result of subtraction.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ A vector with sparse storage, intended for very large vectors where most of the cells are zero.
+
+ The sparse vector is not thread safe.
+
+
+
+ Gets the number of non zero elements in the vector.
+
+ The number of non zero elements.
+
+
+
+ Create a new sparse vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new sparse vector with the given length.
+ All cells of the vector will be initialized to zero.
+
+ If length is less than one.
+
+
+
+ Create a new sparse vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided value.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided init function.
+
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+ Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled
+ sparse vector and very inefficient. Would be better to work with a dense vector instead.
+
+
+ The scalar to add.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+
+ The vector to add to this one.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+
+ The scalar to subtract.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+
+ The vector to subtract from this one.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to multiply.
+
+
+ The vector to store the result of the multiplication.
+
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Multiplies a vector with a scalar.
+
+ The vector to scale.
+ The scalar value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a scalar.
+
+ The scalar value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a vector with a scalar.
+
+ The vector to divide.
+ The scalar value.
+ The result of the division.
+ If is .
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ of each element of the vector of the given divisor.
+
+ The vector whose elements we want to compute the modulus of.
+ The divisor to use,
+ The result of the calculation
+ If is .
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = ( ∑|this[i]|^p )^(1/p)
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Creates a double sparse vector based on a string. The string can be in the following formats (without the
+ quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double.
+
+
+ A double sparse vector containing the values specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific formatting information.
+
+
+
+
+ Converts the string representation of a real sparse vector to double-precision sparse vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a real vector to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Converts the string representation of a real sparse vector to double-precision sparse vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a real vector to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ double version of the class.
+
+
+
+
+ Initializes a new instance of the Vector class.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero.
+
+
+
+
+ Conjugates vector and save result to
+
+ Target vector
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to add.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+
+ The vector to add to this one.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+
+ The scalar to subtract.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+
+ The vector to subtract from this one.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to multiply.
+
+
+ The vector to store the result of the multiplication.
+
+
+
+
+ Divides each element of the vector by a scalar and stores the result in the result vector.
+
+
+ The scalar to divide with.
+
+
+ The vector to store the result of the division.
+
+
+
+
+ Divides a scalar by each element of the vector and stores the result in the result vector.
+
+ The scalar to divide.
+ The vector to store the result of the division.
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+ Pointwise raise this vector to an exponent and store the result into the result vector.
+
+ The exponent to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Returns the value of the absolute minimum element.
+
+ The value of the absolute minimum element.
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the value of the absolute maximum element.
+
+ The value of the absolute maximum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+
+ The p value.
+
+
+ Scalar ret = ( ∑|At(i)|^p )^(1/p)
+
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Normalizes this vector to a unit vector with respect to the p-norm.
+
+
+ The p value.
+
+
+ This vector normalized to a unit vector with respect to the p-norm.
+
+
+
+
+ A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column).
+
+
+
+
+ Number of rows.
+
+ Using this instead of the RowCount property to speed up calculating
+ a matrix index in the data array.
+
+
+
+ Number of columns.
+
+ Using this instead of the ColumnCount property to speed up calculating
+ a matrix index in the data array.
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+
+ Create a new dense matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new dense matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to be in column-major order (column by column) and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+
+ Create a new dense matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new dense matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Create a new dense matrix with values sampled from the provided random distribution.
+
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of add
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the matrix and stores the result in the result vector.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ A vector using dense storage.
+
+
+
+
+ Number of elements
+
+
+
+
+ Gets the vector's data.
+
+
+
+
+ Create a new dense vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new dense vector with the given length.
+ All cells of the vector will be initialized to zero.
+
+ If length is less than one.
+
+
+
+ Create a new dense vector directly binding to a raw array.
+ The array is used directly without copying.
+ Very efficient, but changes to the array and the vector will affect each other.
+
+
+
+
+ Create a new dense vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given array.
+ This new vector will be independent from the array.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided value.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided init function.
+
+
+
+
+ Create a new dense vector with values sampled from the provided random distribution.
+
+
+
+
+ Gets the vector's data.
+
+ The vector's data.
+
+
+
+ Returns a reference to the internal data structure.
+
+ The DenseVector whose internal data we are
+ returning.
+
+ A reference to the internal date of the given vector.
+
+
+
+
+ Returns a vector bound directly to a reference of the provided array.
+
+ The array to bind to the DenseVector object.
+
+ A DenseVector whose values are bound to the given array.
+
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to add.
+ The vector to store the result of the addition.
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+ The vector to add to this one.
+ The vector to store the result of the addition.
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The vector to store the result of the subtraction.
+
+
+
+ Subtracts another vector from this vector and stores the result into the result vector.
+
+ The vector to subtract from this one.
+ The vector to store the result of the subtraction.
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to multiply.
+ The vector to store the result of the multiplication.
+
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Multiplies a vector with a scalar.
+
+ The vector to scale.
+ The scalar value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a scalar.
+
+ The scalar value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a vector with a scalar.
+
+ The vector to divide.
+ The scalar value.
+ The result of the division.
+ If is .
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ of each element of the vector of the given divisor.
+
+ The vector whose elements we want to compute the modulus of.
+ The divisor to use,
+ The result of the calculation
+ If is .
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = ( ∑|this[i]|^p )^(1/p)
+
+
+
+ Pointwise multiply this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply this one by.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Creates a float dense vector based on a string. The string can be in the following formats (without the
+ quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float.
+
+
+ A float dense vector containing the values specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific formatting information.
+
+
+
+
+ Converts the string representation of a real dense vector to float-precision dense vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a real vector to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Converts the string representation of a real dense vector to float-precision dense vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a real vector to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ A matrix type for diagonal matrices.
+
+
+ Diagonal matrices can be non-square matrices but the diagonal always starts
+ at element 0,0. A diagonal matrix will throw an exception if non diagonal
+ entries are set. The exception to this is when the off diagonal elements are
+ 0.0 or NaN; these settings will cause no change to the diagonal matrix.
+
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+
+ Create a new diagonal matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to contain the diagonal elements only and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+ Create a new diagonal matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ The matrix to copy from must be diagonal as well.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ The array to copy from must be diagonal as well.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided enumerable.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Create a new diagonal matrix with diagonal values sampled from the provided random distribution.
+
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar to add.
+ The matrix to store the result of the division.
+
+
+
+ Computes the determinant of this matrix.
+
+ The determinant of this matrix.
+
+
+
+ Returns the elements of the diagonal in a .
+
+ The elements of the diagonal.
+ For non-square matrices, the method returns Min(Rows, Columns) elements where
+ i == j (i is the row index, and j is the column index).
+
+
+
+ Copies the values of the given array to the diagonal.
+
+ The array to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+
+ Copies the values of the given to the diagonal.
+
+ The vector to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced L2 norm of the matrix.
+ The largest singular value of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+ Calculates the condition number of this matrix.
+ The condition number of the matrix.
+
+
+ Computes the inverse of this matrix.
+ If is not a square matrix.
+ If is singular.
+ The inverse of this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Creates a matrix that contains the values from the requested sub-matrix.
+
+ The row to start copying from.
+ The number of rows to copy. Must be positive.
+ The column to start copying from.
+ The number of columns to copy. Must be positive.
+ The requested sub-matrix.
+ If: - is
+ negative, or greater than or equal to the number of rows.
+ - is negative, or greater than or equal to the number
+ of columns.
+ - (columnIndex + columnLength) >= Columns
+ - (rowIndex + rowLength) >= Rows
+ If or
+ is not positive.
+
+
+
+ Permute the columns of a matrix according to a permutation.
+
+ The column permutation to apply to this matrix.
+ Always thrown
+ Permutation in diagonal matrix are senseless, because of matrix nature
+
+
+
+ Permute the rows of a matrix according to a permutation.
+
+ The row permutation to apply to this matrix.
+ Always thrown
+ Permutation in diagonal matrix are senseless, because of matrix nature
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Gets the determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ Gets the log determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization for dense matrices.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ Cholesky factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+ If does not have the same dimensions as the existing factor.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the eigenvalue decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ If it is known whether the matrix is symmetric or not the routine can skip checking it itself.
+ If is null.
+ If EVD algorithm failed to converge with matrix .
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Initializes a new instance of the class. This object creates an orthogonal matrix
+ using the modified Gram-Schmidt method.
+
+ The matrix to factor.
+ If is null.
+ If row count is less then column count
+ If is rank deficient
+
+
+
+ Factorize matrix using the modified Gram-Schmidt method.
+
+ Initial matrix. On exit is replaced by Q.
+ Number of rows in Q.
+ Number of columns in Q.
+ On exit is filled by R.
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ LU factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+
+
+
+
+ Gets or sets Tau vector. Contains additional information on Q - used for native solver.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ QR factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ The QR factorization method to use.
+ If is null.
+ If row count is less then column count
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD) for .
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the singular value decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ Compute the singular U and VT vectors or not.
+ If is null.
+ If SVD algorithm failed to converge with matrix .
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Gets the absolute value of determinant of the square matrix for which the EVD was computed.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+ In the Math.NET implementation we also store a set of pivot elements for increased
+ numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Gets the determinant of the matrix for which the LU factorization was computed.
+
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+ If a factorization is performed, the resulting Q matrix is an m x m matrix
+ and the R matrix is an m x n matrix. If a factorization is performed, the
+ resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD).
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets the two norm of the .
+
+ The 2-norm of the .
+
+
+
+ Gets the condition number max(S) / min(S)
+
+ The condition number.
+
+
+
+ Gets the determinant of the square matrix for which the SVD was computed.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization for user matrices.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Computes the Cholesky factorization in-place.
+
+ On entry, the matrix to factor. On exit, the Cholesky factor matrix
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ Cholesky factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+ If does not have the same dimensions as the existing factor.
+
+
+
+ Calculate Cholesky step
+
+ Factor matrix
+ Number of rows
+ Column start
+ Total columns
+ Multipliers calculated previously
+ Number of available processors
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the eigenvalue decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ If it is known whether the matrix is symmetric or not the routine can skip checking it itself.
+ If is null.
+ If EVD algorithm failed to converge with matrix .
+
+
+
+ Symmetric Householder reduction to tridiagonal form.
+
+ The eigen vectors to work on.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tred2 by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Symmetric tridiagonal QL algorithm.
+
+ The eigen vectors to work on.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tql2, by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Nonsymmetric reduction to Hessenberg form.
+
+ The eigen vectors to work on.
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedures orthes and ortran,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutines in EISPACK.
+
+
+
+ Nonsymmetric reduction from Hessenberg to real Schur form.
+
+ The eigen vectors to work on.
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedure hqr2,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Complex scalar division X/Y.
+
+ Real part of X
+ Imaginary part of X
+ Real part of Y
+ Imaginary part of Y
+ Division result as a number.
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Initializes a new instance of the class. This object creates an orthogonal matrix
+ using the modified Gram-Schmidt method.
+
+ The matrix to factor.
+ If is null.
+ If row count is less then column count
+ If is rank deficient
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ LU factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ QR factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ The QR factorization method to use.
+ If is null.
+
+
+
+ Generate column from initial matrix to work array
+
+ Initial matrix
+ The first row
+ Column index
+ Generated vector
+
+
+
+ Perform calculation of Q or R
+
+ Work array
+ Q or R matrices
+ The first row
+ The last row
+ The first column
+ The last column
+ Number of available CPUs
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD) for .
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the singular value decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ Compute the singular U and VT vectors or not.
+ If is null.
+
+
+
+
+ Calculates absolute value of multiplied on signum function of
+
+ Double value z1
+ Double value z2
+ Result multiplication of signum function and absolute value
+
+
+
+ Swap column and
+
+ Source matrix
+ The number of rows in
+ Column A index to swap
+ Column B index to swap
+
+
+
+ Scale column by starting from row
+
+ Source matrix
+ The number of rows in
+ Column to scale
+ Row to scale from
+ Scale value
+
+
+
+ Scale vector by starting from index
+
+ Source vector
+ Row to scale from
+ Scale value
+
+
+
+ Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s
+ associated with the Givens rotation that zeros the y-coordinate of the point.
+
+ Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation
+ Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation
+ Contains the parameter c associated with the Givens rotation
+ Contains the parameter s associated with the Givens rotation
+ This is equivalent to the DROTG LAPACK routine.
+
+
+
+ Calculate Norm 2 of the column in matrix starting from row
+
+ Source matrix
+ The number of rows in
+ Column index
+ Start row index
+ Norm2 (Euclidean norm) of the column
+
+
+
+ Calculate Norm 2 of the vector starting from index
+
+ Source vector
+ Start index
+ Norm2 (Euclidean norm) of the vector
+
+
+
+ Calculate dot product of and
+
+ Source matrix
+ The number of rows in
+ Index of column A
+ Index of column B
+ Starting row index
+ Dot product value
+
+
+
+ Performs rotation of points in the plane. Given two vectors x and y ,
+ each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i)
+
+ Source matrix
+ The number of rows in
+ Index of column A
+ Index of column B
+ Scalar "c" value
+ Scalar "s" value
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ float version of the class.
+
+
+
+
+ Initializes a new instance of the Matrix class.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero.
+
+
+
+
+ Returns the conjugate transpose of this matrix.
+
+ The conjugate transpose of this matrix.
+
+
+
+ Puts the conjugate transpose of this matrix into the result matrix.
+
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract to this matrix.
+ The matrix to store the result of subtraction.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar to divide by each element of the matrix.
+ The matrix to store the result of the division.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The matrix to store the result of the pointwise power.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Computes the Moore-Penrose Pseudo-Inverse of this matrix.
+
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the p-norms of all row vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the p-norms of all column vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all row vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all column vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the value sum of each row vector.
+
+
+
+
+ Calculates the absolute value sum of each row vector.
+
+
+
+
+ Calculates the value sum of each column vector.
+
+
+
+
+ Calculates the absolute value sum of each column vector.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A Bi-Conjugate Gradient stabilized iterative matrix solver.
+
+
+
+ The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement'
+ of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the
+ BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the
+ proper preconditioner.
+
+
+ The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks
+ for iterative methods
+
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel,
+ June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo,
+ Charles Romine and Henk van der Vorst
+
+ Url: http://www.netlib.org/templates/Templates.html
+
+ Algorithm is described in Chapter 2, section 2.3.8, page 27
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient , A.
+ The solution , b.
+ The result , x.
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A composite matrix solver. The actual solver is made by a sequence of
+ matrix solvers.
+
+
+
+ Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373�387
+
+
+ Note that if an iterator is passed to this solver it will be used for all the sub-solvers.
+
+
+
+
+
+ The collection of solvers that will be used
+
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A diagonal preconditioner. The preconditioner uses the inverse
+ of the matrix diagonal as preconditioning values.
+
+
+
+
+ The inverse of the matrix diagonal.
+
+
+
+
+ Returns the decomposed matrix diagonal.
+
+ The matrix diagonal.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The upon which this preconditioner is based.
+ If is .
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ A Generalized Product Bi-Conjugate Gradient iterative matrix solver.
+
+
+
+ The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an
+ alternative version of the Bi-Conjugate Gradient stabilized (CG) solver.
+ Unlike the CG solver the GPBiCG solver can be used on
+ non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the
+ proper preconditioner.
+
+
+ The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with
+ efficiency and robustness
+
+ S. Fujino
+
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117
+
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Indicates the number of BiCGStab steps should be taken
+ before switching.
+
+
+
+
+ Indicates the number of GPBiCG steps should be taken
+ before switching.
+
+
+
+
+ Gets or sets the number of steps taken with the BiCgStab algorithm
+ before switching over to the GPBiCG algorithm.
+
+
+
+
+ Gets or sets the number of steps taken with the GPBiCG algorithm
+ before switching over to the BiCgStab algorithm.
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Decide if to do steps with BiCgStab
+
+ Number of iteration
+ true if yes, otherwise false
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ An incomplete, level 0, LU factorization preconditioner.
+
+
+ The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+
+
+ The matrix holding the lower (L) and upper (U) matrices. The
+ decomposition matrices are combined to reduce storage.
+
+
+
+
+ Returns the upper triagonal matrix that was created during the LU decomposition.
+
+ A new matrix containing the upper triagonal elements.
+
+
+
+ Returns the lower triagonal matrix that was created during the LU decomposition.
+
+ A new matrix containing the lower triagonal elements.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix upon which the preconditioner is based.
+ If is .
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ This class performs an Incomplete LU factorization with drop tolerance
+ and partial pivoting. The drop tolerance indicates which additional entries
+ will be dropped from the factorized LU matrices.
+
+
+ The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner
+
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22
+
+
+
+
+ The default fill level.
+
+
+
+
+ The default drop tolerance.
+
+
+
+
+ The decomposed upper triangular matrix.
+
+
+
+
+ The decomposed lower triangular matrix.
+
+
+
+
+ The array containing the pivot values.
+
+
+
+
+ The fill level.
+
+
+
+
+ The drop tolerance.
+
+
+
+
+ The pivot tolerance.
+
+
+
+
+ Initializes a new instance of the class with the default settings.
+
+
+
+
+ Initializes a new instance of the class with the specified settings.
+
+
+ The amount of fill that is allowed in the matrix. The value is a fraction of
+ the number of non-zero entries in the original matrix. Values should be positive.
+
+
+ The absolute drop tolerance which indicates below what absolute value an entry
+ will be dropped from the matrix. A drop tolerance of 0.0 means that no values
+ will be dropped. Values should always be positive.
+
+
+ The pivot tolerance which indicates at what level pivoting will take place. A
+ value of 0.0 means that no pivoting will take place.
+
+
+
+
+ Gets or sets the amount of fill that is allowed in the matrix. The
+ value is a fraction of the number of non-zero entries in the original
+ matrix. The standard value is 200.
+
+
+
+ Values should always be positive and can be higher than 1.0. A value lower
+ than 1.0 means that the eventual preconditioner matrix will have fewer
+ non-zero entries as the original matrix. A value higher than 1.0 means that
+ the eventual preconditioner can have more non-zero values than the original
+ matrix.
+
+
+ Note that any changes to the FillLevel after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Gets or sets the absolute drop tolerance which indicates below what absolute value
+ an entry will be dropped from the matrix. The standard value is 0.0001.
+
+
+
+ The values should always be positive and can be larger than 1.0. A low value will
+ keep more small numbers in the preconditioner matrix. A high value will remove
+ more small numbers from the preconditioner matrix.
+
+
+ Note that any changes to the DropTolerance after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Gets or sets the pivot tolerance which indicates at what level pivoting will
+ take place. The standard value is 0.0 which means pivoting will never take place.
+
+
+
+ The pivot tolerance is used to calculate if pivoting is necessary. Pivoting
+ will take place if any of the values in a row is bigger than the
+ diagonal value of that row divided by the pivot tolerance, i.e. pivoting
+ will take place if row(i,j) > row(i,i) / PivotTolerance for
+ any j that is not equal to i.
+
+
+ Note that any changes to the PivotTolerance after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Returns the upper triagonal matrix that was created during the LU decomposition.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ A new matrix containing the upper triagonal elements.
+
+
+
+ Returns the lower triagonal matrix that was created during the LU decomposition.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ A new matrix containing the lower triagonal elements.
+
+
+
+ Returns the pivot array. This array is not needed for normal use because
+ the preconditioner will return the solution vector values in the proper order.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ The pivot array.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The upon which this preconditioner is based. Note that the
+ method takes a general matrix type. However internally the data is stored
+ as a sparse matrix. Therefore it is not recommended to pass a dense matrix.
+
+ If is .
+ If is not a square matrix.
+
+
+
+ Pivot elements in the according to internal pivot array
+
+ Row to pivot in
+
+
+
+ Was pivoting already performed
+
+ Pivots already done
+ Current item to pivot
+ true if performed, otherwise false
+
+
+
+ Swap columns in the
+
+ Source .
+ First column index to swap
+ Second column index to swap
+
+
+
+ Sort vector descending, not changing vector but placing sorted indices to
+
+ Start sort form
+ Sort till upper bound
+ Array with sorted vector indices
+ Source
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ Pivot elements in according to internal pivot array
+
+ Source .
+ Result after pivoting.
+
+
+
+ An element sort algorithm for the class.
+
+
+ This sort algorithm is used to sort the columns in a sparse matrix based on
+ the value of the element on the diagonal of the matrix.
+
+
+
+
+ Sorts the elements of the vector in decreasing
+ fashion. The vector itself is not affected.
+
+ The starting index.
+ The stopping index.
+ An array that will contain the sorted indices once the algorithm finishes.
+ The that contains the values that need to be sorted.
+
+
+
+ Sorts the elements of the vector in decreasing
+ fashion using heap sort algorithm. The vector itself is not affected.
+
+ The starting index.
+ The stopping index.
+ An array that will contain the sorted indices once the algorithm finishes.
+ The that contains the values that need to be sorted.
+
+
+
+ Build heap for double indices
+
+ Root position
+ Length of
+ Indices of
+ Target
+
+
+
+ Sift double indices
+
+ Indices of
+ Target
+ Root position
+ Length of
+
+
+
+ Sorts the given integers in a decreasing fashion.
+
+ The values.
+
+
+
+ Sort the given integers in a decreasing fashion using heapsort algorithm
+
+ Array of values to sort
+ Length of
+
+
+
+ Build heap
+
+ Target values array
+ Root position
+ Length of
+
+
+
+ Sift values
+
+ Target value array
+ Root position
+ Length of
+
+
+
+ Exchange values in array
+
+ Target values array
+ First value to exchange
+ Second value to exchange
+
+
+
+ A simple milu(0) preconditioner.
+
+
+ Original Fortran code by Yousef Saad (07 January 2004)
+
+
+
+ Use modified or standard ILU(0)
+
+
+
+ Gets or sets a value indicating whether to use modified or standard ILU(0).
+
+
+
+
+ Gets a value indicating whether the preconditioner is initialized.
+
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix upon which the preconditioner is based.
+ If is .
+ If is not a square or is not an
+ instance of SparseCompressedRowMatrixStorage.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector b.
+ The left hand side vector x.
+
+
+
+ MILU0 is a simple milu(0) preconditioner.
+
+ Order of the matrix.
+ Matrix values in CSR format (input).
+ Column indices (input).
+ Row pointers (input).
+ Matrix values in MSR format (output).
+ Row pointers and column indices (output).
+ Pointer to diagonal elements (output).
+ True if the modified/MILU algorithm should be used (recommended)
+ Returns 0 on success or k > 0 if a zero pivot was encountered at step k.
+
+
+
+ A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver.
+
+
+
+ The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement'
+ of the standard BiCgStab solver.
+
+
+ The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors
+
+ Man-Chung Yeung and Tony F. Chan
+
+ SIAM Journal of Scientific Computing
+
+ Volume 21, Number 4, pp. 1263 - 1290
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ The default number of starting vectors.
+
+
+
+
+ The collection of starting vectors which are used as the basis for the Krylov sub-space.
+
+
+
+
+ The number of starting vectors used by the algorithm
+
+
+
+
+ Gets or sets the number of starting vectors.
+
+
+ Must be larger than 1 and smaller than the number of variables in the matrix that
+ for which this solver will be used.
+
+
+
+
+ Resets the number of starting vectors to the default value.
+
+
+
+
+ Gets or sets a series of orthonormal vectors which will be used as basis for the
+ Krylov sub-space.
+
+
+
+
+ Gets the number of starting vectors to create
+
+ Maximum number
+ Number of variables
+ Number of starting vectors to create
+
+
+
+ Returns an array of starting vectors.
+
+ The maximum number of starting vectors that should be created.
+ The number of variables.
+
+ An array with starting vectors. The array will never be larger than the
+ but it may be smaller if
+ the is smaller than
+ the .
+
+
+
+
+ Create random vectors array
+
+ Number of vectors
+ Size of each vector
+ Array of random vectors
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Source A.
+ Residual data.
+ x data.
+ b data.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver.
+
+
+
+ The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems.
+
+ Yousef Saad
+
+ Algorithm is described in Chapter 7, section 7.4.3, page 219
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Is even?
+
+ Number to check
+ true if even, otherwise false
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A Matrix with sparse storage, intended for very large matrices where most of the cells are zero.
+ The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format.
+ Wikipedia - CSR.
+
+
+
+
+ Gets the number of non zero elements in the matrix.
+
+ The number of non zero elements.
+
+
+
+ Create a new sparse matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square sparse matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new sparse matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new sparse matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in row-major order (row by row).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+
+ Create a new sparse matrix with the given number of rows and columns as a copy of the given array.
+ The array is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new sparse matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract to this matrix.
+ The matrix to store the result of subtraction.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ A vector with sparse storage, intended for very large vectors where most of the cells are zero.
+
+ The sparse vector is not thread safe.
+
+
+
+ Gets the number of non zero elements in the vector.
+
+ The number of non zero elements.
+
+
+
+ Create a new sparse vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new sparse vector with the given length.
+ All cells of the vector will be initialized to zero.
+
+ If length is less than one.
+
+
+
+ Create a new sparse vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided value.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided init function.
+
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+ Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled
+ sparse vector and very inefficient. Would be better to work with a dense vector instead.
+
+
+ The scalar to add.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+
+ The vector to add to this one.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+
+ The scalar to subtract.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+
+ The vector to subtract from this one.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to multiply.
+
+
+ The vector to store the result of the multiplication.
+
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Multiplies a vector with a scalar.
+
+ The vector to scale.
+ The scalar value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a scalar.
+
+ The scalar value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a vector with a scalar.
+
+ The vector to divide.
+ The scalar value.
+ The result of the division.
+ If is .
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ of each element of the vector of the given divisor.
+
+ The vector whose elements we want to compute the modulus of.
+ The divisor to use,
+ The result of the calculation
+ If is .
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = ( ∑|this[i]|^p )^(1/p)
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Creates a float sparse vector based on a string. The string can be in the following formats (without the
+ quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float.
+
+
+ A float sparse vector containing the values specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific formatting information.
+
+
+
+
+ Converts the string representation of a real sparse vector to float-precision sparse vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a real vector to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Converts the string representation of a real sparse vector to float-precision sparse vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a real vector to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ float version of the class.
+
+
+
+
+ Initializes a new instance of the Vector class.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero.
+
+
+
+
+ Conjugates vector and save result to
+
+ Target vector
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to add.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+
+ The vector to add to this one.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+
+ The scalar to subtract.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+
+ The vector to subtract from this one.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to multiply.
+
+
+ The vector to store the result of the multiplication.
+
+
+
+
+ Divides each element of the vector by a scalar and stores the result in the result vector.
+
+
+ The scalar to divide with.
+
+
+ The vector to store the result of the division.
+
+
+
+
+ Divides a scalar by each element of the vector and stores the result in the result vector.
+
+ The scalar to divide.
+ The vector to store the result of the division.
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+ Pointwise raise this vector to an exponent and store the result into the result vector.
+
+ The exponent to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Returns the value of the absolute minimum element.
+
+ The value of the absolute minimum element.
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the value of the absolute maximum element.
+
+ The value of the absolute maximum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+
+ The p value.
+
+
+ Scalar ret = ( ∑|At(i)|^p )^(1/p)
+
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Normalizes this vector to a unit vector with respect to the p-norm.
+
+
+ The p value.
+
+
+ This vector normalized to a unit vector with respect to the p-norm.
+
+
+
+
+ A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column).
+
+
+
+
+ Number of rows.
+
+ Using this instead of the RowCount property to speed up calculating
+ a matrix index in the data array.
+
+
+
+ Number of columns.
+
+ Using this instead of the ColumnCount property to speed up calculating
+ a matrix index in the data array.
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+
+ Create a new dense matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new dense matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to be in column-major order (column by column) and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+
+ Create a new dense matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new dense matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Create a new dense matrix with values sampled from the provided random distribution.
+
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of add
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the matrix and stores the result in the result vector.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A vector using dense storage.
+
+
+
+
+ Number of elements
+
+
+
+
+ Gets the vector's data.
+
+
+
+
+ Create a new dense vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new dense vector with the given length.
+ All cells of the vector will be initialized to zero.
+
+ If length is less than one.
+
+
+
+ Create a new dense vector directly binding to a raw array.
+ The array is used directly without copying.
+ Very efficient, but changes to the array and the vector will affect each other.
+
+
+
+
+ Create a new dense vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given array.
+ This new vector will be independent from the array.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided value.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided init function.
+
+
+
+
+ Create a new dense vector with values sampled from the provided random distribution.
+
+
+
+
+ Gets the vector's data.
+
+ The vector's data.
+
+
+
+ Returns a reference to the internal data structure.
+
+ The DenseVector whose internal data we are
+ returning.
+
+ A reference to the internal date of the given vector.
+
+
+
+
+ Returns a vector bound directly to a reference of the provided array.
+
+ The array to bind to the DenseVector object.
+
+ A DenseVector whose values are bound to the given array.
+
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to add.
+ The vector to store the result of the addition.
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+ The vector to add to this one.
+ The vector to store the result of the addition.
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The vector to store the result of the subtraction.
+
+
+
+ Subtracts another vector from this vector and stores the result into the result vector.
+
+ The vector to subtract from this one.
+ The vector to store the result of the subtraction.
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Conjugates vector and save result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to multiply.
+ The vector to store the result of the multiplication.
+
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Multiplies a vector with a complex.
+
+ The vector to scale.
+ The Complex value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a complex.
+
+ The Complex value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a vector with a complex.
+
+ The vector to divide.
+ The Complex value.
+ The result of the division.
+ If is .
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = ( ∑|this[i]|^p )^(1/p)
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Creates a Complex dense vector based on a string. The string can be in the following formats (without the
+ quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a double.
+
+
+ A Complex dense vector containing the values specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific formatting information.
+
+
+
+
+ Converts the string representation of a complex dense vector to double-precision dense vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex vector to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Converts the string representation of a complex dense vector to double-precision dense vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex vector to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ A matrix type for diagonal matrices.
+
+
+ Diagonal matrices can be non-square matrices but the diagonal always starts
+ at element 0,0. A diagonal matrix will throw an exception if non diagonal
+ entries are set. The exception to this is when the off diagonal elements are
+ 0.0 or NaN; these settings will cause no change to the diagonal matrix.
+
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+
+ Create a new diagonal matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to contain the diagonal elements only and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+ Create a new diagonal matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ The matrix to copy from must be diagonal as well.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ The array to copy from must be diagonal as well.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided enumerable.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Create a new diagonal matrix with diagonal values sampled from the provided random distribution.
+
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar to add.
+ The matrix to store the result of the division.
+
+
+
+ Computes the determinant of this matrix.
+
+ The determinant of this matrix.
+
+
+
+ Returns the elements of the diagonal in a .
+
+ The elements of the diagonal.
+ For non-square matrices, the method returns Min(Rows, Columns) elements where
+ i == j (i is the row index, and j is the column index).
+
+
+
+ Copies the values of the given array to the diagonal.
+
+ The array to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+
+ Copies the values of the given to the diagonal.
+
+ The vector to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced L2 norm of the matrix.
+ The largest singular value of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the Frobenius norm of this matrix.
+ The Frobenius norm of this matrix.
+
+
+ Calculates the condition number of this matrix.
+ The condition number of the matrix.
+
+
+ Computes the inverse of this matrix.
+ If is not a square matrix.
+ If is singular.
+ The inverse of this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Creates a matrix that contains the values from the requested sub-matrix.
+
+ The row to start copying from.
+ The number of rows to copy. Must be positive.
+ The column to start copying from.
+ The number of columns to copy. Must be positive.
+ The requested sub-matrix.
+ If: - is
+ negative, or greater than or equal to the number of rows.
+ - is negative, or greater than or equal to the number
+ of columns.
+ - (columnIndex + columnLength) >= Columns
+ - (rowIndex + rowLength) >= Rows
+ If or
+ is not positive.
+
+
+
+ Permute the columns of a matrix according to a permutation.
+
+ The column permutation to apply to this matrix.
+ Always thrown
+ Permutation in diagonal matrix are senseless, because of matrix nature
+
+
+
+ Permute the rows of a matrix according to a permutation.
+
+ The row permutation to apply to this matrix.
+ Always thrown
+ Permutation in diagonal matrix are senseless, because of matrix nature
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Gets the determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ Gets the log determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization for dense matrices.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ Cholesky factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+ If does not have the same dimensions as the existing factor.
+
+
+
+ Eigenvalues and eigenvectors of a complex matrix.
+
+
+ If A is Hermitian, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is Hermitian.
+ I.e. A = V*D*V' and V*VH=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the eigenvalue decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ If it is known whether the matrix is symmetric or not the routine can skip checking it itself.
+ If is null.
+ If EVD algorithm failed to converge with matrix .
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Initializes a new instance of the class. This object creates an unitary matrix
+ using the modified Gram-Schmidt method.
+
+ The matrix to factor.
+ If is null.
+ If row count is less then column count
+ If is rank deficient
+
+
+
+ Factorize matrix using the modified Gram-Schmidt method.
+
+ Initial matrix. On exit is replaced by Q.
+ Number of rows in Q.
+ Number of columns in Q.
+ On exit is filled by R.
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ LU factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+
+
+
+
+ Gets or sets Tau vector. Contains additional information on Q - used for native solver.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ QR factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ The type of QR factorization to perform.
+ If is null.
+ If row count is less then column count
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD) for .
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the singular value decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ Compute the singular U and VT vectors or not.
+ If is null.
+ If SVD algorithm failed to converge with matrix .
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Gets the absolute value of determinant of the square matrix for which the EVD was computed.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+ In the Math.NET implementation we also store a set of pivot elements for increased
+ numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Gets the determinant of the matrix for which the LU factorization was computed.
+
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+ If a factorization is performed, the resulting Q matrix is an m x m matrix
+ and the R matrix is an m x n matrix. If a factorization is performed, the
+ resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD).
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets the two norm of the .
+
+ The 2-norm of the .
+
+
+
+ Gets the condition number max(S) / min(S)
+
+ The condition number.
+
+
+
+ Gets the determinant of the square matrix for which the SVD was computed.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization for user matrices.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Computes the Cholesky factorization in-place.
+
+ On entry, the matrix to factor. On exit, the Cholesky factor matrix
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ Cholesky factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+ If does not have the same dimensions as the existing factor.
+
+
+
+ Calculate Cholesky step
+
+ Factor matrix
+ Number of rows
+ Column start
+ Total columns
+ Multipliers calculated previously
+ Number of available processors
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a complex matrix.
+
+
+ If A is Hermitian, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is Hermitian.
+ I.e. A = V*D*V' and V*VH=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the eigenvalue decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ If it is known whether the matrix is symmetric or not the routine can skip checking it itself.
+ If is null.
+ If EVD algorithm failed to converge with matrix .
+
+
+
+ Reduces a complex Hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations.
+
+ Source matrix to reduce
+ Output: Arrays for internal storage of real parts of eigenvalues
+ Output: Arrays for internal storage of imaginary parts of eigenvalues
+ Output: Arrays that contains further information about the transformations.
+ Order of initial matrix
+ This is derived from the Algol procedures HTRIDI by
+ Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Symmetric tridiagonal QL algorithm.
+
+ The eigen vectors to work on.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tql2, by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Determines eigenvectors by undoing the symmetric tridiagonalize transformation
+
+ The eigen vectors to work on.
+ Previously tridiagonalized matrix by .
+ Contains further information about the transformations
+ Input matrix order
+ This is derived from the Algol procedures HTRIBK, by
+ by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Nonsymmetric reduction to Hessenberg form.
+
+ The eigen vectors to work on.
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedures orthes and ortran,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutines in EISPACK.
+
+
+
+ Nonsymmetric reduction from Hessenberg to real Schur form.
+
+ The eigen vectors to work on.
+ The eigen values to work on.
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedure hqr2,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Initializes a new instance of the class. This object creates an unitary matrix
+ using the modified Gram-Schmidt method.
+
+ The matrix to factor.
+ If is null.
+ If row count is less then column count
+ If is rank deficient
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ LU factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ QR factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ The QR factorization method to use.
+ If is null.
+
+
+
+ Generate column from initial matrix to work array
+
+ Initial matrix
+ The first row
+ Column index
+ Generated vector
+
+
+
+ Perform calculation of Q or R
+
+ Work array
+ Q or R matrices
+ The first row
+ The last row
+ The first column
+ The last column
+ Number of available CPUs
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD) for .
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the singular value decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ Compute the singular U and VT vectors or not.
+ If is null.
+
+
+
+
+ Calculates absolute value of multiplied on signum function of
+
+ Complex value z1
+ Complex value z2
+ Result multiplication of signum function and absolute value
+
+
+
+ Interchanges two vectors and
+
+ Source matrix
+ The number of rows in
+ Column A index to swap
+ Column B index to swap
+
+
+
+ Scale column by starting from row
+
+ Source matrix
+ The number of rows in
+ Column to scale
+ Row to scale from
+ Scale value
+
+
+
+ Scale vector by starting from index
+
+ Source vector
+ Row to scale from
+ Scale value
+
+
+
+ Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s
+ associated with the Givens rotation that zeros the y-coordinate of the point.
+
+ Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation
+ Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation
+ Contains the parameter c associated with the Givens rotation
+ Contains the parameter s associated with the Givens rotation
+ This is equivalent to the DROTG LAPACK routine.
+
+
+
+ Calculate Norm 2 of the column in matrix starting from row
+
+ Source matrix
+ The number of rows in
+ Column index
+ Start row index
+ Norm2 (Euclidean norm) of the column
+
+
+
+ Calculate Norm 2 of the vector starting from index
+
+ Source vector
+ Start index
+ Norm2 (Euclidean norm) of the vector
+
+
+
+ Calculate dot product of and conjugating the first vector.
+
+ Source matrix
+ The number of rows in
+ Index of column A
+ Index of column B
+ Starting row index
+ Dot product value
+
+
+
+ Performs rotation of points in the plane. Given two vectors x and y ,
+ each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i)
+
+ Source matrix
+ The number of rows in
+ Index of column A
+ Index of column B
+ scalar cos value
+ scalar sin value
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Complex version of the class.
+
+
+
+
+ Initializes a new instance of the Matrix class.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero.
+
+
+
+
+ Returns the conjugate transpose of this matrix.
+
+ The conjugate transpose of this matrix.
+
+
+
+ Puts the conjugate transpose of this matrix into the result matrix.
+
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract to this matrix.
+ The matrix to store the result of subtraction.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar to divide by each element of the matrix.
+ The matrix to store the result of the division.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The matrix to store the result of the pointwise power.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Computes the Moore-Penrose Pseudo-Inverse of this matrix.
+
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the p-norms of all row vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the p-norms of all column vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all row vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all column vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the value sum of each row vector.
+
+
+
+
+ Calculates the absolute value sum of each row vector.
+
+
+
+
+ Calculates the value sum of each column vector.
+
+
+
+
+ Calculates the absolute value sum of each column vector.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A Bi-Conjugate Gradient stabilized iterative matrix solver.
+
+
+
+ The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement'
+ of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the
+ BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the
+ proper preconditioner.
+
+
+ The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks
+ for iterative methods
+
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel,
+ June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo,
+ Charles Romine and Henk van der Vorst
+
+ Url: http://www.netlib.org/templates/Templates.html
+
+ Algorithm is described in Chapter 2, section 2.3.8, page 27
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient , A.
+ The solution , b.
+ The result , x.
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A composite matrix solver. The actual solver is made by a sequence of
+ matrix solvers.
+
+
+
+ Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373�387
+
+
+ Note that if an iterator is passed to this solver it will be used for all the sub-solvers.
+
+
+
+
+
+ The collection of solvers that will be used
+
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A diagonal preconditioner. The preconditioner uses the inverse
+ of the matrix diagonal as preconditioning values.
+
+
+
+
+ The inverse of the matrix diagonal.
+
+
+
+
+ Returns the decomposed matrix diagonal.
+
+ The matrix diagonal.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The upon which this preconditioner is based.
+ If is .
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ A Generalized Product Bi-Conjugate Gradient iterative matrix solver.
+
+
+
+ The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an
+ alternative version of the Bi-Conjugate Gradient stabilized (CG) solver.
+ Unlike the CG solver the GPBiCG solver can be used on
+ non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the
+ proper preconditioner.
+
+
+ The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with
+ efficiency and robustness
+
+ S. Fujino
+
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117
+
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Indicates the number of BiCGStab steps should be taken
+ before switching.
+
+
+
+
+ Indicates the number of GPBiCG steps should be taken
+ before switching.
+
+
+
+
+ Gets or sets the number of steps taken with the BiCgStab algorithm
+ before switching over to the GPBiCG algorithm.
+
+
+
+
+ Gets or sets the number of steps taken with the GPBiCG algorithm
+ before switching over to the BiCgStab algorithm.
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Decide if to do steps with BiCgStab
+
+ Number of iteration
+ true if yes, otherwise false
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ An incomplete, level 0, LU factorization preconditioner.
+
+
+ The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+
+
+ The matrix holding the lower (L) and upper (U) matrices. The
+ decomposition matrices are combined to reduce storage.
+
+
+
+
+ Returns the upper triagonal matrix that was created during the LU decomposition.
+
+ A new matrix containing the upper triagonal elements.
+
+
+
+ Returns the lower triagonal matrix that was created during the LU decomposition.
+
+ A new matrix containing the lower triagonal elements.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix upon which the preconditioner is based.
+ If is .
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ This class performs an Incomplete LU factorization with drop tolerance
+ and partial pivoting. The drop tolerance indicates which additional entries
+ will be dropped from the factorized LU matrices.
+
+
+ The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner
+
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22
+
+
+
+
+ The default fill level.
+
+
+
+
+ The default drop tolerance.
+
+
+
+
+ The decomposed upper triangular matrix.
+
+
+
+
+ The decomposed lower triangular matrix.
+
+
+
+
+ The array containing the pivot values.
+
+
+
+
+ The fill level.
+
+
+
+
+ The drop tolerance.
+
+
+
+
+ The pivot tolerance.
+
+
+
+
+ Initializes a new instance of the class with the default settings.
+
+
+
+
+ Initializes a new instance of the class with the specified settings.
+
+
+ The amount of fill that is allowed in the matrix. The value is a fraction of
+ the number of non-zero entries in the original matrix. Values should be positive.
+
+
+ The absolute drop tolerance which indicates below what absolute value an entry
+ will be dropped from the matrix. A drop tolerance of 0.0 means that no values
+ will be dropped. Values should always be positive.
+
+
+ The pivot tolerance which indicates at what level pivoting will take place. A
+ value of 0.0 means that no pivoting will take place.
+
+
+
+
+ Gets or sets the amount of fill that is allowed in the matrix. The
+ value is a fraction of the number of non-zero entries in the original
+ matrix. The standard value is 200.
+
+
+
+ Values should always be positive and can be higher than 1.0. A value lower
+ than 1.0 means that the eventual preconditioner matrix will have fewer
+ non-zero entries as the original matrix. A value higher than 1.0 means that
+ the eventual preconditioner can have more non-zero values than the original
+ matrix.
+
+
+ Note that any changes to the FillLevel after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Gets or sets the absolute drop tolerance which indicates below what absolute value
+ an entry will be dropped from the matrix. The standard value is 0.0001.
+
+
+
+ The values should always be positive and can be larger than 1.0. A low value will
+ keep more small numbers in the preconditioner matrix. A high value will remove
+ more small numbers from the preconditioner matrix.
+
+
+ Note that any changes to the DropTolerance after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Gets or sets the pivot tolerance which indicates at what level pivoting will
+ take place. The standard value is 0.0 which means pivoting will never take place.
+
+
+
+ The pivot tolerance is used to calculate if pivoting is necessary. Pivoting
+ will take place if any of the values in a row is bigger than the
+ diagonal value of that row divided by the pivot tolerance, i.e. pivoting
+ will take place if row(i,j) > row(i,i) / PivotTolerance for
+ any j that is not equal to i.
+
+
+ Note that any changes to the PivotTolerance after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Returns the upper triagonal matrix that was created during the LU decomposition.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ A new matrix containing the upper triagonal elements.
+
+
+
+ Returns the lower triagonal matrix that was created during the LU decomposition.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ A new matrix containing the lower triagonal elements.
+
+
+
+ Returns the pivot array. This array is not needed for normal use because
+ the preconditioner will return the solution vector values in the proper order.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ The pivot array.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The upon which this preconditioner is based. Note that the
+ method takes a general matrix type. However internally the data is stored
+ as a sparse matrix. Therefore it is not recommended to pass a dense matrix.
+
+ If is .
+ If is not a square matrix.
+
+
+
+ Pivot elements in the according to internal pivot array
+
+ Row to pivot in
+
+
+
+ Was pivoting already performed
+
+ Pivots already done
+ Current item to pivot
+ true if performed, otherwise false
+
+
+
+ Swap columns in the
+
+ Source .
+ First column index to swap
+ Second column index to swap
+
+
+
+ Sort vector descending, not changing vector but placing sorted indices to
+
+ Start sort form
+ Sort till upper bound
+ Array with sorted vector indices
+ Source
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ Pivot elements in according to internal pivot array
+
+ Source .
+ Result after pivoting.
+
+
+
+ An element sort algorithm for the class.
+
+
+ This sort algorithm is used to sort the columns in a sparse matrix based on
+ the value of the element on the diagonal of the matrix.
+
+
+
+
+ Sorts the elements of the vector in decreasing
+ fashion. The vector itself is not affected.
+
+ The starting index.
+ The stopping index.
+ An array that will contain the sorted indices once the algorithm finishes.
+ The that contains the values that need to be sorted.
+
+
+
+ Sorts the elements of the vector in decreasing
+ fashion using heap sort algorithm. The vector itself is not affected.
+
+ The starting index.
+ The stopping index.
+ An array that will contain the sorted indices once the algorithm finishes.
+ The that contains the values that need to be sorted.
+
+
+
+ Build heap for double indices
+
+ Root position
+ Length of
+ Indices of
+ Target
+
+
+
+ Sift double indices
+
+ Indices of
+ Target
+ Root position
+ Length of
+
+
+
+ Sorts the given integers in a decreasing fashion.
+
+ The values.
+
+
+
+ Sort the given integers in a decreasing fashion using heapsort algorithm
+
+ Array of values to sort
+ Length of
+
+
+
+ Build heap
+
+ Target values array
+ Root position
+ Length of
+
+
+
+ Sift values
+
+ Target value array
+ Root position
+ Length of
+
+
+
+ Exchange values in array
+
+ Target values array
+ First value to exchange
+ Second value to exchange
+
+
+
+ A simple milu(0) preconditioner.
+
+
+ Original Fortran code by Yousef Saad (07 January 2004)
+
+
+
+ Use modified or standard ILU(0)
+
+
+
+ Gets or sets a value indicating whether to use modified or standard ILU(0).
+
+
+
+
+ Gets a value indicating whether the preconditioner is initialized.
+
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix upon which the preconditioner is based.
+ If is .
+ If is not a square or is not an
+ instance of SparseCompressedRowMatrixStorage.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector b.
+ The left hand side vector x.
+
+
+
+ MILU0 is a simple milu(0) preconditioner.
+
+ Order of the matrix.
+ Matrix values in CSR format (input).
+ Column indices (input).
+ Row pointers (input).
+ Matrix values in MSR format (output).
+ Row pointers and column indices (output).
+ Pointer to diagonal elements (output).
+ True if the modified/MILU algorithm should be used (recommended)
+ Returns 0 on success or k > 0 if a zero pivot was encountered at step k.
+
+
+
+ A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver.
+
+
+
+ The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement'
+ of the standard BiCgStab solver.
+
+
+ The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors
+
+ Man-Chung Yeung and Tony F. Chan
+
+ SIAM Journal of Scientific Computing
+
+ Volume 21, Number 4, pp. 1263 - 1290
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ The default number of starting vectors.
+
+
+
+
+ The collection of starting vectors which are used as the basis for the Krylov sub-space.
+
+
+
+
+ The number of starting vectors used by the algorithm
+
+
+
+
+ Gets or sets the number of starting vectors.
+
+
+ Must be larger than 1 and smaller than the number of variables in the matrix that
+ for which this solver will be used.
+
+
+
+
+ Resets the number of starting vectors to the default value.
+
+
+
+
+ Gets or sets a series of orthonormal vectors which will be used as basis for the
+ Krylov sub-space.
+
+
+
+
+ Gets the number of starting vectors to create
+
+ Maximum number
+ Number of variables
+ Number of starting vectors to create
+
+
+
+ Returns an array of starting vectors.
+
+ The maximum number of starting vectors that should be created.
+ The number of variables.
+
+ An array with starting vectors. The array will never be larger than the
+ but it may be smaller if
+ the is smaller than
+ the .
+
+
+
+
+ Create random vectors array
+
+ Number of vectors
+ Size of each vector
+ Array of random vectors
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Source A.
+ Residual data.
+ x data.
+ b data.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver.
+
+
+
+ The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems.
+
+ Yousef Saad
+
+ Algorithm is described in Chapter 7, section 7.4.3, page 219
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Is even?
+
+ Number to check
+ true if even, otherwise false
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A Matrix with sparse storage, intended for very large matrices where most of the cells are zero.
+ The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format.
+ Wikipedia - CSR.
+
+
+
+
+ Gets the number of non zero elements in the matrix.
+
+ The number of non zero elements.
+
+
+
+ Create a new sparse matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square sparse matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new sparse matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new sparse matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in row-major order (row by row).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+
+ Create a new sparse matrix with the given number of rows and columns as a copy of the given array.
+ The array is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new sparse matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract to this matrix.
+ The matrix to store the result of subtraction.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ A vector with sparse storage, intended for very large vectors where most of the cells are zero.
+
+ The sparse vector is not thread safe.
+
+
+
+ Gets the number of non zero elements in the vector.
+
+ The number of non zero elements.
+
+
+
+ Create a new sparse vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new sparse vector with the given length.
+ All cells of the vector will be initialized to zero.
+
+ If length is less than one.
+
+
+
+ Create a new sparse vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided value.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided init function.
+
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+ Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled
+ sparse vector and very inefficient. Would be better to work with a dense vector instead.
+
+
+ The scalar to add.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+
+ The vector to add to this one.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+
+ The scalar to subtract.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+
+ The vector to subtract from this one.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Conjugates vector and save result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to multiply.
+
+
+ The vector to store the result of the multiplication.
+
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Multiplies a vector with a complex.
+
+ The vector to scale.
+ The complex value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a complex.
+
+ The complex value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a vector with a complex.
+
+ The vector to divide.
+ The complex value.
+ The result of the division.
+ If is .
+
+
+
+ Computes the modulus of each element of the vector of the given divisor.
+
+ The vector whose elements we want to compute the modulus of.
+ The divisor to use,
+ The result of the calculation
+ If is .
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = ( ∑|this[i]|^p )^(1/p)
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Creates a double sparse vector based on a string. The string can be in the following formats (without the
+ quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex.
+
+
+ A double sparse vector containing the values specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific formatting information.
+
+
+
+
+ Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex vector to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex vector to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Complex version of the class.
+
+
+
+
+ Initializes a new instance of the Vector class.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero.
+
+
+
+
+ Conjugates vector and save result to
+
+ Target vector
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to add.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+
+ The vector to add to this one.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+
+ The scalar to subtract.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+
+ The vector to subtract from this one.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to multiply.
+
+
+ The vector to store the result of the multiplication.
+
+
+
+
+ Divides each element of the vector by a scalar and stores the result in the result vector.
+
+
+ The scalar to divide with.
+
+
+ The vector to store the result of the division.
+
+
+
+
+ Divides a scalar by each element of the vector and stores the result in the result vector.
+
+ The scalar to divide.
+ The vector to store the result of the division.
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+ Pointwise raise this vector to an exponent and store the result into the result vector.
+
+ The exponent to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Returns the value of the absolute minimum element.
+
+ The value of the absolute minimum element.
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the value of the absolute maximum element.
+
+ The value of the absolute maximum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+
+ The p value.
+
+
+ Scalar ret = ( ∑|At(i)|^p )^(1/p)
+
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Normalizes this vector to a unit vector with respect to the p-norm.
+
+
+ The p value.
+
+
+ This vector normalized to a unit vector with respect to the p-norm.
+
+
+
+
+ A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column).
+
+
+
+
+ Number of rows.
+
+ Using this instead of the RowCount property to speed up calculating
+ a matrix index in the data array.
+
+
+
+ Number of columns.
+
+ Using this instead of the ColumnCount property to speed up calculating
+ a matrix index in the data array.
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+
+ Create a new dense matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new dense matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to be in column-major order (column by column) and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+
+ Create a new dense matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new dense matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Create a new dense matrix with values sampled from the provided random distribution.
+
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of add
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the matrix and stores the result in the result vector.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A vector using dense storage.
+
+
+
+
+ Number of elements
+
+
+
+
+ Gets the vector's data.
+
+
+
+
+ Create a new dense vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new dense vector with the given length.
+ All cells of the vector will be initialized to zero.
+
+ If length is less than one.
+
+
+
+ Create a new dense vector directly binding to a raw array.
+ The array is used directly without copying.
+ Very efficient, but changes to the array and the vector will affect each other.
+
+
+
+
+ Create a new dense vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given array.
+ This new vector will be independent from the array.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided value.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided init function.
+
+
+
+
+ Create a new dense vector with values sampled from the provided random distribution.
+
+
+
+
+ Gets the vector's data.
+
+ The vector's data.
+
+
+
+ Returns a reference to the internal data structure.
+
+ The DenseVector whose internal data we are
+ returning.
+
+ A reference to the internal date of the given vector.
+
+
+
+
+ Returns a vector bound directly to a reference of the provided array.
+
+ The array to bind to the DenseVector object.
+
+ A DenseVector whose values are bound to the given array.
+
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to add.
+ The vector to store the result of the addition.
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+ The vector to add to this one.
+ The vector to store the result of the addition.
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The vector to store the result of the subtraction.
+
+
+
+ Subtracts another vector from this vector and stores the result into the result vector.
+
+ The vector to subtract from this one.
+ The vector to store the result of the subtraction.
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Conjugates vector and save result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to multiply.
+ The vector to store the result of the multiplication.
+
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Multiplies a vector with a complex.
+
+ The vector to scale.
+ The Complex32 value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a complex.
+
+ The Complex32 value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a vector with a complex.
+
+ The vector to divide.
+ The Complex32 value.
+ The result of the division.
+ If is .
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = ( ∑|this[i]|^p )^(1/p)
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Creates a Complex32 dense vector based on a string. The string can be in the following formats (without the
+ quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a double.
+
+
+ A Complex32 dense vector containing the values specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific formatting information.
+
+
+
+
+ Converts the string representation of a complex dense vector to double-precision dense vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex vector to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Converts the string representation of a complex dense vector to double-precision dense vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex vector to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ A matrix type for diagonal matrices.
+
+
+ Diagonal matrices can be non-square matrices but the diagonal always starts
+ at element 0,0. A diagonal matrix will throw an exception if non diagonal
+ entries are set. The exception to this is when the off diagonal elements are
+ 0.0 or NaN; these settings will cause no change to the diagonal matrix.
+
+
+
+
+ Gets the matrix's data.
+
+ The matrix's data.
+
+
+
+ Create a new diagonal matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to contain the diagonal elements only and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+ Create a new diagonal matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ The matrix to copy from must be diagonal as well.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ The array to copy from must be diagonal as well.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value from the provided enumerable.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Create a new diagonal matrix with diagonal values sampled from the provided random distribution.
+
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar to add.
+ The matrix to store the result of the division.
+
+
+
+ Computes the determinant of this matrix.
+
+ The determinant of this matrix.
+
+
+
+ Returns the elements of the diagonal in a .
+
+ The elements of the diagonal.
+ For non-square matrices, the method returns Min(Rows, Columns) elements where
+ i == j (i is the row index, and j is the column index).
+
+
+
+ Copies the values of the given array to the diagonal.
+
+ The array to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+
+ Copies the values of the given to the diagonal.
+
+ The vector to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced L2 norm of the matrix.
+ The largest singular value of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+ Calculates the condition number of this matrix.
+ The condition number of the matrix.
+
+
+ Computes the inverse of this matrix.
+ If is not a square matrix.
+ If is singular.
+ The inverse of this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Creates a matrix that contains the values from the requested sub-matrix.
+
+ The row to start copying from.
+ The number of rows to copy. Must be positive.
+ The column to start copying from.
+ The number of columns to copy. Must be positive.
+ The requested sub-matrix.
+ If: - is
+ negative, or greater than or equal to the number of rows.
+ - is negative, or greater than or equal to the number
+ of columns.
+ - (columnIndex + columnLength) >= Columns
+ - (rowIndex + rowLength) >= Rows
+ If or
+ is not positive.
+
+
+
+ Permute the columns of a matrix according to a permutation.
+
+ The column permutation to apply to this matrix.
+ Always thrown
+ Permutation in diagonal matrix are senseless, because of matrix nature
+
+
+
+ Permute the rows of a matrix according to a permutation.
+
+ The row permutation to apply to this matrix.
+ Always thrown
+ Permutation in diagonal matrix are senseless, because of matrix nature
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Gets the determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ Gets the log determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization for dense matrices.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ Cholesky factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+ If does not have the same dimensions as the existing factor.
+
+
+
+ Eigenvalues and eigenvectors of a complex matrix.
+
+
+ If A is Hermitian, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is Hermitian.
+ I.e. A = V*D*V' and V*VH=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the eigenvalue decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ If it is known whether the matrix is symmetric or not the routine can skip checking it itself.
+ If is null.
+ If EVD algorithm failed to converge with matrix .
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Initializes a new instance of the class. This object creates an unitary matrix
+ using the modified Gram-Schmidt method.
+
+ The matrix to factor.
+ If is null.
+ If row count is less then column count
+ If is rank deficient
+
+
+
+ Factorize matrix using the modified Gram-Schmidt method.
+
+ Initial matrix. On exit is replaced by Q.
+ Number of rows in Q.
+ Number of columns in Q.
+ On exit is filled by R.
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ LU factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+
+
+
+
+ Gets or sets Tau vector. Contains additional information on Q - used for native solver.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ QR factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ The QR factorization method to use.
+ If is null.
+ If row count is less then column count
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD) for .
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the singular value decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ Compute the singular U and VT vectors or not.
+ If is null.
+ If SVD algorithm failed to converge with matrix .
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Gets the absolute value of determinant of the square matrix for which the EVD was computed.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+ In the Math.NET implementation we also store a set of pivot elements for increased
+ numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Gets the determinant of the matrix for which the LU factorization was computed.
+
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+ If a factorization is performed, the resulting Q matrix is an m x m matrix
+ and the R matrix is an m x n matrix. If a factorization is performed, the
+ resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD).
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets the two norm of the .
+
+ The 2-norm of the .
+
+
+
+ Gets the condition number max(S) / min(S)
+
+ The condition number.
+
+
+
+ Gets the determinant of the square matrix for which the SVD was computed.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization for user matrices.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+
+
+
+ Computes the Cholesky factorization in-place.
+
+ On entry, the matrix to factor. On exit, the Cholesky factor matrix
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ Cholesky factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+ If is null.
+ If is not a square matrix.
+ If is not positive definite.
+ If does not have the same dimensions as the existing factor.
+
+
+
+ Calculate Cholesky step
+
+ Factor matrix
+ Number of rows
+ Column start
+ Total columns
+ Multipliers calculated previously
+ Number of available processors
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a complex matrix.
+
+
+ If A is Hermitian, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is Hermitian.
+ I.e. A = V*D*V' and V*VH=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the eigenvalue decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ If it is known whether the matrix is symmetric or not the routine can skip checking it itself.
+ If is null.
+ If EVD algorithm failed to converge with matrix .
+
+
+
+ Reduces a complex Hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations.
+
+ Source matrix to reduce
+ Output: Arrays for internal storage of real parts of eigenvalues
+ Output: Arrays for internal storage of imaginary parts of eigenvalues
+ Output: Arrays that contains further information about the transformations.
+ Order of initial matrix
+ This is derived from the Algol procedures HTRIDI by
+ Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Symmetric tridiagonal QL algorithm.
+
+ The eigen vectors to work on.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tql2, by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Determines eigenvectors by undoing the symmetric tridiagonalize transformation
+
+ The eigen vectors to work on.
+ Previously tridiagonalized matrix by .
+ Contains further information about the transformations
+ Input matrix order
+ This is derived from the Algol procedures HTRIBK, by
+ by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Nonsymmetric reduction to Hessenberg form.
+
+ The eigen vectors to work on.
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedures orthes and ortran,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutines in EISPACK.
+
+
+
+ Nonsymmetric reduction from Hessenberg to real Schur form.
+
+ The eigen vectors to work on.
+ The eigen values to work on.
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedure hqr2,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+
+
+
+ Initializes a new instance of the class. This object creates an unitary matrix
+ using the modified Gram-Schmidt method.
+
+ The matrix to factor.
+ If is null.
+ If row count is less then column count
+ If is rank deficient
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ LU factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ If is null.
+ If is not a square matrix.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ QR factorization when the constructor is called and cache it's factorization.
+
+ The matrix to factor.
+ The QR factorization method to use.
+ If is null.
+
+
+
+ Generate column from initial matrix to work array
+
+ Initial matrix
+ The first row
+ Column index
+ Generated vector
+
+
+
+ Perform calculation of Q or R
+
+ Work array
+ Q or R matrices
+ The first row
+ The last row
+ The first column
+ The last column
+ Number of available CPUs
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD) for .
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+
+
+
+ Initializes a new instance of the class. This object will compute the
+ the singular value decomposition when the constructor is called and cache it's decomposition.
+
+ The matrix to factor.
+ Compute the singular U and VT vectors or not.
+ If is null.
+
+
+
+
+ Calculates absolute value of multiplied on signum function of
+
+ Complex32 value z1
+ Complex32 value z2
+ Result multiplication of signum function and absolute value
+
+
+
+ Interchanges two vectors and
+
+ Source matrix
+ The number of rows in
+ Column A index to swap
+ Column B index to swap
+
+
+
+ Scale column by starting from row
+
+ Source matrix
+ The number of rows in
+ Column to scale
+ Row to scale from
+ Scale value
+
+
+
+ Scale vector by starting from index
+
+ Source vector
+ Row to scale from
+ Scale value
+
+
+
+ Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s
+ associated with the Givens rotation that zeros the y-coordinate of the point.
+
+ Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation
+ Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation
+ Contains the parameter c associated with the Givens rotation
+ Contains the parameter s associated with the Givens rotation
+ This is equivalent to the DROTG LAPACK routine.
+
+
+
+ Calculate Norm 2 of the column in matrix starting from row
+
+ Source matrix
+ The number of rows in
+ Column index
+ Start row index
+ Norm2 (Euclidean norm) of the column
+
+
+
+ Calculate Norm 2 of the vector starting from index
+
+ Source vector
+ Start index
+ Norm2 (Euclidean norm) of the vector
+
+
+
+ Calculate dot product of and conjugating the first vector.
+
+ Source matrix
+ The number of rows in
+ Index of column A
+ Index of column B
+ Starting row index
+ Dot product value
+
+
+
+ Performs rotation of points in the plane. Given two vectors x and y ,
+ each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i)
+
+ Source matrix
+ The number of rows in
+ Index of column A
+ Index of column B
+ scalar cos value
+ scalar sin value
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Complex32 version of the class.
+
+
+
+
+ Initializes a new instance of the Matrix class.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero.
+
+
+
+
+ Returns the conjugate transpose of this matrix.
+
+ The conjugate transpose of this matrix.
+
+
+
+ Puts the conjugate transpose of this matrix into the result matrix.
+
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract to this matrix.
+ The matrix to store the result of subtraction.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar to divide by each element of the matrix.
+ The matrix to store the result of the division.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The matrix to store the result of the pointwise power.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Computes the Moore-Penrose Pseudo-Inverse of this matrix.
+
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the p-norms of all row vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the p-norms of all column vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all row vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all column vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the value sum of each row vector.
+
+
+
+
+ Calculates the absolute value sum of each row vector.
+
+
+
+
+ Calculates the value sum of each column vector.
+
+
+
+
+ Calculates the absolute value sum of each column vector.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A Bi-Conjugate Gradient stabilized iterative matrix solver.
+
+
+
+ The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement'
+ of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the
+ BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the
+ proper preconditioner.
+
+
+ The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks
+ for iterative methods
+
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel,
+ June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo,
+ Charles Romine and Henk van der Vorst
+
+ Url: http://www.netlib.org/templates/Templates.html
+
+ Algorithm is described in Chapter 2, section 2.3.8, page 27
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient , A.
+ The solution , b.
+ The result , x.
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A composite matrix solver. The actual solver is made by a sequence of
+ matrix solvers.
+
+
+
+ Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373�387
+
+
+ Note that if an iterator is passed to this solver it will be used for all the sub-solvers.
+
+
+
+
+
+ The collection of solvers that will be used
+
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A diagonal preconditioner. The preconditioner uses the inverse
+ of the matrix diagonal as preconditioning values.
+
+
+
+
+ The inverse of the matrix diagonal.
+
+
+
+
+ Returns the decomposed matrix diagonal.
+
+ The matrix diagonal.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The upon which this preconditioner is based.
+ If is .
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ A Generalized Product Bi-Conjugate Gradient iterative matrix solver.
+
+
+
+ The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an
+ alternative version of the Bi-Conjugate Gradient stabilized (CG) solver.
+ Unlike the CG solver the GPBiCG solver can be used on
+ non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the
+ proper preconditioner.
+
+
+ The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with
+ efficiency and robustness
+
+ S. Fujino
+
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117
+
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Indicates the number of BiCGStab steps should be taken
+ before switching.
+
+
+
+
+ Indicates the number of GPBiCG steps should be taken
+ before switching.
+
+
+
+
+ Gets or sets the number of steps taken with the BiCgStab algorithm
+ before switching over to the GPBiCG algorithm.
+
+
+
+
+ Gets or sets the number of steps taken with the GPBiCG algorithm
+ before switching over to the BiCgStab algorithm.
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Decide if to do steps with BiCgStab
+
+ Number of iteration
+ true if yes, otherwise false
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ An incomplete, level 0, LU factorization preconditioner.
+
+
+ The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+
+
+ The matrix holding the lower (L) and upper (U) matrices. The
+ decomposition matrices are combined to reduce storage.
+
+
+
+
+ Returns the upper triagonal matrix that was created during the LU decomposition.
+
+ A new matrix containing the upper triagonal elements.
+
+
+
+ Returns the lower triagonal matrix that was created during the LU decomposition.
+
+ A new matrix containing the lower triagonal elements.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix upon which the preconditioner is based.
+ If is .
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ This class performs an Incomplete LU factorization with drop tolerance
+ and partial pivoting. The drop tolerance indicates which additional entries
+ will be dropped from the factorized LU matrices.
+
+
+ The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner
+
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22
+
+
+
+
+ The default fill level.
+
+
+
+
+ The default drop tolerance.
+
+
+
+
+ The decomposed upper triangular matrix.
+
+
+
+
+ The decomposed lower triangular matrix.
+
+
+
+
+ The array containing the pivot values.
+
+
+
+
+ The fill level.
+
+
+
+
+ The drop tolerance.
+
+
+
+
+ The pivot tolerance.
+
+
+
+
+ Initializes a new instance of the class with the default settings.
+
+
+
+
+ Initializes a new instance of the class with the specified settings.
+
+
+ The amount of fill that is allowed in the matrix. The value is a fraction of
+ the number of non-zero entries in the original matrix. Values should be positive.
+
+
+ The absolute drop tolerance which indicates below what absolute value an entry
+ will be dropped from the matrix. A drop tolerance of 0.0 means that no values
+ will be dropped. Values should always be positive.
+
+
+ The pivot tolerance which indicates at what level pivoting will take place. A
+ value of 0.0 means that no pivoting will take place.
+
+
+
+
+ Gets or sets the amount of fill that is allowed in the matrix. The
+ value is a fraction of the number of non-zero entries in the original
+ matrix. The standard value is 200.
+
+
+
+ Values should always be positive and can be higher than 1.0. A value lower
+ than 1.0 means that the eventual preconditioner matrix will have fewer
+ non-zero entries as the original matrix. A value higher than 1.0 means that
+ the eventual preconditioner can have more non-zero values than the original
+ matrix.
+
+
+ Note that any changes to the FillLevel after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Gets or sets the absolute drop tolerance which indicates below what absolute value
+ an entry will be dropped from the matrix. The standard value is 0.0001.
+
+
+
+ The values should always be positive and can be larger than 1.0. A low value will
+ keep more small numbers in the preconditioner matrix. A high value will remove
+ more small numbers from the preconditioner matrix.
+
+
+ Note that any changes to the DropTolerance after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Gets or sets the pivot tolerance which indicates at what level pivoting will
+ take place. The standard value is 0.0 which means pivoting will never take place.
+
+
+
+ The pivot tolerance is used to calculate if pivoting is necessary. Pivoting
+ will take place if any of the values in a row is bigger than the
+ diagonal value of that row divided by the pivot tolerance, i.e. pivoting
+ will take place if row(i,j) > row(i,i) / PivotTolerance for
+ any j that is not equal to i.
+
+
+ Note that any changes to the PivotTolerance after creating the preconditioner
+ will invalidate the created preconditioner and will require a re-initialization of
+ the preconditioner.
+
+
+ Thrown if a negative value is provided.
+
+
+
+ Returns the upper triagonal matrix that was created during the LU decomposition.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ A new matrix containing the upper triagonal elements.
+
+
+
+ Returns the lower triagonal matrix that was created during the LU decomposition.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ A new matrix containing the lower triagonal elements.
+
+
+
+ Returns the pivot array. This array is not needed for normal use because
+ the preconditioner will return the solution vector values in the proper order.
+
+
+ This method is used for debugging purposes only and should normally not be used.
+
+ The pivot array.
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The upon which this preconditioner is based. Note that the
+ method takes a general matrix type. However internally the data is stored
+ as a sparse matrix. Therefore it is not recommended to pass a dense matrix.
+
+ If is .
+ If is not a square matrix.
+
+
+
+ Pivot elements in the according to internal pivot array
+
+ Row to pivot in
+
+
+
+ Was pivoting already performed
+
+ Pivots already done
+ Current item to pivot
+ true if performed, otherwise false
+
+
+
+ Swap columns in the
+
+ Source .
+ First column index to swap
+ Second column index to swap
+
+
+
+ Sort vector descending, not changing vector but placing sorted indices to
+
+ Start sort form
+ Sort till upper bound
+ Array with sorted vector indices
+ Source
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ Pivot elements in according to internal pivot array
+
+ Source .
+ Result after pivoting.
+
+
+
+ An element sort algorithm for the class.
+
+
+ This sort algorithm is used to sort the columns in a sparse matrix based on
+ the value of the element on the diagonal of the matrix.
+
+
+
+
+ Sorts the elements of the vector in decreasing
+ fashion. The vector itself is not affected.
+
+ The starting index.
+ The stopping index.
+ An array that will contain the sorted indices once the algorithm finishes.
+ The that contains the values that need to be sorted.
+
+
+
+ Sorts the elements of the vector in decreasing
+ fashion using heap sort algorithm. The vector itself is not affected.
+
+ The starting index.
+ The stopping index.
+ An array that will contain the sorted indices once the algorithm finishes.
+ The that contains the values that need to be sorted.
+
+
+
+ Build heap for double indices
+
+ Root position
+ Length of
+ Indices of
+ Target
+
+
+
+ Sift double indices
+
+ Indices of
+ Target
+ Root position
+ Length of
+
+
+
+ Sorts the given integers in a decreasing fashion.
+
+ The values.
+
+
+
+ Sort the given integers in a decreasing fashion using heapsort algorithm
+
+ Array of values to sort
+ Length of
+
+
+
+ Build heap
+
+ Target values array
+ Root position
+ Length of
+
+
+
+ Sift values
+
+ Target value array
+ Root position
+ Length of
+
+
+
+ Exchange values in array
+
+ Target values array
+ First value to exchange
+ Second value to exchange
+
+
+
+ A simple milu(0) preconditioner.
+
+
+ Original Fortran code by Yousef Saad (07 January 2004)
+
+
+
+ Use modified or standard ILU(0)
+
+
+
+ Gets or sets a value indicating whether to use modified or standard ILU(0).
+
+
+
+
+ Gets a value indicating whether the preconditioner is initialized.
+
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix upon which the preconditioner is based.
+ If is .
+ If is not a square or is not an
+ instance of SparseCompressedRowMatrixStorage.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector b.
+ The left hand side vector x.
+
+
+
+ MILU0 is a simple milu(0) preconditioner.
+
+ Order of the matrix.
+ Matrix values in CSR format (input).
+ Column indices (input).
+ Row pointers (input).
+ Matrix values in MSR format (output).
+ Row pointers and column indices (output).
+ Pointer to diagonal elements (output).
+ True if the modified/MILU algorithm should be used (recommended)
+ Returns 0 on success or k > 0 if a zero pivot was encountered at step k.
+
+
+
+ A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver.
+
+
+
+ The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement'
+ of the standard BiCgStab solver.
+
+
+ The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors
+
+ Man-Chung Yeung and Tony F. Chan
+
+ SIAM Journal of Scientific Computing
+
+ Volume 21, Number 4, pp. 1263 - 1290
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ The default number of starting vectors.
+
+
+
+
+ The collection of starting vectors which are used as the basis for the Krylov sub-space.
+
+
+
+
+ The number of starting vectors used by the algorithm
+
+
+
+
+ Gets or sets the number of starting vectors.
+
+
+ Must be larger than 1 and smaller than the number of variables in the matrix that
+ for which this solver will be used.
+
+
+
+
+ Resets the number of starting vectors to the default value.
+
+
+
+
+ Gets or sets a series of orthonormal vectors which will be used as basis for the
+ Krylov sub-space.
+
+
+
+
+ Gets the number of starting vectors to create
+
+ Maximum number
+ Number of variables
+ Number of starting vectors to create
+
+
+
+ Returns an array of starting vectors.
+
+ The maximum number of starting vectors that should be created.
+ The number of variables.
+
+ An array with starting vectors. The array will never be larger than the
+ but it may be smaller if
+ the is smaller than
+ the .
+
+
+
+
+ Create random vectors array
+
+ Number of vectors
+ Size of each vector
+ Array of random vectors
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Source A.
+ Residual data.
+ x data.
+ b data.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver.
+
+
+
+ The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems.
+
+ Yousef Saad
+
+ Algorithm is described in Chapter 7, section 7.4.3, page 219
+
+
+ The example code below provides an indication of the possible use of the
+ solver.
+
+
+
+
+
+ Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax
+
+ Instance of the A.
+ Residual values in .
+ Instance of the x.
+ Instance of the b.
+
+
+
+ Is even?
+
+ Number to check
+ true if even, otherwise false
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ A Matrix with sparse storage, intended for very large matrices where most of the cells are zero.
+ The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format.
+ Wikipedia - CSR.
+
+
+
+
+ Gets the number of non zero elements in the matrix.
+
+ The number of non zero elements.
+
+
+
+ Create a new sparse matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new square sparse matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the order is less than one.
+
+
+
+ Create a new sparse matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+ If the row or column count is less than one.
+
+
+
+ Create a new sparse matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in row-major order (row by row).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+
+ Create a new sparse matrix with the given number of rows and columns as a copy of the given array.
+ The array is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new sparse matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new square sparse identity matrix where each diagonal value is set to One.
+
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract to this matrix.
+ The matrix to store the result of subtraction.
+ If the other matrix is .
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise divide this one by.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ A vector with sparse storage, intended for very large vectors where most of the cells are zero.
+
+ The sparse vector is not thread safe.
+
+
+
+ Gets the number of non zero elements in the vector.
+
+ The number of non zero elements.
+
+
+
+ Create a new sparse vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new sparse vector with the given length.
+ All cells of the vector will be initialized to zero.
+
+ If length is less than one.
+
+
+
+ Create a new sparse vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided value.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided init function.
+
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+ Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled
+ sparse vector and very inefficient. Would be better to work with a dense vector instead.
+
+
+ The scalar to add.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+
+ The vector to add to this one.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+
+ The scalar to subtract.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+
+ The vector to subtract from this one.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Conjugates vector and save result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to multiply.
+
+
+ The vector to store the result of the multiplication.
+
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Multiplies a vector with a complex.
+
+ The vector to scale.
+ The complex value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a complex.
+
+ The complex value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a vector with a complex.
+
+ The vector to divide.
+ The complex value.
+ The result of the division.
+ If is .
+
+
+
+ Computes the modulus of each element of the vector of the given divisor.
+
+ The vector whose elements we want to compute the modulus of.
+ The divisor to use,
+ The result of the calculation
+ If is .
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = ( ∑|this[i]|^p )^(1/p)
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Creates a double sparse vector based on a string. The string can be in the following formats (without the
+ quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex32.
+
+
+ A double sparse vector containing the values specified by the given string.
+
+
+ the string to parse.
+
+
+ An that supplies culture-specific formatting information.
+
+
+
+
+ Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex vector to convert.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent.
+ A return value indicates whether the conversion succeeded or failed.
+
+
+ A string containing a complex vector to convert.
+
+
+ An that supplies culture-specific formatting information about value.
+
+
+ The parsed value.
+
+
+ If the conversion succeeds, the result will contain a complex number equivalent to value.
+ Otherwise the result will be null.
+
+
+
+
+ Complex32 version of the class.
+
+
+
+
+ Initializes a new instance of the Vector class.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero.
+
+
+
+
+ Conjugates vector and save result to
+
+ Target vector
+
+
+
+ Negates vector and saves result to
+
+ Target vector
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to add.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+
+ The vector to add to this one.
+
+
+ The vector to store the result of the addition.
+
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+
+ The scalar to subtract.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+
+ The vector to subtract from this one.
+
+
+ The vector to store the result of the subtraction.
+
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+
+ The scalar to multiply.
+
+
+ The vector to store the result of the multiplication.
+
+
+
+
+ Divides each element of the vector by a scalar and stores the result in the result vector.
+
+
+ The scalar to divide with.
+
+
+ The vector to store the result of the division.
+
+
+
+
+ Divides a scalar by each element of the vector and stores the result in the result vector.
+
+ The scalar to divide.
+ The vector to store the result of the division.
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise divide this one by.
+ The vector to store the result of the pointwise division.
+
+
+
+ Pointwise raise this vector to an exponent and store the result into the result vector.
+
+ The exponent to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Returns the value of the absolute minimum element.
+
+ The value of the absolute minimum element.
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the value of the absolute maximum element.
+
+ The value of the absolute maximum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+
+ The p value.
+
+
+ Scalar ret = ( ∑|At(i)|^p )^(1/p)
+
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Normalizes this vector to a unit vector with respect to the p-norm.
+
+
+ The p value.
+
+
+ This vector normalized to a unit vector with respect to the p-norm.
+
+
+
+
+ Generic linear algebra type builder, for situations where a matrix or vector
+ must be created in a generic way. Usage of generic builders should not be
+ required in normal user code.
+
+
+
+
+ Gets the value of 0.0 for type T.
+
+
+
+
+ Gets the value of 1.0 for type T.
+
+
+
+
+ Create a new matrix straight from an initialized matrix storage instance.
+ If you have an instance of a discrete storage type instead, use their direct methods instead.
+
+
+
+
+ Create a new matrix with the same kind of the provided example.
+
+
+
+
+ Create a new matrix with the same kind and dimensions of the provided example.
+
+
+
+
+ Create a new matrix with the same kind of the provided example.
+
+
+
+
+ Create a new matrix with a type that can represent and is closest to both provided samples.
+
+
+
+
+ Create a new matrix with a type that can represent and is closest to both provided samples and the dimensions of example.
+
+
+
+
+ Create a new dense matrix with values sampled from the provided random distribution.
+
+
+
+
+ Create a new dense matrix with values sampled from the standard distribution with a system random source.
+
+
+
+
+ Create a new dense matrix with values sampled from the standard distribution with a system random source.
+
+
+
+
+ Create a new positive definite dense matrix where each value is the product
+ of two samples from the provided random distribution.
+
+
+
+
+ Create a new positive definite dense matrix where each value is the product
+ of two samples from the standard distribution.
+
+
+
+
+ Create a new positive definite dense matrix where each value is the product
+ of two samples from the provided random distribution.
+
+
+
+
+ Create a new dense matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+
+
+
+ Create a new dense matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to be in column-major order (column by column) and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+
+ Create a new dense matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new dense matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new diagonal dense identity matrix with a one-diagonal.
+
+
+
+
+ Create a new diagonal dense identity matrix with a one-diagonal.
+
+
+
+
+ Create a new dense matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix of T as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix of T as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in row-major order (row by row).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix of T as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix of T as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix from a 2D array of existing matrices.
+ The matrices in the array are not required to be dense already.
+ If the matrices do not align properly, they are placed on the top left
+ corner of their cell with the remaining fields left zero.
+
+
+
+
+ Create a new sparse matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+ The SparseCompressedRowMatrixStorage
+
+
+
+ Create a sparse matrix of T with the given number of rows and columns.
+
+ The number of rows.
+ The number of columns.
+
+
+
+ Create a new sparse matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new sparse matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new diagonal dense identity matrix with a one-diagonal.
+
+
+
+
+ Create a new diagonal dense identity matrix with a one-diagonal.
+
+
+
+
+ Create a new sparse matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in row-major order (row by row).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+
+ Create a new sparse matrix with the given number of rows and columns as a copy of the given array.
+ The array is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix from a 2D array of existing matrices.
+ The matrices in the array are not required to be sparse already.
+ If the matrices do not align properly, they are placed on the top left
+ corner of their cell with the remaining fields left zero.
+
+
+
+
+ Create a new sparse matrix from a coordinate format.
+ This new matrix will be independent from the given arrays.
+ A new memory block will be allocated for storing the matrix.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row index array of the coordinate format.
+ The column index array of the coordinate format.
+ The data array of the coordinate format.
+ The sparse matrix from the coordinate format.
+ Duplicate entries will be summed together and explicit zeros will be not intentionally removed.
+
+
+
+ Create a new sparse matrix from a compressed sparse row format.
+ This new matrix will be independent from the given arrays.
+ A new memory block will be allocated for storing the matrix.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row pointer array of the compressed sparse row format.
+ The column index array of the compressed sparse row format.
+ The data array of the compressed sparse row format.
+ The sparse matrix from the compressed sparse row format.
+ Duplicate entries will be summed together and explicit zeros will be not intentionally removed.
+
+
+
+ Create a new sparse matrix from a compressed sparse column format.
+ This new matrix will be independent from the given arrays.
+ A new memory block will be allocated for storing the matrix.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row index array of the compressed sparse column format.
+ The column pointer array of the compressed sparse column format.
+ The data array of the compressed sparse column format.
+ The sparse matrix from the compressed sparse column format.
+ Duplicate entries will be summed together and explicit zeros will be not intentionally removed.
+
+
+
+ Create a new diagonal matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to represent the diagonal values and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+ Create a new square diagonal matrix directly binding to a raw array.
+ The array is assumed to represent the diagonal values and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new diagonal identity matrix with a one-diagonal.
+
+
+
+
+ Create a new diagonal identity matrix with a one-diagonal.
+
+
+
+
+ Create a new diagonal matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Generic linear algebra type builder, for situations where a matrix or vector
+ must be created in a generic way. Usage of generic builders should not be
+ required in normal user code.
+
+
+
+
+ Gets the value of 0.0 for type T.
+
+
+
+
+ Gets the value of 1.0 for type T.
+
+
+
+
+ Create a new vector straight from an initialized matrix storage instance.
+ If you have an instance of a discrete storage type instead, use their direct methods instead.
+
+
+
+
+ Create a new vector with the same kind of the provided example.
+
+
+
+
+ Create a new vector with the same kind and dimension of the provided example.
+
+
+
+
+ Create a new vector with the same kind of the provided example.
+
+
+
+
+ Create a new vector with a type that can represent and is closest to both provided samples.
+
+
+
+
+ Create a new vector with a type that can represent and is closest to both provided samples and the dimensions of example.
+
+
+
+
+ Create a new vector with a type that can represent and is closest to both provided samples.
+
+
+
+
+ Create a new dense vector with values sampled from the provided random distribution.
+
+
+
+
+ Create a new dense vector with values sampled from the standard distribution with a system random source.
+
+
+
+
+ Create a new dense vector with values sampled from the standard distribution with a system random source.
+
+
+
+
+ Create a new dense vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a dense vector of T with the given size.
+
+ The size of the vector.
+
+
+
+ Create a dense vector of T that is directly bound to the specified array.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided value.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided init function.
+
+
+
+
+ Create a new dense vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given array.
+ This new vector will be independent from the array.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a sparse vector of T with the given size.
+
+ The size of the vector.
+
+
+
+ Create a new sparse vector and initialize each value using the provided value.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided init function.
+
+
+
+
+ Create a new sparse vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given array.
+ This new vector will be independent from the array.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new matrix straight from an initialized matrix storage instance.
+ If you have an instance of a discrete storage type instead, use their direct methods instead.
+
+
+
+
+ Create a new matrix with the same kind of the provided example.
+
+
+
+
+ Create a new matrix with the same kind and dimensions of the provided example.
+
+
+
+
+ Create a new matrix with the same kind of the provided example.
+
+
+
+
+ Create a new matrix with a type that can represent and is closest to both provided samples.
+
+
+
+
+ Create a new matrix with a type that can represent and is closest to both provided samples and the dimensions of example.
+
+
+
+
+ Create a new dense matrix with values sampled from the provided random distribution.
+
+
+
+
+ Create a new dense matrix with values sampled from the standard distribution with a system random source.
+
+
+
+
+ Create a new dense matrix with values sampled from the standard distribution with a system random source.
+
+
+
+
+ Create a new positive definite dense matrix where each value is the product
+ of two samples from the provided random distribution.
+
+
+
+
+ Create a new positive definite dense matrix where each value is the product
+ of two samples from the standard distribution.
+
+
+
+
+ Create a new positive definite dense matrix where each value is the product
+ of two samples from the provided random distribution.
+
+
+
+
+ Create a new dense matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new dense matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+
+
+
+ Create a new dense matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to be in column-major order (column by column) and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+
+ Create a new dense matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new dense matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal dense matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new diagonal dense identity matrix with a one-diagonal.
+
+
+
+
+ Create a new diagonal dense identity matrix with a one-diagonal.
+
+
+
+
+ Create a new dense matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix of T as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix of T as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix of T as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix of T as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new dense matrix from a 2D array of existing matrices.
+ The matrices in the array are not required to be dense already.
+ If the matrices do not align properly, they are placed on the top left
+ corner of their cell with the remaining fields left zero.
+
+
+
+
+ Create a new sparse matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a sparse matrix of T with the given number of rows and columns.
+
+ The number of rows.
+ The number of columns.
+
+
+
+ Create a new sparse matrix and initialize each value to the same provided value.
+
+
+
+
+ Create a new sparse matrix and initialize each value using the provided init function.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal sparse matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new diagonal dense identity matrix with a one-diagonal.
+
+
+
+
+ Create a new diagonal dense identity matrix with a one-diagonal.
+
+
+
+
+ Create a new sparse matrix as a copy of the given other matrix.
+ This new matrix will be independent from the other matrix.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given two-dimensional array.
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable.
+ The enumerable is assumed to be in row-major order (row by row).
+ This new matrix will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+
+ Create a new sparse matrix with the given number of rows and columns as a copy of the given array.
+ The array is assumed to be in column-major order (column by column).
+ This new matrix will be independent from the provided array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable columns.
+ Each enumerable in the master enumerable specifies a column.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given column vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given enumerable of enumerable rows.
+ Each enumerable in the master enumerable specifies a row.
+ This new matrix will be independent from the enumerables.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row arrays.
+ This new matrix will be independent from the arrays.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix as a copy of the given row vectors.
+ This new matrix will be independent from the vectors.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new sparse matrix from a 2D array of existing matrices.
+ The matrices in the array are not required to be sparse already.
+ If the matrices do not align properly, they are placed on the top left
+ corner of their cell with the remaining fields left zero.
+
+
+
+
+ Create a new sparse matrix from a coordinate format.
+ This new matrix will be independent from the given arrays.
+ A new memory block will be allocated for storing the matrix.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row index array of the coordinate format.
+ The column index array of the coordinate format.
+ The data array of the coordinate format.
+ The sparse matrix from the coordinate format.
+ Duplicate entries will be summed together and explicit zeros will be not intentionally removed.
+
+
+
+ Create a new sparse matrix from a compressed sparse row format.
+ This new matrix will be independent from the given arrays.
+ A new memory block will be allocated for storing the matrix.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row pointer array of the compressed sparse row format.
+ The column index array of the compressed sparse row format.
+ The data array of the compressed sparse row format.
+ The sparse matrix from the compressed sparse row format.
+ Duplicate entries will be summed together and explicit zeros will be not intentionally removed.
+
+
+
+ Create a new sparse matrix from a compressed sparse column format.
+ This new matrix will be independent from the given arrays.
+ A new memory block will be allocated for storing the matrix.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row index array of the compressed sparse column format.
+ The column pointer array of the compressed sparse column format.
+ The data array of the compressed sparse column format.
+ The sparse matrix from the compressed sparse column format.
+ Duplicate entries will be summed together and explicit zeros will be not intentionally removed.
+
+
+
+ Create a new diagonal matrix straight from an initialized matrix storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns.
+ All cells of the matrix will be initialized to zero.
+
+
+
+
+ Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array.
+ The array is assumed to represent the diagonal values and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+ Create a new square diagonal matrix directly binding to a raw array.
+ The array is assumed to represent the diagonal values and is used directly without copying.
+ Very efficient, but changes to the array and the matrix will affect each other.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value to the same provided value.
+
+
+
+
+ Create a new diagonal matrix and initialize each diagonal value using the provided init function.
+
+
+
+
+ Create a new diagonal identity matrix with a one-diagonal.
+
+
+
+
+ Create a new diagonal identity matrix with a one-diagonal.
+
+
+
+
+ Create a new diagonal matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix with the diagonal as a copy of the given vector.
+ This new matrix will be independent from the vector.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new diagonal matrix with the diagonal as a copy of the given array.
+ This new matrix will be independent from the array.
+ A new memory block will be allocated for storing the matrix.
+
+
+
+
+ Create a new vector straight from an initialized matrix storage instance.
+ If you have an instance of a discrete storage type instead, use their direct methods instead.
+
+
+
+
+ Create a new vector with the same kind of the provided example.
+
+
+
+
+ Create a new vector with the same kind and dimension of the provided example.
+
+
+
+
+ Create a new vector with the same kind of the provided example.
+
+
+
+
+ Create a new vector with a type that can represent and is closest to both provided samples.
+
+
+
+
+ Create a new vector with a type that can represent and is closest to both provided samples and the dimensions of example.
+
+
+
+
+ Create a new vector with a type that can represent and is closest to both provided samples.
+
+
+
+
+ Create a new dense vector with values sampled from the provided random distribution.
+
+
+
+
+ Create a new dense vector with values sampled from the standard distribution with a system random source.
+
+
+
+
+ Create a new dense vector with values sampled from the standard distribution with a system random source.
+
+
+
+
+ Create a new dense vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a dense vector of T with the given size.
+
+ The size of the vector.
+
+
+
+ Create a dense vector of T that is directly bound to the specified array.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided value.
+
+
+
+
+ Create a new dense vector and initialize each value using the provided init function.
+
+
+
+
+ Create a new dense vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given array.
+ This new vector will be independent from the array.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new dense vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector straight from an initialized vector storage instance.
+ The storage is used directly without copying.
+ Intended for advanced scenarios where you're working directly with
+ storage for performance or interop reasons.
+
+
+
+
+ Create a sparse vector of T with the given size.
+
+ The size of the vector.
+
+
+
+ Create a new sparse vector and initialize each value using the provided value.
+
+
+
+
+ Create a new sparse vector and initialize each value using the provided init function.
+
+
+
+
+ Create a new sparse vector as a copy of the given other vector.
+ This new vector will be independent from the other vector.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given array.
+ This new vector will be independent from the array.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given enumerable.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ Create a new sparse vector as a copy of the given indexed enumerable.
+ Keys must be provided at most once, zero is assumed if a key is omitted.
+ This new vector will be independent from the enumerable.
+ A new memory block will be allocated for storing the vector.
+
+
+
+
+ A class which encapsulates the functionality of a Cholesky factorization.
+ For a symmetric, positive definite matrix A, the Cholesky factorization
+ is an lower triangular matrix L so that A = L*L'.
+
+
+ The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric
+ or positive definite, the constructor will throw an exception.
+
+ Supported data types are double, single, , and .
+
+
+
+ Gets the lower triangular form of the Cholesky matrix.
+
+
+
+
+ Gets the determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ Gets the log determinant of the matrix for which the Cholesky matrix was computed.
+
+
+
+
+ Calculates the Cholesky factorization of the input matrix.
+
+ The matrix to be factorized.
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, AX = B, with A Cholesky factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Solves a system of linear equations, Ax = b, with A Cholesky factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Eigenvalues and eigenvectors of a real matrix.
+
+
+ If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is
+ diagonal and the eigenvector matrix V is orthogonal.
+ I.e. A = V*D*V' and V*VT=I.
+ If A is not symmetric, then the eigenvalue matrix D is block diagonal
+ with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues,
+ lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The
+ columns of V represent the eigenvectors in the sense that A*V = V*D,
+ i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly
+ conditioned, or even singular, so the validity of the equation
+ A = V*D*Inverse(V) depends upon V.Condition().
+
+ Supported data types are double, single, , and .
+
+
+
+ Gets or sets a value indicating whether matrix is symmetric or not
+
+
+
+
+ Gets the absolute value of determinant of the square matrix for which the EVD was computed.
+
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ Gets or sets the eigen values (λ) of matrix in ascending value.
+
+
+
+
+ Gets or sets eigenvectors.
+
+
+
+
+ Gets or sets the block diagonal eigenvalue matrix.
+
+
+
+
+ Solves a system of linear equations, AX = B, with A EVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, AX = B, with A EVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Solves a system of linear equations, Ax = b, with A EVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization.
+ Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix.
+
+
+ The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization.
+
+ Supported data types are double, single, , and .
+
+
+
+ Classes that solves a system of linear equations, AX = B.
+
+ Supported data types are double, single, , and .
+
+
+
+ Solves a system of linear equations, AX = B.
+
+ The right hand side Matrix, B.
+ The left hand side Matrix, X.
+
+
+
+ Solves a system of linear equations, AX = B.
+
+ The right hand side Matrix, B.
+ The left hand side Matrix, X.
+
+
+
+ Solves a system of linear equations, Ax = b
+
+ The right hand side vector, b.
+ The left hand side Vector, x.
+
+
+
+ Solves a system of linear equations, Ax = b.
+
+ The right hand side vector, b.
+ The left hand side Matrix>, x.
+
+
+
+ A class which encapsulates the functionality of an LU factorization.
+ For a matrix A, the LU factorization is a pair of lower triangular matrix L and
+ upper triangular matrix U so that A = L*U.
+ In the Math.NET implementation we also store a set of pivot elements for increased
+ numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U.
+
+
+ The computation of the LU factorization is done at construction time.
+
+ Supported data types are double, single, , and .
+
+
+
+ Gets the lower triangular factor.
+
+
+
+
+ Gets the upper triangular factor.
+
+
+
+
+ Gets the permutation applied to LU factorization.
+
+
+
+
+ Gets the determinant of the matrix for which the LU factorization was computed.
+
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, AX = B, with A LU factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Solves a system of linear equations, Ax = b, with A LU factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Returns the inverse of this matrix. The inverse is calculated using LU decomposition.
+
+ The inverse of this matrix.
+
+
+
+ The type of QR factorization go perform.
+
+
+
+
+ Compute the full QR factorization of a matrix.
+
+
+
+
+ Compute the thin QR factorization of a matrix.
+
+
+
+
+ A class which encapsulates the functionality of the QR decomposition.
+ Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix
+ (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix
+ (also called right triangular matrix).
+
+
+ The computation of the QR decomposition is done at construction time by Householder transformation.
+ If a factorization is performed, the resulting Q matrix is an m x m matrix
+ and the R matrix is an m x n matrix. If a factorization is performed, the
+ resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix.
+
+ Supported data types are double, single, , and .
+
+
+
+ Gets or sets orthogonal Q matrix
+
+
+
+
+ Gets the upper triangular factor R.
+
+
+
+
+ Gets the absolute determinant value of the matrix for which the QR matrix was computed.
+
+
+
+
+ Gets a value indicating whether the matrix is full rank or not.
+
+ true if the matrix is full rank; otherwise false.
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ A class which encapsulates the functionality of the singular value decomposition (SVD).
+ Suppose M is an m-by-n matrix whose entries are real numbers.
+ Then there exists a factorization of the form M = UΣVT where:
+ - U is an m-by-m unitary matrix;
+ - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal;
+ - VT denotes transpose of V, an n-by-n unitary matrix;
+ Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal
+ entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined
+ by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M.
+
+
+ The computation of the singular value decomposition is done at construction time.
+
+ Supported data types are double, single, , and .
+
+
+ Indicating whether U and VT matrices have been computed during SVD factorization.
+
+
+
+ Gets the singular values (Σ) of matrix in ascending value.
+
+
+
+
+ Gets the left singular vectors (U - m-by-m unitary matrix)
+
+
+
+
+ Gets the transpose right singular vectors (transpose of V, an n-by-n unitary matrix)
+
+
+
+
+ Returns the singular values as a diagonal .
+
+ The singular values as a diagonal .
+
+
+
+ Gets the effective numerical matrix rank.
+
+ The number of non-negligible singular values.
+
+
+
+ Gets the two norm of the .
+
+ The 2-norm of the .
+
+
+
+ Gets the condition number max(S) / min(S)
+
+ The condition number.
+
+
+
+ Gets the determinant of the square matrix for which the SVD was computed.
+
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, AX = B, with A SVD factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Solves a system of linear equations, Ax = b, with A SVD factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Defines the base class for Matrix classes.
+
+
+ Defines the base class for Matrix classes.
+
+ Supported data types are double, single, , and .
+
+ Defines the base class for Matrix classes.
+
+
+ Defines the base class for Matrix classes.
+
+
+
+
+ The value of 1.0.
+
+
+
+
+ The value of 0.0.
+
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+
+
+
+ Complex conjugates each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+
+
+
+ Add a scalar to each element of the matrix and stores the result in the result vector.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the matrix and stores the result in the result matrix.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts each element of the matrix from a scalar and stores the result in the result matrix.
+
+ The scalar to subtract from.
+ The matrix to store the result of the subtraction.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar denominator to use.
+ The matrix to store the result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and stores the result in the result matrix.
+
+ The scalar numerator to use.
+ The matrix to store the result of the division.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given divisor each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the matrix.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use.
+ The matrix to store the result of the pointwise division.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+ The matrix to store the result of the pointwise power.
+
+
+
+ Pointwise raise this matrix to an exponent matrix and store the result into the result matrix.
+
+ The exponent matrix to raise this matrix values to.
+ The matrix to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this matrix with another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use
+ The result of the modulus.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result matrix.
+
+ The matrix to store the result.
+
+
+
+ Adds a scalar to each element of the matrix.
+
+ The scalar to add.
+ The result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Adds a scalar to each element of the matrix and stores the result in the result matrix.
+
+ The scalar to add.
+ The matrix to store the result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Adds another matrix to this matrix.
+
+ The matrix to add to this matrix.
+ The matrix to store the result of the addition.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts a scalar from each element of the matrix.
+
+ The scalar to subtract.
+ A new matrix containing the subtraction of this matrix and the scalar.
+
+
+
+ Subtracts a scalar from each element of the matrix and stores the result in the result matrix.
+
+ The scalar to subtract.
+ The matrix to store the result of the subtraction.
+ If this matrix and are not the same size.
+
+
+
+ Subtracts each element of the matrix from a scalar.
+
+ The scalar to subtract from.
+ A new matrix containing the subtraction of the scalar and this matrix.
+
+
+
+ Subtracts each element of the matrix from a scalar and stores the result in the result matrix.
+
+ The scalar to subtract from.
+ The matrix to store the result of the subtraction.
+ If this matrix and are not the same size.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The result of the subtraction.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Subtracts another matrix from this matrix.
+
+ The matrix to subtract.
+ The matrix to store the result of the subtraction.
+ If the two matrices don't have the same dimensions.
+
+
+
+ Multiplies each element of this matrix with a scalar.
+
+ The scalar to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to multiply the matrix with.
+ The matrix to store the result of the multiplication.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Divides each element of this matrix with a scalar.
+
+ The scalar to divide with.
+ The result of the division.
+
+
+
+ Divides each element of the matrix by a scalar and places results into the result matrix.
+
+ The scalar to divide the matrix with.
+ The matrix to store the result of the division.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Divides a scalar by each element of the matrix.
+
+ The scalar to divide.
+ The result of the division.
+
+
+
+ Divides a scalar by each element of the matrix and places results into the result matrix.
+
+ The scalar to divide.
+ The matrix to store the result of the division.
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Multiplies this matrix by a vector and returns the result.
+
+ The vector to multiply with.
+ The result of the multiplication.
+ If this.ColumnCount != rightSide.Count.
+
+
+
+ Multiplies this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+ If result.Count != this.RowCount.
+ If this.ColumnCount != .Count.
+
+
+
+ Left multiply a matrix with a vector ( = vector * matrix ).
+
+ The vector to multiply with.
+ The result of the multiplication.
+ If this.RowCount != .Count.
+
+
+
+ Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+ If result.Count != this.ColumnCount.
+ If this.RowCount != .Count.
+
+
+
+ Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+ If this.Columns != other.Rows.
+ If the result matrix's dimensions are not the this.Rows x other.Columns.
+
+
+
+ Multiplies this matrix with another matrix and returns the result.
+
+ The matrix to multiply with.
+ If this.Columns != other.Rows.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+ If this.Columns != other.ColumnCount.
+ If the result matrix's dimensions are not the this.RowCount x other.RowCount.
+
+
+
+ Multiplies this matrix with transpose of another matrix and returns the result.
+
+ The matrix to multiply with.
+ If this.Columns != other.ColumnCount.
+ The result of the multiplication.
+
+
+
+ Multiplies the transpose of this matrix by a vector and returns the result.
+
+ The vector to multiply with.
+ The result of the multiplication.
+ If this.RowCount != rightSide.Count.
+
+
+
+ Multiplies the transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+ If result.Count != this.ColumnCount.
+ If this.RowCount != .Count.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+ If this.Rows != other.RowCount.
+ If the result matrix's dimensions are not the this.ColumnCount x other.ColumnCount.
+
+
+
+ Multiplies the transpose of this matrix with another matrix and returns the result.
+
+ The matrix to multiply with.
+ If this.Rows != other.RowCount.
+ The result of the multiplication.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+ If this.Columns != other.ColumnCount.
+ If the result matrix's dimensions are not the this.RowCount x other.RowCount.
+
+
+
+ Multiplies this matrix with the conjugate transpose of another matrix and returns the result.
+
+ The matrix to multiply with.
+ If this.Columns != other.ColumnCount.
+ The result of the multiplication.
+
+
+
+ Multiplies the conjugate transpose of this matrix by a vector and returns the result.
+
+ The vector to multiply with.
+ The result of the multiplication.
+ If this.RowCount != rightSide.Count.
+
+
+
+ Multiplies the conjugate transpose of this matrix with a vector and places the results into the result vector.
+
+ The vector to multiply with.
+ The result of the multiplication.
+ If result.Count != this.ColumnCount.
+ If this.RowCount != .Count.
+
+
+
+ Multiplies the conjugate transpose of this matrix with another matrix and places the results into the result matrix.
+
+ The matrix to multiply with.
+ The result of the multiplication.
+ If this.Rows != other.RowCount.
+ If the result matrix's dimensions are not the this.ColumnCount x other.ColumnCount.
+
+
+
+ Multiplies the conjugate transpose of this matrix with another matrix and returns the result.
+
+ The matrix to multiply with.
+ If this.Rows != other.RowCount.
+ The result of the multiplication.
+
+
+
+ Raises this square matrix to a positive integer exponent and places the results into the result matrix.
+
+ The positive integer exponent to raise the matrix to.
+ The result of the power.
+
+
+
+ Multiplies this square matrix with another matrix and returns the result.
+
+ The positive integer exponent to raise the matrix to.
+
+
+
+ Negate each element of this matrix.
+
+ A matrix containing the negated values.
+
+
+
+ Negate each element of this matrix and place the results into the result matrix.
+
+ The result of the negation.
+ if the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Complex conjugate each element of this matrix.
+
+ A matrix containing the conjugated values.
+
+
+
+ Complex conjugate each element of this matrix and place the results into the result matrix.
+
+ The result of the conjugation.
+ if the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the matrix.
+
+ The scalar denominator to use.
+ A matrix containing the results.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the matrix.
+
+ The scalar numerator to use.
+ A matrix containing the results.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the matrix.
+
+ The scalar numerator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (matrix % divisor), where the result has the sign of the dividend,
+ for each element of the matrix.
+
+ The scalar denominator to use.
+ A matrix containing the results.
+
+
+
+ Computes the remainder (matrix % divisor), where the result has the sign of the dividend,
+ for each element of the matrix.
+
+ The scalar denominator to use.
+ Matrix to store the results in.
+
+
+
+ Computes the remainder (dividend % matrix), where the result has the sign of the dividend,
+ for each element of the matrix.
+
+ The scalar numerator to use.
+ A matrix containing the results.
+
+
+
+ Computes the remainder (dividend % matrix), where the result has the sign of the dividend,
+ for each element of the matrix.
+
+ The scalar numerator to use.
+ Matrix to store the results in.
+
+
+
+ Pointwise multiplies this matrix with another matrix.
+
+ The matrix to pointwise multiply with this one.
+ If this matrix and are not the same size.
+ A new matrix that is the pointwise multiplication of this matrix and .
+
+
+
+ Pointwise multiplies this matrix with another matrix and stores the result into the result matrix.
+
+ The matrix to pointwise multiply with this one.
+ The matrix to store the result of the pointwise multiplication.
+ If this matrix and are not the same size.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise divide this matrix by another matrix.
+
+ The pointwise denominator matrix to use.
+ If this matrix and are not the same size.
+ A new matrix that is the pointwise division of this matrix and .
+
+
+
+ Pointwise divide this matrix by another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use.
+ The matrix to store the result of the pointwise division.
+ If this matrix and are not the same size.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+
+
+
+ Pointwise raise this matrix to an exponent.
+
+ The exponent to raise this matrix values to.
+ The matrix to store the result into.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise raise this matrix to an exponent and store the result into the result matrix.
+
+ The exponent to raise this matrix values to.
+
+
+
+ Pointwise raise this matrix to an exponent.
+
+ The exponent to raise this matrix values to.
+ The matrix to store the result into.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this matrix by another matrix.
+
+ The pointwise denominator matrix to use.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this matrix by another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use.
+ The matrix to store the result of the pointwise modulus.
+ If this matrix and are not the same size.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this matrix by another matrix.
+
+ The pointwise denominator matrix to use.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this matrix by another matrix and stores the result into the result matrix.
+
+ The pointwise denominator matrix to use.
+ The matrix to store the result of the pointwise remainder.
+ If this matrix and are not the same size.
+ If this matrix and are not the same size.
+
+
+
+ Helper function to apply a unary function to a matrix. The function
+ f modifies the matrix given to it in place. Before its
+ called, a copy of the 'this' matrix is first created, then passed to
+ f. The copy is then returned as the result
+
+ Function which takes a matrix, modifies it in place and returns void
+ New instance of matrix which is the result
+
+
+
+ Helper function to apply a unary function which modifies a matrix
+ in place.
+
+ Function which takes a matrix, modifies it in place and returns void
+ The matrix to be passed to f and where the result is to be stored
+ If this vector and are not the same size.
+
+
+
+ Helper function to apply a binary function which takes two matrices
+ and modifies the latter in place. A copy of the "this" matrix is
+ first made and then passed to f together with the other matrix. The
+ copy is then returned as the result
+
+ Function which takes two matrices, modifies the second in place and returns void
+ The other matrix to be passed to the function as argument. It is not modified
+ The resulting matrix
+ If this matrix and are not the same dimension.
+
+
+
+ Helper function to apply a binary function which takes two matrices
+ and modifies the second one in place
+
+ Function which takes two matrices, modifies the second in place and returns void
+ The other matrix to be passed to the function as argument. It is not modified
+ The matrix to store the result.
+ The resulting matrix
+ If this matrix and are not the same dimension.
+
+
+
+ Pointwise applies the exponent function to each value.
+
+
+
+
+ Pointwise applies the exponent function to each value.
+
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise applies the natural logarithm function to each value.
+
+
+
+
+ Pointwise applies the natural logarithm function to each value.
+
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise applies the abs function to each value
+
+
+
+
+ Pointwise applies the abs function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the acos function to each value
+
+
+
+
+ Pointwise applies the acos function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the asin function to each value
+
+
+
+
+ Pointwise applies the asin function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the atan function to each value
+
+
+
+
+ Pointwise applies the atan function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the atan2 function to each value of the current
+ matrix and a given other matrix being the 'x' of atan2 and the
+ 'this' matrix being the 'y'
+
+
+
+
+
+
+ Pointwise applies the atan2 function to each value of the current
+ matrix and a given other matrix being the 'x' of atan2 and the
+ 'this' matrix being the 'y'
+
+ The other matrix 'y'
+ The matrix with the result and 'x'
+
+
+
+
+ Pointwise applies the ceiling function to each value
+
+
+
+
+ Pointwise applies the ceiling function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the cos function to each value
+
+
+
+
+ Pointwise applies the cos function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the cosh function to each value
+
+
+
+
+ Pointwise applies the cosh function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the floor function to each value
+
+
+
+
+ Pointwise applies the floor function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the log10 function to each value
+
+
+
+
+ Pointwise applies the log10 function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the round function to each value
+
+
+
+
+ Pointwise applies the round function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the sign function to each value
+
+
+
+
+ Pointwise applies the sign function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the sin function to each value
+
+
+
+
+ Pointwise applies the sin function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the sinh function to each value
+
+
+
+
+ Pointwise applies the sinh function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the sqrt function to each value
+
+
+
+
+ Pointwise applies the sqrt function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the tan function to each value
+
+
+
+
+ Pointwise applies the tan function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the tanh function to each value
+
+
+
+
+ Pointwise applies the tanh function to each value
+
+ The vector to store the result
+
+
+
+ Computes the trace of this matrix.
+
+ The trace of this matrix
+ If the matrix is not square
+
+
+
+ Calculates the rank of the matrix.
+
+ effective numerical rank, obtained from SVD
+
+
+
+ Calculates the nullity of the matrix.
+
+ effective numerical nullity, obtained from SVD
+
+
+ Calculates the condition number of this matrix.
+ The condition number of the matrix.
+ The condition number is calculated using singular value decomposition.
+
+
+ Computes the determinant of this matrix.
+ The determinant of this matrix.
+
+
+
+ Computes an orthonormal basis for the null space of this matrix,
+ also known as the kernel of the corresponding matrix transformation.
+
+
+
+
+ Computes an orthonormal basis for the column space of this matrix,
+ also known as the range or image of the corresponding matrix transformation.
+
+
+
+ Computes the inverse of this matrix.
+ The inverse of this matrix.
+
+
+ Computes the Moore-Penrose Pseudo-Inverse of this matrix.
+
+
+
+ Computes the Kronecker product of this matrix with the given matrix. The new matrix is M-by-N
+ with M = this.Rows * lower.Rows and N = this.Columns * lower.Columns.
+
+ The other matrix.
+ The Kronecker product of the two matrices.
+
+
+
+ Computes the Kronecker product of this matrix with the given matrix. The new matrix is M-by-N
+ with M = this.Rows * lower.Rows and N = this.Columns * lower.Columns.
+
+ The other matrix.
+ The Kronecker product of the two matrices.
+ If the result matrix's dimensions are not (this.Rows * lower.rows) x (this.Columns * lower.Columns).
+
+
+
+ Pointwise applies the minimum with a scalar to each value.
+
+ The scalar value to compare to.
+
+
+
+ Pointwise applies the minimum with a scalar to each value.
+
+ The scalar value to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the maximum with a scalar to each value.
+
+ The scalar value to compare to.
+
+
+
+ Pointwise applies the maximum with a scalar to each value.
+
+ The scalar value to compare to.
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise applies the absolute minimum with a scalar to each value.
+
+ The scalar value to compare to.
+
+
+
+ Pointwise applies the absolute minimum with a scalar to each value.
+
+ The scalar value to compare to.
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise applies the absolute maximum with a scalar to each value.
+
+ The scalar value to compare to.
+
+
+
+ Pointwise applies the absolute maximum with a scalar to each value.
+
+ The scalar value to compare to.
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise applies the minimum with the values of another matrix to each value.
+
+ The matrix with the values to compare to.
+
+
+
+ Pointwise applies the minimum with the values of another matrix to each value.
+
+ The matrix with the values to compare to.
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise applies the maximum with the values of another matrix to each value.
+
+ The matrix with the values to compare to.
+
+
+
+ Pointwise applies the maximum with the values of another matrix to each value.
+
+ The matrix with the values to compare to.
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise applies the absolute minimum with the values of another matrix to each value.
+
+ The matrix with the values to compare to.
+
+
+
+ Pointwise applies the absolute minimum with the values of another matrix to each value.
+
+ The matrix with the values to compare to.
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+
+ Pointwise applies the absolute maximum with the values of another matrix to each value.
+
+ The matrix with the values to compare to.
+
+
+
+ Pointwise applies the absolute maximum with the values of another matrix to each value.
+
+ The matrix with the values to compare to.
+ The matrix to store the result.
+ If this matrix and are not the same size.
+
+
+ Calculates the induced L1 norm of this matrix.
+ The maximum absolute column sum of the matrix.
+
+
+ Calculates the induced L2 norm of the matrix.
+ The largest singular value of the matrix.
+
+ For sparse matrices, the L2 norm is computed using a dense implementation of singular value decomposition.
+ In a later release, it will be replaced with a sparse implementation.
+
+
+
+ Calculates the induced infinity norm of this matrix.
+ The maximum absolute row sum of the matrix.
+
+
+ Calculates the entry-wise Frobenius norm of this matrix.
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the p-norms of all row vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the p-norms of all column vectors.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all row vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Normalizes all column vectors to a unit p-norm.
+ Typical values for p are 1.0 (L1, Manhattan norm), 2.0 (L2, Euclidean norm) and positive infinity (infinity norm)
+
+
+
+
+ Calculates the value sum of each row vector.
+
+
+
+
+ Calculates the value sum of each column vector.
+
+
+
+
+ Calculates the absolute value sum of each row vector.
+
+
+
+
+ Calculates the absolute value sum of each column vector.
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+
+ An object to compare with this object.
+
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Creates a new object that is a copy of the current instance.
+
+
+ A new object that is a copy of this instance.
+
+
+
+
+ Returns a string that describes the type, dimensions and shape of this matrix.
+
+
+
+
+ Returns a string 2D array that summarizes the content of this matrix.
+
+
+
+
+ Returns a string 2D array that summarizes the content of this matrix.
+
+
+
+
+ Returns a string that summarizes the content of this matrix.
+
+
+
+
+ Returns a string that summarizes the content of this matrix.
+
+
+
+
+ Returns a string that summarizes this matrix.
+
+
+
+
+ Returns a string that summarizes this matrix.
+ The maximum number of cells can be configured in the class.
+
+
+
+
+ Returns a string that summarizes this matrix.
+ The maximum number of cells can be configured in the class.
+ The format string is ignored.
+
+
+
+
+ Initializes a new instance of the Matrix class.
+
+
+
+
+ Gets the raw matrix data storage.
+
+
+
+
+ Gets the number of columns.
+
+ The number of columns.
+
+
+
+ Gets the number of rows.
+
+ The number of rows.
+
+
+
+ Gets or sets the value at the given row and column, with range checking.
+
+
+ The row of the element.
+
+
+ The column of the element.
+
+ The value to get or set.
+ This method is ranged checked. and
+ to get and set values without range checking.
+
+
+
+ Retrieves the requested element without range checking.
+
+
+ The row of the element.
+
+
+ The column of the element.
+
+
+ The requested element.
+
+
+
+
+ Sets the value of the given element without range checking.
+
+
+ The row of the element.
+
+
+ The column of the element.
+
+
+ The value to set the element to.
+
+
+
+
+ Sets all values to zero.
+
+
+
+
+ Sets all values of a row to zero.
+
+
+
+
+ Sets all values of a column to zero.
+
+
+
+
+ Sets all values for all of the chosen rows to zero.
+
+
+
+
+ Sets all values for all of the chosen columns to zero.
+
+
+
+
+ Sets all values of a sub-matrix to zero.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero, in-place.
+
+
+
+
+ Set all values that meet the predicate to zero, in-place.
+
+
+
+
+ Creates a clone of this instance.
+
+
+ A clone of the instance.
+
+
+
+
+ Copies the elements of this matrix to the given matrix.
+
+
+ The matrix to copy values into.
+
+
+ If target is .
+
+
+ If this and the target matrix do not have the same dimensions..
+
+
+
+
+ Copies a row into an Vector.
+
+ The row to copy.
+ A Vector containing the copied elements.
+ If is negative,
+ or greater than or equal to the number of rows.
+
+
+
+ Copies a row into to the given Vector.
+
+ The row to copy.
+ The Vector to copy the row into.
+ If the result vector is .
+ If is negative,
+ or greater than or equal to the number of rows.
+ If this.Columns != result.Count.
+
+
+
+ Copies the requested row elements into a new Vector.
+
+ The row to copy elements from.
+ The column to start copying from.
+ The number of elements to copy.
+ A Vector containing the requested elements.
+ If:
+ - is negative,
+ or greater than or equal to the number of rows.
+ - is negative,
+ or greater than or equal to the number of columns.
+ - (columnIndex + length) >= Columns.
+ If is not positive.
+
+
+
+ Copies the requested row elements into a new Vector.
+
+ The row to copy elements from.
+ The column to start copying from.
+ The number of elements to copy.
+ The Vector to copy the column into.
+ If the result Vector is .
+ If is negative,
+ or greater than or equal to the number of columns.
+ If is negative,
+ or greater than or equal to the number of rows.
+ If +
+ is greater than or equal to the number of rows.
+ If is not positive.
+ If result.Count < length.
+
+
+
+ Copies a column into a new Vector>.
+
+ The column to copy.
+ A Vector containing the copied elements.
+ If is negative,
+ or greater than or equal to the number of columns.
+
+
+
+ Copies a column into to the given Vector.
+
+ The column to copy.
+ The Vector to copy the column into.
+ If the result Vector is .
+ If is negative,
+ or greater than or equal to the number of columns.
+ If this.Rows != result.Count.
+
+
+
+ Copies the requested column elements into a new Vector.
+
+ The column to copy elements from.
+ The row to start copying from.
+ The number of elements to copy.
+ A Vector containing the requested elements.
+ If:
+ - is negative,
+ or greater than or equal to the number of columns.
+ - is negative,
+ or greater than or equal to the number of rows.
+ - (rowIndex + length) >= Rows.
+
+ If is not positive.
+
+
+
+ Copies the requested column elements into the given vector.
+
+ The column to copy elements from.
+ The row to start copying from.
+ The number of elements to copy.
+ The Vector to copy the column into.
+ If the result Vector is .
+ If is negative,
+ or greater than or equal to the number of columns.
+ If is negative,
+ or greater than or equal to the number of rows.
+ If +
+ is greater than or equal to the number of rows.
+ If is not positive.
+ If result.Count < length.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Puts the upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Creates a matrix that contains the values from the requested sub-matrix.
+
+ The row to start copying from.
+ The number of rows to copy. Must be positive.
+ The column to start copying from.
+ The number of columns to copy. Must be positive.
+ The requested sub-matrix.
+ If: - is
+ negative, or greater than or equal to the number of rows.
+ - is negative, or greater than or equal to the number
+ of columns.
+ - (columnIndex + columnLength) >= Columns
+ - (rowIndex + rowLength) >= Rows
+ If or
+ is not positive.
+
+
+
+ Returns the elements of the diagonal in a Vector.
+
+ The elements of the diagonal.
+ For non-square matrices, the method returns Min(Rows, Columns) elements where
+ i == j (i is the row index, and j is the column index).
+
+
+
+ Returns a new matrix containing the lower triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The lower triangle of this matrix.
+
+
+
+ Puts the strictly lower triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Returns a new matrix containing the upper triangle of this matrix. The new matrix
+ does not contain the diagonal elements of this matrix.
+
+ The upper triangle of this matrix.
+
+
+
+ Puts the strictly upper triangle of this matrix into the result matrix.
+
+ Where to store the lower triangle.
+ If is .
+ If the result matrix's dimensions are not the same as this matrix.
+
+
+
+ Creates a new matrix and inserts the given column at the given index.
+
+ The index of where to insert the column.
+ The column to insert.
+ A new matrix with the inserted column.
+ If is .
+ If is < zero or > the number of columns.
+ If the size of != the number of rows.
+
+
+
+ Creates a new matrix with the given column removed.
+
+ The index of the column to remove.
+ A new matrix without the chosen column.
+ If is < zero or >= the number of columns.
+
+
+
+ Copies the values of the given Vector to the specified column.
+
+ The column to copy the values to.
+ The vector to copy the values from.
+ If is .
+ If is less than zero,
+ or greater than or equal to the number of columns.
+ If the size of does not
+ equal the number of rows of this Matrix.
+
+
+
+ Copies the values of the given Vector to the specified sub-column.
+
+ The column to copy the values to.
+ The row to start copying to.
+ The number of elements to copy.
+ The vector to copy the values from.
+ If is .
+ If is less than zero,
+ or greater than or equal to the number of columns.
+ If the size of does not
+ equal the number of rows of this Matrix.
+
+
+
+ Copies the values of the given array to the specified column.
+
+ The column to copy the values to.
+ The array to copy the values from.
+ If is .
+ If is less than zero,
+ or greater than or equal to the number of columns.
+ If the size of does not
+ equal the number of rows of this Matrix.
+ If the size of does not
+ equal the number of rows of this Matrix.
+
+
+
+ Creates a new matrix and inserts the given row at the given index.
+
+ The index of where to insert the row.
+ The row to insert.
+ A new matrix with the inserted column.
+ If is .
+ If is < zero or > the number of rows.
+ If the size of != the number of columns.
+
+
+
+ Creates a new matrix with the given row removed.
+
+ The index of the row to remove.
+ A new matrix without the chosen row.
+ If is < zero or >= the number of rows.
+
+
+
+ Copies the values of the given Vector to the specified row.
+
+ The row to copy the values to.
+ The vector to copy the values from.
+ If is .
+ If is less than zero,
+ or greater than or equal to the number of rows.
+ If the size of does not
+ equal the number of columns of this Matrix.
+
+
+
+ Copies the values of the given Vector to the specified sub-row.
+
+ The row to copy the values to.
+ The column to start copying to.
+ The number of elements to copy.
+ The vector to copy the values from.
+ If is .
+ If is less than zero,
+ or greater than or equal to the number of rows.
+ If the size of does not
+ equal the number of columns of this Matrix.
+
+
+
+ Copies the values of the given array to the specified row.
+
+ The row to copy the values to.
+ The array to copy the values from.
+ If is .
+ If is less than zero,
+ or greater than or equal to the number of rows.
+ If the size of does not
+ equal the number of columns of this Matrix.
+
+
+
+ Copies the values of a given matrix into a region in this matrix.
+
+ The row to start copying to.
+ The column to start copying to.
+ The sub-matrix to copy from.
+ If: - is
+ negative, or greater than or equal to the number of rows.
+ - is negative, or greater than or equal to the number
+ of columns.
+ - (columnIndex + columnLength) >= Columns
+ - (rowIndex + rowLength) >= Rows
+
+
+
+ Copies the values of a given matrix into a region in this matrix.
+
+ The row to start copying to.
+ The number of rows to copy. Must be positive.
+ The column to start copying to.
+ The number of columns to copy. Must be positive.
+ The sub-matrix to copy from.
+ If: - is
+ negative, or greater than or equal to the number of rows.
+ - is negative, or greater than or equal to the number
+ of columns.
+ - (columnIndex + columnLength) >= Columns
+ - (rowIndex + rowLength) >= Rows
+ - the size of is not at least x .
+ If or
+ is not positive.
+
+
+
+ Copies the values of a given matrix into a region in this matrix.
+
+ The row to start copying to.
+ The row of the sub-matrix to start copying from.
+ The number of rows to copy. Must be positive.
+ The column to start copying to.
+ The column of the sub-matrix to start copying from.
+ The number of columns to copy. Must be positive.
+ The sub-matrix to copy from.
+ If: - is
+ negative, or greater than or equal to the number of rows.
+ - is negative, or greater than or equal to the number
+ of columns.
+ - (columnIndex + columnLength) >= Columns
+ - (rowIndex + rowLength) >= Rows
+ - the size of is not at least x .
+ If or
+ is not positive.
+
+
+
+ Copies the values of the given Vector to the diagonal.
+
+ The vector to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If is .
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+
+ Copies the values of the given array to the diagonal.
+
+ The array to copy the values from. The length of the vector should be
+ Min(Rows, Columns).
+ If is .
+ If the length of does not
+ equal Min(Rows, Columns).
+ For non-square matrices, the elements of are copied to
+ this[i,i].
+
+
+
+ Creates a new matrix with the desired size and copies this matrix to it.
+ Values which no longer exist in the new matrix are ignored, new values are set to zero.
+
+ The number of rows of the new matrix.
+ The number of columns of the new matrix.
+ A new matrix with the desired rows and columns.
+
+
+
+ Returns the transpose of this matrix.
+
+ The transpose of this matrix.
+
+
+
+ Puts the transpose of this matrix into the result matrix.
+
+
+
+
+ Returns the conjugate transpose of this matrix.
+
+ The conjugate transpose of this matrix.
+
+
+
+ Puts the conjugate transpose of this matrix into the result matrix.
+
+
+
+
+ Permute the rows of a matrix according to a permutation.
+
+ The row permutation to apply to this matrix.
+
+
+
+ Permute the columns of a matrix according to a permutation.
+
+ The column permutation to apply to this matrix.
+
+
+
+ Concatenates this matrix with the given matrix.
+
+ The matrix to concatenate.
+ The combined matrix.
+
+
+
+
+
+ Concatenates this matrix with the given matrix and places the result into the result matrix.
+
+ The matrix to concatenate.
+ The combined matrix.
+
+
+
+
+
+ Stacks this matrix on top of the given matrix and places the result into the result matrix.
+
+ The matrix to stack this matrix upon.
+ The combined matrix.
+ If lower is .
+ If upper.Columns != lower.Columns.
+
+
+
+
+
+ Stacks this matrix on top of the given matrix and places the result into the result matrix.
+
+ The matrix to stack this matrix upon.
+ The combined matrix.
+ If lower is .
+ If upper.Columns != lower.Columns.
+
+
+
+
+
+ Diagonally stacks his matrix on top of the given matrix. The new matrix is a M-by-N matrix,
+ where M = this.Rows + lower.Rows and N = this.Columns + lower.Columns.
+ The values of off the off diagonal matrices/blocks are set to zero.
+
+ The lower, right matrix.
+ If lower is .
+ the combined matrix
+
+
+
+
+
+ Diagonally stacks his matrix on top of the given matrix and places the combined matrix into the result matrix.
+
+ The lower, right matrix.
+ The combined matrix
+ If lower is .
+ If the result matrix is .
+ If the result matrix's dimensions are not (this.Rows + lower.rows) x (this.Columns + lower.Columns).
+
+
+
+
+
+ Evaluates whether this matrix is symmetric.
+
+
+
+
+ Evaluates whether this matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ Returns this matrix as a multidimensional array.
+ The returned array will be independent from this matrix.
+ A new memory block will be allocated for the array.
+
+ A multidimensional containing the values of this matrix.
+
+
+
+ Returns the matrix's elements as an array with the data laid out column by column (column major).
+ The returned array will be independent from this matrix.
+ A new memory block will be allocated for the array.
+
+
+ 1, 2, 3
+ 4, 5, 6 will be returned as 1, 4, 7, 2, 5, 8, 3, 6, 9
+ 7, 8, 9
+
+ An array containing the matrix's elements.
+
+
+
+
+
+ Returns the matrix's elements as an array with the data laid row by row (row major).
+ The returned array will be independent from this matrix.
+ A new memory block will be allocated for the array.
+
+
+ 1, 2, 3
+ 4, 5, 6 will be returned as 1, 2, 3, 4, 5, 6, 7, 8, 9
+ 7, 8, 9
+
+ An array containing the matrix's elements.
+
+
+
+
+
+ Returns this matrix as array of row arrays.
+ The returned arrays will be independent from this matrix.
+ A new memory block will be allocated for the arrays.
+
+
+
+
+ Returns this matrix as array of column arrays.
+ The returned arrays will be independent from this matrix.
+ A new memory block will be allocated for the arrays.
+
+
+
+
+ Returns the internal multidimensional array of this matrix if, and only if, this matrix is stored by such an array internally.
+ Otherwise returns null. Changes to the returned array and the matrix will affect each other.
+ Use ToArray instead if you always need an independent array.
+
+
+
+
+ Returns the internal column by column (column major) array of this matrix if, and only if, this matrix is stored by such arrays internally.
+ Otherwise returns null. Changes to the returned arrays and the matrix will affect each other.
+ Use ToColumnMajorArray instead if you always need an independent array.
+
+
+ 1, 2, 3
+ 4, 5, 6 will be returned as 1, 4, 7, 2, 5, 8, 3, 6, 9
+ 7, 8, 9
+
+ An array containing the matrix's elements.
+
+
+
+
+
+ Returns the internal row by row (row major) array of this matrix if, and only if, this matrix is stored by such arrays internally.
+ Otherwise returns null. Changes to the returned arrays and the matrix will affect each other.
+ Use ToRowMajorArray instead if you always need an independent array.
+
+
+ 1, 2, 3
+ 4, 5, 6 will be returned as 1, 2, 3, 4, 5, 6, 7, 8, 9
+ 7, 8, 9
+
+ An array containing the matrix's elements.
+
+
+
+
+
+ Returns the internal row arrays of this matrix if, and only if, this matrix is stored by such arrays internally.
+ Otherwise returns null. Changes to the returned arrays and the matrix will affect each other.
+ Use ToRowArrays instead if you always need an independent array.
+
+
+
+
+ Returns the internal column arrays of this matrix if, and only if, this matrix is stored by such arrays internally.
+ Otherwise returns null. Changes to the returned arrays and the matrix will affect each other.
+ Use ToColumnArrays instead if you always need an independent array.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all values of the matrix.
+
+
+ The enumerator will include all values, even if they are zero.
+ The ordering of the values is unspecified (not necessarily column-wise or row-wise).
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all values of the matrix.
+
+
+ The enumerator will include all values, even if they are zero.
+ The ordering of the values is unspecified (not necessarily column-wise or row-wise).
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all values of the matrix and their index.
+
+
+ The enumerator returns a Tuple with the first two values being the row and column index
+ and the third value being the value of the element at that index.
+ The enumerator will include all values, even if they are zero.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all values of the matrix and their index.
+
+
+ The enumerator returns a Tuple with the first two values being the row and column index
+ and the third value being the value of the element at that index.
+ The enumerator will include all values, even if they are zero.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all columns of the matrix.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through a subset of all columns of the matrix.
+
+ The column to start enumerating over.
+ The number of columns to enumerating over.
+
+
+
+ Returns an IEnumerable that can be used to iterate through all columns of the matrix and their index.
+
+
+ The enumerator returns a Tuple with the first value being the column index
+ and the second value being the value of the column at that index.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through a subset of all columns of the matrix and their index.
+
+ The column to start enumerating over.
+ The number of columns to enumerating over.
+
+ The enumerator returns a Tuple with the first value being the column index
+ and the second value being the value of the column at that index.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all rows of the matrix.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through a subset of all rows of the matrix.
+
+ The row to start enumerating over.
+ The number of rows to enumerating over.
+
+
+
+ Returns an IEnumerable that can be used to iterate through all rows of the matrix and their index.
+
+
+ The enumerator returns a Tuple with the first value being the row index
+ and the second value being the value of the row at that index.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through a subset of all rows of the matrix and their index.
+
+ The row to start enumerating over.
+ The number of rows to enumerating over.
+
+ The enumerator returns a Tuple with the first value being the row index
+ and the second value being the value of the row at that index.
+
+
+
+
+ Applies a function to each value of this matrix and replaces the value with its result.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse matrices).
+
+
+
+
+ Applies a function to each value of this matrix and replaces the value with its result.
+ The row and column indices of each value (zero-based) are passed as first arguments to the function.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse matrices).
+
+
+
+
+ Applies a function to each value of this matrix and replaces the value in the result matrix.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse matrices).
+
+
+
+
+ Applies a function to each value of this matrix and replaces the value in the result matrix.
+ The index of each value (zero-based) is passed as first argument to the function.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse matrices).
+
+
+
+
+ Applies a function to each value of this matrix and replaces the value in the result matrix.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse matrices).
+
+
+
+
+ Applies a function to each value of this matrix and replaces the value in the result matrix.
+ The index of each value (zero-based) is passed as first argument to the function.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse matrices).
+
+
+
+
+ Applies a function to each value of this matrix and returns the results as a new matrix.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse matrices).
+
+
+
+
+ Applies a function to each value of this matrix and returns the results as a new matrix.
+ The index of each value (zero-based) is passed as first argument to the function.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse matrices).
+
+
+
+
+ For each row, applies a function f to each element of the row, threading an accumulator argument through the computation.
+ Returns an array with the resulting accumulator states for each row.
+
+
+
+
+ For each column, applies a function f to each element of the column, threading an accumulator argument through the computation.
+ Returns an array with the resulting accumulator states for each column.
+
+
+
+
+ Applies a function f to each row vector, threading an accumulator vector argument through the computation.
+ Returns the resulting accumulator vector.
+
+
+
+
+ Applies a function f to each column vector, threading an accumulator vector argument through the computation.
+ Returns the resulting accumulator vector.
+
+
+
+
+ Reduces all row vectors by applying a function between two of them, until only a single vector is left.
+
+
+
+
+ Reduces all column vectors by applying a function between two of them, until only a single vector is left.
+
+
+
+
+ Applies a function to each value pair of two matrices and replaces the value in the result vector.
+
+
+
+
+ Applies a function to each value pair of two matrices and returns the results as a new vector.
+
+
+
+
+ Applies a function to update the status with each value pair of two matrices and returns the resulting status.
+
+
+
+
+ Returns a tuple with the index and value of the first element satisfying a predicate, or null if none is found.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns a tuple with the index and values of the first element pair of two matrices of the same size satisfying a predicate, or null if none is found.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns true if at least one element satisfies a predicate.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns true if at least one element pairs of two matrices of the same size satisfies a predicate.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns true if all elements satisfy a predicate.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns true if all element pairs of two matrices of the same size satisfy a predicate.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns a Matrix containing the same values of .
+
+ The matrix to get the values from.
+ A matrix containing a the same values as .
+ If is .
+
+
+
+ Negates each element of the matrix.
+
+ The matrix to negate.
+ A matrix containing the negated values.
+ If is .
+
+
+
+ Adds two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to add.
+ The right matrix to add.
+ The result of the addition.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Adds a scalar to each element of the matrix.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of the provided matrix.
+ The left matrix to add.
+ The scalar value to add.
+ The result of the addition.
+ If is .
+
+
+
+ Adds a scalar to each element of the matrix.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of the provided matrix.
+ The scalar value to add.
+ The right matrix to add.
+ The result of the addition.
+ If is .
+
+
+
+ Subtracts two matrices together and returns the results.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to subtract.
+ The right matrix to subtract.
+ The result of the subtraction.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Subtracts a scalar from each element of a matrix.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of the provided matrix.
+ The left matrix to subtract.
+ The scalar value to subtract.
+ The result of the subtraction.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Subtracts each element of a matrix from a scalar.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of the provided matrix.
+ The scalar value to subtract.
+ The right matrix to subtract.
+ The result of the subtraction.
+ If and don't have the same dimensions.
+ If or is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a Matrix by a constant and returns the result.
+
+ The matrix to multiply.
+ The constant to multiply the matrix by.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies two matrices.
+
+ This operator will allocate new memory for the result. It will
+ choose the representation of either or depending on which
+ is denser.
+ The left matrix to multiply.
+ The right matrix to multiply.
+ The result of multiplication.
+ If or is .
+ If the dimensions of or don't conform.
+
+
+
+ Multiplies a Matrix and a Vector.
+
+ The matrix to multiply.
+ The vector to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Multiplies a Vector and a Matrix.
+
+ The vector to multiply.
+ The matrix to multiply.
+ The result of multiplication.
+ If or is .
+
+
+
+ Divides a scalar with a matrix.
+
+ The scalar to divide.
+ The matrix.
+ The result of the division.
+ If is .
+
+
+
+ Divides a matrix with a scalar.
+
+ The matrix to divide.
+ The scalar value.
+ The result of the division.
+ If is .
+
+
+
+ Computes the pointwise remainder (% operator), where the result has the sign of the dividend,
+ of each element of the matrix of the given divisor.
+
+ The matrix whose elements we want to compute the modulus of.
+ The divisor to use.
+ The result of the calculation
+ If is .
+
+
+
+ Computes the pointwise remainder (% operator), where the result has the sign of the dividend,
+ of the given dividend of each element of the matrix.
+
+ The dividend we want to compute the modulus of.
+ The matrix whose elements we want to use as divisor.
+ The result of the calculation
+ If is .
+
+
+
+ Computes the pointwise remainder (% operator), where the result has the sign of the dividend,
+ of each element of two matrices.
+
+ The matrix whose elements we want to compute the remainder of.
+ The divisor to use.
+ If and are not the same size.
+ If is .
+
+
+
+ Computes the sqrt of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the exponential of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the log of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the log10 of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the sin of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the cos of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the tan of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the asin of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the acos of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the atan of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the sinh of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the cosh of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the tanh of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the absolute value of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the floor of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the ceiling of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the rounded value of a matrix pointwise
+
+ The input matrix
+
+
+
+
+ Computes the Cholesky decomposition for a matrix.
+
+ The Cholesky decomposition object.
+
+
+
+ Computes the LU decomposition for a matrix.
+
+ The LU decomposition object.
+
+
+
+ Computes the QR decomposition for a matrix.
+
+ The type of QR factorization to perform.
+ The QR decomposition object.
+
+
+
+ Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization.
+
+ The QR decomposition object.
+
+
+
+ Computes the SVD decomposition for a matrix.
+
+ Compute the singular U and VT vectors or not.
+ The SVD decomposition object.
+
+
+
+ Computes the EVD decomposition for a matrix.
+
+ The EVD decomposition object.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, AX = B, with A QR factorized.
+
+ The right hand side , B.
+ The left hand side , X.
+
+
+
+ Solves a system of linear equations, Ax = b, with A QR factorized.
+
+ The right hand side vector, b.
+ The left hand side , x.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector.
+
+ The solution vector b.
+ The result vector x.
+ The iterative solver to use.
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix.
+
+ The solution matrix B.
+ The result matrix X
+ The iterative solver to use.
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector.
+
+ The solution vector b.
+ The result vector x.
+ The iterative solver to use.
+ Criteria to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix.
+
+ The solution matrix B.
+ The result matrix X
+ The iterative solver to use.
+ Criteria to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector.
+
+ The solution vector b.
+ The result vector x.
+ The iterative solver to use.
+ Criteria to control when to stop iterating.
+
+
+
+ Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix.
+
+ The solution matrix B.
+ The result matrix X
+ The iterative solver to use.
+ Criteria to control when to stop iterating.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector.
+
+ The solution vector b.
+ The iterative solver to use.
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+ The result vector x.
+
+
+
+ Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix.
+
+ The solution matrix B.
+ The iterative solver to use.
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+ The result matrix X.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector.
+
+ The solution vector b.
+ The iterative solver to use.
+ Criteria to control when to stop iterating.
+ The preconditioner to use for approximations.
+ The result vector x.
+
+
+
+ Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix.
+
+ The solution matrix B.
+ The iterative solver to use.
+ Criteria to control when to stop iterating.
+ The preconditioner to use for approximations.
+ The result matrix X.
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector.
+
+ The solution vector b.
+ The iterative solver to use.
+ Criteria to control when to stop iterating.
+ The result vector x.
+
+
+
+ Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix.
+
+ The solution matrix B.
+ The iterative solver to use.
+ Criteria to control when to stop iterating.
+ The result matrix X.
+
+
+
+ Converts a matrix to single precision.
+
+
+
+
+ Converts a matrix to double precision.
+
+
+
+
+ Converts a matrix to single precision complex numbers.
+
+
+
+
+ Converts a matrix to double precision complex numbers.
+
+
+
+
+ Gets a single precision complex matrix with the real parts from the given matrix.
+
+
+
+
+ Gets a double precision complex matrix with the real parts from the given matrix.
+
+
+
+
+ Gets a real matrix representing the real parts of a complex matrix.
+
+
+
+
+ Gets a real matrix representing the real parts of a complex matrix.
+
+
+
+
+ Gets a real matrix representing the imaginary parts of a complex matrix.
+
+
+
+
+ Gets a real matrix representing the imaginary parts of a complex matrix.
+
+
+
+
+ Existing data may not be all zeros, so clearing may be necessary
+ if not all of it will be overwritten anyway.
+
+
+
+
+ If existing data is assumed to be all zeros already,
+ clearing it may be skipped if applicable.
+
+
+
+
+ Allow skipping zero entries (without enforcing skipping them).
+ When enumerating sparse matrices this can significantly speed up operations.
+
+
+
+
+ Force applying the operation to all fields even if they are zero.
+
+
+
+
+ It is not known yet whether a matrix is symmetric or not.
+
+
+
+
+ A matrix is symmetric
+
+
+
+
+ A matrix is Hermitian (conjugate symmetric).
+
+
+
+
+ A matrix is not symmetric
+
+
+
+
+ Defines an that uses a cancellation token as stop criterion.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Determines the status of the iterative calculation based on the stop criteria stored
+ by the current . Result is set into Status field.
+
+ The number of iterations that have passed so far.
+ The vector containing the current solution values.
+ The right hand side vector.
+ The vector containing the current residual vectors.
+
+ The individual stop criteria may internally track the progress of the calculation based
+ on the invocation of this method. Therefore this method should only be called if the
+ calculation has moved forwards at least one step.
+
+
+
+
+ Gets the current calculation status.
+
+
+
+
+ Resets the to the pre-calculation state.
+
+
+
+
+ Clones the current and its settings.
+
+ A new instance of the class.
+
+
+
+ Stop criterion that delegates the status determination to a delegate.
+
+
+
+
+ Create a new instance of this criterion with a custom implementation.
+
+ Custom implementation with the same signature and semantics as the DetermineStatus method.
+
+
+
+ Determines the status of the iterative calculation by delegating it to the provided delegate.
+ Result is set into Status field.
+
+ The number of iterations that have passed so far.
+ The vector containing the current solution values.
+ The right hand side vector.
+ The vector containing the current residual vectors.
+
+ The individual stop criteria may internally track the progress of the calculation based
+ on the invocation of this method. Therefore this method should only be called if the
+ calculation has moved forwards at least one step.
+
+
+
+
+ Gets the current calculation status.
+
+
+
+
+ Resets the IIterationStopCriterion to the pre-calculation state.
+
+
+
+
+ Clones this criterion and its settings.
+
+
+
+
+ Monitors an iterative calculation for signs of divergence.
+
+
+
+
+ The maximum relative increase the residual may experience without triggering a divergence warning.
+
+
+
+
+ The number of iterations over which a residual increase should be tracked before issuing a divergence warning.
+
+
+
+
+ The status of the calculation
+
+
+
+
+ The array that holds the tracking information.
+
+
+
+
+ The iteration number of the last iteration.
+
+
+
+
+ Initializes a new instance of the class with the specified maximum
+ relative increase and the specified minimum number of tracking iterations.
+
+ The maximum relative increase that the residual may experience before a divergence warning is issued.
+ The minimum number of iterations over which the residual must grow before a divergence warning is issued.
+
+
+
+ Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued.
+
+ Thrown if the Maximum is set to zero or below.
+
+
+
+ Gets or sets the minimum number of iterations over which the residual must grow before
+ issuing a divergence warning.
+
+ Thrown if the value is set to less than one.
+
+
+
+ Determines the status of the iterative calculation based on the stop criteria stored
+ by the current . Result is set into Status field.
+
+ The number of iterations that have passed so far.
+ The vector containing the current solution values.
+ The right hand side vector.
+ The vector containing the current residual vectors.
+
+ The individual stop criteria may internally track the progress of the calculation based
+ on the invocation of this method. Therefore this method should only be called if the
+ calculation has moved forwards at least one step.
+
+
+
+
+ Detect if solution is diverging
+
+ true if diverging, otherwise false
+
+
+
+ Gets required history Length
+
+
+
+
+ Gets the current calculation status.
+
+
+
+
+ Resets the to the pre-calculation state.
+
+
+
+
+ Clones the current and its settings.
+
+ A new instance of the class.
+
+
+
+ Defines an that monitors residuals for NaN's.
+
+
+
+
+ The status of the calculation
+
+
+
+
+ The iteration number of the last iteration.
+
+
+
+
+ Determines the status of the iterative calculation based on the stop criteria stored
+ by the current . Result is set into Status field.
+
+ The number of iterations that have passed so far.
+ The vector containing the current solution values.
+ The right hand side vector.
+ The vector containing the current residual vectors.
+
+ The individual stop criteria may internally track the progress of the calculation based
+ on the invocation of this method. Therefore this method should only be called if the
+ calculation has moved forwards at least one step.
+
+
+
+
+ Gets the current calculation status.
+
+
+
+
+ Resets the to the pre-calculation state.
+
+
+
+
+ Clones the current and its settings.
+
+ A new instance of the class.
+
+
+
+ The base interface for classes that provide stop criteria for iterative calculations.
+
+
+
+
+ Determines the status of the iterative calculation based on the stop criteria stored
+ by the current IIterationStopCriterion. Status is set to Status field of current object.
+
+ The number of iterations that have passed so far.
+ The vector containing the current solution values.
+ The right hand side vector.
+ The vector containing the current residual vectors.
+
+ The individual stop criteria may internally track the progress of the calculation based
+ on the invocation of this method. Therefore this method should only be called if the
+ calculation has moved forwards at least one step.
+
+
+
+
+ Gets the current calculation status.
+
+ is not a legal value. Status should be set in implementation.
+
+
+
+ Resets the IIterationStopCriterion to the pre-calculation state.
+
+ To implementers: Invoking this method should not clear the user defined
+ property values, only the state that is used to track the progress of the
+ calculation.
+
+
+
+ Defines the interface for classes that solve the matrix equation Ax = b in
+ an iterative manner.
+
+
+
+
+ Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the
+ solution vector and x is the unknown vector.
+
+ The coefficient matrix, A.
+ The solution vector, b
+ The result vector, x
+ The iterator to use to control when to stop iterating.
+ The preconditioner to use for approximations.
+
+
+
+ Defines the interface for objects that can create an iterative solver with
+ specific settings. This interface is used to pass iterative solver creation
+ setup information around.
+
+
+
+
+ Gets the type of the solver that will be created by this setup object.
+
+
+
+
+ Gets type of preconditioner, if any, that will be created by this setup object.
+
+
+
+
+ Creates the iterative solver to be used.
+
+
+
+
+ Creates the preconditioner to be used by default (can be overwritten).
+
+
+
+
+ Gets the relative speed of the solver.
+
+ Returns a value between 0 and 1, inclusive.
+
+
+
+ Gets the relative reliability of the solver.
+
+ Returns a value between 0 and 1 inclusive.
+
+
+
+ The base interface for preconditioner classes.
+
+
+
+ Preconditioners are used by iterative solvers to improve the convergence
+ speed of the solving process. Increase in convergence speed
+ is related to the number of iterations necessary to get a converged solution.
+ So while in general the use of a preconditioner means that the iterative
+ solver will perform fewer iterations it does not guarantee that the actual
+ solution time decreases given that some preconditioners can be expensive to
+ setup and run.
+
+
+ Note that in general changes to the matrix will invalidate the preconditioner
+ if the changes occur after creating the preconditioner.
+
+
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+ The matrix on which the preconditioner is based.
+
+
+
+ Approximates the solution to the matrix equation Mx = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+
+ Defines an that monitors the numbers of iteration
+ steps as stop criterion.
+
+
+
+
+ The default value for the maximum number of iterations the process is allowed
+ to perform.
+
+
+
+
+ The maximum number of iterations the calculation is allowed to perform.
+
+
+
+
+ The status of the calculation
+
+
+
+
+ Initializes a new instance of the class with the default maximum
+ number of iterations.
+
+
+
+
+ Initializes a new instance of the class with the specified maximum
+ number of iterations.
+
+ The maximum number of iterations the calculation is allowed to perform.
+
+
+
+ Gets or sets the maximum number of iterations the calculation is allowed to perform.
+
+ Thrown if the Maximum is set to a negative value.
+
+
+
+ Returns the maximum number of iterations to the default.
+
+
+
+
+ Determines the status of the iterative calculation based on the stop criteria stored
+ by the current . Result is set into Status field.
+
+ The number of iterations that have passed so far.
+ The vector containing the current solution values.
+ The right hand side vector.
+ The vector containing the current residual vectors.
+
+ The individual stop criteria may internally track the progress of the calculation based
+ on the invocation of this method. Therefore this method should only be called if the
+ calculation has moved forwards at least one step.
+
+
+
+
+ Gets the current calculation status.
+
+
+
+
+ Resets the to the pre-calculation state.
+
+
+
+
+ Clones the current and its settings.
+
+ A new instance of the class.
+
+
+
+ Iterative Calculation Status
+
+
+
+
+ An iterator that is used to check if an iterative calculation should continue or stop.
+
+
+
+
+ The collection that holds all the stop criteria and the flag indicating if they should be added
+ to the child iterators.
+
+
+
+
+ The status of the iterator.
+
+
+
+
+ Initializes a new instance of the class with the default stop criteria.
+
+
+
+
+ Initializes a new instance of the class with the specified stop criteria.
+
+
+ The specified stop criteria. Only one stop criterion of each type can be passed in. None
+ of the stop criteria will be passed on to child iterators.
+
+
+
+
+ Initializes a new instance of the class with the specified stop criteria.
+
+
+ The specified stop criteria. Only one stop criterion of each type can be passed in. None
+ of the stop criteria will be passed on to child iterators.
+
+
+
+
+ Gets the current calculation status.
+
+
+
+
+ Determines the status of the iterative calculation based on the stop criteria stored
+ by the current . Result is set into Status field.
+
+ The number of iterations that have passed so far.
+ The vector containing the current solution values.
+ The right hand side vector.
+ The vector containing the current residual vectors.
+
+ The individual iterators may internally track the progress of the calculation based
+ on the invocation of this method. Therefore this method should only be called if the
+ calculation has moved forwards at least one step.
+
+
+
+
+ Indicates to the iterator that the iterative process has been cancelled.
+
+
+ Does not reset the stop-criteria.
+
+
+
+
+ Resets the to the pre-calculation state.
+
+
+
+
+ Creates a deep clone of the current iterator.
+
+ The deep clone of the current iterator.
+
+
+
+ Defines an that monitors residuals as stop criterion.
+
+
+
+
+ The maximum value for the residual below which the calculation is considered converged.
+
+
+
+
+ The minimum number of iterations for which the residual has to be below the maximum before
+ the calculation is considered converged.
+
+
+
+
+ The status of the calculation
+
+
+
+
+ The number of iterations since the residuals got below the maximum.
+
+
+
+
+ The iteration number of the last iteration.
+
+
+
+
+ Initializes a new instance of the class with the specified
+ maximum residual and minimum number of iterations.
+
+
+ The maximum value for the residual below which the calculation is considered converged.
+
+
+ The minimum number of iterations for which the residual has to be below the maximum before
+ the calculation is considered converged.
+
+
+
+
+ Gets or sets the maximum value for the residual below which the calculation is considered
+ converged.
+
+ Thrown if the Maximum is set to a negative value.
+
+
+
+ Gets or sets the minimum number of iterations for which the residual has to be
+ below the maximum before the calculation is considered converged.
+
+ Thrown if the BelowMaximumFor is set to a value less than 1.
+
+
+
+ Determines the status of the iterative calculation based on the stop criteria stored
+ by the current . Result is set into Status field.
+
+ The number of iterations that have passed so far.
+ The vector containing the current solution values.
+ The right hand side vector.
+ The vector containing the current residual vectors.
+
+ The individual stop criteria may internally track the progress of the calculation based
+ on the invocation of this method. Therefore this method should only be called if the
+ calculation has moved forwards at least one step.
+
+
+
+
+ Gets the current calculation status.
+
+
+
+
+ Resets the to the pre-calculation state.
+
+
+
+
+ Clones the current and its settings.
+
+ A new instance of the class.
+
+
+
+ Loads the available objects from the specified assembly.
+
+ The assembly which will be searched for setup objects.
+ If true, types that fail to load are simply ignored. Otherwise the exception is rethrown.
+ The types that should not be loaded.
+
+
+
+ Loads the available objects from the specified assembly.
+
+ The type in the assembly which should be searched for setup objects.
+ If true, types that fail to load are simply ignored. Otherwise the exception is rethrown.
+ The types that should not be loaded.
+
+
+
+ Loads the available objects from the specified assembly.
+
+ The of the assembly that should be searched for setup objects.
+ If true, types that fail to load are simply ignored. Otherwise the exception is rethrown.
+ The types that should not be loaded.
+
+
+
+ Loads the available objects from the Math.NET Numerics assembly.
+
+ The types that should not be loaded.
+
+
+
+ Loads the available objects from the Math.NET Numerics assembly.
+
+
+
+
+ A unit preconditioner. This preconditioner does not actually do anything
+ it is only used when running an without
+ a preconditioner.
+
+
+
+
+ The coefficient matrix on which this preconditioner operates.
+ Is used to check dimensions on the different vectors that are processed.
+
+
+
+
+ Initializes the preconditioner and loads the internal data structures.
+
+
+ The matrix upon which the preconditioner is based.
+
+ If is not a square matrix.
+
+
+
+ Approximates the solution to the matrix equation Ax = b.
+
+ The right hand side vector.
+ The left hand side vector. Also known as the result vector.
+
+
+ If and do not have the same size.
+
+
+ - or -
+
+
+ If the size of is different the number of rows of the coefficient matrix.
+
+
+
+
+
+ True if the matrix storage format is dense.
+
+
+
+
+ True if all fields of this matrix can be set to any value.
+ False if some fields are fixed, like on a diagonal matrix.
+
+
+
+
+ True if the specified field can be set to any value.
+ False if the field is fixed, like an off-diagonal field on a diagonal matrix.
+
+
+
+
+ Retrieves the requested element without range checking.
+
+
+
+
+ Sets the element without range checking.
+
+
+
+
+ Evaluate the row and column at a specific data index.
+
+
+
+
+ True if the vector storage format is dense.
+
+
+
+
+ Retrieves the requested element without range checking.
+
+
+
+
+ Sets the element without range checking.
+
+
+
+
+ True if the matrix storage format is dense.
+
+
+
+
+ True if all fields of this matrix can be set to any value.
+ False if some fields are fixed, like on a diagonal matrix.
+
+
+
+
+ True if the specified field can be set to any value.
+ False if the field is fixed, like an off-diagonal field on a diagonal matrix.
+
+
+
+
+ Retrieves the requested element without range checking.
+
+
+
+
+ Sets the element without range checking.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ True if the matrix storage format is dense.
+
+
+
+
+ True if all fields of this matrix can be set to any value.
+ False if some fields are fixed, like on a diagonal matrix.
+
+
+
+
+ True if the specified field can be set to any value.
+ False if the field is fixed, like an off-diagonal field on a diagonal matrix.
+
+
+
+
+ Gets or sets the value at the given row and column, with range checking.
+
+
+ The row of the element.
+
+
+ The column of the element.
+
+ The value to get or set.
+ This method is ranged checked. and
+ to get and set values without range checking.
+
+
+
+ Retrieves the requested element without range checking.
+
+
+ The row of the element.
+
+
+ The column of the element.
+
+
+ The requested element.
+
+ Not range-checked.
+
+
+
+ Sets the element without range checking.
+
+ The row of the element.
+ The column of the element.
+ The value to set the element to.
+ WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks.
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+
+ An object to compare with this object.
+
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ true if the specified is equal to the current ; otherwise, false.
+
+ The to compare with the current .
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+ The state array will not be modified, unless it is the same instance as the target array (which is allowed).
+
+
+ The state array will not be modified, unless it is the same instance as the target array (which is allowed).
+
+
+ The state array will not be modified, unless it is the same instance as the target array (which is allowed).
+
+
+ The state array will not be modified, unless it is the same instance as the target array (which is allowed).
+
+
+
+ The array containing the row indices of the existing rows. Element "i" of the array gives the index of the
+ element in the array that is first non-zero element in a row "i".
+ The last value is equal to ValueCount, so that the number of non-zero entries in row "i" is always
+ given by RowPointers[i+i] - RowPointers[i]. This array thus has length RowCount+1.
+
+
+
+
+ An array containing the column indices of the non-zero values. Element "j" of the array
+ is the number of the column in matrix that contains the j-th value in the array.
+
+
+
+
+ Array that contains the non-zero elements of matrix. Values of the non-zero elements of matrix are mapped into the values
+ array using the row-major storage mapping described in a compressed sparse row (CSR) format.
+
+
+
+
+ Gets the number of non zero elements in the matrix.
+
+ The number of non zero elements.
+
+
+
+ True if the matrix storage format is dense.
+
+
+
+
+ True if all fields of this matrix can be set to any value.
+ False if some fields are fixed, like on a diagonal matrix.
+
+
+
+
+ True if the specified field can be set to any value.
+ False if the field is fixed, like an off-diagonal field on a diagonal matrix.
+
+
+
+
+ Retrieves the requested element without range checking.
+
+
+ The row of the element.
+
+
+ The column of the element.
+
+
+ The requested element.
+
+ Not range-checked.
+
+
+
+ Sets the element without range checking.
+
+ The row of the element.
+ The column of the element.
+ The value to set the element to.
+ WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks.
+
+
+
+ Delete value from internal storage
+
+ Index of value in nonZeroValues array
+ Row number of matrix
+ WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks
+
+
+
+ Find item Index in nonZeroValues array
+
+ Matrix row index
+ Matrix column index
+ Item index
+ WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks
+
+
+
+ Calculates the amount with which to grow the storage array's if they need to be
+ increased in size.
+
+ The amount grown.
+
+
+
+ Eliminate duplicate entries by adding them together.
+
+
+
+
+ Fill zeros explicitly on the diagonal entries as required by the Intel MKL direct sparse solver.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Create a new sparse storage from a compressed sparse row (CSR) format.
+ This new storage will be independent from the given arrays.
+ A new memory block will be allocated for storing the matrix.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row pointer array of the compressed sparse row format.
+ The column index array of the compressed sparse row format.
+ The data array of the compressed sparse row format.
+ The sparse storage from the compressed sparse row format.
+ Duplicate entries will be summed together and explicit zeros will be not intentionally removed.
+
+
+
+ Create a new sparse matrix storage from a compressed sparse column (CSC) format.
+ This new storage will be independent from the given arrays.
+ A new memory block will be allocated.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row index array of the compressed sparse column format.
+ The column pointer array of the compressed sparse column format.
+ The data array of the compressed sparse column format.
+ The sparse storage from the compressed sparse column format.
+ Duplicate entries will be summed together and explicit zeros will be not intentionally removed.
+
+
+
+ Create a new sparse storage from a coordinate (COO) format.
+ This new storage will be independent from the given arrays.
+ A new memory block will be allocated for storing the matrix.
+
+ The number of rows.
+ The number of columns.
+ The number of stored values including explicit zeros.
+ The row index array of the coordinate format.
+ The column index array of the coordinate format.
+ The data array of the coordinate format.
+ The sparse storage from the coordinate format.
+ Duplicate entries will be summed together and
+ explicit zeros will be not intentionally removed.
+
+
+
+ Array that contains the indices of the non-zero values.
+
+
+
+
+ Array that contains the non-zero elements of the vector.
+
+
+
+
+ Gets the number of non-zero elements in the vector.
+
+
+
+
+ True if the vector storage format is dense.
+
+
+
+
+ Retrieves the requested element without range checking.
+
+
+
+
+ Sets the element without range checking.
+
+
+
+
+ Calculates the amount with which to grow the storage array's if they need to be
+ increased in size.
+
+ The amount grown.
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ True if the vector storage format is dense.
+
+
+
+
+ Gets or sets the value at the given index, with range checking.
+
+
+ The index of the element.
+
+ The value to get or set.
+ This method is ranged checked. and
+ to get and set values without range checking.
+
+
+
+ Retrieves the requested element without range checking.
+
+ The index of the element.
+ The requested element.
+ Not range-checked.
+
+
+
+ Sets the element without range checking.
+
+ The index of the element.
+ The value to set the element to.
+ WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks.
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+
+ An object to compare with this object.
+
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ true if the specified is equal to the current ; otherwise, false.
+
+ The to compare with the current .
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Defines the generic class for Vector classes.
+
+ Supported data types are double, single, , and .
+
+
+
+ The zero value for type T.
+
+
+
+
+ The value of 1.0 for type T.
+
+
+
+
+ Negates vector and save result to
+
+ Target vector
+
+
+
+ Complex conjugates vector and save result to
+
+ Target vector
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to add.
+ The vector to store the result of the addition.
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+ The vector to add to this one.
+ The vector to store the result of the addition.
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The vector to store the result of the subtraction.
+
+
+
+ Subtracts each element of the vector from a scalar and stores the result in the result vector.
+
+ The scalar to subtract from.
+ The vector to store the result of the subtraction.
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+ The vector to subtract from this one.
+ The vector to store the result of the subtraction.
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to multiply.
+ The vector to store the result of the multiplication.
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+
+
+
+ Computes the outer product M[i,j] = u[i]*v[j] of this and another vector and stores the result in the result matrix.
+
+ The other vector
+ The matrix to store the result of the product.
+
+
+
+ Divides each element of the vector by a scalar and stores the result in the result vector.
+
+ The scalar denominator to use.
+ The vector to store the result of the division.
+
+
+
+ Divides a scalar by each element of the vector and stores the result in the result vector.
+
+ The scalar numerator to use.
+ The vector to store the result of the division.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the division.
+
+
+
+ Pointwise raise this vector to an exponent and store the result into the result vector.
+
+ The exponent to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise raise this vector to an exponent vector and store the result into the result vector.
+
+ The exponent vector to raise this vector values to.
+ The vector to store the result of the pointwise power.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The result of the modulus.
+
+
+
+ Pointwise applies the exponential function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Pointwise applies the natural logarithm function to each value and stores the result into the result vector.
+
+ The vector to store the result.
+
+
+
+ Adds a scalar to each element of the vector.
+
+ The scalar to add.
+ A copy of the vector with the scalar added.
+
+
+
+ Adds a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to add.
+ The vector to store the result of the addition.
+ If this vector and are not the same size.
+
+
+
+ Adds another vector to this vector.
+
+ The vector to add to this one.
+ A new vector containing the sum of both vectors.
+ If this vector and are not the same size.
+
+
+
+ Adds another vector to this vector and stores the result into the result vector.
+
+ The vector to add to this one.
+ The vector to store the result of the addition.
+ If this vector and are not the same size.
+ If this vector and are not the same size.
+
+
+
+ Subtracts a scalar from each element of the vector.
+
+ The scalar to subtract.
+ A new vector containing the subtraction of this vector and the scalar.
+
+
+
+ Subtracts a scalar from each element of the vector and stores the result in the result vector.
+
+ The scalar to subtract.
+ The vector to store the result of the subtraction.
+ If this vector and are not the same size.
+
+
+
+ Subtracts each element of the vector from a scalar.
+
+ The scalar to subtract from.
+ A new vector containing the subtraction of the scalar and this vector.
+
+
+
+ Subtracts each element of the vector from a scalar and stores the result in the result vector.
+
+ The scalar to subtract from.
+ The vector to store the result of the subtraction.
+ If this vector and are not the same size.
+
+
+
+ Returns a negated vector.
+
+ The negated vector.
+ Added as an alternative to the unary negation operator.
+
+
+
+ Negates vector and save result to
+
+ Target vector
+
+
+
+ Subtracts another vector from this vector.
+
+ The vector to subtract from this one.
+ A new vector containing the subtraction of the two vectors.
+ If this vector and are not the same size.
+
+
+
+ Subtracts another vector to this vector and stores the result into the result vector.
+
+ The vector to subtract from this one.
+ The vector to store the result of the subtraction.
+ If this vector and are not the same size.
+ If this vector and are not the same size.
+
+
+
+ Return vector with complex conjugate values of the source vector
+
+ Conjugated vector
+
+
+
+ Complex conjugates vector and save result to
+
+ Target vector
+
+
+
+ Multiplies a scalar to each element of the vector.
+
+ The scalar to multiply.
+ A new vector that is the multiplication of the vector and the scalar.
+
+
+
+ Multiplies a scalar to each element of the vector and stores the result in the result vector.
+
+ The scalar to multiply.
+ The vector to store the result of the multiplication.
+ If this vector and are not the same size.
+
+
+
+ Computes the dot product between this vector and another vector.
+
+ The other vector.
+ The sum of a[i]*b[i] for all i.
+ If is not of the same size.
+
+
+
+
+ Computes the dot product between the conjugate of this vector and another vector.
+
+ The other vector.
+ The sum of conj(a[i])*b[i] for all i.
+ If is not of the same size.
+ If is .
+
+
+
+
+ Divides each element of the vector by a scalar.
+
+ The scalar to divide with.
+ A new vector that is the division of the vector and the scalar.
+
+
+
+ Divides each element of the vector by a scalar and stores the result in the result vector.
+
+ The scalar to divide with.
+ The vector to store the result of the division.
+ If this vector and are not the same size.
+
+
+
+ Divides a scalar by each element of the vector.
+
+ The scalar to divide.
+ A new vector that is the division of the vector and the scalar.
+
+
+
+ Divides a scalar by each element of the vector and stores the result in the result vector.
+
+ The scalar to divide.
+ The vector to store the result of the division.
+ If this vector and are not the same size.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector containing the result.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector containing the result.
+
+
+
+ Computes the canonical modulus, where the result has the sign of the divisor,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (vector % divisor), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector containing the result.
+
+
+
+ Computes the remainder (vector % divisor), where the result has the sign of the dividend,
+ for each element of the vector for the given divisor.
+
+ The scalar denominator to use.
+ A vector to store the results in.
+
+
+
+ Computes the remainder (dividend % vector), where the result has the sign of the dividend,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector containing the result.
+
+
+
+ Computes the remainder (dividend % vector), where the result has the sign of the dividend,
+ for the given dividend for each element of the vector.
+
+ The scalar numerator to use.
+ A vector to store the results in.
+
+
+
+ Pointwise multiplies this vector with another vector.
+
+ The vector to pointwise multiply with this one.
+ A new vector which is the pointwise multiplication of the two vectors.
+ If this vector and are not the same size.
+
+
+
+ Pointwise multiplies this vector with another vector and stores the result into the result vector.
+
+ The vector to pointwise multiply with this one.
+ The vector to store the result of the pointwise multiplication.
+ If this vector and are not the same size.
+ If this vector and are not the same size.
+
+
+
+ Pointwise divide this vector with another vector.
+
+ The pointwise denominator vector to use.
+ A new vector which is the pointwise division of the two vectors.
+ If this vector and are not the same size.
+
+
+
+ Pointwise divide this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The vector to store the result of the pointwise division.
+ If this vector and are not the same size.
+ If this vector and are not the same size.
+
+
+
+ Pointwise raise this vector to an exponent.
+
+ The exponent to raise this vector values to.
+
+
+
+ Pointwise raise this vector to an exponent and store the result into the result vector.
+
+ The exponent to raise this vector values to.
+ The matrix to store the result into.
+ If this vector and are not the same size.
+
+
+
+ Pointwise raise this vector to an exponent and store the result into the result vector.
+
+ The exponent to raise this vector values to.
+
+
+
+ Pointwise raise this vector to an exponent.
+
+ The exponent to raise this vector values to.
+ The vector to store the result into.
+ If this vector and are not the same size.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this vector with another vector.
+
+ The pointwise denominator vector to use.
+ If this vector and are not the same size.
+
+
+
+ Pointwise canonical modulus, where the result has the sign of the divisor,
+ of this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The vector to store the result of the pointwise modulus.
+ If this vector and are not the same size.
+ If this vector and are not the same size.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ of this vector with another vector.
+
+ The pointwise denominator vector to use.
+ If this vector and are not the same size.
+
+
+
+ Pointwise remainder (% operator), where the result has the sign of the dividend,
+ this vector with another vector and stores the result into the result vector.
+
+ The pointwise denominator vector to use.
+ The vector to store the result of the pointwise remainder.
+ If this vector and are not the same size.
+ If this vector and are not the same size.
+
+
+
+ Helper function to apply a unary function to a vector. The function
+ f modifies the vector given to it in place. Before its
+ called, a copy of the 'this' vector with the same dimension is
+ first created, then passed to f. The copy is returned as the result
+
+ Function which takes a vector, modifies it in place and returns void
+ New instance of vector which is the result
+
+
+
+ Helper function to apply a unary function which modifies a vector
+ in place.
+
+ Function which takes a vector, modifies it in place and returns void
+ The vector where the result is to be stored
+ If this vector and are not the same size.
+
+
+
+ Helper function to apply a binary function which takes a scalar and
+ a vector and modifies the latter in place. A copy of the "this"
+ vector is therefore first made and then passed to f together with
+ the scalar argument. The copy is then returned as the result
+
+ Function which takes a scalar and a vector, modifies the vector in place and returns void
+ The scalar to be passed to the function
+ The resulting vector
+
+
+
+ Helper function to apply a binary function which takes a scalar and
+ a vector, modifies the latter in place and returns void.
+
+ Function which takes a scalar and a vector, modifies the vector in place and returns void
+ The scalar to be passed to the function
+ The vector where the result will be placed
+ If this vector and are not the same size.
+
+
+
+ Helper function to apply a binary function which takes two vectors
+ and modifies the latter in place. A copy of the "this" vector is
+ first made and then passed to f together with the other vector. The
+ copy is then returned as the result
+
+ Function which takes two vectors, modifies the second in place and returns void
+ The other vector to be passed to the function as argument. It is not modified
+ The resulting vector
+ If this vector and are not the same size.
+
+
+
+ Helper function to apply a binary function which takes two vectors
+ and modifies the second one in place
+
+ Function which takes two vectors, modifies the second in place and returns void
+ The other vector to be passed to the function as argument. It is not modified
+ The resulting vector
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the exponent function to each value.
+
+
+
+
+ Pointwise applies the exponent function to each value.
+
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the natural logarithm function to each value.
+
+
+
+
+ Pointwise applies the natural logarithm function to each value.
+
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the abs function to each value
+
+
+
+
+ Pointwise applies the abs function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the acos function to each value
+
+
+
+
+ Pointwise applies the acos function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the asin function to each value
+
+
+
+
+ Pointwise applies the asin function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the atan function to each value
+
+
+
+
+ Pointwise applies the atan function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the atan2 function to each value of the current
+ vector and a given other vector being the 'x' of atan2 and the
+ 'this' vector being the 'y'
+
+
+
+
+
+ Pointwise applies the atan2 function to each value of the current
+ vector and a given other vector being the 'x' of atan2 and the
+ 'this' vector being the 'y'
+
+
+ The vector to store the result
+
+
+
+ Pointwise applies the ceiling function to each value
+
+
+
+
+ Pointwise applies the ceiling function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the cos function to each value
+
+
+
+
+ Pointwise applies the cos function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the cosh function to each value
+
+
+
+
+ Pointwise applies the cosh function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the floor function to each value
+
+
+
+
+ Pointwise applies the floor function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the log10 function to each value
+
+
+
+
+ Pointwise applies the log10 function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the round function to each value
+
+
+
+
+ Pointwise applies the round function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the sign function to each value
+
+
+
+
+ Pointwise applies the sign function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the sin function to each value
+
+
+
+
+ Pointwise applies the sin function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the sinh function to each value
+
+
+
+
+ Pointwise applies the sinh function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the sqrt function to each value
+
+
+
+
+ Pointwise applies the sqrt function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the tan function to each value
+
+
+
+
+ Pointwise applies the tan function to each value
+
+ The vector to store the result
+
+
+
+ Pointwise applies the tanh function to each value
+
+
+
+
+ Pointwise applies the tanh function to each value
+
+ The vector to store the result
+
+
+
+ Computes the outer product M[i,j] = u[i]*v[j] of this and another vector.
+
+ The other vector
+
+
+
+ Computes the outer product M[i,j] = u[i]*v[j] of this and another vector and stores the result in the result matrix.
+
+ The other vector
+ The matrix to store the result of the product.
+
+
+
+ Pointwise applies the minimum with a scalar to each value.
+
+ The scalar value to compare to.
+
+
+
+ Pointwise applies the minimum with a scalar to each value.
+
+ The scalar value to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the maximum with a scalar to each value.
+
+ The scalar value to compare to.
+
+
+
+ Pointwise applies the maximum with a scalar to each value.
+
+ The scalar value to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the absolute minimum with a scalar to each value.
+
+ The scalar value to compare to.
+
+
+
+ Pointwise applies the absolute minimum with a scalar to each value.
+
+ The scalar value to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the absolute maximum with a scalar to each value.
+
+ The scalar value to compare to.
+
+
+
+ Pointwise applies the absolute maximum with a scalar to each value.
+
+ The scalar value to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the minimum with the values of another vector to each value.
+
+ The vector with the values to compare to.
+
+
+
+ Pointwise applies the minimum with the values of another vector to each value.
+
+ The vector with the values to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the maximum with the values of another vector to each value.
+
+ The vector with the values to compare to.
+
+
+
+ Pointwise applies the maximum with the values of another vector to each value.
+
+ The vector with the values to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the absolute minimum with the values of another vector to each value.
+
+ The vector with the values to compare to.
+
+
+
+ Pointwise applies the absolute minimum with the values of another vector to each value.
+
+ The vector with the values to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Pointwise applies the absolute maximum with the values of another vector to each value.
+
+ The vector with the values to compare to.
+
+
+
+ Pointwise applies the absolute maximum with the values of another vector to each value.
+
+ The vector with the values to compare to.
+ The vector to store the result.
+ If this vector and are not the same size.
+
+
+
+ Calculates the L1 norm of the vector, also known as Manhattan norm.
+
+ The sum of the absolute values.
+
+
+
+ Calculates the L2 norm of the vector, also known as Euclidean norm.
+
+ The square root of the sum of the squared values.
+
+
+
+ Calculates the infinity norm of the vector.
+
+ The maximum absolute value.
+
+
+
+ Computes the p-Norm.
+
+ The p value.
+ Scalar ret = (sum(abs(this[i])^p))^(1/p)
+
+
+
+ Normalizes this vector to a unit vector with respect to the p-norm.
+
+ The p value.
+ This vector normalized to a unit vector with respect to the p-norm.
+
+
+
+ Returns the value of the absolute minimum element.
+
+ The value of the absolute minimum element.
+
+
+
+ Returns the index of the absolute minimum element.
+
+ The index of absolute minimum element.
+
+
+
+ Returns the value of the absolute maximum element.
+
+ The value of the absolute maximum element.
+
+
+
+ Returns the index of the absolute maximum element.
+
+ The index of absolute maximum element.
+
+
+
+ Returns the value of maximum element.
+
+ The value of maximum element.
+
+
+
+ Returns the index of the maximum element.
+
+ The index of maximum element.
+
+
+
+ Returns the value of the minimum element.
+
+ The value of the minimum element.
+
+
+
+ Returns the index of the minimum element.
+
+ The index of minimum element.
+
+
+
+ Computes the sum of the vector's elements.
+
+ The sum of the vector's elements.
+
+
+
+ Computes the sum of the absolute value of the vector's elements.
+
+ The sum of the absolute value of the vector's elements.
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+ An object to compare with this object.
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Creates a new object that is a copy of the current instance.
+
+
+ A new object that is a copy of this instance.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Returns a string that describes the type, dimensions and shape of this vector.
+
+
+
+
+ Returns a string that represents the content of this vector, column by column.
+
+ Maximum number of entries and thus lines per column. Typical value: 12; Minimum: 3.
+ Maximum number of characters per line over all columns. Typical value: 80; Minimum: 16.
+ Character to use to print if there is not enough space to print all entries. Typical value: "..".
+ Character to use to separate two columns on a line. Typical value: " " (2 spaces).
+ Character to use to separate two rows/lines. Typical value: Environment.NewLine.
+ Function to provide a string for any given entry value.
+
+
+
+ Returns a string that represents the content of this vector, column by column.
+
+ Maximum number of entries and thus lines per column. Typical value: 12; Minimum: 3.
+ Maximum number of characters per line over all columns. Typical value: 80; Minimum: 16.
+ Floating point format string. Can be null. Default value: G6.
+ Format provider or culture. Can be null.
+
+
+
+ Returns a string that represents the content of this vector, column by column.
+
+ Floating point format string. Can be null. Default value: G6.
+ Format provider or culture. Can be null.
+
+
+
+ Returns a string that summarizes this vector, column by column and with a type header.
+
+ Maximum number of entries and thus lines per column. Typical value: 12; Minimum: 3.
+ Maximum number of characters per line over all columns. Typical value: 80; Minimum: 16.
+ Floating point format string. Can be null. Default value: G6.
+ Format provider or culture. Can be null.
+
+
+
+ Returns a string that summarizes this vector.
+ The maximum number of cells can be configured in the class.
+
+
+
+
+ Returns a string that summarizes this vector.
+ The maximum number of cells can be configured in the class.
+ The format string is ignored.
+
+
+
+
+ Initializes a new instance of the Vector class.
+
+
+
+
+ Gets the raw vector data storage.
+
+
+
+
+ Gets the length or number of dimensions of this vector.
+
+
+
+ Gets or sets the value at the given .
+ The index of the value to get or set.
+ The value of the vector at the given .
+ If is negative or
+ greater than the size of the vector.
+
+
+ Gets the value at the given without range checking..
+ The index of the value to get or set.
+ The value of the vector at the given .
+
+
+ Sets the at the given without range checking..
+ The index of the value to get or set.
+ The value to set.
+
+
+
+ Resets all values to zero.
+
+
+
+
+ Sets all values of a subvector to zero.
+
+
+
+
+ Set all values whose absolute value is smaller than the threshold to zero, in-place.
+
+
+
+
+ Set all values that meet the predicate to zero, in-place.
+
+
+
+
+ Returns a deep-copy clone of the vector.
+
+ A deep-copy clone of the vector.
+
+
+
+ Set the values of this vector to the given values.
+
+ The array containing the values to use.
+ If is .
+ If is not the same size as this vector.
+
+
+
+ Copies the values of this vector into the target vector.
+
+ The vector to copy elements into.
+ If is .
+ If is not the same size as this vector.
+
+
+
+ Creates a vector containing specified elements.
+
+ The first element to begin copying from.
+ The number of elements to copy.
+ A vector containing a copy of the specified elements.
+ - If is not positive or
+ greater than or equal to the size of the vector.
+ - If + is greater than or equal to the size of the vector.
+
+ If is not positive.
+
+
+
+ Copies the values of a given vector into a region in this vector.
+
+ The field to start copying to
+ The number of fields to copy. Must be positive.
+ The sub-vector to copy from.
+ If is
+
+
+
+ Copies the requested elements from this vector to another.
+
+ The vector to copy the elements to.
+ The element to start copying from.
+ The element to start copying to.
+ The number of elements to copy.
+
+
+
+ Returns the data contained in the vector as an array.
+ The returned array will be independent from this vector.
+ A new memory block will be allocated for the array.
+
+ The vector's data as an array.
+
+
+
+ Returns the internal array of this vector if, and only if, this vector is stored by such an array internally.
+ Otherwise returns null. Changes to the returned array and the vector will affect each other.
+ Use ToArray instead if you always need an independent array.
+
+
+
+
+ Create a matrix based on this vector in column form (one single column).
+
+
+ This vector as a column matrix.
+
+
+
+
+ Create a matrix based on this vector in row form (one single row).
+
+
+ This vector as a row matrix.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all values of the vector.
+
+
+ The enumerator will include all values, even if they are zero.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all values of the vector.
+
+
+ The enumerator will include all values, even if they are zero.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all values of the vector and their index.
+
+
+ The enumerator returns a Tuple with the first value being the element index
+ and the second value being the value of the element at that index.
+ The enumerator will include all values, even if they are zero.
+
+
+
+
+ Returns an IEnumerable that can be used to iterate through all values of the vector and their index.
+
+
+ The enumerator returns a Tuple with the first value being the element index
+ and the second value being the value of the element at that index.
+ The enumerator will include all values, even if they are zero.
+
+
+
+
+ Applies a function to each value of this vector and replaces the value with its result.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse vectors).
+
+
+
+
+ Applies a function to each value of this vector and replaces the value with its result.
+ The index of each value (zero-based) is passed as first argument to the function.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse vectors).
+
+
+
+
+ Applies a function to each value of this vector and replaces the value in the result vector.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse vectors).
+
+
+
+
+ Applies a function to each value of this vector and replaces the value in the result vector.
+ The index of each value (zero-based) is passed as first argument to the function.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse vectors).
+
+
+
+
+ Applies a function to each value of this vector and replaces the value in the result vector.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse vectors).
+
+
+
+
+ Applies a function to each value of this vector and replaces the value in the result vector.
+ The index of each value (zero-based) is passed as first argument to the function.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse vectors).
+
+
+
+
+ Applies a function to each value of this vector and returns the results as a new vector.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse vectors).
+
+
+
+
+ Applies a function to each value of this vector and returns the results as a new vector.
+ The index of each value (zero-based) is passed as first argument to the function.
+ If forceMapZero is not set to true, zero values may or may not be skipped depending
+ on the actual data storage implementation (relevant mostly for sparse vectors).
+
+
+
+
+ Applies a function to each value pair of two vectors and replaces the value in the result vector.
+
+
+
+
+ Applies a function to each value pair of two vectors and returns the results as a new vector.
+
+
+
+
+ Applies a function to update the status with each value pair of two vectors and returns the resulting status.
+
+
+
+
+ Returns a tuple with the index and value of the first element satisfying a predicate, or null if none is found.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns a tuple with the index and values of the first element pair of two vectors of the same size satisfying a predicate, or null if none is found.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns true if at least one element satisfies a predicate.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns true if at least one element pairs of two vectors of the same size satisfies a predicate.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns true if all elements satisfy a predicate.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns true if all element pairs of two vectors of the same size satisfy a predicate.
+ Zero elements may be skipped on sparse data structures if allowed (default).
+
+
+
+
+ Returns a Vector containing the same values of .
+
+ This method is included for completeness.
+ The vector to get the values from.
+ A vector containing the same values as .
+ If is .
+
+
+
+ Returns a Vector containing the negated values of .
+
+ The vector to get the values from.
+ A vector containing the negated values as .
+ If is .
+
+
+
+ Adds two Vectors together and returns the results.
+
+ One of the vectors to add.
+ The other vector to add.
+ The result of the addition.
+ If and are not the same size.
+ If or is .
+
+
+
+ Adds a scalar to each element of a vector.
+
+ The vector to add to.
+ The scalar value to add.
+ The result of the addition.
+ If is .
+
+
+
+ Adds a scalar to each element of a vector.
+
+ The scalar value to add.
+ The vector to add to.
+ The result of the addition.
+ If is .
+
+
+
+ Subtracts two Vectors and returns the results.
+
+ The vector to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If and are not the same size.
+ If or is .
+
+
+
+ Subtracts a scalar from each element of a vector.
+
+ The vector to subtract from.
+ The scalar value to subtract.
+ The result of the subtraction.
+ If is .
+
+
+
+ Subtracts each element of a vector from a scalar.
+
+ The scalar value to subtract from.
+ The vector to subtract.
+ The result of the subtraction.
+ If is .
+
+
+
+ Multiplies a vector with a scalar.
+
+ The vector to scale.
+ The scalar value.
+ The result of the multiplication.
+ If is .
+
+
+
+ Multiplies a vector with a scalar.
+
+ The scalar value.
+ The vector to scale.
+ The result of the multiplication.
+ If is .
+
+
+
+ Computes the dot product between two Vectors.
+
+ The left row vector.
+ The right column vector.
+ The dot product between the two vectors.
+ If and are not the same size.
+ If or is .
+
+
+
+ Divides a scalar with a vector.
+
+ The scalar to divide.
+ The vector.
+ The result of the division.
+ If is .
+
+
+
+ Divides a vector with a scalar.
+
+ The vector to divide.
+ The scalar value.
+ The result of the division.
+ If is .
+
+
+
+ Pointwise divides two Vectors.
+
+ The vector to divide.
+ The other vector.
+ The result of the division.
+ If and are not the same size.
+ If is .
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ of each element of the vector of the given divisor.
+
+ The vector whose elements we want to compute the remainder of.
+ The divisor to use.
+ If is .
+
+
+
+ Computes the remainder (% operator), where the result has the sign of the dividend,
+ of the given dividend of each element of the vector.
+
+ The dividend we want to compute the remainder of.
+ The vector whose elements we want to use as divisor.
+ If is .
+
+
+
+ Computes the pointwise remainder (% operator), where the result has the sign of the dividend,
+ of each element of two vectors.
+
+ The vector whose elements we want to compute the remainder of.
+ The divisor to use.
+ If and are not the same size.
+ If is .
+
+
+
+ Computes the sqrt of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the exponential of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the log of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the log10 of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the sin of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the cos of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the tan of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the asin of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the acos of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the atan of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the sinh of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the cosh of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the tanh of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the absolute value of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the floor of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the ceiling of a vector pointwise
+
+ The input vector
+
+
+
+
+ Computes the rounded value of a vector pointwise
+
+ The input vector
+
+
+
+
+ Converts a vector to single precision.
+
+
+
+
+ Converts a vector to double precision.
+
+
+
+
+ Converts a vector to single precision complex numbers.
+
+
+
+
+ Converts a vector to double precision complex numbers.
+
+
+
+
+ Gets a single precision complex vector with the real parts from the given vector.
+
+
+
+
+ Gets a double precision complex vector with the real parts from the given vector.
+
+
+
+
+ Gets a real vector representing the real parts of a complex vector.
+
+
+
+
+ Gets a real vector representing the real parts of a complex vector.
+
+
+
+
+ Gets a real vector representing the imaginary parts of a complex vector.
+
+
+
+
+ Gets a real vector representing the imaginary parts of a complex vector.
+
+
+
+
+ Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
+
+ Predictor matrix X
+ Response vector Y
+ The direct method to be used to compute the regression.
+ Best fitting vector for model parameters β
+
+
+
+ Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
+
+ Predictor matrix X
+ Response matrix Y
+ The direct method to be used to compute the regression.
+ Best fitting vector for model parameters β
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+
+ List of predictor-arrays.
+ List of responses
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ The direct method to be used to compute the regression.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses the cholesky decomposition of the normal equations.
+
+ Sequence of predictor-arrays and their response.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ The direct method to be used to compute the regression.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
+ Uses the cholesky decomposition of the normal equations.
+
+ Predictor matrix X
+ Response vector Y
+ Best fitting vector for model parameters β
+
+
+
+ Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
+ Uses the cholesky decomposition of the normal equations.
+
+ Predictor matrix X
+ Response matrix Y
+ Best fitting vector for model parameters β
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses the cholesky decomposition of the normal equations.
+
+ List of predictor-arrays.
+ List of responses
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses the cholesky decomposition of the normal equations.
+
+ Sequence of predictor-arrays and their response.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses the cholesky decomposition of the normal equations.
+
+ Sequence of predictor-arrays and their response.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
+ Uses an orthogonal decomposition and is therefore more numerically stable than the normal equations but also slower.
+
+ Predictor matrix X
+ Response vector Y
+ Best fitting vector for model parameters β
+
+
+
+ Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
+ Uses an orthogonal decomposition and is therefore more numerically stable than the normal equations but also slower.
+
+ Predictor matrix X
+ Response matrix Y
+ Best fitting vector for model parameters β
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses an orthogonal decomposition and is therefore more numerically stable than the normal equations but also slower.
+
+ List of predictor-arrays.
+ List of responses
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses an orthogonal decomposition and is therefore more numerically stable than the normal equations but also slower.
+
+ Sequence of predictor-arrays and their response.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses an orthogonal decomposition and is therefore more numerically stable than the normal equations but also slower.
+
+ Sequence of predictor-arrays and their response.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
+ Uses a singular value decomposition and is therefore more numerically stable (especially if ill-conditioned) than the normal equations or QR but also slower.
+
+ Predictor matrix X
+ Response vector Y
+ Best fitting vector for model parameters β
+
+
+
+ Find the model parameters β such that X*β with predictor X becomes as close to response Y as possible, with least squares residuals.
+ Uses a singular value decomposition and is therefore more numerically stable (especially if ill-conditioned) than the normal equations or QR but also slower.
+
+ Predictor matrix X
+ Response matrix Y
+ Best fitting vector for model parameters β
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses a singular value decomposition and is therefore more numerically stable (especially if ill-conditioned) than the normal equations or QR but also slower.
+
+ List of predictor-arrays.
+ List of responses
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses a singular value decomposition and is therefore more numerically stable (especially if ill-conditioned) than the normal equations or QR but also slower.
+
+ Sequence of predictor-arrays and their response.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Find the model parameters β such that their linear combination with all predictor-arrays in X become as close to their response in Y as possible, with least squares residuals.
+ Uses a singular value decomposition and is therefore more numerically stable (especially if ill-conditioned) than the normal equations or QR but also slower.
+
+ Sequence of predictor-arrays and their response.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+ Best fitting list of model parameters β for each element in the predictor-arrays.
+
+
+
+ Least-Squares fitting the points (x,y) to a line y : x -> a+b*x,
+ returning its best fitting parameters as (a, b) tuple,
+ where a is the intercept and b the slope.
+
+ Predictor (independent)
+ Response (dependent)
+
+
+
+ Least-Squares fitting the points (x,y) to a line y : x -> a+b*x,
+ returning its best fitting parameters as (a, b) tuple,
+ where a is the intercept and b the slope.
+
+ Predictor-Response samples as tuples
+
+
+
+ Least-Squares fitting the points (x,y) to a line y : x -> a+b*x,
+ returning its best fitting parameters as (a, b) tuple,
+ where a is the intercept and b the slope.
+
+ Predictor-Response samples as tuples
+
+
+
+ Least-Squares fitting the points (x,y) to a line y : x -> b*x,
+ returning its best fitting parameter b,
+ where the intercept is zero and b the slope.
+
+ Predictor (independent)
+ Response (dependent)
+
+
+
+ Least-Squares fitting the points (x,y) to a line y : x -> b*x,
+ returning its best fitting parameter b,
+ where the intercept is zero and b the slope.
+
+ Predictor-Response samples as tuples
+
+
+
+ Weighted Linear Regression using normal equations.
+
+ Predictor matrix X
+ Response vector Y
+ Weight matrix W, usually diagonal with an entry for each predictor (row).
+
+
+
+ Weighted Linear Regression using normal equations.
+
+ Predictor matrix X
+ Response matrix Y
+ Weight matrix W, usually diagonal with an entry for each predictor (row).
+
+
+
+ Weighted Linear Regression using normal equations.
+
+ Predictor matrix X
+ Response vector Y
+ Weight matrix W, usually diagonal with an entry for each predictor (row).
+ True if an intercept should be added as first artificial predictor value. Default = false.
+
+
+
+ Weighted Linear Regression using normal equations.
+
+ List of sample vectors (predictor) together with their response.
+ List of weights, one for each sample.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+
+
+
+ Weighted Linear Regression using normal equations.
+
+ List of sample vectors (predictor) together with their response.
+ List of weights, one for each sample.
+ True if an intercept should be added as first artificial predictor value. Default = false.
+
+
+
+ Locally-Weighted Linear Regression using normal equations.
+
+
+
+
+ Locally-Weighted Linear Regression using normal equations.
+
+
+
+
+ First Order AB method(same as Forward Euler)
+
+ Initial value
+ Start Time
+ End Time
+ Size of output array(the larger, the finer)
+ ode model
+ approximation with size N
+
+
+
+ Second Order AB Method
+
+ Initial value 1
+ Start Time
+ End Time
+ Size of output array(the larger, the finer)
+ ode model
+ approximation with size N
+
+
+
+ Third Order AB Method
+
+ Initial value 1
+ Start Time
+ End Time
+ Size of output array(the larger, the finer)
+ ode model
+ approximation with size N
+
+
+
+ Fourth Order AB Method
+
+ Initial value 1
+ Start Time
+ End Time
+ Size of output array(the larger, the finer)
+ ode model
+ approximation with size N
+
+
+
+ ODE Solver Algorithms
+
+
+
+
+ Second Order Runge-Kutta method
+
+ initial value
+ start time
+ end time
+ Size of output array(the larger, the finer)
+ ode function
+ approximations
+
+
+
+ Fourth Order Runge-Kutta method
+
+ initial value
+ start time
+ end time
+ Size of output array(the larger, the finer)
+ ode function
+ approximations
+
+
+
+ Second Order Runge-Kutta to solve ODE SYSTEM
+
+ initial vector
+ start time
+ end time
+ Size of output array(the larger, the finer)
+ ode function
+ approximations
+
+
+
+ Fourth Order Runge-Kutta to solve ODE SYSTEM
+
+ initial vector
+ start time
+ end time
+ Size of output array(the larger, the finer)
+ ode function
+ approximations
+
+
+
+ Broyden–Fletcher–Goldfarb–Shanno Bounded (BFGS-B) algorithm is an iterative method for solving box-constrained nonlinear optimization problems
+ http://www.ece.northwestern.edu/~nocedal/PSfiles/limited.ps.gz
+
+
+
+
+ Find the minimum of the objective function given lower and upper bounds
+
+ The objective function, must support a gradient
+ The lower bound
+ The upper bound
+ The initial guess
+ The MinimizationResult which contains the minimum and the ExitCondition
+
+
+
+ Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm is an iterative method for solving unconstrained nonlinear optimization problems
+
+
+
+
+ Creates BFGS minimizer
+
+ The gradient tolerance
+ The parameter tolerance
+ The function progress tolerance
+ The maximum number of iterations
+
+
+
+ Find the minimum of the objective function given lower and upper bounds
+
+ The objective function, must support a gradient
+ The initial guess
+ The MinimizationResult which contains the minimum and the ExitCondition
+
+
+
+
+ Creates a base class for BFGS minimization
+
+
+
+
+ Broyden-Fletcher-Goldfarb-Shanno solver for finding function minima
+ See http://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm
+ Inspired by implementation: https://github.com/PatWie/CppNumericalSolvers/blob/master/src/BfgsSolver.cpp
+
+
+
+
+ Finds a minimum of a function by the BFGS quasi-Newton method
+ This uses the function and it's gradient (partial derivatives in each direction) and approximates the Hessian
+
+ An initial guess
+ Evaluates the function at a point
+ Evaluates the gradient of the function at a point
+ The minimum found
+
+
+
+ Objective function with a frozen evaluation that must not be changed from the outside.
+
+
+
+ Create a new unevaluated and independent copy of this objective function
+
+
+
+ Objective function with a mutable evaluation.
+
+
+
+ Create a new independent copy of this objective function, evaluated at the same point.
+
+
+
+ Get the y-values of the observations.
+
+
+
+
+ Get the values of the weights for the observations.
+
+
+
+
+ Get the y-values of the fitted model that correspond to the independent values.
+
+
+
+
+ Get the values of the parameters.
+
+
+
+
+ Get the residual sum of squares.
+
+
+
+
+ Get the Gradient vector. G = J'(y - f(x; p))
+
+
+
+
+ Get the approximated Hessian matrix. H = J'J
+
+
+
+
+ Get the number of calls to function.
+
+
+
+
+ Get the number of calls to jacobian.
+
+
+
+
+ Get the degree of freedom.
+
+
+
+
+ The scale factor for initial mu
+
+
+
+
+ Non-linear least square fitting by the Levenberg-Marduardt algorithm.
+
+ The objective function, including model, observations, and parameter bounds.
+ The initial guess values.
+ The initial damping parameter of mu.
+ The stopping threshold for infinity norm of the gradient vector.
+ The stopping threshold for L2 norm of the change of parameters.
+ The stopping threshold for L2 norm of the residuals.
+ The max iterations.
+ The result of the Levenberg-Marquardt minimization
+
+
+
+ Limited Memory version of Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm
+
+
+
+
+
+ Creates L-BFGS minimizer
+
+ Numbers of gradients and steps to store.
+
+
+
+ Find the minimum of the objective function given lower and upper bounds
+
+ The objective function, must support a gradient
+ The initial guess
+ The MinimizationResult which contains the minimum and the ExitCondition
+
+
+
+ Search for a step size alpha that satisfies the weak Wolfe conditions. The weak Wolfe
+ Conditions are
+ i) Armijo Rule: f(x_k + alpha_k p_k) <= f(x_k) + c1 alpha_k p_k^T g(x_k)
+ ii) Curvature Condition: p_k^T g(x_k + alpha_k p_k) >= c2 p_k^T g(x_k)
+ where g(x) is the gradient of f(x), 0 < c1 < c2 < 1.
+
+ Implementation is based on http://www.math.washington.edu/~burke/crs/408/lectures/L9-weak-Wolfe.pdf
+
+ references:
+ http://en.wikipedia.org/wiki/Wolfe_conditions
+ http://www.math.washington.edu/~burke/crs/408/lectures/L9-weak-Wolfe.pdf
+
+
+
+ Implemented following http://www.math.washington.edu/~burke/crs/408/lectures/L9-weak-Wolfe.pdf
+ The objective function being optimized, evaluated at the starting point of the search
+ Search direction
+ Initial size of the step in the search direction
+
+
+
+ The objective function being optimized, evaluated at the starting point of the search
+ Search direction
+ Initial size of the step in the search direction
+ The upper bound
+
+
+
+ Creates a base class for minimization
+
+ The gradient tolerance
+ The parameter tolerance
+ The function progress tolerance
+ The maximum number of iterations
+
+
+
+ Class implementing the Nelder-Mead simplex algorithm, used to find a minima when no gradient is available.
+ Called fminsearch() in Matlab. A description of the algorithm can be found at
+ http://se.mathworks.com/help/matlab/math/optimizing-nonlinear-functions.html#bsgpq6p-11
+ or
+ https://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method
+
+
+
+
+ Finds the minimum of the objective function without an initial perturbation, the default values used
+ by fminsearch() in Matlab are used instead
+ http://se.mathworks.com/help/matlab/math/optimizing-nonlinear-functions.html#bsgpq6p-11
+
+ The objective function, no gradient or hessian needed
+ The initial guess
+ The minimum point
+
+
+
+ Finds the minimum of the objective function with an initial perturbation
+
+ The objective function, no gradient or hessian needed
+ The initial guess
+ The initial perturbation
+ The minimum point
+
+
+
+ Finds the minimum of the objective function without an initial perturbation, the default values used
+ by fminsearch() in Matlab are used instead
+ http://se.mathworks.com/help/matlab/math/optimizing-nonlinear-functions.html#bsgpq6p-11
+
+ The objective function, no gradient or hessian needed
+ The initial guess
+ The minimum point
+
+
+
+ Finds the minimum of the objective function with an initial perturbation
+
+ The objective function, no gradient or hessian needed
+ The initial guess
+ The initial perturbation
+ The minimum point
+
+
+
+ Evaluate the objective function at each vertex to create a corresponding
+ list of error values for each vertex
+
+
+
+
+
+
+
+ Check whether the points in the error profile have so little range that we
+ consider ourselves to have converged
+
+
+
+
+
+
+
+
+ Examine all error values to determine the ErrorProfile
+
+
+
+
+
+
+ Construct an initial simplex, given starting guesses for the constants, and
+ initial step sizes for each dimension
+
+
+
+
+
+
+ Test a scaling operation of the high point, and replace it if it is an improvement
+
+
+
+
+
+
+
+
+
+
+ Contract the simplex uniformly around the lowest point
+
+
+
+
+
+
+
+
+ Compute the centroid of all points except the worst
+
+
+
+
+
+
+
+ The value of the constant
+
+
+
+
+ Returns the best fit parameters.
+
+
+
+
+ Returns the standard errors of the corresponding parameters
+
+
+
+
+ Returns the y-values of the fitted model that correspond to the independent values.
+
+
+
+
+ Returns the covariance matrix at minimizing point.
+
+
+
+
+ Returns the correlation matrix at minimizing point.
+
+
+
+
+ The stopping threshold for the function value or L2 norm of the residuals.
+
+
+
+
+ The stopping threshold for L2 norm of the change of the parameters.
+
+
+
+
+ The stopping threshold for infinity norm of the gradient.
+
+
+
+
+ The maximum number of iterations.
+
+
+
+
+ The lower bound of the parameters.
+
+
+
+
+ The upper bound of the parameters.
+
+
+
+
+ The scale factors for the parameters.
+
+
+
+
+ Objective function where neither Gradient nor Hessian is available.
+
+
+
+
+ Objective function where the Gradient is available. Greedy evaluation.
+
+
+
+
+ Objective function where the Gradient is available. Lazy evaluation.
+
+
+
+
+ Objective function where the Hessian is available. Greedy evaluation.
+
+
+
+
+ Objective function where the Hessian is available. Lazy evaluation.
+
+
+
+
+ Objective function where both Gradient and Hessian are available. Greedy evaluation.
+
+
+
+
+ Objective function where both Gradient and Hessian are available. Lazy evaluation.
+
+
+
+
+ Objective function where neither first nor second derivative is available.
+
+
+
+
+ Objective function where the first derivative is available.
+
+
+
+
+ Objective function where the first and second derivatives are available.
+
+
+
+
+ objective model with a user supplied jacobian for non-linear least squares regression.
+
+
+
+
+ Objective model for non-linear least squares regression.
+
+
+
+
+ Objective model with a user supplied jacobian for non-linear least squares regression.
+
+
+
+
+ Objective model for non-linear least squares regression.
+
+
+
+
+ Objective function with a user supplied jacobian for nonlinear least squares regression.
+
+
+
+
+ Objective function for nonlinear least squares regression.
+ The numerical jacobian with accuracy order is used.
+
+
+
+
+ Adapts an objective function with only value implemented
+ to provide a gradient as well. Gradient calculation is
+ done using the finite difference method, specifically
+ forward differences.
+
+ For each gradient computed, the algorithm requires an
+ additional number of function evaluations equal to the
+ functions's number of input parameters.
+
+
+
+
+ Set or get the values of the independent variable.
+
+
+
+
+ Set or get the values of the observations.
+
+
+
+
+ Set or get the values of the weights for the observations.
+
+
+
+
+ Get whether parameters are fixed or free.
+
+
+
+
+ Get the number of observations.
+
+
+
+
+ Get the number of unknown parameters.
+
+
+
+
+ Get the degree of freedom
+
+
+
+
+ Get the number of calls to function.
+
+
+
+
+ Get the number of calls to jacobian.
+
+
+
+
+ Set or get the values of the parameters.
+
+
+
+
+ Get the y-values of the fitted model that correspond to the independent values.
+
+
+
+
+ Get the residual sum of squares.
+
+
+
+
+ Get the Gradient vector of x and p.
+
+
+
+
+ Get the Hessian matrix of x and p, J'WJ
+
+
+
+
+ Set observed data to fit.
+
+
+
+
+ Set parameters and bounds.
+
+ The initial values of parameters.
+ The list to the parameters fix or free.
+
+
+
+ Non-linear least square fitting by the trust region dogleg algorithm.
+
+
+
+
+ The trust region subproblem.
+
+
+
+
+ The stopping threshold for the trust region radius.
+
+
+
+
+ Non-linear least square fitting by the trust-region algorithm.
+
+ The objective model, including function, jacobian, observations, and parameter bounds.
+ The subproblem
+ The initial guess values.
+ The stopping threshold for L2 norm of the residuals.
+ The stopping threshold for infinity norm of the gradient vector.
+ The stopping threshold for L2 norm of the change of parameters.
+ The stopping threshold for trust region radius
+ The max iterations.
+
+
+
+
+ Non-linear least square fitting by the trust region Newton-Conjugate-Gradient algorithm.
+
+
+
+
+ Class to represent a permutation for a subset of the natural numbers.
+
+
+
+
+ Entry _indices[i] represents the location to which i is permuted to.
+
+
+
+
+ Initializes a new instance of the Permutation class.
+
+ An array which represents where each integer is permuted too: indices[i] represents that integer i
+ is permuted to location indices[i].
+
+
+
+ Gets the number of elements this permutation is over.
+
+
+
+
+ Computes where permutes too.
+
+ The index to permute from.
+ The index which is permuted to.
+
+
+
+ Computes the inverse of the permutation.
+
+ The inverse of the permutation.
+
+
+
+ Construct an array from a sequence of inversions.
+
+
+ From wikipedia: the permutation 12043 has the inversions (0,2), (1,2) and (3,4). This would be
+ encoded using the array [22244].
+
+ The set of inversions to construct the permutation from.
+ A permutation generated from a sequence of inversions.
+
+
+
+ Construct a sequence of inversions from the permutation.
+
+
+ From wikipedia: the permutation 12043 has the inversions (0,2), (1,2) and (3,4). This would be
+ encoded using the array [22244].
+
+ A sequence of inversions.
+
+
+
+ Checks whether the array represents a proper permutation.
+
+ An array which represents where each integer is permuted too: indices[i] represents that integer i
+ is permuted to location indices[i].
+ True if represents a proper permutation, false otherwise.
+
+
+
+ A single-variable polynomial with real-valued coefficients and non-negative exponents.
+
+
+
+
+ The coefficients of the polynomial in a
+
+
+
+
+ Only needed for the ToString method
+
+
+
+
+ Degree of the polynomial, i.e. the largest monomial exponent. For example, the degree of y=x^2+x^5 is 5, for y=3 it is 0.
+ The null-polynomial returns degree -1 because the correct degree, negative infinity, cannot be represented by integers.
+
+
+
+
+ Create a zero-polynomial with a coefficient array of the given length.
+ An array of length N can support polynomials of a degree of at most N-1.
+
+ Length of the coefficient array
+
+
+
+ Create a zero-polynomial
+
+
+
+
+ Create a constant polynomial.
+ Example: 3.0 -> "p : x -> 3.0"
+
+ The coefficient of the "x^0" monomial.
+
+
+
+ Create a polynomial with the provided coefficients (in ascending order, where the index matches the exponent).
+ Example: {5, 0, 2} -> "p : x -> 5 + 0 x^1 + 2 x^2".
+
+ Polynomial coefficients as array
+
+
+
+ Create a polynomial with the provided coefficients (in ascending order, where the index matches the exponent).
+ Example: {5, 0, 2} -> "p : x -> 5 + 0 x^1 + 2 x^2".
+
+ Polynomial coefficients as enumerable
+
+
+
+ Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k
+
+
+
+
+ Evaluate a polynomial at point x.
+ Coefficients are ordered ascending by power with power k at index k.
+ Example: coefficients [3,-1,2] represent y=2x^2-x+3.
+
+ The location where to evaluate the polynomial at.
+ The coefficients of the polynomial, coefficient for power k at index k.
+
+ is a null reference.
+
+
+
+
+ Evaluate a polynomial at point x.
+ Coefficients are ordered ascending by power with power k at index k.
+ Example: coefficients [3,-1,2] represent y=2x^2-x+3.
+
+ The location where to evaluate the polynomial at.
+ The coefficients of the polynomial, coefficient for power k at index k.
+
+ is a null reference.
+
+
+
+
+ Evaluate a polynomial at point x.
+ Coefficients are ordered ascending by power with power k at index k.
+ Example: coefficients [3,-1,2] represent y=2x^2-x+3.
+
+ The location where to evaluate the polynomial at.
+ The coefficients of the polynomial, coefficient for power k at index k.
+
+ is a null reference.
+
+
+
+
+ Evaluate a polynomial at point x.
+
+ The location where to evaluate the polynomial at.
+
+
+
+ Evaluate a polynomial at point x.
+
+ The location where to evaluate the polynomial at.
+
+
+
+ Evaluate a polynomial at points z.
+
+ The locations where to evaluate the polynomial at.
+
+
+
+ Evaluate a polynomial at points z.
+
+ The locations where to evaluate the polynomial at.
+
+
+
+ Calculates the complex roots of the Polynomial by eigenvalue decomposition
+
+ a vector of complex numbers with the roots
+
+
+
+ Get the eigenvalue matrix A of this polynomial such that eig(A) = roots of this polynomial.
+
+ Eigenvalue matrix A
+ This matrix is similar to the companion matrix of this polynomial, in such a way, that it's transpose is the columnflip of the companion matrix
+
+
+
+ Addition of two Polynomials (point-wise).
+
+ Left Polynomial
+ Right Polynomial
+ Resulting Polynomial
+
+
+
+ Addition of a polynomial and a scalar.
+
+
+
+
+ Subtraction of two Polynomials (point-wise).
+
+ Left Polynomial
+ Right Polynomial
+ Resulting Polynomial
+
+
+
+ Addition of a scalar from a polynomial.
+
+
+
+
+ Addition of a polynomial from a scalar.
+
+
+
+
+ Negation of a polynomial.
+
+
+
+
+ Multiplies a polynomial by a polynomial (convolution)
+
+ Left polynomial
+ Right polynomial
+ Resulting Polynomial
+
+ or is a null reference.
+
+
+
+
+ Scales a polynomial by a scalar
+
+ Polynomial
+ Scalar value
+ Resulting Polynomial
+
+
+
+ Scales a polynomial by division by a scalar
+
+ Polynomial
+ Scalar value
+ Resulting Polynomial
+
+
+
+ Euclidean long division of two polynomials, returning the quotient q and remainder r of the two polynomials a and b such that a = q*b + r
+
+ Left polynomial
+ Right polynomial
+ A tuple holding quotient in first and remainder in second
+
+
+
+ Point-wise division of two Polynomials
+
+ Left Polynomial
+ Right Polynomial
+ Resulting Polynomial
+
+
+
+ Point-wise multiplication of two Polynomials
+
+ Left Polynomial
+ Right Polynomial
+ Resulting Polynomial
+
+
+
+ Division of two polynomials returning the quotient-with-remainder of the two polynomials given
+
+ Right polynomial
+ A tuple holding quotient in first and remainder in second
+
+
+
+ Addition of two Polynomials (piecewise)
+
+ Left polynomial
+ Right polynomial
+ Resulting Polynomial
+
+
+
+ adds a scalar to a polynomial.
+
+ Polynomial
+ Scalar value
+ Resulting Polynomial
+
+
+
+ adds a scalar to a polynomial.
+
+ Scalar value
+ Polynomial
+ Resulting Polynomial
+
+
+
+ Subtraction of two polynomial.
+
+ Left polynomial
+ Right polynomial
+ Resulting Polynomial
+
+
+
+ Subtracts a scalar from a polynomial.
+
+ Polynomial
+ Scalar value
+ Resulting Polynomial
+
+
+
+ Subtracts a polynomial from a scalar.
+
+ Scalar value
+ Polynomial
+ Resulting Polynomial
+
+
+
+ Negates a polynomial.
+
+ Polynomial
+ Resulting Polynomial
+
+
+
+ Multiplies a polynomial by a polynomial (convolution).
+
+ Left polynomial
+ Right polynomial
+ resulting Polynomial
+
+
+
+ Multiplies a polynomial by a scalar.
+
+ Polynomial
+ Scalar value
+ Resulting Polynomial
+
+
+
+ Multiplies a polynomial by a scalar.
+
+ Scalar value
+ Polynomial
+ Resulting Polynomial
+
+
+
+ Divides a polynomial by scalar value.
+
+ Polynomial
+ Scalar value
+ Resulting Polynomial
+
+
+
+ Format the polynomial in ascending order, e.g. "4.3 + 2.0x^2 - x^3".
+
+
+
+
+ Format the polynomial in descending order, e.g. "x^3 + 2.0x^2 - 4.3".
+
+
+
+
+ Format the polynomial in ascending order, e.g. "4.3 + 2.0x^2 - x^3".
+
+
+
+
+ Format the polynomial in descending order, e.g. "x^3 + 2.0x^2 - 4.3".
+
+
+
+
+ Format the polynomial in ascending order, e.g. "4.3 + 2.0x^2 - x^3".
+
+
+
+
+ Format the polynomial in descending order, e.g. "x^3 + 2.0x^2 - 4.3".
+
+
+
+
+ Format the polynomial in ascending order, e.g. "4.3 + 2.0x^2 - x^3".
+
+
+
+
+ Format the polynomial in descending order, e.g. "x^3 + 2.0x^2 - 4.3".
+
+
+
+
+ Creates a new object that is a copy of the current instance.
+
+
+ A new object that is a copy of this instance.
+
+
+
+
+ Utilities for working with floating point numbers.
+
+
+
+ Useful links:
+
+ -
+ http://docs.sun.com/source/806-3568/ncg_goldberg.html#689 - What every computer scientist should know about floating-point arithmetic
+
+ -
+ http://en.wikipedia.org/wiki/Machine_epsilon - Gives the definition of machine epsilon
+
+
+
+
+
+
+
+ Compares two doubles and determines which double is bigger.
+ a < b -> -1; a ~= b (almost equal according to parameter) -> 0; a > b -> +1.
+
+ The first value.
+ The second value.
+ The absolute accuracy required for being almost equal.
+
+
+
+ Compares two doubles and determines which double is bigger.
+ a < b -> -1; a ~= b (almost equal according to parameter) -> 0; a > b -> +1.
+
+ The first value.
+ The second value.
+ The number of decimal places on which the values must be compared. Must be 1 or larger.
+
+
+
+ Compares two doubles and determines which double is bigger.
+ a < b -> -1; a ~= b (almost equal according to parameter) -> 0; a > b -> +1.
+
+ The first value.
+ The second value.
+ The relative accuracy required for being almost equal.
+
+
+
+ Compares two doubles and determines which double is bigger.
+ a < b -> -1; a ~= b (almost equal according to parameter) -> 0; a > b -> +1.
+
+ The first value.
+ The second value.
+ The number of decimal places on which the values must be compared. Must be 1 or larger.
+
+
+
+ Compares two doubles and determines which double is bigger.
+ a < b -> -1; a ~= b (almost equal according to parameter) -> 0; a > b -> +1.
+
+ The first value.
+ The second value.
+ The maximum error in terms of Units in Last Place (ulps), i.e. the maximum number of decimals that may be different. Must be 1 or larger.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the specified number of decimal places or not.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by
+ two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The first value.
+ The second value.
+ The number of decimal places.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the specified number of decimal places or not.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by
+ two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The first value.
+ The second value.
+ The number of decimal places.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The absolute accuracy required for being almost equal.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The absolute accuracy required for being almost equal.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the specified number of decimal places or not.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by
+ two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The first value.
+ The second value.
+ The number of decimal places.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the specified number of decimal places or not.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by
+ two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The first value.
+ The second value.
+ The number of decimal places.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The relative accuracy required for being almost equal.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The relative accuracy required for being almost equal.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the tolerance or not. Equality comparison is based on the binary representation.
+
+ The first value.
+ The second value.
+ The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is larger than the second
+ value to within the tolerance or not. Equality comparison is based on the binary representation.
+
+ The first value.
+ The second value.
+ The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger.
+ true if the first value is larger than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the specified number of decimal places or not.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by
+ two so that we have half the range on each side of thg. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The first value.
+ The second value.
+ The number of decimal places.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the specified number of decimal places or not.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by
+ two so that we have half the range on each side of thg. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The first value.
+ The second value.
+ The number of decimal places.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The absolute accuracy required for being almost equal.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The absolute accuracy required for being almost equal.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The relative accuracy required for being almost equal.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the specified number of decimal places or not.
+
+ The first value.
+ The second value.
+ The relative accuracy required for being almost equal.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the tolerance or not. Equality comparison is based on the binary representation.
+
+ The first value.
+ The second value.
+ The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Compares two doubles and determines if the first value is smaller than the second
+ value to within the tolerance or not. Equality comparison is based on the binary representation.
+
+ The first value.
+ The second value.
+ The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger.
+ true if the first value is smaller than the second value; otherwise false.
+
+
+
+ Checks if a given double values is finite, i.e. neither NaN nor inifnity
+
+ The value to be checked fo finitenes.
+
+
+
+ The number of binary digits used to represent the binary number for a double precision floating
+ point value. i.e. there are this many digits used to represent the
+ actual number, where in a number as: 0.134556 * 10^5 the digits are 0.134556 and the exponent is 5.
+
+
+
+
+ The number of binary digits used to represent the binary number for a single precision floating
+ point value. i.e. there are this many digits used to represent the
+ actual number, where in a number as: 0.134556 * 10^5 the digits are 0.134556 and the exponent is 5.
+
+
+
+
+ Standard epsilon, the maximum relative precision of IEEE 754 double-precision floating numbers (64 bit).
+ According to the definition of Prof. Demmel and used in LAPACK and Scilab.
+
+
+
+
+ Standard epsilon, the maximum relative precision of IEEE 754 double-precision floating numbers (64 bit).
+ According to the definition of Prof. Higham and used in the ISO C standard and MATLAB.
+
+
+
+
+ Standard epsilon, the maximum relative precision of IEEE 754 single-precision floating numbers (32 bit).
+ According to the definition of Prof. Demmel and used in LAPACK and Scilab.
+
+
+
+
+ Standard epsilon, the maximum relative precision of IEEE 754 single-precision floating numbers (32 bit).
+ According to the definition of Prof. Higham and used in the ISO C standard and MATLAB.
+
+
+
+
+ Actual double precision machine epsilon, the smallest number that can be subtracted from 1, yielding a results different than 1.
+ This is also known as unit roundoff error. According to the definition of Prof. Demmel.
+ On a standard machine this is equivalent to `DoublePrecision`.
+
+
+
+
+ Actual double precision machine epsilon, the smallest number that can be added to 1, yielding a results different than 1.
+ This is also known as unit roundoff error. According to the definition of Prof. Higham.
+ On a standard machine this is equivalent to `PositiveDoublePrecision`.
+
+
+
+
+ The number of significant decimal places of double-precision floating numbers (64 bit).
+
+
+
+
+ The number of significant decimal places of single-precision floating numbers (32 bit).
+
+
+
+
+ Value representing 10 * 2^(-53) = 1.11022302462516E-15
+
+
+
+
+ Value representing 10 * 2^(-24) = 5.96046447753906E-07
+
+
+
+
+ Returns the magnitude of the number.
+
+ The value.
+ The magnitude of the number.
+
+
+
+ Returns the magnitude of the number.
+
+ The value.
+ The magnitude of the number.
+
+
+
+ Returns the number divided by it's magnitude, effectively returning a number between -10 and 10.
+
+ The value.
+ The value of the number.
+
+
+
+ Returns a 'directional' long value. This is a long value which acts the same as a double,
+ e.g. a negative double value will return a negative double value starting at 0 and going
+ more negative as the double value gets more negative.
+
+ The input double value.
+ A long value which is roughly the equivalent of the double value.
+
+
+
+ Returns a 'directional' int value. This is a int value which acts the same as a float,
+ e.g. a negative float value will return a negative int value starting at 0 and going
+ more negative as the float value gets more negative.
+
+ The input float value.
+ An int value which is roughly the equivalent of the double value.
+
+
+
+ Increments a floating point number to the next bigger number representable by the data type.
+
+ The value which needs to be incremented.
+ How many times the number should be incremented.
+
+ The incrementation step length depends on the provided value.
+ Increment(double.MaxValue) will return positive infinity.
+
+ The next larger floating point value.
+
+
+
+ Decrements a floating point number to the next smaller number representable by the data type.
+
+ The value which should be decremented.
+ How many times the number should be decremented.
+
+ The decrementation step length depends on the provided value.
+ Decrement(double.MinValue) will return negative infinity.
+
+ The next smaller floating point value.
+
+
+
+ Forces small numbers near zero to zero, according to the specified absolute accuracy.
+
+ The real number to coerce to zero, if it is almost zero.
+ The maximum count of numbers between the zero and the number .
+
+ Zero if || is fewer than numbers from zero, otherwise.
+
+
+
+
+ Forces small numbers near zero to zero, according to the specified absolute accuracy.
+
+ The real number to coerce to zero, if it is almost zero.
+ The maximum count of numbers between the zero and the number .
+
+ Zero if || is fewer than numbers from zero, otherwise.
+
+
+ Thrown if is smaller than zero.
+
+
+
+
+ Forces small numbers near zero to zero, according to the specified absolute accuracy.
+
+ The real number to coerce to zero, if it is almost zero.
+ The absolute threshold for to consider it as zero.
+ Zero if || is smaller than , otherwise.
+
+ Thrown if is smaller than zero.
+
+
+
+
+ Forces small numbers near zero to zero.
+
+ The real number to coerce to zero, if it is almost zero.
+ Zero if || is smaller than 2^(-53) = 1.11e-16, otherwise.
+
+
+
+ Determines the range of floating point numbers that will match the specified value with the given tolerance.
+
+ The value.
+ The ulps difference.
+
+ Thrown if is smaller than zero.
+
+ Tuple of the bottom and top range ends.
+
+
+
+ Returns the floating point number that will match the value with the tolerance on the maximum size (i.e. the result is
+ always bigger than the value)
+
+ The value.
+ The ulps difference.
+ The maximum floating point number which is larger than the given .
+
+
+
+ Returns the floating point number that will match the value with the tolerance on the minimum size (i.e. the result is
+ always smaller than the value)
+
+ The value.
+ The ulps difference.
+ The minimum floating point number which is smaller than the given .
+
+
+
+ Determines the range of ulps that will match the specified value with the given tolerance.
+
+ The value.
+ The relative difference.
+
+ Thrown if is smaller than zero.
+
+
+ Thrown if is double.PositiveInfinity or double.NegativeInfinity.
+
+
+ Thrown if is double.NaN.
+
+
+ Tuple with the number of ULPS between the value and the value - relativeDifference as first,
+ and the number of ULPS between the value and the value + relativeDifference as second value.
+
+
+
+
+ Evaluates the count of numbers between two double numbers
+
+ The first parameter.
+ The second parameter.
+ The second number is included in the number, thus two equal numbers evaluate to zero and two neighbor numbers evaluate to one. Therefore, what is returned is actually the count of numbers between plus 1.
+ The number of floating point values between and .
+
+ Thrown if is double.PositiveInfinity or double.NegativeInfinity.
+
+
+ Thrown if is double.NaN.
+
+
+ Thrown if is double.PositiveInfinity or double.NegativeInfinity.
+
+
+ Thrown if is double.NaN.
+
+
+
+
+ Evaluates the minimum distance to the next distinguishable number near the argument value.
+
+ The value used to determine the minimum distance.
+
+ Relative Epsilon (positive double or NaN).
+
+ Evaluates the negative epsilon. The more common positive epsilon is equal to two times this negative epsilon.
+
+
+
+
+ Evaluates the minimum distance to the next distinguishable number near the argument value.
+
+ The value used to determine the minimum distance.
+
+ Relative Epsilon (positive float or NaN).
+
+ Evaluates the negative epsilon. The more common positive epsilon is equal to two times this negative epsilon.
+
+
+
+
+ Evaluates the minimum distance to the next distinguishable number near the argument value.
+
+ The value used to determine the minimum distance.
+ Relative Epsilon (positive double or NaN)
+ Evaluates the positive epsilon. See also
+
+
+
+
+ Evaluates the minimum distance to the next distinguishable number near the argument value.
+
+ The value used to determine the minimum distance.
+ Relative Epsilon (positive float or NaN)
+ Evaluates the positive epsilon. See also
+
+
+
+
+ Calculates the actual (negative) double precision machine epsilon - the smallest number that can be subtracted from 1, yielding a results different than 1.
+ This is also known as unit roundoff error. According to the definition of Prof. Demmel.
+
+ Positive Machine epsilon
+
+
+
+ Calculates the actual positive double precision machine epsilon - the smallest number that can be added to 1, yielding a results different than 1.
+ This is also known as unit roundoff error. According to the definition of Prof. Higham.
+
+ Machine epsilon
+
+
+
+ Round to a multiple of the provided positive basis.
+
+ Number to be rounded.
+ The basis to whose multiples to round to. Must be positive.
+
+
+
+ Round to a multiple of the provided positive basis.
+
+ Number to be rounded.
+ The basis to whose multiples to round to. Must be positive.
+
+
+
+ Round to a multiple of the provided positive basis.
+
+ Number to be rounded.
+ The basis to whose multiples to round to. Must be positive.
+
+
+
+ Round to a multiple of the provided positive basis.
+
+ Number to be rounded.
+ The basis to whose powers to round to. Must be positive.
+
+
+
+ Round to a multiple of the provided positive basis.
+
+ Number to be rounded.
+ The basis to whose powers to round to. Must be positive.
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Round to the number closest to 10^(-decimals). Negative decimals to round within the integer part.
+
+ Number to be rounded
+ If positive the number of decimals to round to. If negative the number of digits within the integer part to round, e.g. -3 will wound to the closes 1000.
+ To round 123456789 to hundreds Round(123456789, -2) = 123456800
+ Rounded number
+
+
+
+ Compares two doubles and determines if they are equal
+ within the specified maximum absolute error.
+
+ The norm of the first value (can be negative).
+ The norm of the second value (can be negative).
+ The norm of the difference of the two values (can be negative).
+ The absolute accuracy required for being almost equal.
+ True if both doubles are almost equal up to the specified maximum absolute error, false otherwise.
+
+
+
+ Compares two doubles and determines if they are equal
+ within the specified maximum absolute error.
+
+ The first value.
+ The second value.
+ The absolute accuracy required for being almost equal.
+ True if both doubles are almost equal up to the specified maximum absolute error, false otherwise.
+
+
+
+ Compares two doubles and determines if they are equal
+ within the specified maximum error.
+
+ The norm of the first value (can be negative).
+ The norm of the second value (can be negative).
+ The norm of the difference of the two values (can be negative).
+ The accuracy required for being almost equal.
+ True if both doubles are almost equal up to the specified maximum error, false otherwise.
+
+
+
+ Compares two doubles and determines if they are equal
+ within the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+ True if both doubles are almost equal up to the specified maximum error, false otherwise.
+
+
+
+ Compares two doubles and determines if they are equal within
+ the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two complex and determines if they are equal within
+ the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two complex and determines if they are equal within
+ the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two complex and determines if they are equal within
+ the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two doubles and determines if they are equal within
+ the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two complex and determines if they are equal within
+ the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two complex and determines if they are equal within
+ the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two complex and determines if they are equal within
+ the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Checks whether two real numbers are almost equal.
+
+ The first number
+ The second number
+ true if the two values differ by no more than 10 * 2^(-52); false otherwise.
+
+
+
+ Checks whether two real numbers are almost equal.
+
+ The first number
+ The second number
+ true if the two values differ by no more than 10 * 2^(-52); false otherwise.
+
+
+
+ Checks whether two Complex numbers are almost equal.
+
+ The first number
+ The second number
+ true if the two values differ by no more than 10 * 2^(-52); false otherwise.
+
+
+
+ Checks whether two Complex numbers are almost equal.
+
+ The first number
+ The second number
+ true if the two values differ by no more than 10 * 2^(-52); false otherwise.
+
+
+
+ Checks whether two real numbers are almost equal.
+
+ The first number
+ The second number
+ true if the two values differ by no more than 10 * 2^(-52); false otherwise.
+
+
+
+ Checks whether two real numbers are almost equal.
+
+ The first number
+ The second number
+ true if the two values differ by no more than 10 * 2^(-52); false otherwise.
+
+
+
+ Checks whether two Complex numbers are almost equal.
+
+ The first number
+ The second number
+ true if the two values differ by no more than 10 * 2^(-52); false otherwise.
+
+
+
+ Checks whether two Complex numbers are almost equal.
+
+ The first number
+ The second number
+ true if the two values differ by no more than 10 * 2^(-52); false otherwise.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not, using the
+ number of decimal places as an absolute measure.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 0.5e-decimalPlaces. We divide by
+ two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The norm of the first value (can be negative).
+ The norm of the second value (can be negative).
+ The norm of the difference of the two values (can be negative).
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not, using the
+ number of decimal places as an absolute measure.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 0.5e-decimalPlaces. We divide by
+ two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not. If the numbers
+ are very close to zero an absolute difference is compared, otherwise the relative difference is compared.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by
+ two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The norm of the first value (can be negative).
+ The norm of the second value (can be negative).
+ The norm of the difference of the two values (can be negative).
+ The number of decimal places.
+ Thrown if is smaller than zero.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not. If the numbers
+ are very close to zero an absolute difference is compared, otherwise the relative difference is compared.
+
+
+
+ The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by
+ two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between
+ 0.005 and 0.015, but not 0.02 and not 0.00
+
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not, using the
+ number of decimal places as an absolute measure.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not, using the
+ number of decimal places as an absolute measure.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not, using the
+ number of decimal places as an absolute measure.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not, using the
+ number of decimal places as an absolute measure.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not. If the numbers
+ are very close to zero an absolute difference is compared, otherwise the relative difference is compared.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not. If the numbers
+ are very close to zero an absolute difference is compared, otherwise the relative difference is compared.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not. If the numbers
+ are very close to zero an absolute difference is compared, otherwise the relative difference is compared.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the specified number of decimal places or not. If the numbers
+ are very close to zero an absolute difference is compared, otherwise the relative difference is compared.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two doubles and determines if they are equal to within the tolerance or not. Equality comparison is based on the binary representation.
+
+
+
+ Determines the 'number' of floating point numbers between two values (i.e. the number of discrete steps
+ between the two numbers) and then checks if that is within the specified tolerance. So if a tolerance
+ of 1 is passed then the result will be true only if the two numbers have the same binary representation
+ OR if they are two adjacent numbers that only differ by one step.
+
+
+ The comparison method used is explained in http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm . The article
+ at http://www.extremeoptimization.com/resources/Articles/FPDotNetConceptsAndFormats.aspx explains how to transform the C code to
+ .NET enabled code without using pointers and unsafe code.
+
+
+ The first value.
+ The second value.
+ The maximum number of floating point values between the two values. Must be 1 or larger.
+ Thrown if is smaller than one.
+
+
+
+ Compares two floats and determines if they are equal to within the tolerance or not. Equality comparison is based on the binary representation.
+
+ The first value.
+ The second value.
+ The maximum number of floating point values between the two values. Must be 1 or larger.
+ Thrown if is smaller than one.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The number of decimal places.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The number of decimal places.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The number of decimal places.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The number of decimal places.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The number of decimal places.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The number of decimal places.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The number of decimal places.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The number of decimal places.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two lists of doubles and determines if they are equal within the
+ specified maximum error.
+
+ The first value list.
+ The second value list.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two vectors and determines if they are equal within the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two vectors and determines if they are equal within the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two vectors and determines if they are equal to within the specified number
+ of decimal places or not, using the number of decimal places as an absolute measure.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two vectors and determines if they are equal to within the specified number of decimal places or not.
+ If the numbers are very close to zero an absolute difference is compared, otherwise the relative difference is compared.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two matrices and determines if they are equal within the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two matrices and determines if they are equal within the specified maximum error.
+
+ The first value.
+ The second value.
+ The accuracy required for being almost equal.
+
+
+
+ Compares two matrices and determines if they are equal to within the specified number
+ of decimal places or not, using the number of decimal places as an absolute measure.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Compares two matrices and determines if they are equal to within the specified number of decimal places or not.
+ If the numbers are very close to zero an absolute difference is compared, otherwise the relative difference is compared.
+
+ The first value.
+ The second value.
+ The number of decimal places.
+
+
+
+ Support Interface for Precision Operations (like AlmostEquals).
+
+ Type of the implementing class.
+
+
+
+ Returns a Norm of a value of this type, which is appropriate for measuring how
+ close this value is to zero.
+
+ A norm of this value.
+
+
+
+ Returns a Norm of the difference of two values of this type, which is
+ appropriate for measuring how close together these two values are.
+
+ The value to compare with.
+ A norm of the difference between this and the other value.
+
+
+
+ Optional path to try to load native provider binaries from,
+ if the provider specific hint path is not set.
+ If neither is set, Numerics falls back to the provider specific
+ environment variables, or the default probing paths.
+
+
+
+
+ Gets or sets the Fourier transform provider. Consider to use UseNativeMKL or UseManaged instead.
+
+ The linear algebra provider.
+
+
+
+ Try to use a native provider, if available.
+
+
+
+
+ Use the best provider available.
+
+
+
+
+ Use a specific provider if configured, e.g. using the
+ "MathNetNumericsFFTProvider" environment variable,
+ or fall back to the best provider.
+
+
+
+
+ Try to find out whether the provider is available, at least in principle.
+ Verification may still fail if available, but it will certainly fail if unavailable.
+
+
+
+
+ Initialize and verify that the provided is indeed available. If not, fall back to alternatives like the managed provider
+
+
+
+
+ Frees memory buffers, caches and handles allocated in or to the provider.
+ Does not unload the provider itself, it is still usable afterwards.
+
+
+
+
+ Sequences with length greater than Math.Sqrt(Int32.MaxValue) + 1
+ will cause k*k in the Bluestein sequence to overflow (GH-286).
+
+
+
+
+ Generate the bluestein sequence for the provided problem size.
+
+ Number of samples.
+ Bluestein sequence exp(I*Pi*k^2/N)
+
+
+
+ Generate the bluestein sequence for the provided problem size.
+
+ Number of samples.
+ Bluestein sequence exp(I*Pi*k^2/N)
+
+
+
+ Convolution with the bluestein sequence (Parallel Version).
+
+ Sample Vector.
+
+
+
+ Convolution with the bluestein sequence (Parallel Version).
+
+ Sample Vector.
+
+
+
+ Swap the real and imaginary parts of each sample.
+
+ Sample Vector.
+
+
+
+ Swap the real and imaginary parts of each sample.
+
+ Sample Vector.
+
+
+
+ Bluestein generic FFT for arbitrary sized sample vectors.
+
+
+
+
+ Bluestein generic FFT for arbitrary sized sample vectors.
+
+
+
+
+ Bluestein generic FFT for arbitrary sized sample vectors.
+
+
+
+
+ Bluestein generic FFT for arbitrary sized sample vectors.
+
+
+
+
+ Try to find out whether the provider is available, at least in principle.
+ Verification may still fail if available, but it will certainly fail if unavailable.
+
+
+
+
+ Initialize and verify that the provided is indeed available. If not, fall back to alternatives like the managed provider
+
+
+
+
+ Frees memory buffers, caches and handles allocated in or to the provider.
+ Does not unload the provider itself, it is still usable afterwards.
+
+
+
+
+ Radix-2 Reorder Helper Method
+
+ Sample type
+ Sample vector
+
+
+
+ Radix-2 Step Helper Method
+
+ Sample vector.
+ Fourier series exponent sign.
+ Level Group Size.
+ Index inside of the level.
+
+
+
+ Radix-2 Step Helper Method
+
+ Sample vector.
+ Fourier series exponent sign.
+ Level Group Size.
+ Index inside of the level.
+
+
+
+ Radix-2 generic FFT for power-of-two sized sample vectors.
+
+
+
+
+ Radix-2 generic FFT for power-of-two sized sample vectors.
+
+
+
+
+ Radix-2 generic FFT for power-of-two sized sample vectors.
+
+
+
+
+ Radix-2 generic FFT for power-of-two sized sample vectors.
+
+
+
+
+ Radix-2 generic FFT for power-of-two sample vectors (Parallel Version).
+
+
+
+
+ Radix-2 generic FFT for power-of-two sample vectors (Parallel Version).
+
+
+
+
+ Radix-2 generic FFT for power-of-two sample vectors (Parallel Version).
+
+
+
+
+ Radix-2 generic FFT for power-of-two sample vectors (Parallel Version).
+
+
+
+
+ Fully rescale the FFT result.
+
+ Sample Vector.
+
+
+
+ Fully rescale the FFT result.
+
+ Sample Vector.
+
+
+
+ Half rescale the FFT result (e.g. for symmetric transforms).
+
+ Sample Vector.
+
+
+
+ Fully rescale the FFT result (e.g. for symmetric transforms).
+
+ Sample Vector.
+
+
+
+ How to transpose a matrix.
+
+
+
+
+ Don't transpose a matrix.
+
+
+
+
+ Transpose a matrix.
+
+
+
+
+ Conjugate transpose a complex matrix.
+
+ If a conjugate transpose is used with a real matrix, then the matrix is just transposed.
+
+
+
+ Types of matrix norms.
+
+
+
+
+ The 1-norm.
+
+
+
+
+ The Frobenius norm.
+
+
+
+
+ The infinity norm.
+
+
+
+
+ The largest absolute value norm.
+
+
+
+
+ Interface to linear algebra algorithms that work off 1-D arrays.
+
+
+
+
+ Try to find out whether the provider is available, at least in principle.
+ Verification may still fail if available, but it will certainly fail if unavailable.
+
+
+
+
+ Initialize and verify that the provided is indeed available. If not, fall back to alternatives like the managed provider
+
+
+
+
+ Frees memory buffers, caches and handles allocated in or to the provider.
+ Does not unload the provider itself, it is still usable afterwards.
+
+
+
+
+ Interface to linear algebra algorithms that work off 1-D arrays.
+
+ Supported data types are Double, Single, Complex, and Complex32.
+
+
+
+ Adds a scaled vector to another: result = y + alpha*x.
+
+ The vector to update.
+ The value to scale by.
+ The vector to add to .
+ The result of the addition.
+ This is similar to the AXPY BLAS routine.
+
+
+
+ Scales an array. Can be used to scale a vector and a matrix.
+
+ The scalar.
+ The values to scale.
+ This result of the scaling.
+ This is similar to the SCAL BLAS routine.
+
+
+
+ Conjugates an array. Can be used to conjugate a vector and a matrix.
+
+ The values to conjugate.
+ This result of the conjugation.
+
+
+
+ Computes the dot product of x and y.
+
+ The vector x.
+ The vector y.
+ The dot product of x and y.
+ This is equivalent to the DOT BLAS routine.
+
+
+
+ Does a point wise add of two arrays z = x + y. This can be used
+ to add vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the addition.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise subtraction of two arrays z = x - y. This can be used
+ to subtract vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the subtraction.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise multiplication of two arrays z = x * y. This can be used
+ to multiply elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise multiplication.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise division of two arrays z = x / y. This can be used
+ to divide elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise division.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise power of two arrays z = x ^ y. This can be used
+ to raise elements of vectors or matrices to the powers of another vector or matrix.
+
+ The array x.
+ The array y.
+ The result of the point wise power.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Computes the requested of the matrix.
+
+ The type of norm to compute.
+ The number of rows.
+ The number of columns.
+ The matrix to compute the norm from.
+
+ The requested of the matrix.
+
+
+
+
+ Multiples two matrices. result = x * y
+
+ The x matrix.
+ The number of rows in the x matrix.
+ The number of columns in the x matrix.
+ The y matrix.
+ The number of rows in the y matrix.
+ The number of columns in the y matrix.
+ Where to store the result of the multiplication.
+ This is a simplified version of the BLAS GEMM routine with alpha
+ set to 1.0 and beta set to 0.0, and x and y are not transposed.
+
+
+
+ Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c
+
+ How to transpose the matrix.
+ How to transpose the matrix.
+ The value to scale matrix.
+ The a matrix.
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The b matrix
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The value to scale the matrix.
+ The c matrix.
+
+
+
+ Computes the LUP factorization of A. P*A = L*U.
+
+ An by matrix. The matrix is overwritten with the
+ the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0
+ for the L factor). The upper triangular factor U is stored on and above the diagonal of .
+ The order of the square matrix .
+ On exit, it contains the pivot indices. The size of the array must be .
+ This is equivalent to the GETRF LAPACK routine.
+
+
+
+ Computes the inverse of matrix using LU factorization.
+
+ The N by N matrix to invert. Contains the inverse On exit.
+ The order of the square matrix .
+ This is equivalent to the GETRF and GETRI LAPACK routines.
+
+
+
+ Computes the inverse of a previously factored matrix.
+
+ The LU factored N by N matrix. Contains the inverse On exit.
+ The order of the square matrix .
+ The pivot indices of .
+ This is equivalent to the GETRI LAPACK routine.
+
+
+
+ Solves A*X=B for X using LU factorization.
+
+ The number of columns of B.
+ The square matrix A.
+ The order of the square matrix .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRF and GETRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The number of columns of B.
+ The factored A matrix.
+ The order of the square matrix .
+ The pivot indices of .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRS LAPACK routine.
+
+
+
+ Computes the Cholesky factorization of A.
+
+ On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the
+ the Cholesky factorization.
+ The number of rows or columns in the matrix.
+ This is equivalent to the POTRF LAPACK routine.
+
+
+
+ Solves A*X=B for X using Cholesky factorization.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRF add POTRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRS LAPACK routine.
+
+
+
+ Computes the full QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the R matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A M by M matrix that holds the Q matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Computes the thin QR factorization of A where M > N.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the Q matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A N by N matrix that holds the R matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Solves A*X=B for X using QR factorization of A.
+
+ The A matrix.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Solves A*X=B for X using a previously QR factored matrix.
+
+ The Q matrix obtained by QR factor. This is only used for the managed provider and can be
+ null for the native provider. The native provider uses the Q portion stored in the R matrix.
+ The R matrix obtained by calling .
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ Contains additional information on Q. Only used for the native solver
+ and can be null for the managed provider.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ Rows must be greater or equal to columns.
+ The type of QR factorization to perform.
+
+
+
+ Computes the singular value decomposition of A.
+
+ Compute the singular U and VT vectors or not.
+ On entry, the M by N matrix to decompose. On exit, A may be overwritten.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The singular values of A in ascending value.
+ If is true, on exit U contains the left
+ singular vectors.
+ If is true, on exit VT contains the transposed
+ right singular vectors.
+ This is equivalent to the GESVD LAPACK routine.
+
+
+
+ Solves A*X=B for X using the singular value decomposition of A.
+
+ On entry, the M by N matrix to decompose.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Solves A*X=B for X using a previously SVD decomposed matrix.
+
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The s values returned by .
+ The left singular vectors returned by .
+ The right singular vectors returned by .
+ The B matrix
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Computes the eigenvalues and eigenvectors of a matrix.
+
+ Whether the matrix is symmetric or not.
+ The order of the matrix.
+ The matrix to decompose. The length of the array must be order * order.
+ On output, the matrix contains the eigen vectors. The length of the array must be order * order.
+ On output, the eigen values (λ) of matrix in ascending value. The length of the array must .
+ On output, the block diagonal eigenvalue matrix. The length of the array must be order * order.
+
+
+
+ Optional path to try to load native provider binaries from,
+ if the provider specific hint path is not set.
+ If neither is set, Numerics falls back to the provider specific
+ environment variables, or the default probing paths.
+
+
+
+
+ Gets or sets the linear algebra provider.
+ Consider to use UseNativeMKL or UseManaged instead.
+
+ The linear algebra provider.
+
+
+
+ Try to use a native provider, if available.
+
+
+
+
+ Use the best provider available.
+
+
+
+
+ Use a specific provider if configured, e.g. using the
+ "MathNetNumericsLAProvider" environment variable,
+ or fall back to the best provider.
+
+
+
+
+ The managed linear algebra provider.
+
+
+ The managed linear algebra provider.
+
+
+ The managed linear algebra provider.
+
+
+ The managed linear algebra provider.
+
+
+ The managed linear algebra provider.
+
+
+
+
+ Adds a scaled vector to another: result = y + alpha*x.
+
+ The vector to update.
+ The value to scale by.
+ The vector to add to .
+ The result of the addition.
+ This is similar to the AXPY BLAS routine.
+
+
+
+ Scales an array. Can be used to scale a vector and a matrix.
+
+ The scalar.
+ The values to scale.
+ This result of the scaling.
+ This is similar to the SCAL BLAS routine.
+
+
+
+ Conjugates an array. Can be used to conjugate a vector and a matrix.
+
+ The values to conjugate.
+ This result of the conjugation.
+
+
+
+ Computes the dot product of x and y.
+
+ The vector x.
+ The vector y.
+ The dot product of x and y.
+ This is equivalent to the DOT BLAS routine.
+
+
+
+ Does a point wise add of two arrays z = x + y. This can be used
+ to add vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the addition.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise subtraction of two arrays z = x - y. This can be used
+ to subtract vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the subtraction.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise multiplication of two arrays z = x * y. This can be used
+ to multiple elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise multiplication.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise division of two arrays z = x / y. This can be used
+ to divide elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise division.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise power of two arrays z = x ^ y. This can be used
+ to raise elements of vectors or matrices to the powers of another vector or matrix.
+
+ The array x.
+ The array y.
+ The result of the point wise power.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Computes the requested of the matrix.
+
+ The type of norm to compute.
+ The number of rows.
+ The number of columns.
+ The matrix to compute the norm from.
+
+ The requested of the matrix.
+
+
+
+
+ Multiples two matrices. result = x * y
+
+ The x matrix.
+ The number of rows in the x matrix.
+ The number of columns in the x matrix.
+ The y matrix.
+ The number of rows in the y matrix.
+ The number of columns in the y matrix.
+ Where to store the result of the multiplication.
+ This is a simplified version of the BLAS GEMM routine with alpha
+ set to 1.0 and beta set to 0.0, and x and y are not transposed.
+
+
+
+ Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c
+
+ How to transpose the matrix.
+ How to transpose the matrix.
+ The value to scale matrix.
+ The a matrix.
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The b matrix
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The value to scale the matrix.
+ The c matrix.
+
+
+
+ Computes the LUP factorization of A. P*A = L*U.
+
+ An by matrix. The matrix is overwritten with the
+ the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0
+ for the L factor). The upper triangular factor U is stored on and above the diagonal of .
+ The order of the square matrix .
+ On exit, it contains the pivot indices. The size of the array must be .
+ This is equivalent to the GETRF LAPACK routine.
+
+
+
+ Computes the inverse of matrix using LU factorization.
+
+ The N by N matrix to invert. Contains the inverse On exit.
+ The order of the square matrix .
+ This is equivalent to the GETRF and GETRI LAPACK routines.
+
+
+
+ Computes the inverse of a previously factored matrix.
+
+ The LU factored N by N matrix. Contains the inverse On exit.
+ The order of the square matrix .
+ The pivot indices of .
+ This is equivalent to the GETRI LAPACK routine.
+
+
+
+ Solves A*X=B for X using LU factorization.
+
+ The number of columns of B.
+ The square matrix A.
+ The order of the square matrix .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRF and GETRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The number of columns of B.
+ The factored A matrix.
+ The order of the square matrix .
+ The pivot indices of .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRS LAPACK routine.
+
+
+
+ Computes the Cholesky factorization of A.
+
+ On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the
+ the Cholesky factorization.
+ The number of rows or columns in the matrix.
+ This is equivalent to the POTRF LAPACK routine.
+
+
+
+ Calculate Cholesky step
+
+ Factor matrix
+ Number of rows
+ Column start
+ Total columns
+ Multipliers calculated previously
+ Number of available processors
+
+
+
+ Solves A*X=B for X using Cholesky factorization.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRF add POTRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ The B matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRS LAPACK routine.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A. Has to be different than .
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The column to solve for.
+
+
+
+ Computes the QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the R matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A M by M matrix that holds the Q matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Computes the QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the Q matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A N by N matrix that holds the R matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Perform calculation of Q or R
+
+ Work array
+ Index of column in work array
+ Q or R matrices
+ The first row in
+ The last row
+ The first column
+ The last column
+ Number of available CPUs
+
+
+
+ Generate column from initial matrix to work array
+
+ Work array
+ Initial matrix
+ The number of rows in matrix
+ The first row
+ Column index
+
+
+
+ Solves A*X=B for X using QR factorization of A.
+
+ The A matrix.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Solves A*X=B for X using a previously QR factored matrix.
+
+ The Q matrix obtained by calling .
+ The R matrix obtained by calling .
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ Contains additional information on Q. Only used for the native solver
+ and can be null for the managed provider.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Computes the singular value decomposition of A.
+
+ Compute the singular U and VT vectors or not.
+ On entry, the M by N matrix to decompose. On exit, A may be overwritten.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The singular values of A in ascending value.
+ If is true, on exit U contains the left
+ singular vectors.
+ If is true, on exit VT contains the transposed
+ right singular vectors.
+ This is equivalent to the GESVD LAPACK routine.
+
+
+
+ Solves A*X=B for X using the singular value decomposition of A.
+
+ On entry, the M by N matrix to decompose.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Solves A*X=B for X using a previously SVD decomposed matrix.
+
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The s values returned by .
+ The left singular vectors returned by .
+ The right singular vectors returned by .
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Computes the eigenvalues and eigenvectors of a matrix.
+
+ Whether the matrix is symmetric or not.
+ The order of the matrix.
+ The matrix to decompose. The length of the array must be order * order.
+ On output, the matrix contains the eigen vectors. The length of the array must be order * order.
+ On output, the eigen values (λ) of matrix in ascending value. The length of the array must .
+ On output, the block diagonal eigenvalue matrix. The length of the array must be order * order.
+
+
+
+ Reduces a complex Hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations.
+
+ Source matrix to reduce
+ Output: Arrays for internal storage of real parts of eigenvalues
+ Output: Arrays for internal storage of imaginary parts of eigenvalues
+ Output: Arrays that contains further information about the transformations.
+ Order of initial matrix
+ This is derived from the Algol procedures HTRIDI by
+ Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Symmetric tridiagonal QL algorithm.
+
+ Data array of matrix V (eigenvectors)
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tql2, by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Determines eigenvectors by undoing the symmetric tridiagonalize transformation
+
+ Data array of matrix V (eigenvectors)
+ Previously tridiagonalized matrix by SymmetricTridiagonalize.
+ Contains further information about the transformations
+ Input matrix order
+ This is derived from the Algol procedures HTRIBK, by
+ by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Nonsymmetric reduction to Hessenberg form.
+
+ Data array of matrix V (eigenvectors)
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedures orthes and ortran,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutines in EISPACK.
+
+
+
+ Nonsymmetric reduction from Hessenberg to real Schur form.
+
+ Data array of the eigenvectors
+ Data array of matrix V (eigenvectors)
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedure hqr2,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Assumes that and have already been transposed.
+
+
+
+
+ Assumes that and have already been transposed.
+
+
+
+
+ Adds a scaled vector to another: result = y + alpha*x.
+
+ The vector to update.
+ The value to scale by.
+ The vector to add to .
+ The result of the addition.
+ This is similar to the AXPY BLAS routine.
+
+
+
+ Scales an array. Can be used to scale a vector and a matrix.
+
+ The scalar.
+ The values to scale.
+ This result of the scaling.
+ This is similar to the SCAL BLAS routine.
+
+
+
+ Conjugates an array. Can be used to conjugate a vector and a matrix.
+
+ The values to conjugate.
+ This result of the conjugation.
+
+
+
+ Computes the dot product of x and y.
+
+ The vector x.
+ The vector y.
+ The dot product of x and y.
+ This is equivalent to the DOT BLAS routine.
+
+
+
+ Does a point wise add of two arrays z = x + y. This can be used
+ to add vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the addition.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise subtraction of two arrays z = x - y. This can be used
+ to subtract vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the subtraction.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise multiplication of two arrays z = x * y. This can be used
+ to multiple elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise multiplication.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise division of two arrays z = x / y. This can be used
+ to divide elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise division.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise power of two arrays z = x ^ y. This can be used
+ to raise elements of vectors or matrices to the powers of another vector or matrix.
+
+ The array x.
+ The array y.
+ The result of the point wise power.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Computes the requested of the matrix.
+
+ The type of norm to compute.
+ The number of rows.
+ The number of columns.
+ The matrix to compute the norm from.
+ The requested of the matrix.
+
+
+
+ Multiples two matrices. result = x * y
+
+ The x matrix.
+ The number of rows in the x matrix.
+ The number of columns in the x matrix.
+ The y matrix.
+ The number of rows in the y matrix.
+ The number of columns in the y matrix.
+ Where to store the result of the multiplication.
+ This is a simplified version of the BLAS GEMM routine with alpha
+ set to 1.0 and beta set to 0.0, and x and y are not transposed.
+
+
+
+ Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c
+
+ How to transpose the matrix.
+ How to transpose the matrix.
+ The value to scale matrix.
+ The a matrix.
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The b matrix
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The value to scale the matrix.
+ The c matrix.
+
+
+
+ Computes the LUP factorization of A. P*A = L*U.
+
+ An by matrix. The matrix is overwritten with the
+ the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0
+ for the L factor). The upper triangular factor U is stored on and above the diagonal of .
+ The order of the square matrix .
+ On exit, it contains the pivot indices. The size of the array must be .
+ This is equivalent to the GETRF LAPACK routine.
+
+
+
+ Computes the inverse of matrix using LU factorization.
+
+ The N by N matrix to invert. Contains the inverse On exit.
+ The order of the square matrix .
+ This is equivalent to the GETRF and GETRI LAPACK routines.
+
+
+
+ Computes the inverse of a previously factored matrix.
+
+ The LU factored N by N matrix. Contains the inverse On exit.
+ The order of the square matrix .
+ The pivot indices of .
+ This is equivalent to the GETRI LAPACK routine.
+
+
+
+ Solves A*X=B for X using LU factorization.
+
+ The number of columns of B.
+ The square matrix A.
+ The order of the square matrix .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRF and GETRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The number of columns of B.
+ The factored A matrix.
+ The order of the square matrix .
+ The pivot indices of .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRS LAPACK routine.
+
+
+
+ Computes the Cholesky factorization of A.
+
+ On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the
+ the Cholesky factorization.
+ The number of rows or columns in the matrix.
+ This is equivalent to the POTRF LAPACK routine.
+
+
+
+ Calculate Cholesky step
+
+ Factor matrix
+ Number of rows
+ Column start
+ Total columns
+ Multipliers calculated previously
+ Number of available processors
+
+
+
+ Solves A*X=B for X using Cholesky factorization.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRF add POTRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRS LAPACK routine.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A. Has to be different than .
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The column to solve for.
+
+
+
+ Computes the QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the R matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A M by M matrix that holds the Q matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Computes the QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the Q matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A N by N matrix that holds the R matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Perform calculation of Q or R
+
+ Work array
+ Index of column in work array
+ Q or R matrices
+ The first row in
+ The last row
+ The first column
+ The last column
+ Number of available CPUs
+
+
+
+ Generate column from initial matrix to work array
+
+ Work array
+ Initial matrix
+ The number of rows in matrix
+ The first row
+ Column index
+
+
+
+ Solves A*X=B for X using QR factorization of A.
+
+ The A matrix.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Solves A*X=B for X using a previously QR factored matrix.
+
+ The Q matrix obtained by calling .
+ The R matrix obtained by calling .
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ Contains additional information on Q. Only used for the native solver
+ and can be null for the managed provider.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Computes the singular value decomposition of A.
+
+ Compute the singular U and VT vectors or not.
+ On entry, the M by N matrix to decompose. On exit, A may be overwritten.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The singular values of A in ascending value.
+ If is true, on exit U contains the left
+ singular vectors.
+ If is true, on exit VT contains the transposed
+ right singular vectors.
+ This is equivalent to the GESVD LAPACK routine.
+
+
+
+ Solves A*X=B for X using the singular value decomposition of A.
+
+ On entry, the M by N matrix to decompose.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Solves A*X=B for X using a previously SVD decomposed matrix.
+
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The s values returned by .
+ The left singular vectors returned by .
+ The right singular vectors returned by .
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Computes the eigenvalues and eigenvectors of a matrix.
+
+ Whether the matrix is symmetric or not.
+ The order of the matrix.
+ The matrix to decompose. The length of the array must be order * order.
+ On output, the matrix contains the eigen vectors. The length of the array must be order * order.
+ On output, the eigen values (λ) of matrix in ascending value. The length of the array must .
+ On output, the block diagonal eigenvalue matrix. The length of the array must be order * order.
+
+
+
+ Reduces a complex Hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations.
+
+ Source matrix to reduce
+ Output: Arrays for internal storage of real parts of eigenvalues
+ Output: Arrays for internal storage of imaginary parts of eigenvalues
+ Output: Arrays that contains further information about the transformations.
+ Order of initial matrix
+ This is derived from the Algol procedures HTRIDI by
+ Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Symmetric tridiagonal QL algorithm.
+
+ Data array of matrix V (eigenvectors)
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tql2, by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Determines eigenvectors by undoing the symmetric tridiagonalize transformation
+
+ Data array of matrix V (eigenvectors)
+ Previously tridiagonalized matrix by SymmetricTridiagonalize.
+ Contains further information about the transformations
+ Input matrix order
+ This is derived from the Algol procedures HTRIBK, by
+ by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Nonsymmetric reduction to Hessenberg form.
+
+ Data array of matrix V (eigenvectors)
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedures orthes and ortran,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutines in EISPACK.
+
+
+
+ Nonsymmetric reduction from Hessenberg to real Schur form.
+
+ Data array of the eigenvectors
+ Data array of matrix V (eigenvectors)
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedure hqr2,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Assumes that and have already been transposed.
+
+
+
+
+ Assumes that and have already been transposed.
+
+
+
+
+ Try to find out whether the provider is available, at least in principle.
+ Verification may still fail if available, but it will certainly fail if unavailable.
+
+
+
+
+ Initialize and verify that the provided is indeed available. If not, fall back to alternatives like the managed provider
+
+
+
+
+ Frees memory buffers, caches and handles allocated in or to the provider.
+ Does not unload the provider itself, it is still usable afterwards.
+
+
+
+
+ Assumes that and have already been transposed.
+
+
+
+
+ Assumes that and have already been transposed.
+
+
+
+
+ Adds a scaled vector to another: result = y + alpha*x.
+
+ The vector to update.
+ The value to scale by.
+ The vector to add to .
+ The result of the addition.
+ This is similar to the AXPY BLAS routine.
+
+
+
+ Scales an array. Can be used to scale a vector and a matrix.
+
+ The scalar.
+ The values to scale.
+ This result of the scaling.
+ This is similar to the SCAL BLAS routine.
+
+
+
+ Conjugates an array. Can be used to conjugate a vector and a matrix.
+
+ The values to conjugate.
+ This result of the conjugation.
+
+
+
+ Computes the dot product of x and y.
+
+ The vector x.
+ The vector y.
+ The dot product of x and y.
+ This is equivalent to the DOT BLAS routine.
+
+
+
+ Does a point wise add of two arrays z = x + y. This can be used
+ to add vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the addition.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise subtraction of two arrays z = x - y. This can be used
+ to subtract vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the subtraction.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise multiplication of two arrays z = x * y. This can be used
+ to multiple elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise multiplication.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise division of two arrays z = x / y. This can be used
+ to divide elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise division.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise power of two arrays z = x ^ y. This can be used
+ to raise elements of vectors or matrices to the powers of another vector or matrix.
+
+ The array x.
+ The array y.
+ The result of the point wise power.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Computes the requested of the matrix.
+
+ The type of norm to compute.
+ The number of rows.
+ The number of columns.
+ The matrix to compute the norm from.
+
+ The requested of the matrix.
+
+
+
+
+ Multiples two matrices. result = x * y
+
+ The x matrix.
+ The number of rows in the x matrix.
+ The number of columns in the x matrix.
+ The y matrix.
+ The number of rows in the y matrix.
+ The number of columns in the y matrix.
+ Where to store the result of the multiplication.
+ This is a simplified version of the BLAS GEMM routine with alpha
+ set to 1.0 and beta set to 0.0, and x and y are not transposed.
+
+
+
+ Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c
+
+ How to transpose the matrix.
+ How to transpose the matrix.
+ The value to scale matrix.
+ The a matrix.
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The b matrix
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The value to scale the matrix.
+ The c matrix.
+
+
+
+ Computes the LUP factorization of A. P*A = L*U.
+
+ An by matrix. The matrix is overwritten with the
+ the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0
+ for the L factor). The upper triangular factor U is stored on and above the diagonal of .
+ The order of the square matrix .
+ On exit, it contains the pivot indices. The size of the array must be .
+ This is equivalent to the GETRF LAPACK routine.
+
+
+
+ Computes the inverse of matrix using LU factorization.
+
+ The N by N matrix to invert. Contains the inverse On exit.
+ The order of the square matrix .
+ This is equivalent to the GETRF and GETRI LAPACK routines.
+
+
+
+ Computes the inverse of a previously factored matrix.
+
+ The LU factored N by N matrix. Contains the inverse On exit.
+ The order of the square matrix .
+ The pivot indices of .
+ This is equivalent to the GETRI LAPACK routine.
+
+
+
+ Solves A*X=B for X using LU factorization.
+
+ The number of columns of B.
+ The square matrix A.
+ The order of the square matrix .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRF and GETRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The number of columns of B.
+ The factored A matrix.
+ The order of the square matrix .
+ The pivot indices of .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRS LAPACK routine.
+
+
+
+ Computes the Cholesky factorization of A.
+
+ On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the
+ the Cholesky factorization.
+ The number of rows or columns in the matrix.
+ This is equivalent to the POTRF LAPACK routine.
+
+
+
+ Calculate Cholesky step
+
+ Factor matrix
+ Number of rows
+ Column start
+ Total columns
+ Multipliers calculated previously
+ Number of available processors
+
+
+
+ Solves A*X=B for X using Cholesky factorization.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRF add POTRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A. Has to be different than .
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRS LAPACK routine.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A. Has to be different than .
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The column to solve for.
+
+
+
+ Computes the QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the R matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A M by M matrix that holds the Q matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Computes the QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the Q matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A N by N matrix that holds the R matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Perform calculation of Q or R
+
+ Work array
+ Index of column in work array
+ Q or R matrices
+ The first row in
+ The last row
+ The first column
+ The last column
+ Number of available CPUs
+
+
+
+ Generate column from initial matrix to work array
+
+ Work array
+ Initial matrix
+ The number of rows in matrix
+ The first row
+ Column index
+
+
+
+ Solves A*X=B for X using QR factorization of A.
+
+ The A matrix.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Solves A*X=B for X using a previously QR factored matrix.
+
+ The Q matrix obtained by calling .
+ The R matrix obtained by calling .
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ Contains additional information on Q. Only used for the native solver
+ and can be null for the managed provider.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Computes the singular value decomposition of A.
+
+ Compute the singular U and VT vectors or not.
+ On entry, the M by N matrix to decompose. On exit, A may be overwritten.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The singular values of A in ascending value.
+ If is true, on exit U contains the left
+ singular vectors.
+ If is true, on exit VT contains the transposed
+ right singular vectors.
+ This is equivalent to the GESVD LAPACK routine.
+
+
+
+ Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s
+ associated with the Givens rotation that zeros the y-coordinate of the point.
+
+ Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation
+ Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation
+ Contains the parameter c associated with the Givens rotation
+ Contains the parameter s associated with the Givens rotation
+ This is equivalent to the DROTG LAPACK routine.
+
+
+
+ Solves A*X=B for X using the singular value decomposition of A.
+
+ On entry, the M by N matrix to decompose.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Solves A*X=B for X using a previously SVD decomposed matrix.
+
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The s values returned by .
+ The left singular vectors returned by .
+ The right singular vectors returned by .
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Computes the eigenvalues and eigenvectors of a matrix.
+
+ Whether the matrix is symmetric or not.
+ The order of the matrix.
+ The matrix to decompose. The length of the array must be order * order.
+ On output, the matrix contains the eigen vectors. The length of the array must be order * order.
+ On output, the eigen values (λ) of matrix in ascending value. The length of the array must .
+ On output, the block diagonal eigenvalue matrix. The length of the array must be order * order.
+
+
+
+ Symmetric Householder reduction to tridiagonal form.
+
+ Data array of matrix V (eigenvectors)
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tred2 by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Symmetric tridiagonal QL algorithm.
+
+ Data array of matrix V (eigenvectors)
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tql2, by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Nonsymmetric reduction to Hessenberg form.
+
+ Data array of matrix V (eigenvectors)
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedures orthes and ortran,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutines in EISPACK.
+
+
+
+ Nonsymmetric reduction from Hessenberg to real Schur form.
+
+ Data array of matrix V (eigenvectors)
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedure hqr2,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Complex scalar division X/Y.
+
+ Real part of X
+ Imaginary part of X
+ Real part of Y
+ Imaginary part of Y
+ Division result as a number.
+
+
+
+ Adds a scaled vector to another: result = y + alpha*x.
+
+ The vector to update.
+ The value to scale by.
+ The vector to add to .
+ The result of the addition.
+ This is similar to the AXPY BLAS routine.
+
+
+
+ Scales an array. Can be used to scale a vector and a matrix.
+
+ The scalar.
+ The values to scale.
+ This result of the scaling.
+ This is similar to the SCAL BLAS routine.
+
+
+
+ Conjugates an array. Can be used to conjugate a vector and a matrix.
+
+ The values to conjugate.
+ This result of the conjugation.
+
+
+
+ Computes the dot product of x and y.
+
+ The vector x.
+ The vector y.
+ The dot product of x and y.
+ This is equivalent to the DOT BLAS routine.
+
+
+
+ Does a point wise add of two arrays z = x + y. This can be used
+ to add vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the addition.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise subtraction of two arrays z = x - y. This can be used
+ to subtract vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the subtraction.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise multiplication of two arrays z = x * y. This can be used
+ to multiple elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise multiplication.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise division of two arrays z = x / y. This can be used
+ to divide elements of vectors or matrices.
+
+ The array x.
+ The array y.
+ The result of the point wise division.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Does a point wise power of two arrays z = x ^ y. This can be used
+ to raise elements of vectors or matrices to the powers of another vector or matrix.
+
+ The array x.
+ The array y.
+ The result of the point wise power.
+ There is no equivalent BLAS routine, but many libraries
+ provide optimized (parallel and/or vectorized) versions of this
+ routine.
+
+
+
+ Computes the requested of the matrix.
+
+ The type of norm to compute.
+ The number of rows.
+ The number of columns.
+ The matrix to compute the norm from.
+
+ The requested of the matrix.
+
+
+
+
+ Multiples two matrices. result = x * y
+
+ The x matrix.
+ The number of rows in the x matrix.
+ The number of columns in the x matrix.
+ The y matrix.
+ The number of rows in the y matrix.
+ The number of columns in the y matrix.
+ Where to store the result of the multiplication.
+ This is a simplified version of the BLAS GEMM routine with alpha
+ set to 1.0 and beta set to 0.0, and x and y are not transposed.
+
+
+
+ Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c
+
+ How to transpose the matrix.
+ How to transpose the matrix.
+ The value to scale matrix.
+ The a matrix.
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The b matrix
+ The number of rows in the matrix.
+ The number of columns in the matrix.
+ The value to scale the matrix.
+ The c matrix.
+
+
+
+ Computes the LUP factorization of A. P*A = L*U.
+
+ An by matrix. The matrix is overwritten with the
+ the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0
+ for the L factor). The upper triangular factor U is stored on and above the diagonal of .
+ The order of the square matrix .
+ On exit, it contains the pivot indices. The size of the array must be .
+ This is equivalent to the GETRF LAPACK routine.
+
+
+
+ Computes the inverse of matrix using LU factorization.
+
+ The N by N matrix to invert. Contains the inverse On exit.
+ The order of the square matrix .
+ This is equivalent to the GETRF and GETRI LAPACK routines.
+
+
+
+ Computes the inverse of a previously factored matrix.
+
+ The LU factored N by N matrix. Contains the inverse On exit.
+ The order of the square matrix .
+ The pivot indices of .
+ This is equivalent to the GETRI LAPACK routine.
+
+
+
+ Solves A*X=B for X using LU factorization.
+
+ The number of columns of B.
+ The square matrix A.
+ The order of the square matrix .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRF and GETRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The number of columns of B.
+ The factored A matrix.
+ The order of the square matrix .
+ The pivot indices of .
+ On entry the B matrix; on exit the X matrix.
+ This is equivalent to the GETRS LAPACK routine.
+
+
+
+ Computes the Cholesky factorization of A.
+
+ On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the
+ the Cholesky factorization.
+ The number of rows or columns in the matrix.
+ This is equivalent to the POTRF LAPACK routine.
+
+
+
+ Calculate Cholesky step
+
+ Factor matrix
+ Number of rows
+ Column start
+ Total columns
+ Multipliers calculated previously
+ Number of available processors
+
+
+
+ Solves A*X=B for X using Cholesky factorization.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRF add POTRS LAPACK routines.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A.
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The number of columns in the B matrix.
+ This is equivalent to the POTRS LAPACK routine.
+
+
+
+ Solves A*X=B for X using a previously factored A matrix.
+
+ The square, positive definite matrix A. Has to be different than .
+ The number of rows and columns in A.
+ On entry the B matrix; on exit the X matrix.
+ The column to solve for.
+
+
+
+ Computes the QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the R matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A M by M matrix that holds the Q matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Computes the QR factorization of A.
+
+ On entry, it is the M by N A matrix to factor. On exit,
+ it is overwritten with the Q matrix of the QR factorization.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ On exit, A N by N matrix that holds the R matrix of the
+ QR factorization.
+ A min(m,n) vector. On exit, contains additional information
+ to be used by the QR solve routine.
+ This is similar to the GEQRF and ORGQR LAPACK routines.
+
+
+
+ Perform calculation of Q or R
+
+ Work array
+ Index of column in work array
+ Q or R matrices
+ The first row in
+ The last row
+ The first column
+ The last column
+ Number of available CPUs
+
+
+
+ Generate column from initial matrix to work array
+
+ Work array
+ Initial matrix
+ The number of rows in matrix
+ The first row
+ Column index
+
+
+
+ Solves A*X=B for X using QR factorization of A.
+
+ The A matrix.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Solves A*X=B for X using a previously QR factored matrix.
+
+ The Q matrix obtained by calling .
+ The R matrix obtained by calling .
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ Contains additional information on Q. Only used for the native solver
+ and can be null for the managed provider.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+ The type of QR factorization to perform.
+ Rows must be greater or equal to columns.
+
+
+
+ Computes the singular value decomposition of A.
+
+ Compute the singular U and VT vectors or not.
+ On entry, the M by N matrix to decompose. On exit, A may be overwritten.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The singular values of A in ascending value.
+ If is true, on exit U contains the left
+ singular vectors.
+ If is true, on exit VT contains the transposed
+ right singular vectors.
+ This is equivalent to the GESVD LAPACK routine.
+
+
+
+ Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s
+ associated with the Givens rotation that zeros the y-coordinate of the point.
+
+ Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation
+ Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation
+ Contains the parameter c associated with the Givens rotation
+ Contains the parameter s associated with the Givens rotation
+ This is equivalent to the DROTG LAPACK routine.
+
+
+
+ Solves A*X=B for X using the singular value decomposition of A.
+
+ On entry, the M by N matrix to decompose.
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Solves A*X=B for X using a previously SVD decomposed matrix.
+
+ The number of rows in the A matrix.
+ The number of columns in the A matrix.
+ The s values returned by .
+ The left singular vectors returned by .
+ The right singular vectors returned by .
+ The B matrix.
+ The number of columns of B.
+ On exit, the solution matrix.
+
+
+
+ Computes the eigenvalues and eigenvectors of a matrix.
+
+ Whether the matrix is symmetric or not.
+ The order of the matrix.
+ The matrix to decompose. The length of the array must be order * order.
+ On output, the matrix contains the eigen vectors. The length of the array must be order * order.
+ On output, the eigen values (λ) of matrix in ascending value. The length of the array must .
+ On output, the block diagonal eigenvalue matrix. The length of the array must be order * order.
+
+
+
+ Symmetric Householder reduction to tridiagonal form.
+
+ Data array of matrix V (eigenvectors)
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tred2 by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+ Symmetric tridiagonal QL algorithm.
+
+ Data array of matrix V (eigenvectors)
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedures tql2, by
+ Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
+ Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Nonsymmetric reduction to Hessenberg form.
+
+ Data array of matrix V (eigenvectors)
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Order of initial matrix
+ This is derived from the Algol procedures orthes and ortran,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutines in EISPACK.
+
+
+
+ Nonsymmetric reduction from Hessenberg to real Schur form.
+
+ Data array of matrix V (eigenvectors)
+ Array for internal storage of nonsymmetric Hessenberg form.
+ Arrays for internal storage of real parts of eigenvalues
+ Arrays for internal storage of imaginary parts of eigenvalues
+ Order of initial matrix
+ This is derived from the Algol procedure hqr2,
+ by Martin and Wilkinson, Handbook for Auto. Comp.,
+ Vol.ii-Linear Algebra, and the corresponding
+ Fortran subroutine in EISPACK.
+
+
+
+
+ Complex scalar division X/Y.
+
+ Real part of X
+ Imaginary part of X
+ Real part of Y
+ Imaginary part of Y
+ Division result as a number.
+
+
+
+ Structure option.
+
+
+
+
+ Factorization option.
+
+
+
+
+ Solver step's substitution.
+
+
+
+
+ Solve a system, Ax = b.
+
+
+
+
+ Solve a transposed system, A'x = b
+
+
+
+
+ Solve a conjugate transposed system, A†x = b
+
+
+
+
+ Status values
+
+
+
+
+ The operation was successful.
+
+
+
+
+ Try to find out whether the provider is available, at least in principle.
+ Verification may still fail if available, but it will certainly fail if unavailable.
+
+
+
+
+ Initialize and verify that the provided is indeed available. If not, fall back to alternatives like the managed provider
+
+
+
+
+ Frees memory buffers, caches and handles allocated in or to the provider.
+ Does not unload the provider itself, it is still usable afterwards.
+
+
+
+
+ The managed sparse solver provider
+
+
+
+
+ Try to find out whether the provider is available, at least in principle.
+ Verification may still fail if available, but it will certainly fail if unavailable.
+
+
+
+
+ Initialize and verify that the provided is indeed available. If not, fall back to alternatives like the managed provider
+
+
+
+
+ Frees memory buffers, caches and handles allocated in or to the provider.
+ Does not unload the provider itself, it is still usable afterwards.
+
+
+
+
+ Optional path to try to load native provider binaries from,
+ if the provider specific hint path is not set.
+ If neither is set, Numerics falls back to the provider specific
+ environment variables, or the default probing paths.
+
+
+
+
+ Gets or sets the sparse solver provider. Consider to use UseNativeMKL or UseManaged instead.
+
+ The linear algebra provider.
+
+
+
+ Try to use a native provider, if available.
+
+
+
+
+ Use the best provider available.
+
+
+
+
+ Use a specific provider if configured, e.g. using the
+ "MathNetNumericsDSSProvider" environment variable,
+ or fall back to the best provider.
+
+
+
+
+ A random number generator based on the class in the .NET library.
+
+
+
+
+ Construct a new random number generator with a random seed.
+
+ Uses and uses the value of
+ to set whether the instance is thread safe.
+
+
+
+ Construct a new random number generator with random seed.
+
+ The to use.
+ Uses the value of to set whether the instance is thread safe.
+
+
+
+ Construct a new random number generator with random seed.
+
+ Uses
+ if set to true , the class is thread safe.
+
+
+
+ Construct a new random number generator with random seed.
+
+ The to use.
+ if set to true , the class is thread safe.
+
+
+
+ Fills the elements of a specified array of bytes with random numbers in full range, including zero and 255 ().
+
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Returns a random 32-bit signed integer greater than or equal to zero and less than
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Multiplicative congruential generator using a modulus of 2^31-1 and a multiplier of 1132489760.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ if set to true, the class is thread safe.
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Multiplicative congruential generator using a modulus of 2^59 and a multiplier of 13^13.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ The seed is set to 1, if the zero is used as the seed.
+ if set to true , the class is thread safe.
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Random number generator using Mersenne Twister 19937 algorithm.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Mersenne twister constant.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ Uses the value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ if set to true, the class is thread safe.
+
+
+
+ Default instance, thread-safe.
+
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Returns a random 32-bit signed integer greater than or equal to zero and less than
+
+
+
+
+ Fills the elements of a specified array of bytes with random numbers in full range, including zero and 255 ().
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ A 32-bit combined multiple recursive generator with 2 components of order 3.
+
+ Based off of P. L'Ecuyer, "Combined Multiple Recursive Random Number Generators," Operations Research, 44, 5 (1996), 816--822.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ if set to true, the class is thread safe.
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Represents a Parallel Additive Lagged Fibonacci pseudo-random number generator.
+
+
+ The type bases upon the implementation in the
+ Boost Random Number Library.
+ It uses the modulus 232 and by default the "lags" 418 and 1279. Some popular pairs are presented on
+ Wikipedia - Lagged Fibonacci generator.
+
+
+
+
+ Default value for the ShortLag
+
+
+
+
+ Default value for the LongLag
+
+
+
+
+ The multiplier to compute a double-precision floating point number [0, 1)
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ if set to true , the class is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ if set to true, the class is thread safe.
+ The ShortLag value
+ TheLongLag value
+
+
+
+ Gets the short lag of the Lagged Fibonacci pseudo-random number generator.
+
+
+
+
+ Gets the long lag of the Lagged Fibonacci pseudo-random number generator.
+
+
+
+
+ Stores an array of random numbers
+
+
+
+
+ Stores an index for the random number array element that will be accessed next.
+
+
+
+
+ Fills the array with new unsigned random numbers.
+
+
+ Generated random numbers are 32-bit unsigned integers greater than or equal to 0
+ and less than or equal to .
+
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Returns a random 32-bit signed integer greater than or equal to zero and less than
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ This class implements extension methods for the System.Random class. The extension methods generate
+ pseudo-random distributed numbers for types other than double and int32.
+
+
+
+
+ Fills an array with uniform random numbers greater than or equal to 0.0 and less than 1.0.
+
+ The random number generator.
+ The array to fill with random values.
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns an array of uniform random numbers greater than or equal to 0.0 and less than 1.0.
+
+ The random number generator.
+ The size of the array to fill.
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns an infinite sequence of uniform random numbers greater than or equal to 0.0 and less than 1.0.
+
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns an array of uniform random bytes.
+
+ The random number generator.
+ The size of the array to fill.
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Fills an array with uniform random 32-bit signed integers greater than or equal to zero and less than .
+
+ The random number generator.
+ The array to fill with random values.
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Fills an array with uniform random 32-bit signed integers within the specified range.
+
+ The random number generator.
+ The array to fill with random values.
+ Lower bound, inclusive.
+ Upper bound, exclusive.
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns an infinite sequence of uniform random 32-bit signed integers within the specified range.
+
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns an infinite sequence of uniform random within the specified range.
+
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns a nonnegative random number less than .
+
+ The random number generator.
+
+ A 64-bit signed integer greater than or equal to 0, and less than ; that is,
+ the range of return values includes 0 but not .
+
+
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns a random number of the full Int32 range.
+
+ The random number generator.
+
+ A 32-bit signed integer of the full range, including 0, negative numbers,
+ and .
+
+
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns a random number of the full Int64 range.
+
+ The random number generator.
+
+ A 64-bit signed integer of the full range, including 0, negative numbers,
+ and .
+
+
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns a nonnegative decimal floating point random number less than 1.0.
+
+ The random number generator.
+
+ A decimal floating point number greater than or equal to 0.0, and less than 1.0; that is,
+ the range of return values includes 0.0 but not 1.0.
+
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Returns a random boolean.
+
+ The random number generator.
+
+ This extension is thread-safe if and only if called on an random number
+ generator provided by Math.NET Numerics or derived from the RandomSource class.
+
+
+
+
+ Provides a time-dependent seed value, matching the default behavior of System.Random.
+ WARNING: There is no randomness in this seed and quick repeated calls can cause
+ the same seed value. Do not use for cryptography!
+
+
+
+
+ Provides a seed based on time and unique GUIDs.
+ WARNING: There is only low randomness in this seed, but at least quick repeated
+ calls will result in different seed values. Do not use for cryptography!
+
+
+
+
+ Provides a seed based on an internal random number generator (crypto if available), time and unique GUIDs.
+ WARNING: There is only medium randomness in this seed, but quick repeated
+ calls will result in different seed values. Do not use for cryptography!
+
+
+
+
+ Base class for random number generators. This class introduces a layer between
+ and the Math.NET Numerics random number generators to provide thread safety.
+ When used directly it use the System.Random as random number source.
+
+
+
+
+ Initializes a new instance of the class using
+ the value of to set whether
+ the instance is thread safe or not.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true , the class is thread safe.
+ Thread safe instances are two and half times slower than non-thread
+ safe classes.
+
+
+
+ Fills an array with uniform random numbers greater than or equal to 0.0 and less than 1.0.
+
+ The array to fill with random values.
+
+
+
+ Returns an array of uniform random numbers greater than or equal to 0.0 and less than 1.0.
+
+ The size of the array to fill.
+
+
+
+ Returns an infinite sequence of uniform random numbers greater than or equal to 0.0 and less than 1.0.
+
+
+
+
+ Returns a random 32-bit signed integer greater than or equal to zero and less than .
+
+
+
+
+ Returns a random number less then a specified maximum.
+
+ The exclusive upper bound of the random number returned. Range: maxExclusive ≥ 1.
+ A 32-bit signed integer less than .
+ is zero or negative.
+
+
+
+ Returns a random number within a specified range.
+
+ The inclusive lower bound of the random number returned.
+ The exclusive upper bound of the random number returned. Range: maxExclusive > minExclusive.
+
+ A 32-bit signed integer greater than or equal to and less than ; that is, the range of return values includes but not . If equals , is returned.
+
+ is greater than .
+
+
+
+ Fills an array with random 32-bit signed integers greater than or equal to zero and less than .
+
+ The array to fill with random values.
+
+
+
+ Returns an array with random 32-bit signed integers greater than or equal to zero and less than .
+
+ The size of the array to fill.
+
+
+
+ Fills an array with random numbers within a specified range.
+
+ The array to fill with random values.
+ The exclusive upper bound of the random number returned. Range: maxExclusive ≥ 1.
+
+
+
+ Returns an array with random 32-bit signed integers within the specified range.
+
+ The size of the array to fill.
+ The exclusive upper bound of the random number returned. Range: maxExclusive ≥ 1.
+
+
+
+ Fills an array with random numbers within a specified range.
+
+ The array to fill with random values.
+ The inclusive lower bound of the random number returned.
+ The exclusive upper bound of the random number returned. Range: maxExclusive > minExclusive.
+
+
+
+ Returns an array with random 32-bit signed integers within the specified range.
+
+ The size of the array to fill.
+ The inclusive lower bound of the random number returned.
+ The exclusive upper bound of the random number returned. Range: maxExclusive > minExclusive.
+
+
+
+ Returns an infinite sequence of random 32-bit signed integers greater than or equal to zero and less than .
+
+
+
+
+ Returns an infinite sequence of random numbers within a specified range.
+
+ The inclusive lower bound of the random number returned.
+ The exclusive upper bound of the random number returned. Range: maxExclusive > minExclusive.
+
+
+
+ Fills the elements of a specified array of bytes with random numbers.
+
+ An array of bytes to contain random numbers.
+ is null.
+
+
+
+ Returns a random number between 0.0 and 1.0.
+
+ A double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Returns a random 32-bit signed integer greater than or equal to zero and less than 2147483647 ().
+
+
+
+
+ Fills the elements of a specified array of bytes with random numbers in full range, including zero and 255 ().
+
+
+
+
+ Returns a random N-bit signed integer greater than or equal to zero and less than 2^N.
+ N (bit count) is expected to be greater than zero and less than 32 (not verified).
+
+
+
+
+ Returns a random N-bit signed long integer greater than or equal to zero and less than 2^N.
+ N (bit count) is expected to be greater than zero and less than 64 (not verified).
+
+
+
+
+ Returns a random 32-bit signed integer within the specified range.
+
+ The exclusive upper bound of the random number returned. Range: maxExclusive ≥ 2 (not verified, must be ensured by caller).
+
+
+
+ Returns a random 32-bit signed integer within the specified range.
+
+ The inclusive lower bound of the random number returned.
+ The exclusive upper bound of the random number returned. Range: maxExclusive ≥ minExclusive + 2 (not verified, must be ensured by caller).
+
+
+
+ A random number generator based on the class in the .NET library.
+
+
+
+
+ Construct a new random number generator with a random seed.
+
+
+
+
+ Construct a new random number generator with random seed.
+
+ if set to true , the class is thread safe.
+
+
+
+ Construct a new random number generator with random seed.
+
+ The seed value.
+
+
+
+ Construct a new random number generator with random seed.
+
+ The seed value.
+ if set to true , the class is thread safe.
+
+
+
+ Default instance, thread-safe.
+
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Returns a random 32-bit signed integer greater than or equal to zero and less than
+
+
+
+
+ Returns a random 32-bit signed integer within the specified range.
+
+ The exclusive upper bound of the random number returned. Range: maxExclusive ≥ 2 (not verified, must be ensured by caller).
+
+
+
+ Returns a random 32-bit signed integer within the specified range.
+
+ The inclusive lower bound of the random number returned.
+ The exclusive upper bound of the random number returned. Range: maxExclusive ≥ minExclusive + 2 (not verified, must be ensured by caller).
+
+
+
+ Fills the elements of a specified array of bytes with random numbers in full range, including zero and 255 ().
+
+
+
+
+ Fill an array with uniform random numbers greater than or equal to 0.0 and less than 1.0.
+ WARNING: potentially very short random sequence length, can generate repeated partial sequences.
+
+ Parallelized on large length, but also supports being called in parallel from multiple threads
+
+
+
+ Returns an array of uniform random numbers greater than or equal to 0.0 and less than 1.0.
+ WARNING: potentially very short random sequence length, can generate repeated partial sequences.
+
+ Parallelized on large length, but also supports being called in parallel from multiple threads
+
+
+
+ Returns an infinite sequence of uniform random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Wichmann-Hill’s 1982 combined multiplicative congruential generator.
+
+ See: Wichmann, B. A. & Hill, I. D. (1982), "Algorithm AS 183:
+ An efficient and portable pseudo-random number generator". Applied Statistics 31 (1982) 188-190
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ The seed is set to 1, if the zero is used as the seed.
+ if set to true , the class is thread safe.
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Wichmann-Hill’s 2006 combined multiplicative congruential generator.
+
+ See: Wichmann, B. A. & Hill, I. D. (2006), "Generating good pseudo-random numbers".
+ Computational Statistics & Data Analysis 51:3 (2006) 1614-1622
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ The seed is set to 1, if the zero is used as the seed.
+ if set to true , the class is thread safe.
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Implements a multiply-with-carry Xorshift pseudo random number generator (RNG) specified in Marsaglia, George. (2003). Xorshift RNGs.
+ Xn = a * Xn−3 + c mod 2^32
+ http://www.jstatsoft.org/v08/i14/paper
+
+
+
+
+ The default value for X1.
+
+
+
+
+ The default value for X2.
+
+
+
+
+ The default value for the multiplier.
+
+
+
+
+ The default value for the carry over.
+
+
+
+
+ The multiplier to compute a double-precision floating point number [0, 1)
+
+
+
+
+ Seed or last but three unsigned random number.
+
+
+
+
+ Last but two unsigned random number.
+
+
+
+
+ Last but one unsigned random number.
+
+
+
+
+ The value of the carry over.
+
+
+
+
+ The multiplier.
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+ Uses the default values of:
+
+ - a = 916905990
+ - c = 13579
+ - X1 = 77465321
+ - X2 = 362436069
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ The multiply value
+ The initial carry value.
+ The initial value if X1.
+ The initial value if X2.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+ Note: must be less than .
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+
+ Uses the default values of:
+
+ - a = 916905990
+ - c = 13579
+ - X1 = 77465321
+ - X2 = 362436069
+
+
+
+
+ Initializes a new instance of the class using
+ a seed based on time and unique GUIDs.
+
+ if set to true , the class is thread safe.
+ The multiply value
+ The initial carry value.
+ The initial value if X1.
+ The initial value if X2.
+ must be less than .
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+ Uses the default values of:
+
+ - a = 916905990
+ - c = 13579
+ - X1 = 77465321
+ - X2 = 362436069
+
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ If the seed value is zero, it is set to one. Uses the
+ value of to
+ set whether the instance is thread safe.
+ The multiply value
+ The initial carry value.
+ The initial value if X1.
+ The initial value if X2.
+ must be less than .
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ if set to true, the class is thread safe.
+
+ Uses the default values of:
+
+ - a = 916905990
+ - c = 13579
+ - X1 = 77465321
+ - X2 = 362436069
+
+
+
+
+ Initializes a new instance of the class.
+
+ The seed value.
+ if set to true, the class is thread safe.
+ The multiply value
+ The initial carry value.
+ The initial value if X1.
+ The initial value if X2.
+ must be less than .
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Returns a random 32-bit signed integer greater than or equal to zero and less than
+
+
+
+
+ Fills the elements of a specified array of bytes with random numbers in full range, including zero and 255 ().
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Xoshiro256** pseudo random number generator.
+ A random number generator based on the class in the .NET library.
+
+
+ This is xoshiro256** 1.0, our all-purpose, rock-solid generator. It has
+ excellent(sub-ns) speed, a state space(256 bits) that is large enough
+ for any parallel application, and it passes all tests we are aware of.
+
+ For generating just floating-point numbers, xoshiro256+ is even faster.
+
+ The state must be seeded so that it is not everywhere zero.If you have
+ a 64-bit seed, we suggest to seed a splitmix64 generator and use its
+ output to fill s.
+
+ For further details see:
+ David Blackman & Sebastiano Vigna (2018), "Scrambled Linear Pseudorandom Number Generators".
+ https://arxiv.org/abs/1805.01407
+
+
+
+
+ Construct a new random number generator with a random seed.
+
+
+
+
+ Construct a new random number generator with random seed.
+
+ if set to true , the class is thread safe.
+
+
+
+ Construct a new random number generator with random seed.
+
+ The seed value.
+
+
+
+ Construct a new random number generator with random seed.
+
+ The seed value.
+ if set to true , the class is thread safe.
+
+
+
+ Returns a random double-precision floating point number greater than or equal to 0.0, and less than 1.0.
+
+
+
+
+ Returns a random 32-bit signed integer greater than or equal to zero and less than
+
+
+
+
+ Fills the elements of a specified array of bytes with random numbers in full range, including zero and 255 ().
+
+
+
+
+ Returns a random N-bit signed integer greater than or equal to zero and less than 2^N.
+ N (bit count) is expected to be greater than zero and less than 32 (not verified).
+
+
+
+
+ Returns a random N-bit signed long integer greater than or equal to zero and less than 2^N.
+ N (bit count) is expected to be greater than zero and less than 64 (not verified).
+
+
+
+
+ Fills an array with random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an array of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads.
+
+
+
+ Returns an infinite sequence of random numbers greater than or equal to 0.0 and less than 1.0.
+
+ Supports being called in parallel from multiple threads, but the result must be enumerated from a single thread each.
+
+
+
+ Splitmix64 RNG.
+
+ RNG state. This can take any value, including zero.
+ A new random UInt64.
+
+ Splitmix64 produces equidistributed outputs, thus if a zero is generated then the
+ next zero will be after a further 2^64 outputs.
+
+
+
+
+ Bisection root-finding algorithm.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ Guess for the low value of the range where the root is supposed to be. Will be expanded if needed.
+ Guess for the high value of the range where the root is supposed to be. Will be expanded if needed.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ Factor at which to expand the bounds, if needed. Default 1.6.
+ Maximum number of expand iterations. Default 100.
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The low value of the range where the root is supposed to be.
+ The high value of the range where the root is supposed to be.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The low value of the range where the root is supposed to be.
+ The high value of the range where the root is supposed to be.
+ Desired accuracy for both the root and the function value at the root. The root will be refined until the accuracy or the maximum number of iterations is reached. Must be greater than 0.
+ Maximum number of iterations. Usually 100.
+ The root that was found, if any. Undefined if the function returns false.
+ True if a root with the specified accuracy was found, else false.
+
+
+
+ Algorithm by Brent, Van Wijngaarden, Dekker et al.
+ Implementation inspired by Press, Teukolsky, Vetterling, and Flannery, "Numerical Recipes in C", 2nd edition, Cambridge University Press
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ Guess for the low value of the range where the root is supposed to be. Will be expanded if needed.
+ Guess for the high value of the range where the root is supposed to be. Will be expanded if needed.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ Factor at which to expand the bounds, if needed. Default 1.6.
+ Maximum number of expand iterations. Default 100.
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The low value of the range where the root is supposed to be.
+ The high value of the range where the root is supposed to be.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The low value of the range where the root is supposed to be.
+ The high value of the range where the root is supposed to be.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Must be greater than 0.
+ Maximum number of iterations. Usually 100.
+ The root that was found, if any. Undefined if the function returns false.
+ True if a root with the specified accuracy was found, else false.
+
+
+ Helper method useful for preventing rounding errors.
+ a*sign(b)
+
+
+
+ Algorithm by Broyden.
+ Implementation inspired by Press, Teukolsky, Vetterling, and Flannery, "Numerical Recipes in C", 2nd edition, Cambridge University Press
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ Initial guess of the root.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ Relative step size for calculating the Jacobian matrix at first step. Default 1.0e-4
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ Initial guess of the root.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Must be greater than 0.
+ Maximum number of iterations. Usually 100.
+ Relative step size for calculating the Jacobian matrix at first step.
+ The root that was found, if any. Undefined if the function returns false.
+ True if a root with the specified accuracy was found, else false.
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ Initial guess of the root.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Must be greater than 0.
+ Maximum number of iterations. Usually 100.
+ The root that was found, if any. Undefined if the function returns false.
+ True if a root with the specified accuracy was found, else false.
+
+
+
+ Helper method to calculate an approximation of the Jacobian.
+
+ The function.
+ The argument (initial guess).
+ The result (of initial guess).
+ Relative step size for calculating the Jacobian.
+
+
+
+ Finds roots to the cubic equation x^3 + a2*x^2 + a1*x + a0 = 0
+ Implements the cubic formula in http://mathworld.wolfram.com/CubicFormula.html
+
+
+
+
+ Q and R are transformed variables.
+
+
+
+
+ n^(1/3) - work around a negative double raised to (1/3)
+
+
+
+
+ Find all real-valued roots of the cubic equation a0 + a1*x + a2*x^2 + x^3 = 0.
+ Note the special coefficient order ascending by exponent (consistent with polynomials).
+
+
+
+
+ Find all three complex roots of the cubic equation d + c*x + b*x^2 + a*x^3 = 0.
+ Note the special coefficient order ascending by exponent (consistent with polynomials).
+
+
+
+
+ Pure Newton-Raphson root-finding algorithm without any recovery measures in cases it behaves badly.
+ The algorithm aborts immediately if the root leaves the bound interval.
+
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The first derivative of the function to find roots from.
+ The low value of the range where the root is supposed to be. Aborts if it leaves the interval.
+ The high value of the range where the root is supposed to be. Aborts if it leaves the interval.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The first derivative of the function to find roots from.
+ Initial guess of the root.
+ The low value of the range where the root is supposed to be. Aborts if it leaves the interval. Default MinValue.
+ The high value of the range where the root is supposed to be. Aborts if it leaves the interval. Default MaxValue.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The first derivative of the function to find roots from.
+ Initial guess of the root.
+ The low value of the range where the root is supposed to be. Aborts if it leaves the interval.
+ The high value of the range where the root is supposed to be. Aborts if it leaves the interval.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. Must be greater than 0.
+ Maximum number of iterations. Example: 100.
+ The root that was found, if any. Undefined if the function returns false.
+ True if a root with the specified accuracy was found, else false.
+
+
+
+ Robust Newton-Raphson root-finding algorithm that falls back to bisection when overshooting or converging too slow, or to subdivision on lacking bracketing.
+
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The first derivative of the function to find roots from.
+ The low value of the range where the root is supposed to be.
+ The high value of the range where the root is supposed to be.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ How many parts an interval should be split into for zero crossing scanning in case of lacking bracketing. Default 20.
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The first derivative of the function to find roots from.
+ The low value of the range where the root is supposed to be.
+ The high value of the range where the root is supposed to be.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. Must be greater than 0.
+ Maximum number of iterations. Example: 100.
+ How many parts an interval should be split into for zero crossing scanning in case of lacking bracketing. Example: 20.
+ The root that was found, if any. Undefined if the function returns false.
+ True if a root with the specified accuracy was found, else false.
+
+
+
+ Pure Secant root-finding algorithm without any recovery measures in cases it behaves badly.
+ The algorithm aborts immediately if the root leaves the bound interval.
+
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The first guess of the root within the bounds specified.
+ The second guess of the root within the bounds specified.
+ The low value of the range where the root is supposed to be. Aborts if it leaves the interval. Default MinValue.
+ The high value of the range where the root is supposed to be. Aborts if it leaves the interval. Default MaxValue.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. Must be greater than 0.
+ Maximum number of iterations. Default 100.
+ Returns the root with the specified accuracy.
+
+
+
+ Find a solution of the equation f(x)=0.
+ The function to find roots from.
+ The first guess of the root within the bounds specified.
+ The second guess of the root within the bounds specified.
+ The low value of the range where the root is supposed to be. Aborts if it leaves the interval.
+ The low value of the range where the root is supposed to be. Aborts if it leaves the interval.
+ Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. Must be greater than 0.
+ Maximum number of iterations. Example: 100.
+ The root that was found, if any. Undefined if the function returns false.
+ True if a root with the specified accuracy was found, else false
+
+
+ Detect a range containing at least one root.
+ The function to detect roots from.
+ Lower value of the range.
+ Upper value of the range
+ The growing factor of research. Usually 1.6.
+ Maximum number of iterations. Usually 50.
+ True if the bracketing operation succeeded, false otherwise.
+ This iterative methods stops when two values with opposite signs are found.
+
+
+
+ Numerically stable series summation (stops automatically).
+
+ provides the summands sequentially
+ Sum
+
+
+
+ Numerically stable series summation (stops automatically).
+
+ provides the summands sequentially
+ Sum
+
+
+
+ Sorting algorithms for single, tuple and triple lists.
+
+
+
+
+ Sort a list of keys, in place using the quick sort algorithm using the quick sort algorithm.
+
+ The type of elements in the key list.
+ List to sort.
+ Comparison, defining the sort order.
+
+
+
+ Sort a list of keys and items with respect to the keys, in place using the quick sort algorithm.
+
+ The type of elements in the key list.
+ The type of elements in the item list.
+ List to sort.
+ List to permute the same way as the key list.
+ Comparison, defining the sort order.
+
+
+
+ Sort a list of keys, items1 and items2 with respect to the keys, in place using the quick sort algorithm.
+
+ The type of elements in the key list.
+ The type of elements in the first item list.
+ The type of elements in the second item list.
+ List to sort.
+ First list to permute the same way as the key list.
+ Second list to permute the same way as the key list.
+ Comparison, defining the sort order.
+
+
+
+ Sort a range of a list of keys, in place using the quick sort algorithm.
+
+ The type of element in the list.
+ List to sort.
+ The zero-based starting index of the range to sort.
+ The length of the range to sort.
+ Comparison, defining the sort order.
+
+
+
+ Sort a list of keys and items with respect to the keys, in place using the quick sort algorithm.
+
+ The type of elements in the key list.
+ The type of elements in the item list.
+ List to sort.
+ List to permute the same way as the key list.
+ The zero-based starting index of the range to sort.
+ The length of the range to sort.
+ Comparison, defining the sort order.
+
+
+
+ Sort a list of keys, items1 and items2 with respect to the keys, in place using the quick sort algorithm.
+
+ The type of elements in the key list.
+ The type of elements in the first item list.
+ The type of elements in the second item list.
+ List to sort.
+ First list to permute the same way as the key list.
+ Second list to permute the same way as the key list.
+ The zero-based starting index of the range to sort.
+ The length of the range to sort.
+ Comparison, defining the sort order.
+
+
+
+ Sort a list of keys and items with respect to the keys, in place using the quick sort algorithm.
+
+ The type of elements in the primary list.
+ The type of elements in the secondary list.
+ List to sort.
+ List to sort on duplicate primary items, and permute the same way as the key list.
+ Comparison, defining the primary sort order.
+ Comparison, defining the secondary sort order.
+
+
+
+ Recursive implementation for an in place quick sort on a list.
+
+ The type of the list on which the quick sort is performed.
+ The list which is sorted using quick sort.
+ The method with which to compare two elements of the quick sort.
+ The left boundary of the quick sort.
+ The right boundary of the quick sort.
+
+
+
+ Recursive implementation for an in place quick sort on a list while reordering one other list accordingly.
+
+ The type of the list on which the quick sort is performed.
+ The type of the list which is automatically reordered accordingly.
+ The list which is sorted using quick sort.
+ The list which is automatically reordered accordingly.
+ The method with which to compare two elements of the quick sort.
+ The left boundary of the quick sort.
+ The right boundary of the quick sort.
+
+
+
+ Recursive implementation for an in place quick sort on one list while reordering two other lists accordingly.
+
+ The type of the list on which the quick sort is performed.
+ The type of the first list which is automatically reordered accordingly.
+ The type of the second list which is automatically reordered accordingly.
+ The list which is sorted using quick sort.
+ The first list which is automatically reordered accordingly.
+ The second list which is automatically reordered accordingly.
+ The method with which to compare two elements of the quick sort.
+ The left boundary of the quick sort.
+ The right boundary of the quick sort.
+
+
+
+ Recursive implementation for an in place quick sort on the primary and then by the secondary list while reordering one secondary list accordingly.
+
+ The type of the primary list.
+ The type of the secondary list.
+ The list which is sorted using quick sort.
+ The list which is sorted secondarily (on primary duplicates) and automatically reordered accordingly.
+ The method with which to compare two elements of the primary list.
+ The method with which to compare two elements of the secondary list.
+ The left boundary of the quick sort.
+ The right boundary of the quick sort.
+
+
+
+ Performs an in place swap of two elements in a list.
+
+ The type of elements stored in the list.
+ The list in which the elements are stored.
+ The index of the first element of the swap.
+ The index of the second element of the swap.
+
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the Airy functions.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the Bessel functions.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the error function.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the Hankel function.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the harmonic function.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the modified Bessel function.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the log1p function.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the logistic function.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the Marcum-Q functions.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the modified Bessel function.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the modified Bessel function.
+
+
+ This partial implementation of the SpecialFunctions class contains all methods related to the spherical Bessel functions.
+
+
+
+
+ Returns the Airy function Ai.
+ AiryAi(z) is a solution to the Airy equation, y'' - y * z = 0.
+
+ The value to compute the Airy function of.
+ The Airy function Ai.
+
+
+
+ Returns the exponentially scaled Airy function Ai.
+ ScaledAiryAi(z) is given by Exp(zta) * AiryAi(z), where zta = (2/3) * z * Sqrt(z).
+
+ The value to compute the Airy function of.
+ The exponentially scaled Airy function Ai.
+
+
+
+ Returns the Airy function Ai.
+ AiryAi(z) is a solution to the Airy equation, y'' - y * z = 0.
+
+ The value to compute the Airy function of.
+ The Airy function Ai.
+
+
+
+ Returns the exponentially scaled Airy function Ai.
+ ScaledAiryAi(z) is given by Exp(zta) * AiryAi(z), where zta = (2/3) * z * Sqrt(z).
+
+ The value to compute the Airy function of.
+ The exponentially scaled Airy function Ai.
+
+
+
+ Returns the derivative of the Airy function Ai.
+ AiryAiPrime(z) is defined as d/dz AiryAi(z).
+
+ The value to compute the derivative of the Airy function of.
+ The derivative of the Airy function Ai.
+
+
+
+ Returns the exponentially scaled derivative of Airy function Ai
+ ScaledAiryAiPrime(z) is given by Exp(zta) * AiryAiPrime(z), where zta = (2/3) * z * Sqrt(z).
+
+ The value to compute the derivative of the Airy function of.
+ The exponentially scaled derivative of Airy function Ai.
+
+
+
+ Returns the derivative of the Airy function Ai.
+ AiryAiPrime(z) is defined as d/dz AiryAi(z).
+
+ The value to compute the derivative of the Airy function of.
+ The derivative of the Airy function Ai.
+
+
+
+ Returns the exponentially scaled derivative of the Airy function Ai.
+ ScaledAiryAiPrime(z) is given by Exp(zta) * AiryAiPrime(z), where zta = (2/3) * z * Sqrt(z).
+
+ The value to compute the derivative of the Airy function of.
+ The exponentially scaled derivative of the Airy function Ai.
+
+
+
+ Returns the Airy function Bi.
+ AiryBi(z) is a solution to the Airy equation, y'' - y * z = 0.
+
+ The value to compute the Airy function of.
+ The Airy function Bi.
+
+
+
+ Returns the exponentially scaled Airy function Bi.
+ ScaledAiryBi(z) is given by Exp(-Abs(zta.Real)) * AiryBi(z) where zta = (2 / 3) * z * Sqrt(z).
+
+ The value to compute the Airy function of.
+ The exponentially scaled Airy function Bi(z).
+
+
+
+ Returns the Airy function Bi.
+ AiryBi(z) is a solution to the Airy equation, y'' - y * z = 0.
+
+ The value to compute the Airy function of.
+ The Airy function Bi.
+
+
+
+ Returns the exponentially scaled Airy function Bi.
+ ScaledAiryBi(z) is given by Exp(-Abs(zta.Real)) * AiryBi(z) where zta = (2 / 3) * z * Sqrt(z).
+
+ The value to compute the Airy function of.
+ The exponentially scaled Airy function Bi.
+
+
+
+ Returns the derivative of the Airy function Bi.
+ AiryBiPrime(z) is defined as d/dz AiryBi(z).
+
+ The value to compute the derivative of the Airy function of.
+ The derivative of the Airy function Bi.
+
+
+
+ Returns the exponentially scaled derivative of the Airy function Bi.
+ ScaledAiryBiPrime(z) is given by Exp(-Abs(zta.Real)) * AiryBiPrime(z) where zta = (2 / 3) * z * Sqrt(z).
+
+ The value to compute the derivative of the Airy function of.
+ The exponentially scaled derivative of the Airy function Bi.
+
+
+
+ Returns the derivative of the Airy function Bi.
+ AiryBiPrime(z) is defined as d/dz AiryBi(z).
+
+ The value to compute the derivative of the Airy function of.
+ The derivative of the Airy function Bi.
+
+
+
+ Returns the exponentially scaled derivative of the Airy function Bi.
+ ScaledAiryBiPrime(z) is given by Exp(-Abs(zta.Real)) * AiryBiPrime(z) where zta = (2 / 3) * z * Sqrt(z).
+
+ The value to compute the derivative of the Airy function of.
+ The exponentially scaled derivative of the Airy function Bi.
+
+
+
+ Returns the Bessel function of the first kind.
+ BesselJ(n, z) is a solution to the Bessel differential equation.
+
+ The order of the Bessel function.
+ The value to compute the Bessel function of.
+ The Bessel function of the first kind.
+
+
+
+ Returns the exponentially scaled Bessel function of the first kind.
+ ScaledBesselJ(n, z) is given by Exp(-Abs(z.Imaginary)) * BesselJ(n, z).
+
+ The order of the Bessel function.
+ The value to compute the Bessel function of.
+ The exponentially scaled Bessel function of the first kind.
+
+
+
+ Returns the Bessel function of the first kind.
+ BesselJ(n, z) is a solution to the Bessel differential equation.
+
+ The order of the Bessel function.
+ The value to compute the Bessel function of.
+ The Bessel function of the first kind.
+
+
+
+ Returns the exponentially scaled Bessel function of the first kind.
+ ScaledBesselJ(n, z) is given by Exp(-Abs(z.Imaginary)) * BesselJ(n, z).
+
+ The order of the Bessel function.
+ The value to compute the Bessel function of.
+ The exponentially scaled Bessel function of the first kind.
+
+
+
+ Returns the Bessel function of the second kind.
+ BesselY(n, z) is a solution to the Bessel differential equation.
+
+ The order of the Bessel function.
+ The value to compute the Bessel function of.
+ The Bessel function of the second kind.
+
+
+
+ Returns the exponentially scaled Bessel function of the second kind.
+ ScaledBesselY(n, z) is given by Exp(-Abs(z.Imaginary)) * Y(n, z).
+
+ The order of the Bessel function.
+ The value to compute the Bessel function of.
+ The exponentially scaled Bessel function of the second kind.
+
+
+
+ Returns the Bessel function of the second kind.
+ BesselY(n, z) is a solution to the Bessel differential equation.
+
+ The order of the Bessel function.
+ The value to compute the Bessel function of.
+ The Bessel function of the second kind.
+
+
+
+ Returns the exponentially scaled Bessel function of the second kind.
+ ScaledBesselY(n, z) is given by Exp(-Abs(z.Imaginary)) * BesselY(n, z).
+
+ The order of the Bessel function.
+ The value to compute the Bessel function of.
+ The exponentially scaled Bessel function of the second kind.
+
+
+
+ Returns the modified Bessel function of the first kind.
+ BesselI(n, z) is a solution to the modified Bessel differential equation.
+
+ The order of the modified Bessel function.
+ The value to compute the modified Bessel function of.
+ The modified Bessel function of the first kind.
+
+
+
+ Returns the exponentially scaled modified Bessel function of the first kind.
+ ScaledBesselI(n, z) is given by Exp(-Abs(z.Real)) * BesselI(n, z).
+
+ The order of the modified Bessel function.
+ The value to compute the modified Bessel function of.
+ The exponentially scaled modified Bessel function of the first kind.
+
+
+
+ Returns the modified Bessel function of the first kind.
+ BesselI(n, z) is a solution to the modified Bessel differential equation.
+
+ The order of the modified Bessel function.
+ The value to compute the modified Bessel function of.
+ The modified Bessel function of the first kind.
+
+
+
+ Returns the exponentially scaled modified Bessel function of the first kind.
+ ScaledBesselI(n, z) is given by Exp(-Abs(z.Real)) * BesselI(n, z).
+
+ The order of the modified Bessel function.
+ The value to compute the modified Bessel function of.
+ The exponentially scaled modified Bessel function of the first kind.
+
+
+
+ Returns the modified Bessel function of the second kind.
+ BesselK(n, z) is a solution to the modified Bessel differential equation.
+
+ The order of the modified Bessel function.
+ The value to compute the modified Bessel function of.
+ The modified Bessel function of the second kind.
+
+
+
+ Returns the exponentially scaled modified Bessel function of the second kind.
+ ScaledBesselK(n, z) is given by Exp(z) * BesselK(n, z).
+
+ The order of the modified Bessel function.
+ The value to compute the modified Bessel function of.
+ The exponentially scaled modified Bessel function of the second kind.
+
+
+
+ Returns the modified Bessel function of the second kind.
+ BesselK(n, z) is a solution to the modified Bessel differential equation.
+
+ The order of the modified Bessel function.
+ The value to compute the modified Bessel function of.
+ The modified Bessel function of the second kind.
+
+
+
+ Returns the exponentially scaled modified Bessel function of the second kind.
+ ScaledBesselK(n, z) is given by Exp(z) * BesselK(n, z).
+
+ The order of the modified Bessel function.
+ The value to compute the modified Bessel function of.
+ The exponentially scaled modified Bessel function of the second kind.
+
+
+
+ Computes the logarithm of the Euler Beta function.
+
+ The first Beta parameter, a positive real number.
+ The second Beta parameter, a positive real number.
+ The logarithm of the Euler Beta function evaluated at z,w.
+ If or are not positive.
+
+
+
+ Computes the Euler Beta function.
+
+ The first Beta parameter, a positive real number.
+ The second Beta parameter, a positive real number.
+ The Euler Beta function evaluated at z,w.
+ If or are not positive.
+
+
+
+ Returns the lower incomplete (unregularized) beta function
+ B(a,b,x) = int(t^(a-1)*(1-t)^(b-1),t=0..x) for real a > 0, b > 0, 1 >= x >= 0.
+
+ The first Beta parameter, a positive real number.
+ The second Beta parameter, a positive real number.
+ The upper limit of the integral.
+ The lower incomplete (unregularized) beta function.
+
+
+
+ Returns the regularized lower incomplete beta function
+ I_x(a,b) = 1/Beta(a,b) * int(t^(a-1)*(1-t)^(b-1),t=0..x) for real a > 0, b > 0, 1 >= x >= 0.
+
+ The first Beta parameter, a positive real number.
+ The second Beta parameter, a positive real number.
+ The upper limit of the integral.
+ The regularized lower incomplete beta function.
+
+
+
+ **************************************
+ COEFFICIENTS FOR METHOD ErfImp *
+ **************************************
+
+ Polynomial coefficients for a numerator of ErfImp
+ calculation for Erf(x) in the interval [1e-10, 0.5].
+
+
+
+ Polynomial coefficients for a denominator of ErfImp
+ calculation for Erf(x) in the interval [1e-10, 0.5].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [0.5, 0.75].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [0.5, 0.75].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [0.75, 1.25].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [0.75, 1.25].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [1.25, 2.25].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [1.25, 2.25].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [2.25, 3.5].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [2.25, 3.5].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [3.5, 5.25].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [3.5, 5.25].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [5.25, 8].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [5.25, 8].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [8, 11.5].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [8, 11.5].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [11.5, 17].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [11.5, 17].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [17, 24].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [17, 24].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [24, 38].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [24, 38].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [38, 60].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [38, 60].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [60, 85].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [60, 85].
+
+
+
+ Polynomial coefficients for a numerator in ErfImp
+ calculation for Erfc(x) in the interval [85, 110].
+
+
+
+ Polynomial coefficients for a denominator in ErfImp
+ calculation for Erfc(x) in the interval [85, 110].
+
+
+
+
+ **************************************
+ COEFFICIENTS FOR METHOD ErfInvImp *
+ **************************************
+
+ Polynomial coefficients for a numerator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0, 0.5].
+
+
+
+ Polynomial coefficients for a denominator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0, 0.5].
+
+
+
+ Polynomial coefficients for a numerator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.5, 0.75].
+
+
+
+ Polynomial coefficients for a denominator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.5, 0.75].
+
+
+
+ Polynomial coefficients for a numerator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x less than 3.
+
+
+
+ Polynomial coefficients for a denominator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x less than 3.
+
+
+
+ Polynomial coefficients for a numerator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x between 3 and 6.
+
+
+
+ Polynomial coefficients for a denominator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x between 3 and 6.
+
+
+
+ Polynomial coefficients for a numerator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x between 6 and 18.
+
+
+
+ Polynomial coefficients for a denominator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x between 6 and 18.
+
+
+
+ Polynomial coefficients for a numerator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x between 18 and 44.
+
+
+
+ Polynomial coefficients for a denominator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x between 18 and 44.
+
+
+
+ Polynomial coefficients for a numerator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x greater than 44.
+
+
+
+ Polynomial coefficients for a denominator of ErfInvImp
+ calculation for Erf^-1(z) in the interval [0.75, 1] with x greater than 44.
+
+
+
+ Calculates the error function.
+ The value to evaluate.
+ the error function evaluated at given value.
+
+
+ - returns 1 if x == double.PositiveInfinity.
+ - returns -1 if x == double.NegativeInfinity.
+
+
+
+
+ Calculates the complementary error function.
+ The value to evaluate.
+ the complementary error function evaluated at given value.
+
+
+ - returns 0 if x == double.PositiveInfinity.
+ - returns 2 if x == double.NegativeInfinity.
+
+
+
+
+ Calculates the inverse error function evaluated at z.
+ The inverse error function evaluated at given value.
+
+
+ - returns double.PositiveInfinity if z >= 1.0.
+ - returns double.NegativeInfinity if z <= -1.0.
+
+
+ Calculates the inverse error function evaluated at z.
+ value to evaluate.
+ the inverse error function evaluated at Z.
+
+
+
+ Implementation of the error function.
+
+ Where to evaluate the error function.
+ Whether to compute 1 - the error function.
+ the error function.
+
+
+ Calculates the complementary inverse error function evaluated at z.
+ The complementary inverse error function evaluated at given value.
+ We have tested this implementation against the arbitrary precision mpmath library
+ and found cases where we can only guarantee 9 significant figures correct.
+
+ - returns double.PositiveInfinity if z <= 0.0.
+ - returns double.NegativeInfinity if z >= 2.0.
+
+
+ calculates the complementary inverse error function evaluated at z.
+ value to evaluate.
+ the complementary inverse error function evaluated at Z.
+
+
+
+ The implementation of the inverse error function.
+
+ First intermediate parameter.
+ Second intermediate parameter.
+ Third intermediate parameter.
+ the inverse error function.
+
+
+
+ Numerically stable exponential minus one, i.e. x -> exp(x)-1
+
+ A number specifying a power.
+ Returns exp(power)-1.
+
+
+
+ Numerically stable exponential minus one, i.e. x -> exp(x)-1
+
+ A number specifying a power.
+ Returns exp(power)-1.
+
+
+
+ Computes the generalized Exponential Integral function (En).
+
+ The argument of the Exponential Integral function.
+ Integer power of the denominator term. Generalization index.
+ The value of the Exponential Integral function.
+
+ This implementation of the computation of the Exponential Integral function follows the derivation in
+ "Handbook of Mathematical Functions, Applied Mathematics Series, Volume 55", Abramowitz, M., and Stegun, I.A. 1964, reprinted 1968 by
+ Dover Publications, New York), Chapters 6, 7, and 26.
+ AND
+ "Advanced mathematical methods for scientists and engineers", Bender, Carl M.; Steven A. Orszag (1978). page 253
+
+
+ for x > 1 uses continued fraction approach that is often used to compute incomplete gamma.
+ for 0 < x <= 1 uses Taylor series expansion
+
+ Our unit tests suggest that the accuracy of the Exponential Integral function is correct up to 13 floating point digits.
+
+
+
+
+ Computes the factorial function x -> x! of an integer number > 0. The function can represent all number up
+ to 22! exactly, all numbers up to 170! using a double representation. All larger values will overflow.
+
+ A value value! for value > 0
+
+ If you need to multiply or divide various such factorials, consider using the logarithmic version
+ instead so you can add instead of multiply and subtract instead of divide, and
+ then exponentiate the result using . This will also circumvent the problem that
+ factorials become very large even for small parameters.
+
+
+
+
+
+ Computes the factorial of an integer.
+
+
+
+
+ Computes the logarithmic factorial function x -> ln(x!) of an integer number > 0.
+
+ A value value! for value > 0
+
+
+
+ Computes the binomial coefficient: n choose k.
+
+ A nonnegative value n.
+ A nonnegative value h.
+ The binomial coefficient: n choose k.
+
+
+
+ Computes the natural logarithm of the binomial coefficient: ln(n choose k).
+
+ A nonnegative value n.
+ A nonnegative value h.
+ The logarithmic binomial coefficient: ln(n choose k).
+
+
+
+ Computes the multinomial coefficient: n choose n1, n2, n3, ...
+
+ A nonnegative value n.
+ An array of nonnegative values that sum to .
+ The multinomial coefficient.
+ if is .
+ If or any of the are negative.
+ If the sum of all is not equal to .
+
+
+
+ The order of the approximation.
+
+
+
+
+ Auxiliary variable when evaluating the function.
+
+
+
+
+ Polynomial coefficients for the approximation.
+
+
+
+
+ Computes the logarithm of the Gamma function.
+
+ The argument of the gamma function.
+ The logarithm of the gamma function.
+
+ This implementation of the computation of the gamma and logarithm of the gamma function follows the derivation in
+ "An Analysis Of The Lanczos Gamma Approximation", Glendon Ralph Pugh, 2004.
+ We use the implementation listed on p. 116 which achieves an accuracy of 16 floating point digits. Although 16 digit accuracy
+ should be sufficient for double values, improving accuracy is possible (see p. 126 in Pugh).
+ Our unit tests suggest that the accuracy of the Gamma function is correct up to 14 floating point digits.
+
+
+
+
+ Computes the Gamma function.
+
+ The argument of the gamma function.
+ The logarithm of the gamma function.
+
+
+ This implementation of the computation of the gamma and logarithm of the gamma function follows the derivation in
+ "An Analysis Of The Lanczos Gamma Approximation", Glendon Ralph Pugh, 2004.
+ We use the implementation listed on p. 116 which should achieve an accuracy of 16 floating point digits. Although 16 digit accuracy
+ should be sufficient for double values, improving accuracy is possible (see p. 126 in Pugh).
+
+ Our unit tests suggest that the accuracy of the Gamma function is correct up to 13 floating point digits.
+
+
+
+
+ Returns the upper incomplete regularized gamma function
+ Q(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0.
+
+ The argument for the gamma function.
+ The lower integral limit.
+ The upper incomplete regularized gamma function.
+
+
+
+ Returns the upper incomplete gamma function
+ Gamma(a,x) = int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0.
+
+ The argument for the gamma function.
+ The lower integral limit.
+ The upper incomplete gamma function.
+
+
+
+ Returns the lower incomplete gamma function
+ gamma(a,x) = int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0.
+
+ The argument for the gamma function.
+ The upper integral limit.
+ The lower incomplete gamma function.
+
+
+
+ Returns the lower incomplete regularized gamma function
+ P(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0.
+
+ The argument for the gamma function.
+ The upper integral limit.
+ The lower incomplete gamma function.
+
+
+
+ Returns the inverse P^(-1) of the regularized lower incomplete gamma function
+ P(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0,
+ such that P^(-1)(a,P(a,x)) == x.
+
+
+
+
+ Computes the Digamma function which is mathematically defined as the derivative of the logarithm of the gamma function.
+ This implementation is based on
+ Jose Bernardo
+ Algorithm AS 103:
+ Psi ( Digamma ) Function,
+ Applied Statistics,
+ Volume 25, Number 3, 1976, pages 315-317.
+ Using the modifications as in Tom Minka's lightspeed toolbox.
+
+ The argument of the digamma function.
+ The value of the DiGamma function at .
+
+
+
+ Computes the inverse Digamma function: this is the inverse of the logarithm of the gamma function. This function will
+ only return solutions that are positive.
+ This implementation is based on the bisection method.
+
+ The argument of the inverse digamma function.
+ The positive solution to the inverse DiGamma function at .
+
+
+
+ Computes the Rising Factorial (Pochhammer function) x -> (x)n, n>= 0. see: https://en.wikipedia.org/wiki/Falling_and_rising_factorials
+
+ The real value of the Rising Factorial for x and n
+
+
+
+ Computes the Falling Factorial (Pochhammer function) x -> x(n), n>= 0. see: https://en.wikipedia.org/wiki/Falling_and_rising_factorials
+
+ The real value of the Falling Factorial for x and n
+
+
+
+ A generalized hypergeometric series is a power series in which the ratio of successive coefficients indexed by n is a rational function of n.
+ This is the most common pFq(a1, ..., ap; b1,...,bq; z) representation
+ see: https://en.wikipedia.org/wiki/Generalized_hypergeometric_function
+
+ The list of coefficients in the numerator
+ The list of coefficients in the denominator
+ The variable in the power series
+ The value of the Generalized HyperGeometric Function.
+
+
+
+ Returns the Hankel function of the first kind.
+ HankelH1(n, z) is defined as BesselJ(n, z) + j * BesselY(n, z).
+
+ The order of the Hankel function.
+ The value to compute the Hankel function of.
+ The Hankel function of the first kind.
+
+
+
+ Returns the exponentially scaled Hankel function of the first kind.
+ ScaledHankelH1(n, z) is given by Exp(-z * j) * HankelH1(n, z) where j = Sqrt(-1).
+
+ The order of the Hankel function.
+ The value to compute the Hankel function of.
+ The exponentially scaled Hankel function of the first kind.
+
+
+
+ Returns the Hankel function of the second kind.
+ HankelH2(n, z) is defined as BesselJ(n, z) - j * BesselY(n, z).
+
+ The order of the Hankel function.
+ The value to compute the Hankel function of.
+ The Hankel function of the second kind.
+
+
+
+ Returns the exponentially scaled Hankel function of the second kind.
+ ScaledHankelH2(n, z) is given by Exp(z * j) * HankelH2(n, z) where j = Sqrt(-1).
+
+ The order of the Hankel function.
+ The value to compute the Hankel function of.
+ The exponentially scaled Hankel function of the second kind.
+
+
+
+ Computes the 'th Harmonic number.
+
+ The Harmonic number which needs to be computed.
+ The t'th Harmonic number.
+
+
+
+ Compute the generalized harmonic number of order n of m. (1 + 1/2^m + 1/3^m + ... + 1/n^m)
+
+ The order parameter.
+ The power parameter.
+ General Harmonic number.
+
+
+
+ Returns the Kelvin function of the first kind.
+ KelvinBe(nu, x) is given by BesselJ(0, j * sqrt(j) * x) where j = sqrt(-1).
+ KelvinBer(nu, x) and KelvinBei(nu, x) are the real and imaginary parts of the KelvinBe(nu, x)
+
+ the order of the the Kelvin function.
+ The value to compute the Kelvin function of.
+ The Kelvin function of the first kind.
+
+
+
+ Returns the Kelvin function ber.
+ KelvinBer(nu, x) is given by the real part of BesselJ(nu, j * sqrt(j) * x) where j = sqrt(-1).
+
+ the order of the the Kelvin function.
+ The value to compute the Kelvin function of.
+ The Kelvin function ber.
+
+
+
+ Returns the Kelvin function ber.
+ KelvinBer(x) is given by the real part of BesselJ(0, j * sqrt(j) * x) where j = sqrt(-1).
+ KelvinBer(x) is equivalent to KelvinBer(0, x).
+
+ The value to compute the Kelvin function of.
+ The Kelvin function ber.
+
+
+
+ Returns the Kelvin function bei.
+ KelvinBei(nu, x) is given by the imaginary part of BesselJ(nu, j * sqrt(j) * x) where j = sqrt(-1).
+
+ the order of the the Kelvin function.
+ The value to compute the Kelvin function of.
+ The Kelvin function bei.
+
+
+
+ Returns the Kelvin function bei.
+ KelvinBei(x) is given by the imaginary part of BesselJ(0, j * sqrt(j) * x) where j = sqrt(-1).
+ KelvinBei(x) is equivalent to KelvinBei(0, x).
+
+ The value to compute the Kelvin function of.
+ The Kelvin function bei.
+
+
+
+ Returns the derivative of the Kelvin function ber.
+
+ The order of the Kelvin function.
+ The value to compute the derivative of the Kelvin function of.
+ the derivative of the Kelvin function ber
+
+
+
+ Returns the derivative of the Kelvin function ber.
+
+ The value to compute the derivative of the Kelvin function of.
+ The derivative of the Kelvin function ber.
+
+
+
+ Returns the derivative of the Kelvin function bei.
+
+ The order of the Kelvin function.
+ The value to compute the derivative of the Kelvin function of.
+ the derivative of the Kelvin function bei.
+
+
+
+ Returns the derivative of the Kelvin function bei.
+
+ The value to compute the derivative of the Kelvin function of.
+ The derivative of the Kelvin function bei.
+
+
+
+ Returns the Kelvin function of the second kind
+ KelvinKe(nu, x) is given by Exp(-nu * pi * j / 2) * BesselK(nu, x * sqrt(j)) where j = sqrt(-1).
+ KelvinKer(nu, x) and KelvinKei(nu, x) are the real and imaginary parts of the KelvinBe(nu, x)
+
+ The order of the Kelvin function.
+ The value to calculate the kelvin function of,
+
+
+
+
+ Returns the Kelvin function ker.
+ KelvinKer(nu, x) is given by the real part of Exp(-nu * pi * j / 2) * BesselK(nu, sqrt(j) * x) where j = sqrt(-1).
+
+ the order of the the Kelvin function.
+ The non-negative real value to compute the Kelvin function of.
+ The Kelvin function ker.
+
+
+
+ Returns the Kelvin function ker.
+ KelvinKer(x) is given by the real part of Exp(-nu * pi * j / 2) * BesselK(0, sqrt(j) * x) where j = sqrt(-1).
+ KelvinKer(x) is equivalent to KelvinKer(0, x).
+
+ The non-negative real value to compute the Kelvin function of.
+ The Kelvin function ker.
+
+
+
+ Returns the Kelvin function kei.
+ KelvinKei(nu, x) is given by the imaginary part of Exp(-nu * pi * j / 2) * BesselK(nu, sqrt(j) * x) where j = sqrt(-1).
+
+ the order of the the Kelvin function.
+ The non-negative real value to compute the Kelvin function of.
+ The Kelvin function kei.
+
+
+
+ Returns the Kelvin function kei.
+ KelvinKei(x) is given by the imaginary part of Exp(-nu * pi * j / 2) * BesselK(0, sqrt(j) * x) where j = sqrt(-1).
+ KelvinKei(x) is equivalent to KelvinKei(0, x).
+
+ The non-negative real value to compute the Kelvin function of.
+ The Kelvin function kei.
+
+
+
+ Returns the derivative of the Kelvin function ker.
+
+ The order of the Kelvin function.
+ The non-negative real value to compute the derivative of the Kelvin function of.
+ The derivative of the Kelvin function ker.
+
+
+
+ Returns the derivative of the Kelvin function ker.
+
+ The value to compute the derivative of the Kelvin function of.
+ The derivative of the Kelvin function ker.
+
+
+
+ Returns the derivative of the Kelvin function kei.
+
+ The order of the Kelvin function.
+ The value to compute the derivative of the Kelvin function of.
+ The derivative of the Kelvin function kei.
+
+
+
+ Returns the derivative of the Kelvin function kei.
+
+ The value to compute the derivative of the Kelvin function of.
+ The derivative of the Kelvin function kei.
+
+
+
+ Computes ln(1+x) with good relative precision when |x| is small
+
+ The parameter for which to compute the log1p function. Range: x > 0.
+
+
+
+ Computes the logistic function. see: http://en.wikipedia.org/wiki/Logistic
+
+ The parameter for which to compute the logistic function.
+ The logistic function of .
+
+
+
+ Computes the logit function, the inverse of the sigmoid logistic function. see: http://en.wikipedia.org/wiki/Logit
+
+ The parameter for which to compute the logit function. This number should be
+ between 0 and 1.
+ The logarithm of divided by 1.0 - .
+
+
+
+ Returns the Marcum Q-function Q[ν](a,b). Marcum Q-function (Wikipedia)
+ References: A. Gil, J. Segura and N.M. Temme. Efficient and accurate algorithms for the
+ computation and inversion of the incomplete gamma function ratios. SIAM J Sci Comput. (2012) 34(6), A2965-A2981
+
+ The order of generalized Marcum Q-function. Range: 1≦ν≦10000
+ The value to compute the Marcum Q-function of. Range: 0≦a≦10000
+ The value to compute the Marcum Q-function of. Range: 0≦b≦10000
+ The Marcum Q-function Q[ν](a,b)
+
+
+
+ Returns the Marcum Q-function Q[ν](a,b). Marcum Q-function (Wikipedia)
+ References: A. Gil, J. Segura and N.M. Temme. Efficient and accurate algorithms for the
+ computation and inversion of the incomplete gamma function ratios. SIAM J Sci Comput. (2012) 34(6), A2965-A2981
+
+ The order of generalized Marcum Q-function. Range: 1≦ν≦10000
+ The value to compute the Marcum Q-function of. Range: 0≦a≦10000
+ The value to compute the Marcum Q-function of. Range: 0≦b≦10000
+ Error flag
+ 0: Computation succesful.
+ 1: Underflow problems. The function value is set to one.
+ 2: Any of the arguments of the function is out of range.The function value is set to zero.
+
+ The Marcum Q-function Q[ν](a,b)
+
+
+
+ Marcum Q-functions
+ References
+ [1] A. Gil, J. Segura and N.M. Temme, Accompanying paper in ACM Trans Math Soft
+ [2] A. Gil, J. Segura and N.M. Temme. Efficient and accurate algorithms for the
+ computation and inversion of the incomplete gamma function ratios. SIAM J Sci Comput.
+ (2012) 34(6), A2965-A2981
+
+
+
+
+ Fortran 95 TINY(0.0d0)
+
+
+
+
+ Fortran 95 HUGE(0.0d0)
+
+
+
+
+ The number 2**(1/4)
+
+
+
+
+ machine-epsilon
+
+
+
+
+ The number log[e](sqrt(2*pi))
+
+
+
+
+ Safe underflow limit
+
+
+
+
+ Safe overflow limit
+
+
+
+
+ Lower limit of exponential
+
+
+
+
+ Demanded accuracy
+
+
+
+
+ Calculation of the Marcum Q-functions P_mu(x,y) and Q_mu(x,y). Marcum Q-function (Wikipedia)
+
+
+
+ In order to avoid, overflow/underflow problems in IEEE double precision arithmetic, the admissible parameter ranges for computation are:
+
+
+ 0≦x≦10000, 0≦y≦10000, 1≦mu≦10000
+
+
+ The aimed relative accuracy is close to 1.0e-11 in the previous parameter domain.
+
+
+ argument of the functions
+ argument of the functions
+ argument of the functions
+ function P_mu(a,x)
+ function Q_mu(a,x)
+ error flag
+ 0: Computation succesful
+ 1: Underflow problems. The function values are set to zero and one.
+ 2: Any of the arguments of the function is out of range.The function values (P_mu(a, x) and Q_mu(a, x)) are set to zero.
+
+
+
+
+ computation of the incomplete gamma function ratios
+
+
+
+
+ Calculation of the incomplete gamma functions ratios P(a,x) and Q(a,x).
+
+ argument of the functions
+ argument of the functions
+ function P(a,x)
+ function Q(a,x)
+ error flag
+
+
+
+ Computes xr in the equations P(a,xr)=p and Q(a,xr)=q with a as a given positive parameter. In most cases, we invert the equation with min(p,q)
+
+ argument of the functions
+ function P(a,x)
+ function Q(a,x)
+ soluction of the equations P(a,xr)=p and Q(a,xr)=q with a as a given positive parameter.
+ error flag
+
+
+
+ dompart is approx. of x^a * exp(-x) / gamma(a+1)
+
+ argument of the functions
+ argument of the functions
+ argument of the functions
+
+
+
+
+ Computation of ln(gamma(x)), x>0
+
+ argument of the functions
+
+
+
+
+ **************************************
+ COEFFICIENTS FOR METHODS bessi0 *
+ **************************************
+
+ Chebyshev coefficients for exp(-x) I0(x)
+ in the interval [0, 8].
+
+ lim(x->0){ exp(-x) I0(x) } = 1.
+
+
+
+ Chebyshev coefficients for exp(-x) sqrt(x) I0(x)
+ in the inverted interval [8, infinity].
+
+ lim(x->inf){ exp(-x) sqrt(x) I0(x) } = 1/sqrt(2pi).
+
+
+
+
+ **************************************
+ COEFFICIENTS FOR METHODS bessi1 *
+ **************************************
+
+ Chebyshev coefficients for exp(-x) I1(x) / x
+ in the interval [0, 8].
+
+ lim(x->0){ exp(-x) I1(x) / x } = 1/2.
+
+
+
+ Chebyshev coefficients for exp(-x) sqrt(x) I1(x)
+ in the inverted interval [8, infinity].
+
+ lim(x->inf){ exp(-x) sqrt(x) I1(x) } = 1/sqrt(2pi).
+
+
+
+
+ **************************************
+ COEFFICIENTS FOR METHODS bessk0, bessk0e *
+ **************************************
+
+ Chebyshev coefficients for K0(x) + log(x/2) I0(x)
+ in the interval [0, 2]. The odd order coefficients are all
+ zero; only the even order coefficients are listed.
+
+ lim(x->0){ K0(x) + log(x/2) I0(x) } = -EUL.
+
+
+
+ Chebyshev coefficients for exp(x) sqrt(x) K0(x)
+ in the inverted interval [2, infinity].
+
+ lim(x->inf){ exp(x) sqrt(x) K0(x) } = sqrt(pi/2).
+
+
+
+
+ **************************************
+ COEFFICIENTS FOR METHODS bessk1, bessk1e *
+ **************************************
+
+ Chebyshev coefficients for x(K1(x) - log(x/2) I1(x))
+ in the interval [0, 2].
+
+ lim(x->0){ x(K1(x) - log(x/2) I1(x)) } = 1.
+
+
+
+ Chebyshev coefficients for exp(x) sqrt(x) K1(x)
+ in the interval [2, infinity].
+
+ lim(x->inf){ exp(x) sqrt(x) K1(x) } = sqrt(pi/2).
+
+
+
+ Returns the modified Bessel function of first kind, order 0 of the argument.
+
+ The function is defined as i0(x) = j0( ix ).
+
+ The range is partitioned into the two intervals [0, 8] and
+ (8, infinity). Chebyshev polynomial expansions are employed
+ in each interval.
+
+ The value to compute the Bessel function of.
+
+
+
+ Returns the modified Bessel function of first kind,
+ order 1 of the argument.
+
+ The function is defined as i1(x) = -i j1( ix ).
+
+ The range is partitioned into the two intervals [0, 8] and
+ (8, infinity). Chebyshev polynomial expansions are employed
+ in each interval.
+
+ The value to compute the Bessel function of.
+
+
+
+ Returns the modified Bessel function of the second kind
+ of order 0 of the argument.
+
+ The range is partitioned into the two intervals [0, 8] and
+ (8, infinity). Chebyshev polynomial expansions are employed
+ in each interval.
+
+ The value to compute the Bessel function of.
+
+
+
+ Returns the exponentially scaled modified Bessel function
+ of the second kind of order 0 of the argument.
+
+ The value to compute the Bessel function of.
+
+
+
+ Returns the modified Bessel function of the second kind
+ of order 1 of the argument.
+
+ The range is partitioned into the two intervals [0, 2] and
+ (2, infinity). Chebyshev polynomial expansions are employed
+ in each interval.
+
+ The value to compute the Bessel function of.
+
+
+
+ Returns the exponentially scaled modified Bessel function
+ of the second kind of order 1 of the argument.
+
+ k1e(x) = exp(x) * k1(x).
+
+ The value to compute the Bessel function of.
+
+
+
+
+ Returns the modified Struve function of order 0.
+
+ The value to compute the function of.
+
+
+
+ Returns the modified Struve function of order 1.
+
+ The value to compute the function of.
+
+
+
+ Returns the difference between the Bessel I0 and Struve L0 functions.
+
+ The value to compute the function of.
+
+
+
+ Returns the difference between the Bessel I1 and Struve L1 functions.
+
+ The value to compute the function of.
+
+
+
+ Returns the spherical Bessel function of the first kind.
+ SphericalBesselJ(n, z) is given by Sqrt(pi/2) / Sqrt(z) * BesselJ(n + 1/2, z).
+
+ The order of the spherical Bessel function.
+ The value to compute the spherical Bessel function of.
+ The spherical Bessel function of the first kind.
+
+
+
+ Returns the spherical Bessel function of the first kind.
+ SphericalBesselJ(n, z) is given by Sqrt(pi/2) / Sqrt(z) * BesselJ(n + 1/2, z).
+
+ The order of the spherical Bessel function.
+ The value to compute the spherical Bessel function of.
+ The spherical Bessel function of the first kind.
+
+
+
+ Returns the spherical Bessel function of the second kind.
+ SphericalBesselY(n, z) is given by Sqrt(pi/2) / Sqrt(z) * BesselY(n + 1/2, z).
+
+ The order of the spherical Bessel function.
+ The value to compute the spherical Bessel function of.
+ The spherical Bessel function of the second kind.
+
+
+
+ Returns the spherical Bessel function of the second kind.
+ SphericalBesselY(n, z) is given by Sqrt(pi/2) / Sqrt(z) * BesselY(n + 1/2, z).
+
+ The order of the spherical Bessel function.
+ The value to compute the spherical Bessel function of.
+ The spherical Bessel function of the second kind.
+
+
+
+ Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2)
+
+ The length of side a of the triangle.
+ The length of side b of the triangle.
+ Returns sqrt(a2 + b2) without underflow/overflow.
+
+
+
+ Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2)
+
+ The length of side a of the triangle.
+ The length of side b of the triangle.
+ Returns sqrt(a2 + b2) without underflow/overflow.
+
+
+
+ Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2)
+
+ The length of side a of the triangle.
+ The length of side b of the triangle.
+ Returns sqrt(a2 + b2) without underflow/overflow.
+
+
+
+ Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2)
+
+ The length of side a of the triangle.
+ The length of side b of the triangle.
+ Returns sqrt(a2 + b2) without underflow/overflow.
+
+
+
+ Evaluation functions, useful for function approximation.
+
+
+
+ Evaluates the series of Chebyshev polynomials Ti at argument x/2.
+ The series is given by
+
+ N-1
+ - '
+ y = > coef[i] T (x/2)
+ - i
+ i=0
+
+ Coefficients are stored in reverse order, i.e. the zero
+ order term is last in the array. Note N is the number of
+ coefficients, not the order.
+
+ If coefficients are for the interval a to b, x must
+ have been transformed to x -> 2(2x - b - a)/(b-a) before
+ entering the routine. This maps x from (a, b) to (-1, 1),
+ over which the Chebyshev polynomials are defined.
+
+ If the coefficients are for the inverted interval, in
+ which (a, b) is mapped to (1/b, 1/a), the transformation
+ required is x -> 2(2ab/x - b - a)/(b-a). If b is infinity,
+ this becomes x -> 4a/x - 1.
+
+ SPEED:
+
+ Taking advantage of the recurrence properties of the
+ Chebyshev polynomials, the routine requires one more
+ addition per loop than evaluating a nested polynomial of
+ the same degree.
+
+ The coefficients of the polynomial.
+ Argument to the polynomial.
+
+ Reference: https://bpm2.svn.codeplex.com/svn/Common.Numeric/Arithmetic.cs
+
+ Marked as Deprecated in
+ http://people.apache.org/~isabel/mahout_site/mahout-matrix/apidocs/org/apache/mahout/jet/math/Arithmetic.html
+
+
+
+
+ Summation of Chebyshev polynomials, using the Clenshaw method with Reinsch modification.
+
+ The no. of terms in the sequence.
+ The coefficients of the Chebyshev series, length n+1.
+ The value at which the series is to be evaluated.
+
+ ORIGINAL AUTHOR:
+ Dr. Allan J. MacLeod; Dept. of Mathematics and Statistics, University of Paisley; High St., PAISLEY, SCOTLAND
+ REFERENCES:
+ "An error analysis of the modified Clenshaw method for evaluating Chebyshev and Fourier series"
+ J. Oliver, J.I.M.A., vol. 20, 1977, pp379-391
+
+
+
+
+ Valley-shaped Rosenbrock function for 2 dimensions: (x,y) -> (1-x)^2 + 100*(y-x^2)^2.
+ This function has a global minimum at (1,1) with f(1,1) = 0.
+ Common range: [-5,10] or [-2.048,2.048].
+
+
+ https://en.wikipedia.org/wiki/Rosenbrock_function
+ http://www.sfu.ca/~ssurjano/rosen.html
+
+
+
+
+ Valley-shaped Rosenbrock function for 2 or more dimensions.
+ This function have a global minimum of all ones and, for 8 > N > 3, a local minimum at (-1,1,...,1).
+
+
+ https://en.wikipedia.org/wiki/Rosenbrock_function
+ http://www.sfu.ca/~ssurjano/rosen.html
+
+
+
+
+ Himmelblau, a multi-modal function: (x,y) -> (x^2+y-11)^2 + (x+y^2-7)^2
+ This function has 4 global minima with f(x,y) = 0.
+ Common range: [-6,6].
+ Named after David Mautner Himmelblau
+
+
+ https://en.wikipedia.org/wiki/Himmelblau%27s_function
+
+
+
+
+ Rastrigin, a highly multi-modal function with many local minima.
+ Global minimum of all zeros with f(0) = 0.
+ Common range: [-5.12,5.12].
+
+
+ https://en.wikipedia.org/wiki/Rastrigin_function
+ http://www.sfu.ca/~ssurjano/rastr.html
+
+
+
+
+ Drop-Wave, a multi-modal and highly complex function with many local minima.
+ Global minimum of all zeros with f(0) = -1.
+ Common range: [-5.12,5.12].
+
+
+ http://www.sfu.ca/~ssurjano/drop.html
+
+
+
+
+ Ackley, a function with many local minima. It is nearly flat in outer regions but has a large hole at the center.
+ Global minimum of all zeros with f(0) = 0.
+ Common range: [-32.768, 32.768].
+
+
+ http://www.sfu.ca/~ssurjano/ackley.html
+
+
+
+
+ Bowl-shaped first Bohachevsky function.
+ Global minimum of all zeros with f(0,0) = 0.
+ Common range: [-100, 100]
+
+
+ http://www.sfu.ca/~ssurjano/boha.html
+
+
+
+
+ Plate-shaped Matyas function.
+ Global minimum of all zeros with f(0,0) = 0.
+ Common range: [-10, 10].
+
+
+ http://www.sfu.ca/~ssurjano/matya.html
+
+
+
+
+ Valley-shaped six-hump camel back function.
+ Two global minima and four local minima. Global minima with f(x) ) -1.0316 at (0.0898,-0.7126) and (-0.0898,0.7126).
+ Common range: x in [-3,3], y in [-2,2].
+
+
+ http://www.sfu.ca/~ssurjano/camel6.html
+
+
+
+
+ Statistics operating on arrays assumed to be unsorted.
+ WARNING: Methods with the Inplace-suffix may modify the data array by reordering its entries.
+
+
+
+
+
+
+
+ Returns the smallest absolute value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the smallest absolute value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the largest absolute value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the largest absolute value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the smallest value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the largest value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the smallest absolute value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the largest absolute value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the geometric mean of the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the harmonic mean of the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population variance from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the population variance from the full population provided as unsorted array.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the population standard deviation from the full population provided as unsorted array.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population variance from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN and NaN for variance if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population standard deviation from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN and NaN for standard deviation if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population covariance from the provided two sample arrays.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ First sample array.
+ Second sample array.
+
+
+
+ Evaluates the population covariance from the full population provided as two arrays.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ First population array.
+ Second population array.
+
+
+
+ Estimates the root mean square (RMS) also known as quadratic mean from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the order statistic (order 1..N) from the unsorted data array.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ One-based order of the statistic, must be between 1 and N (inclusive).
+
+
+
+ Estimates the median value from the unsorted data array.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates the p-Percentile value from the unsorted data array.
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ Percentile selector, between 0 and 100 (inclusive).
+
+
+
+ Estimates the first quartile value from the unsorted data array.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates the third quartile value from the unsorted data array.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates the inter-quartile range from the unsorted data array.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates {min, lower-quantile, median, upper-quantile, max} from the unsorted data array.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates the tau-th quantile from the unsorted data array.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+ R-8, SciPy-(1/3,1/3):
+ Linear interpolation of the approximate medians for order statistics.
+ When tau < (2/3) / (N + 1/3), use x1. When tau >= (N - 1/3) / (N + 1/3), use xN.
+
+
+
+
+ Estimates the tau-th quantile from the unsorted data array.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified
+ by 4 parameters a, b, c and d, consistent with Mathematica.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ Quantile selector, between 0.0 and 1.0 (inclusive)
+ a-parameter
+ b-parameter
+ c-parameter
+ d-parameter
+
+
+
+ Estimates the tau-th quantile from the unsorted data array.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ Quantile selector, between 0.0 and 1.0 (inclusive)
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Evaluates the rank of each entry of the unsorted data array.
+ The rank definition can be specified to be compatible
+ with an existing system.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+
+
+
+ Estimates the arithmetic sample mean from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the geometric mean of the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the harmonic mean of the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population variance from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the population variance from the full population provided as unsorted array.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the population standard deviation from the full population provided as unsorted array.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population variance from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN and NaN for variance if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population standard deviation from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN and NaN for standard deviation if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population covariance from the provided two sample arrays.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ First sample array.
+ Second sample array.
+
+
+
+ Evaluates the population covariance from the full population provided as two arrays.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ First population array.
+ Second population array.
+
+
+
+ Estimates the root mean square (RMS) also known as quadratic mean from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the smallest value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the smallest value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the smallest absolute value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the largest absolute value from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the geometric mean of the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the harmonic mean of the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population variance from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the population variance from the full population provided as unsorted array.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Evaluates the population standard deviation from the full population provided as unsorted array.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population variance from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN and NaN for variance if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population standard deviation from the provided samples as unsorted array.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN and NaN for standard deviation if data has less than two entries or if any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Estimates the unbiased population covariance from the provided two sample arrays.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ First sample array.
+ Second sample array.
+
+
+
+ Evaluates the population covariance from the full population provided as two arrays.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ First population array.
+ Second population array.
+
+
+
+ Estimates the root mean square (RMS) also known as quadratic mean from the unsorted data array.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample array, no sorting is assumed.
+
+
+
+ Returns the order statistic (order 1..N) from the unsorted data array.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ One-based order of the statistic, must be between 1 and N (inclusive).
+
+
+
+ Estimates the median value from the unsorted data array.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates the p-Percentile value from the unsorted data array.
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ Percentile selector, between 0 and 100 (inclusive).
+
+
+
+ Estimates the first quartile value from the unsorted data array.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates the third quartile value from the unsorted data array.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates the inter-quartile range from the unsorted data array.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates {min, lower-quantile, median, upper-quantile, max} from the unsorted data array.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+
+
+
+ Estimates the tau-th quantile from the unsorted data array.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+ R-8, SciPy-(1/3,1/3):
+ Linear interpolation of the approximate medians for order statistics.
+ When tau < (2/3) / (N + 1/3), use x1. When tau >= (N - 1/3) / (N + 1/3), use xN.
+
+
+
+
+ Estimates the tau-th quantile from the unsorted data array.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified
+ by 4 parameters a, b, c and d, consistent with Mathematica.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ Quantile selector, between 0.0 and 1.0 (inclusive)
+ a-parameter
+ b-parameter
+ c-parameter
+ d-parameter
+
+
+
+ Estimates the tau-th quantile from the unsorted data array.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+ Sample array, no sorting is assumed. Will be reordered.
+ Quantile selector, between 0.0 and 1.0 (inclusive)
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Evaluates the rank of each entry of the unsorted data array.
+ The rank definition can be specified to be compatible
+ with an existing system.
+ WARNING: Works inplace and can thus causes the data array to be reordered.
+
+
+
+
+ A class with correlation measures between two datasets.
+
+
+
+
+ Auto-correlation function (ACF) based on FFT for all possible lags k.
+
+ Data array to calculate auto correlation for.
+ An array with the ACF as a function of the lags k.
+
+
+
+ Auto-correlation function (ACF) based on FFT for lags between kMin and kMax.
+
+ The data array to calculate auto correlation for.
+ Max lag to calculate ACF for must be positive and smaller than x.Length.
+ Min lag to calculate ACF for (0 = no shift with acf=1) must be zero or positive and smaller than x.Length.
+ An array with the ACF as a function of the lags k.
+
+
+
+ Auto-correlation function based on FFT for lags k.
+
+ The data array to calculate auto correlation for.
+ Array with lags to calculate ACF for.
+ An array with the ACF as a function of the lags k.
+
+
+
+ The internal method for calculating the auto-correlation.
+
+ The data array to calculate auto-correlation for
+ Min lag to calculate ACF for (0 = no shift with acf=1) must be zero or positive and smaller than x.Length
+ Max lag (EXCLUSIVE) to calculate ACF for must be positive and smaller than x.Length
+ An array with the ACF as a function of the lags k.
+
+
+
+ Computes the Pearson Product-Moment Correlation coefficient.
+
+ Sample data A.
+ Sample data B.
+ The Pearson product-moment correlation coefficient.
+
+
+
+ Computes the Weighted Pearson Product-Moment Correlation coefficient.
+
+ Sample data A.
+ Sample data B.
+ Corresponding weights of data.
+ The Weighted Pearson product-moment correlation coefficient.
+
+
+
+ Computes the Pearson Product-Moment Correlation matrix.
+
+ Array of sample data vectors.
+ The Pearson product-moment correlation matrix.
+
+
+
+ Computes the Pearson Product-Moment Correlation matrix.
+
+ Enumerable of sample data vectors.
+ The Pearson product-moment correlation matrix.
+
+
+
+ Computes the Spearman Ranked Correlation coefficient.
+
+ Sample data series A.
+ Sample data series B.
+ The Spearman ranked correlation coefficient.
+
+
+
+ Computes the Spearman Ranked Correlation matrix.
+
+ Array of sample data vectors.
+ The Spearman ranked correlation matrix.
+
+
+
+ Computes the Spearman Ranked Correlation matrix.
+
+ Enumerable of sample data vectors.
+ The Spearman ranked correlation matrix.
+
+
+
+ Computes the basic statistics of data set. The class meets the
+ NIST standard of accuracy for mean, variance, and standard deviation
+ (the only statistics they provide exact values for) and exceeds them
+ in increased accuracy mode.
+ Recommendation: consider to use RunningStatistics instead.
+
+
+ This type declares a DataContract for out of the box ephemeral serialization
+ with engines like DataContractSerializer, Protocol Buffers and FsPickler,
+ but does not guarantee any compatibility between versions.
+ It is not recommended to rely on this mechanism for durable persistence.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The sample data.
+
+ If set to true, increased accuracy mode used.
+ Increased accuracy mode uses types for internal calculations.
+
+
+ Don't use increased accuracy for data sets containing large values (in absolute value).
+ This may cause the calculations to overflow.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The sample data.
+
+ If set to true, increased accuracy mode used.
+ Increased accuracy mode uses types for internal calculations.
+
+
+ Don't use increased accuracy for data sets containing large values (in absolute value).
+ This may cause the calculations to overflow.
+
+
+
+
+ Gets the size of the sample.
+
+ The size of the sample.
+
+
+
+ Gets the sample mean.
+
+ The sample mean.
+
+
+
+ Gets the unbiased population variance estimator (on a dataset of size N will use an N-1 normalizer).
+
+ The sample variance.
+
+
+
+ Gets the unbiased population standard deviation (on a dataset of size N will use an N-1 normalizer).
+
+ The sample standard deviation.
+
+
+
+ Gets the sample skewness.
+
+ The sample skewness.
+ Returns zero if is less than three.
+
+
+
+ Gets the sample kurtosis.
+
+ The sample kurtosis.
+ Returns zero if is less than four.
+
+
+
+ Gets the maximum sample value.
+
+ The maximum sample value.
+
+
+
+ Gets the minimum sample value.
+
+ The minimum sample value.
+
+
+
+ Computes descriptive statistics from a stream of data values.
+
+ A sequence of datapoints.
+
+
+
+ Computes descriptive statistics from a stream of nullable data values.
+
+ A sequence of datapoints.
+
+
+
+ Computes descriptive statistics from a stream of data values.
+
+ A sequence of datapoints.
+
+
+
+ Computes descriptive statistics from a stream of nullable data values.
+
+ A sequence of datapoints.
+
+
+
+ Internal use. Method use for setting the statistics.
+
+ For setting Mean.
+ For setting Variance.
+ For setting Skewness.
+ For setting Kurtosis.
+ For setting Minimum.
+ For setting Maximum.
+ For setting Count.
+
+
+
+ A consists of a series of s,
+ each representing a region limited by a lower bound (exclusive) and an upper bound (inclusive).
+
+
+ This type declares a DataContract for out of the box ephemeral serialization
+ with engines like DataContractSerializer, Protocol Buffers and FsPickler,
+ but does not guarantee any compatibility between versions.
+ It is not recommended to rely on this mechanism for durable persistence.
+
+
+
+
+ This IComparer performs comparisons between a point and a bucket.
+
+
+
+
+ Compares a point and a bucket. The point will be encapsulated in a bucket with width 0.
+
+ The first bucket to compare.
+ The second bucket to compare.
+ -1 when the point is less than this bucket, 0 when it is in this bucket and 1 otherwise.
+
+
+
+ Lower Bound of the Bucket.
+
+
+
+
+ Upper Bound of the Bucket.
+
+
+
+
+ The number of datapoints in the bucket.
+
+
+ Value may be NaN if this was constructed as a argument.
+
+
+
+
+ Initializes a new instance of the Bucket class.
+
+
+
+
+ Constructs a Bucket that can be used as an argument for a
+ like when performing a Binary search.
+
+ Value to look for
+
+
+
+ Creates a copy of the Bucket with the lowerbound, upperbound and counts exactly equal.
+
+ A cloned Bucket object.
+
+
+
+ Width of the Bucket.
+
+
+
+
+ True if this is a single point argument for
+ when performing a Binary search.
+
+
+
+
+ Default comparer.
+
+
+
+
+ This method check whether a point is contained within this bucket.
+
+ The point to check.
+
+ 0 if the point falls within the bucket boundaries;
+ -1 if the point is smaller than the bucket,
+ +1 if the point is larger than the bucket.
+
+
+
+ Comparison of two disjoint buckets. The buckets cannot be overlapping.
+
+
+ 0 if UpperBound and LowerBound are bit-for-bit equal
+ 1 if This bucket is lower that the compared bucket
+ -1 otherwise
+
+
+
+
+ Checks whether two Buckets are equal.
+
+
+ UpperBound and LowerBound are compared bit-for-bit, but This method tolerates a
+ difference in Count given by .
+
+
+
+
+ Provides a hash code for this bucket.
+
+
+
+
+ Formats a human-readable string for this bucket.
+
+
+
+
+ A class which computes histograms of data.
+
+
+
+
+ Contains all the Buckets of the Histogram.
+
+
+
+
+ Indicates whether the elements of buckets are currently sorted.
+
+
+
+
+ Initializes a new instance of the Histogram class.
+
+
+
+
+ Constructs a Histogram with a specific number of equally sized buckets. The upper and lower bound of the histogram
+ will be set to the smallest and largest datapoint.
+
+ The data sequence to build a histogram on.
+ The number of buckets to use.
+
+
+
+ Constructs a Histogram with a specific number of equally sized buckets.
+
+ The data sequence to build a histogram on.
+ The number of buckets to use.
+ The histogram lower bound.
+ The histogram upper bound.
+
+
+
+ Add one data point to the histogram. If the datapoint falls outside the range of the histogram,
+ the lowerbound or upperbound will automatically adapt.
+
+ The datapoint which we want to add.
+
+
+
+ Add a sequence of data point to the histogram. If the datapoint falls outside the range of the histogram,
+ the lowerbound or upperbound will automatically adapt.
+
+ The sequence of datapoints which we want to add.
+
+
+
+ Adds a Bucket to the Histogram.
+
+
+
+
+ Sort the buckets if needed.
+
+
+
+
+ Returns the Bucket that contains the value v.
+
+ The point to search the bucket for.
+ A copy of the bucket containing point .
+
+
+
+ Returns the index in the Histogram of the Bucket
+ that contains the value v.
+
+ The point to search the bucket index for.
+ The index of the bucket containing the point.
+
+
+
+ Returns the lower bound of the histogram.
+
+
+
+
+ Returns the upper bound of the histogram.
+
+
+
+
+ Gets the n'th bucket.
+
+ The index of the bucket to be returned.
+ A copy of the n'th bucket.
+
+
+
+ Gets the number of buckets.
+
+
+
+
+ Gets the total number of datapoints in the histogram.
+
+
+
+
+ Prints the buckets contained in the .
+
+
+
+
+ Kernel density estimation (KDE).
+
+
+
+
+ Estimate the probability density function of a random variable.
+
+
+ The routine assumes that the provided kernel is well defined, i.e. a real non-negative function that integrates to 1.
+
+
+
+
+ Estimate the probability density function of a random variable with a Gaussian kernel.
+
+
+
+
+ Estimate the probability density function of a random variable with an Epanechnikov kernel.
+ The Epanechnikov kernel is optimal in a mean square error sense.
+
+
+
+
+ Estimate the probability density function of a random variable with a uniform kernel.
+
+
+
+
+ Estimate the probability density function of a random variable with a triangular kernel.
+
+
+
+
+ A Gaussian kernel (PDF of Normal distribution with mean 0 and variance 1).
+ This kernel is the default.
+
+
+
+
+ Epanechnikov Kernel:
+ x => Math.Abs(x) <= 1.0 ? 3.0/4.0(1.0-x^2) : 0.0
+
+
+
+
+ Uniform Kernel:
+ x => Math.Abs(x) <= 1.0 ? 1.0/2.0 : 0.0
+
+
+
+
+ Triangular Kernel:
+ x => Math.Abs(x) <= 1.0 ? (1.0-Math.Abs(x)) : 0.0
+
+
+
+
+ A hybrid Monte Carlo sampler for multivariate distributions.
+
+
+
+
+ Number of parameters in the density function.
+
+
+
+
+ Distribution to sample momentum from.
+
+
+
+
+ Standard deviations used in the sampling of different components of the
+ momentum.
+
+
+
+
+ Gets or sets the standard deviations used in the sampling of different components of the
+ momentum.
+
+ When the length of pSdv is not the same as Length.
+
+
+
+ Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution.
+ The components of the momentum will be sampled from a normal distribution with standard deviation
+ 1 using the default random
+ number generator. A three point estimation will be used for differentiation.
+ This constructor will set the burn interval.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ Number frog leap simulation steps.
+ Size of the frog leap simulation steps.
+ The number of iterations in between returning samples.
+ When the number of burnInterval iteration is negative.
+
+
+
+ Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution.
+ The components of the momentum will be sampled from a normal distribution with standard deviation
+ specified by pSdv using the default random
+ number generator. A three point estimation will be used for differentiation.
+ This constructor will set the burn interval.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ Number frog leap simulation steps.
+ Size of the frog leap simulation steps.
+ The number of iterations in between returning samples.
+ The standard deviations of the normal distributions that are used to sample
+ the components of the momentum.
+ When the number of burnInterval iteration is negative.
+
+
+
+ Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution.
+ The components of the momentum will be sampled from a normal distribution with standard deviation
+ specified by pSdv using the a random number generator provided by the user.
+ A three point estimation will be used for differentiation.
+ This constructor will set the burn interval.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ Number frog leap simulation steps.
+ Size of the frog leap simulation steps.
+ The number of iterations in between returning samples.
+ The standard deviations of the normal distributions that are used to sample
+ the components of the momentum.
+ Random number generator used for sampling the momentum.
+ When the number of burnInterval iteration is negative.
+
+
+
+ Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution.
+ The components of the momentum will be sampled from a normal distribution with standard deviations
+ given by pSdv. This constructor will set the burn interval, the method used for
+ numerical differentiation and the random number generator.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ Number frog leap simulation steps.
+ Size of the frog leap simulation steps.
+ The number of iterations in between returning samples.
+ The standard deviations of the normal distributions that are used to sample
+ the components of the momentum.
+ Random number generator used for sampling the momentum.
+ The method used for numerical differentiation.
+ When the number of burnInterval iteration is negative.
+ When the length of pSdv is not the same as x0.
+
+
+
+ Initialize parameters.
+
+ The current location of the sampler.
+
+
+
+ Checking that the location and the momentum are of the same dimension and that each component is positive.
+
+ The standard deviations used for sampling the momentum.
+ When the length of pSdv is not the same as Length or if any
+ component is negative.
+ When pSdv is null.
+
+
+
+ Use for copying objects in the Burn method.
+
+ The source of copying.
+ A copy of the source object.
+
+
+
+ Use for creating temporary objects in the Burn method.
+
+ An object of type T.
+
+
+
+
+
+
+
+
+
+
+
+
+ Samples the momentum from a normal distribution.
+
+ The momentum to be randomized.
+
+
+
+ The default method used for computing the gradient. Uses a simple three point estimation.
+
+ Function which the gradient is to be evaluated.
+ The location where the gradient is to be evaluated.
+ The gradient of the function at the point x.
+
+
+
+ The Hybrid (also called Hamiltonian) Monte Carlo produces samples from distribution P using a set
+ of Hamiltonian equations to guide the sampling process. It uses the negative of the log density as
+ a potential energy, and a randomly generated momentum to set up a Hamiltonian system, which is then used
+ to sample the distribution. This can result in a faster convergence than the random walk Metropolis sampler
+ ().
+
+ The type of samples this sampler produces.
+
+
+
+ The delegate type that defines a derivative evaluated at a certain point.
+
+ Function to be differentiated.
+ Value where the derivative is computed.
+
+
+
+ Evaluates the energy function of the target distribution.
+
+
+
+
+ The current location of the sampler.
+
+
+
+
+ The number of burn iterations between two samples.
+
+
+
+
+ The size of each step in the Hamiltonian equation.
+
+
+
+
+ The number of iterations in the Hamiltonian equation.
+
+
+
+
+ The algorithm used for differentiation.
+
+
+
+
+ Gets or sets the number of iterations in between returning samples.
+
+ When burn interval is negative.
+
+
+
+ Gets or sets the number of iterations in the Hamiltonian equation.
+
+ When frog leap steps is negative or zero.
+
+
+
+ Gets or sets the size of each step in the Hamiltonian equation.
+
+ When step size is negative or zero.
+
+
+
+ Constructs a new Hybrid Monte Carlo sampler.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ Number frog leap simulation steps.
+ Size of the frog leap simulation steps.
+ The number of iterations in between returning samples.
+ Random number generator used for sampling the momentum.
+ The method used for differentiation.
+ When the number of burnInterval iteration is negative.
+ When either x0, pdfLnP or diff is null.
+
+
+
+ Returns a sample from the distribution P.
+
+
+
+
+ This method runs the sampler for a number of iterations without returning a sample
+
+
+
+
+ Method used to update the sample location. Used in the end of the loop.
+
+ The old energy.
+ The old gradient/derivative of the energy.
+ The new sample.
+ The new gradient/derivative of the energy.
+ The new energy.
+ The difference between the old Hamiltonian and new Hamiltonian. Use to determine
+ if an update should take place.
+
+
+
+ Use for creating temporary objects in the Burn method.
+
+ An object of type T.
+
+
+
+ Use for copying objects in the Burn method.
+
+ The source of copying.
+ A copy of the source object.
+
+
+
+ Method for doing dot product.
+
+ First vector/scalar in the product.
+ Second vector/scalar in the product.
+
+
+
+ Method for adding, multiply the second vector/scalar by factor and then
+ add it to the first vector/scalar.
+
+ First vector/scalar.
+ Scalar factor multiplying by the second vector/scalar.
+ Second vector/scalar.
+
+
+
+ Multiplying the second vector/scalar by factor and then subtract it from
+ the first vector/scalar.
+
+ First vector/scalar.
+ Scalar factor to be multiplied to the second vector/scalar.
+ Second vector/scalar.
+
+
+
+ Method for sampling a random momentum.
+
+ Momentum to be randomized.
+
+
+
+ The Hamiltonian equations that is used to produce the new sample.
+
+
+
+
+ Method to compute the Hamiltonian used in the method.
+
+ The momentum.
+ The energy.
+ Hamiltonian=E+p.p/2
+
+
+
+ Method to check and set a quantity to a non-negative value.
+
+ Proposed value to be checked.
+ Returns value if it is greater than or equal to zero.
+ Throws when value is negative.
+
+
+
+ Method to check and set a quantity to a non-negative value.
+
+ Proposed value to be checked.
+ Returns value if it is greater than to zero.
+ Throws when value is negative or zero.
+
+
+
+ Method to check and set a quantity to a non-negative value.
+
+ Proposed value to be checked.
+ Returns value if it is greater than zero.
+ Throws when value is negative or zero.
+
+
+
+ Provides utilities to analysis the convergence of a set of samples from
+ a .
+
+
+
+
+ Computes the auto correlations of a series evaluated by a function f.
+
+ The series for computing the auto correlation.
+ The lag in the series
+ The function used to evaluate the series.
+ The auto correlation.
+ Throws if lag is zero or if lag is
+ greater than or equal to the length of Series.
+
+
+
+ Computes the effective size of the sample when evaluated by a function f.
+
+ The samples.
+ The function use for evaluating the series.
+ The effective size when auto correlation is taken into account.
+
+
+
+ A method which samples datapoints from a proposal distribution. The implementation of this sampler
+ is stateless: no variables are saved between two calls to Sample. This proposal is different from
+ in that it doesn't take any parameters; it samples random
+ variables from the whole domain.
+
+ The type of the datapoints.
+ A sample from the proposal distribution.
+
+
+
+ A method which samples datapoints from a proposal distribution given an initial sample. The implementation
+ of this sampler is stateless: no variables are saved between two calls to Sample. This proposal is different from
+ in that it samples locally around an initial point. In other words, it
+ makes a small local move rather than producing a global sample from the proposal.
+
+ The type of the datapoints.
+ The initial sample.
+ A sample from the proposal distribution.
+
+
+
+ A function which evaluates a density.
+
+ The type of data the distribution is over.
+ The sample we want to evaluate the density for.
+
+
+
+ A function which evaluates a log density.
+
+ The type of data the distribution is over.
+ The sample we want to evaluate the log density for.
+
+
+
+ A function which evaluates the log of a transition kernel probability.
+
+ The type for the space over which this transition kernel is defined.
+ The new state in the transition.
+ The previous state in the transition.
+ The log probability of the transition.
+
+
+
+ The interface which every sampler must implement.
+
+ The type of samples this sampler produces.
+
+
+
+ The random number generator for this class.
+
+
+
+
+ Keeps track of the number of accepted samples.
+
+
+
+
+ Keeps track of the number of calls to the proposal sampler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Thread safe instances are two and half times slower than non-thread
+ safe classes.
+
+
+
+ Gets or sets the random number generator.
+
+ When the random number generator is null.
+
+
+
+ Returns one sample.
+
+
+
+
+ Returns a number of samples.
+
+ The number of samples we want.
+ An array of samples.
+
+
+
+ Gets the acceptance rate of the sampler.
+
+
+
+
+ Metropolis-Hastings sampling produces samples from distribution P by sampling from a proposal distribution Q
+ and accepting/rejecting based on the density of P. Metropolis-Hastings sampling doesn't require that the
+ proposal distribution Q is symmetric in comparison to . It does need to
+ be able to evaluate the proposal sampler's log density though. All densities are required to be in log space.
+
+ The Metropolis-Hastings sampler is a stateful sampler. It keeps track of where it currently is in the domain
+ of the distribution P.
+
+ The type of samples this sampler produces.
+
+
+
+ Evaluates the log density function of the target distribution.
+
+
+
+
+ Evaluates the log transition probability for the proposal distribution.
+
+
+
+
+ A function which samples from a proposal distribution.
+
+
+
+
+ The current location of the sampler.
+
+
+
+
+ The log density at the current location.
+
+
+
+
+ The number of burn iterations between two samples.
+
+
+
+
+ Constructs a new Metropolis-Hastings sampler using the default random number generator. This
+ constructor will set the burn interval.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ The log transition probability for the proposal distribution.
+ A method that samples from the proposal distribution.
+ The number of iterations in between returning samples.
+ When the number of burnInterval iteration is negative.
+
+
+
+ Gets or sets the number of iterations in between returning samples.
+
+ When burn interval is negative.
+
+
+
+ This method runs the sampler for a number of iterations without returning a sample
+
+
+
+
+ Returns a sample from the distribution P.
+
+
+
+
+ Metropolis sampling produces samples from distribution P by sampling from a proposal distribution Q
+ and accepting/rejecting based on the density of P. Metropolis sampling requires that the proposal
+ distribution Q is symmetric. All densities are required to be in log space.
+
+ The Metropolis sampler is a stateful sampler. It keeps track of where it currently is in the domain
+ of the distribution P.
+
+ The type of samples this sampler produces.
+
+
+
+ Evaluates the log density function of the sampling distribution.
+
+
+
+
+ A function which samples from a proposal distribution.
+
+
+
+
+ The current location of the sampler.
+
+
+
+
+ The log density at the current location.
+
+
+
+
+ The number of burn iterations between two samples.
+
+
+
+
+ Constructs a new Metropolis sampler using the default random number generator.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ A method that samples from the symmetric proposal distribution.
+ The number of iterations in between returning samples.
+ When the number of burnInterval iteration is negative.
+
+
+
+ Gets or sets the number of iterations in between returning samples.
+
+ When burn interval is negative.
+
+
+
+ This method runs the sampler for a number of iterations without returning a sample
+
+
+
+
+ Returns a sample from the distribution P.
+
+
+
+
+ Rejection sampling produces samples from distribution P by sampling from a proposal distribution Q
+ and accepting/rejecting based on the density of P and Q. The density of P and Q don't need to
+ to be normalized, but we do need that for each x, P(x) < Q(x).
+
+ The type of samples this sampler produces.
+
+
+
+ Evaluates the density function of the sampling distribution.
+
+
+
+
+ Evaluates the density function of the proposal distribution.
+
+
+
+
+ A function which samples from a proposal distribution.
+
+
+
+
+ Constructs a new rejection sampler using the default random number generator.
+
+ The density of the distribution we want to sample from.
+ The density of the proposal distribution.
+ A method that samples from the proposal distribution.
+
+
+
+ Returns a sample from the distribution P.
+
+ When the algorithms detects that the proposal
+ distribution doesn't upper bound the target distribution.
+
+
+
+ A hybrid Monte Carlo sampler for univariate distributions.
+
+
+
+
+ Distribution to sample momentum from.
+
+
+
+
+ Standard deviations used in the sampling of the
+ momentum.
+
+
+
+
+ Gets or sets the standard deviation used in the sampling of the
+ momentum.
+
+ When standard deviation is negative.
+
+
+
+ Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution.
+ The momentum will be sampled from a normal distribution with standard deviation
+ specified by pSdv using the default random
+ number generator. A three point estimation will be used for differentiation.
+ This constructor will set the burn interval.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ Number frog leap simulation steps.
+ Size of the frog leap simulation steps.
+ The number of iterations in between returning samples.
+ The standard deviation of the normal distribution that is used to sample
+ the momentum.
+ When the number of burnInterval iteration is negative.
+
+
+
+ Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution.
+ The momentum will be sampled from a normal distribution with standard deviation
+ specified by pSdv using a random
+ number generator provided by the user. A three point estimation will be used for differentiation.
+ This constructor will set the burn interval.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ Number frog leap simulation steps.
+ Size of the frog leap simulation steps.
+ The number of iterations in between returning samples.
+ The standard deviation of the normal distribution that is used to sample
+ the momentum.
+ Random number generator used to sample the momentum.
+ When the number of burnInterval iteration is negative.
+
+
+
+ Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution.
+ The momentum will be sampled from a normal distribution with standard deviation
+ given by pSdv using a random
+ number generator provided by the user. This constructor will set both the burn interval and the method used for
+ numerical differentiation.
+
+ The initial sample.
+ The log density of the distribution we want to sample from.
+ Number frog leap simulation steps.
+ Size of the frog leap simulation steps.
+ The number of iterations in between returning samples.
+ The standard deviation of the normal distribution that is used to sample
+ the momentum.
+ The method used for numerical differentiation.
+ Random number generator used for sampling the momentum.
+ When the number of burnInterval iteration is negative.
+
+
+
+ Use for copying objects in the Burn method.
+
+ The source of copying.
+ A copy of the source object.
+
+
+
+ Use for creating temporary objects in the Burn method.
+
+ An object of type T.
+
+
+
+
+
+
+
+
+
+
+
+
+ Samples the momentum from a normal distribution.
+
+ The momentum to be randomized.
+
+
+
+ The default method used for computing the derivative. Uses a simple three point estimation.
+
+ Function for which the derivative is to be evaluated.
+ The location where the derivative is to be evaluated.
+ The derivative of the function at the point x.
+
+
+
+ Slice sampling produces samples from distribution P by uniformly sampling from under the pdf of P using
+ a technique described in "Slice Sampling", R. Neal, 2003. All densities are required to be in log space.
+
+ The slice sampler is a stateful sampler. It keeps track of where it currently is in the domain
+ of the distribution P.
+
+
+
+
+ Evaluates the log density function of the target distribution.
+
+
+
+
+ The current location of the sampler.
+
+
+
+
+ The log density at the current location.
+
+
+
+
+ The number of burn iterations between two samples.
+
+
+
+
+ The scale of the slice sampler.
+
+
+
+
+ Constructs a new Slice sampler using the default random
+ number generator. The burn interval will be set to 0.
+
+ The initial sample.
+ The density of the distribution we want to sample from.
+ The scale factor of the slice sampler.
+ When the scale of the slice sampler is not positive.
+
+
+
+ Constructs a new slice sampler using the default random number generator. It
+ will set the number of burnInterval iterations and run a burnInterval phase.
+
+ The initial sample.
+ The density of the distribution we want to sample from.
+ The number of iterations in between returning samples.
+ The scale factor of the slice sampler.
+ When the number of burnInterval iteration is negative.
+ When the scale of the slice sampler is not positive.
+
+
+
+ Gets or sets the number of iterations in between returning samples.
+
+ When burn interval is negative.
+
+
+
+ Gets or sets the scale of the slice sampler.
+
+
+
+
+ This method runs the sampler for a number of iterations without returning a sample
+
+
+
+
+ Returns a sample from the distribution P.
+
+
+
+
+ Running statistics over a window of data, allows updating by adding values.
+
+
+
+
+ Gets the total number of samples.
+
+
+
+
+ Returns the minimum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Returns the maximum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Evaluates the sample mean, an estimate of the population mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population variance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+
+
+
+ Evaluates the variance from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+
+
+
+ Evaluates the standard deviation from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Update the running statistics by adding another observed sample (in-place).
+
+
+
+
+ Update the running statistics by adding a sequence of observed sample (in-place).
+
+
+
+ Replace ties with their mean (non-integer ranks). Default.
+
+
+ Replace ties with their minimum (typical sports ranking).
+
+
+ Replace ties with their maximum.
+
+
+ Permutation with increasing values at each index of ties.
+
+
+
+ Running statistics accumulator, allows updating by adding values
+ or by combining two accumulators.
+
+
+ This type declares a DataContract for out of the box ephemeral serialization
+ with engines like DataContractSerializer, Protocol Buffers and FsPickler,
+ but does not guarantee any compatibility between versions.
+ It is not recommended to rely on this mechanism for durable persistence.
+
+
+
+
+ Gets the total number of samples.
+
+
+
+
+ Returns the minimum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Returns the maximum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Evaluates the sample mean, an estimate of the population mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population variance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+
+
+
+ Evaluates the variance from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+
+
+
+ Evaluates the standard deviation from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population skewness from the provided samples.
+ Uses a normalizer (Bessel's correction; type 2).
+ Returns NaN if data has less than three entries or if any entry is NaN.
+
+
+
+
+ Evaluates the population skewness from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population excess kurtosis from the provided samples.
+ Uses a normalizer (Bessel's correction; type 2).
+ Returns NaN if data has less than four entries or if any entry is NaN.
+
+
+
+
+ Evaluates the population excess kurtosis from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+ Returns NaN if data has less than three entries or if any entry is NaN.
+
+
+
+
+ Update the running statistics by adding another observed sample (in-place).
+
+
+
+
+ Update the running statistics by adding a sequence of observed sample (in-place).
+
+
+
+
+ Create a new running statistics over the combined samples of two existing running statistics.
+
+
+
+
+ Running weighted statistics accumulator, allows updating by adding values
+ or by combining two accumulators. Weights are reliability weights, not frequency weights.
+
+
+ This type declares a DataContract for out of the box ephemeral serialization
+ with engines like DataContractSerializer, Protocol Buffers and FsPickler,
+ but does not guarantee any compatibility between versions.
+ It is not recommended to rely on this mechanism for durable persistence.
+
+
+
+
+ Second moment
+
+
+
+
+ Third moment
+
+
+
+
+ Fourth moment
+
+
+
+
+ Total weight
+
+
+
+
+ Total of weights to the second power
+
+
+
+
+ Total of weights to the third power
+
+
+
+
+ Total of weights to the fourth power
+
+
+
+
+ The denominator in the variance calculation to perform a Bessel correction.
+
+
+
+
+ Gets the total number of samples with non-zero weight.
+
+
+
+
+ Returns the minimum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Returns the maximum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Evaluates the sample mean, an estimate of the population mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population variance from the provided samples.
+ Will use the Bessel correction for reliability weighting.
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+
+
+
+ Evaluates the variance from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples.
+ Will use the Bessel correction for reliability weighting.
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+
+
+
+ Evaluates the standard deviation from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population skewness from the provided samples.
+ Will use the Bessel correction for reliability weighting.
+ Returns NaN if data has less than three entries or if any entry is NaN.
+
+
+
+
+ Evaluates the population skewness from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+
+
+
+ Estimates the unbiased population excess kurtosis from the provided samples.
+ Will use the Bessel correction for reliability weighting.
+ Returns NaN if data has less than four entries or if any entry is NaN.
+ Equivalent formula for this for weighted distributions are unknown.
+
+
+
+
+ Evaluates the population excess kurtosis from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+ Returns NaN if data has less than three entries or if any entry is NaN.
+
+
+
+
+ Evaluates the total weight of the population.
+
+
+
+
+ The Kish's Effective Sample Size
+
+
+
+
+ Update the running statistics by adding another observed sample (in-place).
+
+
+
+
+ Update the running statistics by adding a sequence of weighted observatopms (in-place).
+
+
+
+
+ Update the running statistics by adding a sequence of weighted observatopms (in-place).
+
+
+
+
+ Create a new running statistics over the combined samples of two existing running statistics.
+
+
+
+
+ Statistics operating on an array already sorted ascendingly.
+
+
+
+
+
+
+
+ Returns the smallest value from the sorted data array (ascending).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Returns the largest value from the sorted data array (ascending).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Returns the order statistic (order 1..N) from the sorted data array (ascending).
+
+ Sample array, must be sorted ascendingly.
+ One-based order of the statistic, must be between 1 and N (inclusive).
+
+
+
+ Estimates the median value from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates the p-Percentile value from the sorted data array (ascending).
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+ Percentile selector, between 0 and 100 (inclusive).
+
+
+
+ Estimates the first quartile value from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates the third quartile value from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates the inter-quartile range from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates {min, lower-quantile, median, upper-quantile, max} from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates the tau-th quantile from the sorted data array (ascending).
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+ R-8, SciPy-(1/3,1/3):
+ Linear interpolation of the approximate medians for order statistics.
+ When tau < (2/3) / (N + 1/3), use x1. When tau >= (N - 1/3) / (N + 1/3), use xN.
+
+
+
+
+ Estimates the tau-th quantile from the sorted data array (ascending).
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified
+ by 4 parameters a, b, c and d, consistent with Mathematica.
+
+ Sample array, must be sorted ascendingly.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+ a-parameter
+ b-parameter
+ c-parameter
+ d-parameter
+
+
+
+ Estimates the tau-th quantile from the sorted data array (ascending).
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ Sample array, must be sorted ascendingly.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Estimates the empirical cumulative distribution function (CDF) at x from the sorted data array (ascending).
+
+ The data sample sequence.
+ The value where to estimate the CDF at.
+
+
+
+ Estimates the quantile tau from the sorted data array (ascending).
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile value.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Evaluates the rank of each entry of the sorted data array (ascending).
+ The rank definition can be specified to be compatible
+ with an existing system.
+
+
+
+
+ Returns the smallest value from the sorted data array (ascending).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Returns the largest value from the sorted data array (ascending).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Returns the order statistic (order 1..N) from the sorted data array (ascending).
+
+ Sample array, must be sorted ascendingly.
+ One-based order of the statistic, must be between 1 and N (inclusive).
+
+
+
+ Estimates the median value from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates the p-Percentile value from the sorted data array (ascending).
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+ Percentile selector, between 0 and 100 (inclusive).
+
+
+
+ Estimates the first quartile value from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates the third quartile value from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates the inter-quartile range from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates {min, lower-quantile, median, upper-quantile, max} from the sorted data array (ascending).
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+
+
+
+ Estimates the tau-th quantile from the sorted data array (ascending).
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ Sample array, must be sorted ascendingly.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+ R-8, SciPy-(1/3,1/3):
+ Linear interpolation of the approximate medians for order statistics.
+ When tau < (2/3) / (N + 1/3), use x1. When tau >= (N - 1/3) / (N + 1/3), use xN.
+
+
+
+
+ Estimates the tau-th quantile from the sorted data array (ascending).
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified
+ by 4 parameters a, b, c and d, consistent with Mathematica.
+
+ Sample array, must be sorted ascendingly.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+ a-parameter
+ b-parameter
+ c-parameter
+ d-parameter
+
+
+
+ Estimates the tau-th quantile from the sorted data array (ascending).
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ Sample array, must be sorted ascendingly.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Estimates the empirical cumulative distribution function (CDF) at x from the sorted data array (ascending).
+
+ The data sample sequence.
+ The value where to estimate the CDF at.
+
+
+
+ Estimates the quantile tau from the sorted data array (ascending).
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile value.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Evaluates the rank of each entry of the sorted data array (ascending).
+ The rank definition can be specified to be compatible
+ with an existing system.
+
+
+
+
+ Extension methods to return basic statistics on set of data.
+
+
+
+
+ Returns the minimum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Returns the minimum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Returns the minimum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+ Null-entries are ignored.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Returns the maximum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The maximum value in the sample data.
+
+
+
+ Returns the maximum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The maximum value in the sample data.
+
+
+
+ Returns the maximum value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+ Null-entries are ignored.
+
+ The sample data.
+ The maximum value in the sample data.
+
+
+
+ Returns the minimum absolute value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Returns the minimum absolute value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Returns the maximum absolute value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The maximum value in the sample data.
+
+
+
+ Returns the maximum absolute value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The maximum value in the sample data.
+
+
+
+ Returns the minimum magnitude and phase value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Returns the minimum magnitude and phase value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Returns the maximum magnitude and phase value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Returns the maximum magnitude and phase value in the sample data.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The sample data.
+ The minimum value in the sample data.
+
+
+
+ Evaluates the sample mean, an estimate of the population mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The data to calculate the mean of.
+ The mean of the sample.
+
+
+
+ Evaluates the sample mean, an estimate of the population mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The data to calculate the mean of.
+ The mean of the sample.
+
+
+
+ Evaluates the sample mean, an estimate of the population mean.
+ Returns NaN if data is empty or if any entry is NaN.
+ Null-entries are ignored.
+
+ The data to calculate the mean of.
+ The mean of the sample.
+
+
+
+ Evaluates the geometric mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The data to calculate the geometric mean of.
+ The geometric mean of the sample.
+
+
+
+ Evaluates the geometric mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The data to calculate the geometric mean of.
+ The geometric mean of the sample.
+
+
+
+ Evaluates the harmonic mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The data to calculate the harmonic mean of.
+ The harmonic mean of the sample.
+
+
+
+ Evaluates the harmonic mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The data to calculate the harmonic mean of.
+ The harmonic mean of the sample.
+
+
+
+ Estimates the unbiased population variance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Estimates the unbiased population variance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Estimates the unbiased population variance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+ Null-entries are ignored.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Evaluates the variance from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The full population data.
+
+
+
+ Evaluates the variance from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The full population data.
+
+
+
+ Evaluates the variance from the provided full population.
+ On a dataset of size N will use an N normalize and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+ Null-entries are ignored.
+
+ The full population data.
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+ Null-entries are ignored.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Evaluates the standard deviation from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The full population data.
+
+
+
+ Evaluates the standard deviation from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The full population data.
+
+
+
+ Evaluates the standard deviation from the provided full population.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+ Null-entries are ignored.
+
+ The full population data.
+
+
+
+ Estimates the unbiased population skewness from the provided samples.
+ Uses a normalizer (Bessel's correction; type 2).
+ Returns NaN if data has less than three entries or if any entry is NaN.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Estimates the unbiased population skewness from the provided samples.
+ Uses a normalizer (Bessel's correction; type 2).
+ Returns NaN if data has less than three entries or if any entry is NaN.
+ Null-entries are ignored.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Evaluates the skewness from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ The full population data.
+
+
+
+ Evaluates the skewness from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+ Null-entries are ignored.
+
+ The full population data.
+
+
+
+ Estimates the unbiased population kurtosis from the provided samples.
+ Uses a normalizer (Bessel's correction; type 2).
+ Returns NaN if data has less than four entries or if any entry is NaN.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Estimates the unbiased population kurtosis from the provided samples.
+ Uses a normalizer (Bessel's correction; type 2).
+ Returns NaN if data has less than four entries or if any entry is NaN.
+ Null-entries are ignored.
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Evaluates the kurtosis from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+ Returns NaN if data has less than three entries or if any entry is NaN.
+
+ The full population data.
+
+
+
+ Evaluates the kurtosis from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+ Returns NaN if data has less than three entries or if any entry is NaN.
+ Null-entries are ignored.
+
+ The full population data.
+
+
+
+ Estimates the sample mean and the unbiased population variance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or if any entry is NaN and NaN for variance if data has less than two entries or if any entry is NaN.
+
+ The data to calculate the mean of.
+ The mean of the sample.
+
+
+
+ Estimates the sample mean and the unbiased population variance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or if any entry is NaN and NaN for variance if data has less than two entries or if any entry is NaN.
+
+ The data to calculate the mean of.
+ The mean of the sample.
+
+
+
+ Estimates the sample mean and the unbiased population standard deviation from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or if any entry is NaN and NaN for standard deviation if data has less than two entries or if any entry is NaN.
+
+ The data to calculate the mean of.
+ The mean of the sample.
+
+
+
+ Estimates the sample mean and the unbiased population standard deviation from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or if any entry is NaN and NaN for standard deviation if data has less than two entries or if any entry is NaN.
+
+ The data to calculate the mean of.
+ The mean of the sample.
+
+
+
+ Estimates the unbiased population skewness and kurtosis from the provided samples in a single pass.
+ Uses a normalizer (Bessel's correction; type 2).
+
+ A subset of samples, sampled from the full population.
+
+
+
+ Evaluates the skewness and kurtosis from the full population.
+ Does not use a normalizer and would thus be biased if applied to a subset (type 1).
+
+ The full population data.
+
+
+
+ Estimates the unbiased population covariance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ A subset of samples, sampled from the full population.
+ A subset of samples, sampled from the full population.
+
+
+
+ Estimates the unbiased population covariance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ A subset of samples, sampled from the full population.
+ A subset of samples, sampled from the full population.
+
+
+
+ Estimates the unbiased population covariance from the provided samples.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+ Null-entries are ignored.
+
+ A subset of samples, sampled from the full population.
+ A subset of samples, sampled from the full population.
+
+
+
+ Evaluates the population covariance from the provided full populations.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The full population data.
+ The full population data.
+
+
+
+ Evaluates the population covariance from the provided full populations.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The full population data.
+ The full population data.
+
+
+
+ Evaluates the population covariance from the provided full populations.
+ On a dataset of size N will use an N normalize and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+ Null-entries are ignored.
+
+ The full population data.
+ The full population data.
+
+
+
+ Evaluates the root mean square (RMS) also known as quadratic mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The data to calculate the RMS of.
+
+
+
+ Evaluates the root mean square (RMS) also known as quadratic mean.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ The data to calculate the RMS of.
+
+
+
+ Evaluates the root mean square (RMS) also known as quadratic mean.
+ Returns NaN if data is empty or if any entry is NaN.
+ Null-entries are ignored.
+
+ The data to calculate the mean of.
+
+
+
+ Estimates the sample median from the provided samples (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the sample median from the provided samples (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the sample median from the provided samples (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Estimates the tau-th quantile from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile definition, to choose what product/definition it should be consistent with
+
+
+
+ Estimates the p-Percentile value from the provided samples.
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+ Percentile selector, between 0 and 100 (inclusive).
+
+
+
+ Estimates the p-Percentile value from the provided samples.
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+ Percentile selector, between 0 and 100 (inclusive).
+
+
+
+ Estimates the p-Percentile value from the provided samples.
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+ Percentile selector, between 0 and 100 (inclusive).
+
+
+
+ Estimates the p-Percentile value from the provided samples.
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the p-Percentile value from the provided samples.
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the p-Percentile value from the provided samples.
+ If a non-integer Percentile is needed, use Quantile instead.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the first quartile value from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the first quartile value from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the first quartile value from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the third quartile value from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the third quartile value from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the third quartile value from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the inter-quartile range from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the inter-quartile range from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates the inter-quartile range from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates {min, lower-quantile, median, upper-quantile, max} from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates {min, lower-quantile, median, upper-quantile, max} from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Estimates {min, lower-quantile, median, upper-quantile, max} from the provided samples.
+ Approximately median-unbiased regardless of the sample distribution (R8).
+
+ The data sample sequence.
+
+
+
+ Returns the order statistic (order 1..N) from the provided samples.
+
+ The data sample sequence.
+ One-based order of the statistic, must be between 1 and N (inclusive).
+
+
+
+ Returns the order statistic (order 1..N) from the provided samples.
+
+ The data sample sequence.
+ One-based order of the statistic, must be between 1 and N (inclusive).
+
+
+
+ Returns the order statistic (order 1..N) from the provided samples.
+
+ The data sample sequence.
+
+
+
+ Returns the order statistic (order 1..N) from the provided samples.
+
+ The data sample sequence.
+
+
+
+ Evaluates the rank of each entry of the provided samples.
+ The rank definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Evaluates the rank of each entry of the provided samples.
+ The rank definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Evaluates the rank of each entry of the provided samples.
+ The rank definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Estimates the quantile tau from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile value.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Estimates the quantile tau from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile value.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Estimates the quantile tau from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Quantile value.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Estimates the quantile tau from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Estimates the quantile tau from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Estimates the quantile tau from the provided samples.
+ The tau-th quantile is the data value where the cumulative distribution
+ function crosses tau. The quantile definition can be specified to be compatible
+ with an existing system.
+
+ The data sample sequence.
+ Rank definition, to choose how ties should be handled and what product/definition it should be consistent with
+
+
+
+ Estimates the empirical cumulative distribution function (CDF) at x from the provided samples.
+
+ The data sample sequence.
+ The value where to estimate the CDF at.
+
+
+
+ Estimates the empirical cumulative distribution function (CDF) at x from the provided samples.
+
+ The data sample sequence.
+ The value where to estimate the CDF at.
+
+
+
+ Estimates the empirical cumulative distribution function (CDF) at x from the provided samples.
+
+ The data sample sequence.
+ The value where to estimate the CDF at.
+
+
+
+ Estimates the empirical cumulative distribution function (CDF) at x from the provided samples.
+
+ The data sample sequence.
+
+
+
+ Estimates the empirical cumulative distribution function (CDF) at x from the provided samples.
+
+ The data sample sequence.
+
+
+
+ Estimates the empirical cumulative distribution function (CDF) at x from the provided samples.
+
+ The data sample sequence.
+
+
+
+ Estimates the empirical inverse CDF at tau from the provided samples.
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+
+
+ Estimates the empirical inverse CDF at tau from the provided samples.
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+
+
+ Estimates the empirical inverse CDF at tau from the provided samples.
+
+ The data sample sequence.
+ Quantile selector, between 0.0 and 1.0 (inclusive).
+
+
+
+ Estimates the empirical inverse CDF at tau from the provided samples.
+
+ The data sample sequence.
+
+
+
+ Estimates the empirical inverse CDF at tau from the provided samples.
+
+ The data sample sequence.
+
+
+
+ Estimates the empirical inverse CDF at tau from the provided samples.
+
+ The data sample sequence.
+
+
+
+ Calculates the entropy of a stream of double values in bits.
+ Returns NaN if any of the values in the stream are NaN.
+
+ The data sample sequence.
+
+
+
+ Calculates the entropy of a stream of double values in bits.
+ Returns NaN if any of the values in the stream are NaN.
+ Null-entries are ignored.
+
+ The data sample sequence.
+
+
+
+ Evaluates the sample mean over a moving window, for each samples.
+ Returns NaN if no data is empty or if any entry is NaN.
+
+ The sample stream to calculate the mean of.
+ The number of last samples to consider.
+
+
+
+ Statistics operating on an IEnumerable in a single pass, without keeping the full data in memory.
+ Can be used in a streaming way, e.g. on large datasets not fitting into memory.
+
+
+
+
+
+
+
+ Returns the smallest value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the smallest value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the largest value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the largest value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the smallest absolute value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the smallest absolute value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the largest absolute value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the largest absolute value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the smallest absolute value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the smallest absolute value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the largest absolute value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Returns the largest absolute value from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Evaluates the geometric mean of the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Evaluates the geometric mean of the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Evaluates the harmonic mean of the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Evaluates the harmonic mean of the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the unbiased population variance from the provided samples as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the unbiased population variance from the provided samples as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Evaluates the population variance from the full population provided as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Evaluates the population variance from the full population provided as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the unbiased population standard deviation from the provided samples as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Evaluates the population standard deviation from the full population provided as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Evaluates the population standard deviation from the full population provided as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population variance from the provided samples as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN, and NaN for variance if data has less than two entries or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population variance from the provided samples as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN, and NaN for variance if data has less than two entries or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population standard deviation from the provided samples as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN, and NaN for standard deviation if data has less than two entries or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the arithmetic sample mean and the unbiased population standard deviation from the provided samples as enumerable sequence, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN for mean if data is empty or any entry is NaN, and NaN for standard deviation if data has less than two entries or if any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the unbiased population covariance from the provided two sample enumerable sequences, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ First sample stream.
+ Second sample stream.
+
+
+
+ Estimates the unbiased population covariance from the provided two sample enumerable sequences, in a single pass without memoization.
+ On a dataset of size N will use an N-1 normalizer (Bessel's correction).
+ Returns NaN if data has less than two entries or if any entry is NaN.
+
+ First sample stream.
+ Second sample stream.
+
+
+
+ Evaluates the population covariance from the full population provided as two enumerable sequences, in a single pass without memoization.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ First population stream.
+ Second population stream.
+
+
+
+ Evaluates the population covariance from the full population provided as two enumerable sequences, in a single pass without memoization.
+ On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset.
+ Returns NaN if data is empty or if any entry is NaN.
+
+ First population stream.
+ Second population stream.
+
+
+
+ Estimates the root mean square (RMS) also known as quadratic mean from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Estimates the root mean square (RMS) also known as quadratic mean from the enumerable, in a single pass without memoization.
+ Returns NaN if data is empty or any entry is NaN.
+
+ Sample stream, no sorting is assumed.
+
+
+
+ Calculates the entropy of a stream of double values.
+ Returns NaN if any of the values in the stream are NaN.
+
+ The input stream to evaluate.
+
+
+
+
+ Computes the basic statistics of data set. The class meets the
+ NIST standard of accuracy for mean, variance, and standard deviation
+ (the only statistics they provide exact values for) and exceeds them
+ in increased accuracy mode.
+ Recommendation: consider to use RunningWeightedStatistics instead.
+
+
+ This type declares a DataContract for out of the box ephemeral serialization
+ with engines like DataContractSerializer, Protocol Buffers and FsPickler,
+ but does not guarantee any compatibility between versions.
+ It is not recommended to rely on this mechanism for durable persistence.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The sample data.
+
+ If set to true, increased accuracy mode used.
+ Increased accuracy mode uses types for internal calculations.
+
+
+ Don't use increased accuracy for data sets containing large values (in absolute value).
+ This may cause the calculations to overflow.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The sample data.
+
+ If set to true, increased accuracy mode used.
+ Increased accuracy mode uses types for internal calculations.
+
+
+ Don't use increased accuracy for data sets containing large values (in absolute value).
+ This may cause the calculations to overflow.
+
+
+
+
+ Gets the size of the sample.
+
+ The size of the sample.
+
+
+
+ Gets the sample mean.
+
+ The sample mean.
+
+
+
+ Gets the unbiased population variance estimator (on a dataset of size N will use an N-1 normalizer).
+
+ The sample variance.
+
+
+
+ Gets the unbiased population standard deviation (on a dataset of size N will use an N-1 normalizer).
+
+ The sample standard deviation.
+
+
+
+ Gets the unbiased estimator of the population skewness.
+
+ The sample skewness.
+ Returns zero if is less than three.
+
+
+
+ Gets the unbiased estimator of the population excess kurtosis using the G_2 estimator.
+
+ The sample kurtosis.
+ Returns zero if is less than four.
+
+
+
+ Gets the maximum sample value.
+
+ The maximum sample value.
+
+
+
+ Gets the minimum sample value.
+
+ The minimum sample value.
+
+
+
+ Gets the total weight. When used with unweighted data, returns the number of samples.
+
+ The total weight.
+
+
+
+ The Kish's effective sample size https://en.wikipedia.org/wiki/Effective_sample_size
+
+ The Kish's effective sample size.
+
+
+
+ Computes descriptive statistics from a stream of data values and reliability weights.
+
+ A sequence of datapoints.
+
+
+
+ Computes descriptive statistics from a stream of data values and reliability weights.
+
+ A sequence of datapoints.
+
+
+
+ Internal use. Method use for setting the statistics.
+
+ For setting Mean.
+ For setting Variance.
+ For setting Skewness.
+ For setting Kurtosis.
+ For setting Minimum.
+ For setting Maximum.
+ For setting Count.
+
+
+
+ Used to simplify parallel code, particularly between the .NET 4.0 and Silverlight Code.
+
+
+
+
+ Executes a for loop in which iterations may run in parallel.
+
+ The start index, inclusive.
+ The end index, exclusive.
+ The body to be invoked for each iteration range.
+
+
+
+ Executes a for loop in which iterations may run in parallel.
+
+ The start index, inclusive.
+ The end index, exclusive.
+ The partition size for splitting work into smaller pieces.
+ The body to be invoked for each iteration range.
+
+
+
+ Executes each of the provided actions inside a discrete, asynchronous task.
+
+ An array of actions to execute.
+ The actions array contains a null element.
+ At least one invocation of the actions threw an exception.
+
+
+
+ Selects an item (such as Max or Min).
+
+ Starting index of the loop.
+ Ending index of the loop
+ The function to select items over a subset.
+ The function to select the item of selection from the subsets.
+ The selected value.
+
+
+
+ Selects an item (such as Max or Min).
+
+ The array to iterate over.
+ The function to select items over a subset.
+ The function to select the item of selection from the subsets.
+ The selected value.
+
+
+
+ Selects an item (such as Max or Min).
+
+ Starting index of the loop.
+ Ending index of the loop
+ The function to select items over a subset.
+ The function to select the item of selection from the subsets.
+ Default result of the reduce function on an empty set.
+ The selected value.
+
+
+
+ Selects an item (such as Max or Min).
+
+ The array to iterate over.
+ The function to select items over a subset.
+ The function to select the item of selection from the subsets.
+ Default result of the reduce function on an empty set.
+ The selected value.
+
+
+
+ Double-precision trigonometry toolkit.
+
+
+
+
+ Constant to convert a degree to grad.
+
+
+
+
+ Converts a degree (360-periodic) angle to a grad (400-periodic) angle.
+
+ The degree to convert.
+ The converted grad angle.
+
+
+
+ Converts a degree (360-periodic) angle to a radian (2*Pi-periodic) angle.
+
+ The degree to convert.
+ The converted radian angle.
+
+
+
+ Converts a grad (400-periodic) angle to a degree (360-periodic) angle.
+
+ The grad to convert.
+ The converted degree.
+
+
+
+ Converts a grad (400-periodic) angle to a radian (2*Pi-periodic) angle.
+
+ The grad to convert.
+ The converted radian.
+
+
+
+ Converts a radian (2*Pi-periodic) angle to a degree (360-periodic) angle.
+
+ The radian to convert.
+ The converted degree.
+
+
+
+ Converts a radian (2*Pi-periodic) angle to a grad (400-periodic) angle.
+
+ The radian to convert.
+ The converted grad.
+
+
+
+ Normalized Sinc function. sinc(x) = sin(pi*x)/(pi*x).
+
+
+
+
+ Trigonometric Sine of an angle in radian, or opposite / hypotenuse.
+
+ The angle in radian.
+ The sine of the radian angle.
+
+
+
+ Trigonometric Sine of a Complex number.
+
+ The complex value.
+ The sine of the complex number.
+
+
+
+ Trigonometric Cosine of an angle in radian, or adjacent / hypotenuse.
+
+ The angle in radian.
+ The cosine of an angle in radian.
+
+
+
+ Trigonometric Cosine of a Complex number.
+
+ The complex value.
+ The cosine of a complex number.
+
+
+
+ Trigonometric Tangent of an angle in radian, or opposite / adjacent.
+
+ The angle in radian.
+ The tangent of the radian angle.
+
+
+
+ Trigonometric Tangent of a Complex number.
+
+ The complex value.
+ The tangent of the complex number.
+
+
+
+ Trigonometric Cotangent of an angle in radian, or adjacent / opposite. Reciprocal of the tangent.
+
+ The angle in radian.
+ The cotangent of an angle in radian.
+
+
+
+ Trigonometric Cotangent of a Complex number.
+
+ The complex value.
+ The cotangent of the complex number.
+
+
+
+ Trigonometric Secant of an angle in radian, or hypotenuse / adjacent. Reciprocal of the cosine.
+
+ The angle in radian.
+ The secant of the radian angle.
+
+
+
+ Trigonometric Secant of a Complex number.
+
+ The complex value.
+ The secant of the complex number.
+
+
+
+ Trigonometric Cosecant of an angle in radian, or hypotenuse / opposite. Reciprocal of the sine.
+
+ The angle in radian.
+ Cosecant of an angle in radian.
+
+
+
+ Trigonometric Cosecant of a Complex number.
+
+ The complex value.
+ The cosecant of a complex number.
+
+
+
+ Trigonometric principal Arc Sine in radian
+
+ The opposite for a unit hypotenuse (i.e. opposite / hypotenuse).
+ The angle in radian.
+
+
+
+ Trigonometric principal Arc Sine of this Complex number.
+
+ The complex value.
+ The arc sine of a complex number.
+
+
+
+ Trigonometric principal Arc Cosine in radian
+
+ The adjacent for a unit hypotenuse (i.e. adjacent / hypotenuse).
+ The angle in radian.
+
+
+
+ Trigonometric principal Arc Cosine of this Complex number.
+
+ The complex value.
+ The arc cosine of a complex number.
+
+
+
+ Trigonometric principal Arc Tangent in radian
+
+ The opposite for a unit adjacent (i.e. opposite / adjacent).
+ The angle in radian.
+
+
+
+ Trigonometric principal Arc Tangent of this Complex number.
+
+ The complex value.
+ The arc tangent of a complex number.
+
+
+
+ Trigonometric principal Arc Cotangent in radian
+
+ The adjacent for a unit opposite (i.e. adjacent / opposite).
+ The angle in radian.
+
+
+
+ Trigonometric principal Arc Cotangent of this Complex number.
+
+ The complex value.
+ The arc cotangent of a complex number.
+
+
+
+ Trigonometric principal Arc Secant in radian
+
+ The hypotenuse for a unit adjacent (i.e. hypotenuse / adjacent).
+ The angle in radian.
+
+
+
+ Trigonometric principal Arc Secant of this Complex number.
+
+ The complex value.
+ The arc secant of a complex number.
+
+
+
+ Trigonometric principal Arc Cosecant in radian
+
+ The hypotenuse for a unit opposite (i.e. hypotenuse / opposite).
+ The angle in radian.
+
+
+
+ Trigonometric principal Arc Cosecant of this Complex number.
+
+ The complex value.
+ The arc cosecant of a complex number.
+
+
+
+ Hyperbolic Sine
+
+ The hyperbolic angle, i.e. the area of the hyperbolic sector.
+ The hyperbolic sine of the angle.
+
+
+
+ Hyperbolic Sine of a Complex number.
+
+ The complex value.
+ The hyperbolic sine of a complex number.
+
+
+
+ Hyperbolic Cosine
+
+ The hyperbolic angle, i.e. the area of the hyperbolic sector.
+ The hyperbolic Cosine of the angle.
+
+
+
+ Hyperbolic Cosine of a Complex number.
+
+ The complex value.
+ The hyperbolic cosine of a complex number.
+
+
+
+ Hyperbolic Tangent in radian
+
+ The hyperbolic angle, i.e. the area of the hyperbolic sector.
+ The hyperbolic tangent of the angle.
+
+
+
+ Hyperbolic Tangent of a Complex number.
+
+ The complex value.
+ The hyperbolic tangent of a complex number.
+
+
+
+ Hyperbolic Cotangent
+
+ The hyperbolic angle, i.e. the area of the hyperbolic sector.
+ The hyperbolic cotangent of the angle.
+
+
+
+ Hyperbolic Cotangent of a Complex number.
+
+ The complex value.
+ The hyperbolic cotangent of a complex number.
+
+
+
+ Hyperbolic Secant
+
+ The hyperbolic angle, i.e. the area of the hyperbolic sector.
+ The hyperbolic secant of the angle.
+
+
+
+ Hyperbolic Secant of a Complex number.
+
+ The complex value.
+ The hyperbolic secant of a complex number.
+
+
+
+ Hyperbolic Cosecant
+
+ The hyperbolic angle, i.e. the area of the hyperbolic sector.
+ The hyperbolic cosecant of the angle.
+
+
+
+ Hyperbolic Cosecant of a Complex number.
+
+ The complex value.
+ The hyperbolic cosecant of a complex number.
+
+
+
+ Hyperbolic Area Sine
+
+ The real value.
+ The hyperbolic angle, i.e. the area of its hyperbolic sector.
+
+
+
+ Hyperbolic Area Sine of this Complex number.
+
+ The complex value.
+ The hyperbolic arc sine of a complex number.
+
+
+
+ Hyperbolic Area Cosine
+
+ The real value.
+ The hyperbolic angle, i.e. the area of its hyperbolic sector.
+
+
+
+ Hyperbolic Area Cosine of this Complex number.
+
+ The complex value.
+ The hyperbolic arc cosine of a complex number.
+
+
+
+ Hyperbolic Area Tangent
+
+ The real value.
+ The hyperbolic angle, i.e. the area of its hyperbolic sector.
+
+
+
+ Hyperbolic Area Tangent of this Complex number.
+
+ The complex value.
+ The hyperbolic arc tangent of a complex number.
+
+
+
+ Hyperbolic Area Cotangent
+
+ The real value.
+ The hyperbolic angle, i.e. the area of its hyperbolic sector.
+
+
+
+ Hyperbolic Area Cotangent of this Complex number.
+
+ The complex value.
+ The hyperbolic arc cotangent of a complex number.
+
+
+
+ Hyperbolic Area Secant
+
+ The real value.
+ The hyperbolic angle, i.e. the area of its hyperbolic sector.
+
+
+
+ Hyperbolic Area Secant of this Complex number.
+
+ The complex value.
+ The hyperbolic arc secant of a complex number.
+
+
+
+ Hyperbolic Area Cosecant
+
+ The real value.
+ The hyperbolic angle, i.e. the area of its hyperbolic sector.
+
+
+
+ Hyperbolic Area Cosecant of this Complex number.
+
+ The complex value.
+ The hyperbolic arc cosecant of a complex number.
+
+
+
+ Hamming window. Named after Richard Hamming.
+ Symmetric version, useful e.g. for filter design purposes.
+
+
+
+
+ Hamming window. Named after Richard Hamming.
+ Periodic version, useful e.g. for FFT purposes.
+
+
+
+
+ Hann window. Named after Julius von Hann.
+ Symmetric version, useful e.g. for filter design purposes.
+
+
+
+
+ Hann window. Named after Julius von Hann.
+ Periodic version, useful e.g. for FFT purposes.
+
+
+
+
+ Cosine window.
+ Symmetric version, useful e.g. for filter design purposes.
+
+
+
+
+ Cosine window.
+ Periodic version, useful e.g. for FFT purposes.
+
+
+
+
+ Lanczos window.
+ Symmetric version, useful e.g. for filter design purposes.
+
+
+
+
+ Lanczos window.
+ Periodic version, useful e.g. for FFT purposes.
+
+
+
+
+ Gauss window.
+
+
+
+
+ Blackman window.
+
+
+
+
+ Blackman-Harris window.
+
+
+
+
+ Blackman-Nuttall window.
+
+
+
+
+ Bartlett window.
+
+
+
+
+ Bartlett-Hann window.
+
+
+
+
+ Nuttall window.
+
+
+
+
+ Flat top window.
+
+
+
+
+ Uniform rectangular (Dirichlet) window.
+
+
+
+
+ Triangular window.
+
+
+
+
+ Tukey tapering window. A rectangular window bounded
+ by half a cosine window on each side.
+
+ Width of the window
+ Fraction of the window occupied by the cosine parts
+
+
+
diff --git a/bin/Microsoft.AspNet.FriendlyUrls.dll b/bin/Microsoft.AspNet.FriendlyUrls.dll
new file mode 100644
index 0000000..deaf9fc
Binary files /dev/null and b/bin/Microsoft.AspNet.FriendlyUrls.dll differ
diff --git a/bin/Microsoft.AspNet.Web.Optimization.WebForms.dll b/bin/Microsoft.AspNet.Web.Optimization.WebForms.dll
new file mode 100644
index 0000000..bc3c130
Binary files /dev/null and b/bin/Microsoft.AspNet.Web.Optimization.WebForms.dll differ
diff --git a/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll b/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
new file mode 100644
index 0000000..a6c4a8b
Binary files /dev/null and b/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll differ
diff --git a/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.xml b/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.xml
new file mode 100644
index 0000000..bed2ff1
--- /dev/null
+++ b/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.xml
@@ -0,0 +1,170 @@
+
+
+
+ Microsoft.CodeDom.Providers.DotNetCompilerPlatform
+
+
+
+
+ Provides access to instances of the .NET Compiler Platform C# code generator and code compiler.
+
+
+
+
+ Default Constructor
+
+
+
+
+ Creates an instance using the given ICompilerSettings
+
+
+
+
+
+ Creates an instance using the given IProviderOptions
+
+
+
+
+
+ Creates an instance using the given IDictionary to create IProviderOptions
+
+
+
+
+
+ Gets an instance of the .NET Compiler Platform C# code compiler.
+
+ An instance of the .NET Compiler Platform C# code compiler
+
+
+
+ Provides settings for the C# and VB CodeProviders
+
+
+
+
+ A string representing the in-box .Net Framework compiler version to be used.
+ Not applicable to this Roslyn-based package which contains it's own compiler.
+
+
+
+
+ Returns true if the codedom provider has warnAsError set to true
+
+
+
+
+ Returns true if the codedom provider is requesting to use similar default
+ compiler options as ASP.Net does with in-box .Net Framework compilers.
+ These options are programatically enforced on top of parameters passed
+ in to the codedom provider.
+
+
+
+
+ Returns the entire set of options - known or not - as configured in <providerOptions>
+
+
+
+
+ A set of options for the C# and VB CodeProviders.
+
+
+
+
+ Create a default set of options for the C# and VB CodeProviders.
+
+
+
+
+ Create a set of options for the C# or VB CodeProviders using the specified inputs.
+
+
+
+
+ Create a set of options for the C# or VB CodeProviders using some specified inputs.
+
+
+
+
+ The full path to csc.exe or vbc.exe
+
+
+
+
+ TTL in seconds
+
+
+
+
+ Used by in-box framework code providers to determine which compat version of the compiler to use.
+
+
+
+
+ Treat all warnings as errors. Will override defaults and command-line options given for a compiler.
+
+
+
+
+ Use the set of compiler options that was traditionally added programatically for ASP.Net.
+
+
+
+
+ A collection of all <providerOptions> specified in config for the given CodeDomProvider.
+
+
+
+
+ Provides settings for the C# and VB CodeProviders
+
+
+
+
+ The full path to csc.exe or vbc.exe
+
+
+
+
+ TTL in seconds
+
+
+
+
+ Provides access to instances of the .NET Compiler Platform VB code generator and code compiler.
+
+
+
+
+ Default Constructor
+
+
+
+
+ Creates an instance using the given ICompilerSettings
+
+
+
+
+
+ Creates an instance using the given ICompilerSettings
+
+
+
+
+
+ Creates an instance using the given IDictionary to create IProviderOptions
+
+
+
+
+
+ Gets an instance of the .NET Compiler Platform VB code compiler.
+
+ An instance of the .NET Compiler Platform VB code compiler
+
+
+
diff --git a/bin/Microsoft.IO.RecyclableMemoryStream.dll b/bin/Microsoft.IO.RecyclableMemoryStream.dll
new file mode 100644
index 0000000..9d969ac
Binary files /dev/null and b/bin/Microsoft.IO.RecyclableMemoryStream.dll differ
diff --git a/bin/Microsoft.IO.RecyclableMemoryStream.xml b/bin/Microsoft.IO.RecyclableMemoryStream.xml
new file mode 100644
index 0000000..07dd0a8
--- /dev/null
+++ b/bin/Microsoft.IO.RecyclableMemoryStream.xml
@@ -0,0 +1,1523 @@
+
+
+
+ Microsoft.IO.RecyclableMemoryStream
+
+
+
+
+ Manages pools of objects.
+
+
+
+ There are two pools managed in here. The small pool contains same-sized buffers that are handed to streams
+ as they write more data.
+
+
+ For scenarios that need to call , the large pool contains buffers of various sizes, all
+ multiples/exponentials of (1 MB by default). They are split by size to avoid overly-wasteful buffer
+ usage. There should be far fewer 8 MB buffers than 1 MB buffers, for example.
+
+
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ The requested stream size.
+ The actual stream size.
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ The requested stream size.
+ The actual stream size.
+
+
+
+ Unique ID for the stream.
+
+
+
+
+ Optional Tag for the event.
+
+
+
+
+ Requested stream size.
+
+
+
+
+ Actual stream size.
+
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Lifetime of the stream
+ Stack of original allocation.
+ Dispose stack.
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Lifetime of the stream
+ Stack of original allocation.
+ Dispose stack.
+
+
+
+ Unique ID for the stream.
+
+
+
+
+ Optional Tag for the event.
+
+
+
+
+ Stack where the stream was allocated.
+
+
+
+
+ Stack where stream was disposed.
+
+
+
+
+ Lifetime of the stream.
+
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Stack of original allocation.
+ First dispose stack.
+ Second dispose stack.
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Stack of original allocation.
+ First dispose stack.
+ Second dispose stack.
+
+
+
+ Unique ID for the stream.
+
+
+
+
+ Optional Tag for the event.
+
+
+
+
+ Stack where the stream was allocated.
+
+
+
+
+ First dispose stack.
+
+
+
+
+ Second dispose stack.
+
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Stack of original allocation.
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Stack of original allocation.
+
+
+
+ Unique ID for the stream.
+
+
+
+
+ Optional Tag for the event.
+
+
+
+
+ Stack where the stream was allocated.
+
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Stack of ToArray call.
+ Length of stream.
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Stack of ToArray call.
+ Length of stream.
+
+
+
+ Unique ID for the stream.
+
+
+
+
+ Optional Tag for the event.
+
+
+
+
+ Stack where ToArray was called.
+
+
+
+
+ Length of stack.
+
+
+
+
+ Arguments for the event.
+
+
+
+
+ Unique ID for the stream.
+
+
+
+
+ Optional Tag for the event.
+
+
+
+
+ Original allocation stack.
+
+
+
+
+ Requested capacity.
+
+
+
+
+ Maximum capacity.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Requested capacity.
+ Maximum stream capacity of the manager.
+ Original allocation stack.
+
+
+
+ Arguments for the event.
+
+
+
+
+ How many bytes are currently in use from the small pool.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Number of bytes currently in use from the small pool.
+
+
+
+ Arguments for the events.
+
+
+
+
+ Unique ID for the stream.
+
+
+
+
+ Optional Tag for the event.
+
+
+
+
+ Whether the buffer was satisfied from the pool or not.
+
+
+
+
+ Required buffer size.
+
+
+
+
+ How many bytes are in use from the large pool.
+
+
+
+
+ If the buffer was not satisfied from the pool, and is turned on, then.
+ this will contain the call stack of the allocation request.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Required size of the new buffer.
+ How many bytes from the large pool are currently in use.
+ Whether the buffer was satisfied from the pool or not.
+ Call stack of the allocation, if it wasn't pooled.
+
+
+
+ Arguments for the event.
+
+
+
+
+ Unique ID for the stream.
+
+
+
+
+ Optional Tag for the event.
+
+
+
+
+ Type of the buffer.
+
+
+
+
+ The reason this buffer was discarded.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Unique ID of the stream.
+ Tag of the stream.
+ Type of buffer being discarded.
+ The reason for the discard.
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Length of the strength.
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Length of the strength.
+
+
+
+ Length of the stream.
+
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Bytes from the small pool currently in use.
+ Bytes from the small pool currently available.
+ Bytes from the large pool currently in use.
+ Bytes from the large pool currently available.
+
+
+
+ Arguments for the event.
+
+
+ Initializes a new instance of the class.
+
+ Bytes from the small pool currently in use.
+ Bytes from the small pool currently available.
+ Bytes from the large pool currently in use.
+ Bytes from the large pool currently available.
+
+
+
+ Bytes from the small pool currently in use.
+
+
+
+
+ Bytes from the small pool currently available.
+
+
+
+
+ Bytes from the large pool currently in use.
+
+
+
+
+ Bytes from the large pool currently available.
+
+
+
+
+ ETW events for RecyclableMemoryStream.
+
+
+
+
+ Static log object, through which all events are written.
+
+
+
+
+ Type of buffer.
+
+
+
+
+ Small block buffer.
+
+
+
+
+ Large pool buffer.
+
+
+
+
+ The possible reasons for discarding a buffer.
+
+
+
+
+ Buffer was too large to be re-pooled.
+
+
+
+
+ There are enough free bytes in the pool.
+
+
+
+
+ Logged when a stream object is created.
+
+ A unique ID for this stream.
+ A temporary ID for this stream, usually indicates current usage.
+ Requested size of the stream.
+ Actual size given to the stream from the pool.
+
+
+
+ Logged when the stream is disposed.
+
+ A unique ID for this stream.
+ A temporary ID for this stream, usually indicates current usage.
+ Lifetime in milliseconds of the stream
+ Call stack of initial allocation.
+ Call stack of the dispose.
+
+
+
+ Logged when the stream is disposed for the second time.
+
+ A unique ID for this stream.
+ A temporary ID for this stream, usually indicates current usage.
+ Call stack of initial allocation.
+ Call stack of the first dispose.
+ Call stack of the second dispose.
+ Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.
+
+
+
+ Logged when a stream is finalized.
+
+ A unique ID for this stream.
+ A temporary ID for this stream, usually indicates current usage.
+ Call stack of initial allocation.
+ Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.
+
+
+
+ Logged when ToArray is called on a stream.
+
+ A unique ID for this stream.
+ A temporary ID for this stream, usually indicates current usage.
+ Call stack of the ToArray call.
+ Length of stream.
+ Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.
+
+
+
+ Logged when the RecyclableMemoryStreamManager is initialized.
+
+ Size of blocks, in bytes.
+ Size of the large buffer multiple, in bytes.
+ Maximum buffer size, in bytes.
+
+
+
+ Logged when a new block is created.
+
+ Number of bytes in the small pool currently in use.
+
+
+
+ Logged when a new large buffer is created.
+
+ Requested size.
+ Number of bytes in the large pool in use.
+
+
+
+ Logged when a buffer is created that is too large to pool.
+
+ Unique stream ID.
+ A temporary ID for this stream, usually indicates current usage.
+ Size requested by the caller.
+ Call stack of the requested stream.
+ Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.
+
+
+
+ Logged when a buffer is discarded (not put back in the pool, but given to GC to clean up).
+
+ Unique stream ID.
+ A temporary ID for this stream, usually indicates current usage.
+ Type of the buffer being discarded.
+ Reason for the discard.
+ Number of free small pool blocks.
+ Bytes free in the small pool.
+ Bytes in use from the small pool.
+ Number of free large pool blocks.
+ Bytes free in the large pool.
+ Bytes in use from the large pool.
+
+
+
+ Logged when a stream grows beyond the maximum capacity.
+
+ Unique stream ID
+ The requested capacity.
+ Maximum capacity, as configured by RecyclableMemoryStreamManager.
+ A temporary ID for this stream, usually indicates current usage.
+ Call stack for the capacity request.
+ Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.
+
+
+
+ Maximum length of a single array.
+
+ See documentation at https://docs.microsoft.com/dotnet/api/system.array?view=netcore-3.1
+
+
+
+
+ Default block size, in bytes.
+
+
+
+
+ Default large buffer multiple, in bytes.
+
+
+
+
+ Default maximum buffer size, in bytes.
+
+
+
+
+ Settings for controlling the behavior of RecyclableMemoryStream
+
+
+
+
+ Number of bytes in small pool not currently in use.
+
+
+
+
+ Number of bytes currently in use by stream from the small pool.
+
+
+
+
+ Number of bytes in large pool not currently in use.
+
+
+
+
+ Number of bytes currently in use by streams from the large pool.
+
+
+
+
+ How many blocks are in the small pool.
+
+
+
+
+ How many buffers are in the large pool.
+
+
+
+
+ Parameters for customizing the behavior of
+
+
+
+
+ Gets or sets the size of the pooled blocks. This must be greater than 0.
+
+ The default size 131,072 (128KB)
+
+
+
+ Each large buffer will be a multiple exponential of this value
+
+ The default value is 1,048,576 (1MB)
+
+
+
+ Buffer beyond this length are not pooled.
+
+ The default value is 134,217,728 (128MB)
+
+
+
+ Maximum number of bytes to keep available in the small pool.
+
+
+ Trying to return buffers to the pool beyond this limit will result in them being garbage collected.
+ The default value is 0, but all users should set a reasonable value depending on your application's memory requirements.
+
+
+
+
+ Maximum number of bytes to keep available in the large pools.
+
+
+ Trying to return buffers to the pool beyond this limit will result in them being garbage collected.
+ The default value is 0, but all users should set a reasonable value depending on your application's memory requirements.
+
+
+
+
+ Whether to use the exponential allocation strategy (see documentation).
+
+ The default value is false.
+
+
+
+ Maximum stream capacity in bytes. Attempts to set a larger capacity will
+ result in an exception.
+
+ The default value of 0 indicates no limit.
+
+
+
+ Whether to save call stacks for stream allocations. This can help in debugging.
+ It should NEVER be turned on generally in production.
+
+
+
+
+ Whether dirty buffers can be immediately returned to the buffer pool.
+
+
+
+ When is called on a stream and creates a single large buffer, if this setting is enabled, the other blocks will be returned
+ to the buffer pool immediately.
+
+
+ Note when enabling this setting that the user is responsible for ensuring that any buffer previously
+ retrieved from a stream which is subsequently modified is not used after modification (as it may no longer
+ be valid).
+
+
+
+
+
+ Causes an exception to be thrown if is ever called.
+
+ Calling defeats the purpose of a pooled buffer. Use this property to discover code that is calling . If this is
+ set and is called, a NotSupportedException will be thrown.
+
+
+
+ Zero out buffers on allocation and before returning them to the pool.
+
+ Setting this to true causes a performance hit and should only be set if one wants to avoid accidental data leaks.
+
+
+
+ Creates a new object.
+
+
+
+
+ Creates a new object with the most common options.
+
+ Size of the blocks in the small pool.
+ Size of the large buffer multiple
+ Maximum poolable buffer size.
+ Maximum bytes to hold in the small pool.
+ Maximum bytes to hold in each of the large pools.
+
+
+
+ Initializes the memory manager with the default block/buffer specifications. This pool may have unbounded growth unless you modify .
+
+
+
+
+ Initializes the memory manager with the given block requiredSize.
+
+ Object specifying options for stream behavior.
+
+ is not a positive number,
+ or is not a positive number,
+ or is less than options.BlockSize,
+ or is negative,
+ or is negative,
+ or is not a multiple/exponential of .
+
+
+
+
+ Removes and returns a single block from the pool.
+
+ A byte[] array.
+
+
+
+ Returns a buffer of arbitrary size from the large buffer pool. This buffer
+ will be at least the requiredSize and always be a multiple/exponential of largeBufferMultiple.
+
+ The minimum length of the buffer.
+ Unique ID for the stream.
+ The tag of the stream returning this buffer, for logging if necessary.
+ A buffer of at least the required size.
+ Requested array size is larger than the maximum allowed.
+
+
+
+ Returns the buffer to the large pool.
+
+ The buffer to return.
+ Unique stream ID.
+ The tag of the stream returning this buffer, for logging if necessary.
+ is null.
+ buffer.Length is not a multiple/exponential of (it did not originate from this pool).
+
+
+
+ Returns the blocks to the pool.
+
+ Collection of blocks to return to the pool.
+ Unique Stream ID.
+ The tag of the stream returning these blocks, for logging if necessary.
+ is null.
+ contains buffers that are the wrong size (or null) for this memory manager.
+
+
+
+ Returns a block to the pool.
+
+ Block to return to the pool.
+ Unique Stream ID.
+ The tag of the stream returning this, for logging if necessary.
+ is null.
+ is the wrong size for this memory manager.
+
+
+
+ Retrieve a new object with no tag and a default initial capacity.
+
+ A .
+
+
+
+ Retrieve a new object with no tag and a default initial capacity.
+
+ A unique identifier which can be used to trace usages of the stream.
+ A .
+
+
+
+ Retrieve a new object with the given tag and a default initial capacity.
+
+ A tag which can be used to track the source of the stream.
+ A .
+
+
+
+ Retrieve a new object with the given tag and a default initial capacity.
+
+ A unique identifier which can be used to trace usages of the stream.
+ A tag which can be used to track the source of the stream.
+ A .
+
+
+
+ Retrieve a new object with the given tag and at least the given capacity.
+
+ A tag which can be used to track the source of the stream.
+ The minimum desired capacity for the stream.
+ A .
+
+
+
+ Retrieve a new object with the given tag and at least the given capacity.
+
+ A unique identifier which can be used to trace usages of the stream.
+ A tag which can be used to track the source of the stream.
+ The minimum desired capacity for the stream.
+ A .
+
+
+
+ Retrieve a new object with the given tag and at least the given capacity, possibly using
+ a single contiguous underlying buffer.
+
+ Retrieving a which provides a single contiguous buffer can be useful in situations
+ where the initial size is known and it is desirable to avoid copying data between the smaller underlying
+ buffers to a single large one. This is most helpful when you know that you will always call
+ on the underlying stream.
+ A unique identifier which can be used to trace usages of the stream.
+ A tag which can be used to track the source of the stream.
+ The minimum desired capacity for the stream.
+ Whether to attempt to use a single contiguous buffer.
+ A .
+
+
+
+ Retrieve a new object with the given tag and at least the given capacity, possibly using
+ a single contiguous underlying buffer.
+
+ Retrieving a which provides a single contiguous buffer can be useful in situations
+ where the initial size is known and it is desirable to avoid copying data between the smaller underlying
+ buffers to a single large one. This is most helpful when you know that you will always call
+ on the underlying stream.
+ A tag which can be used to track the source of the stream.
+ The minimum desired capacity for the stream.
+ Whether to attempt to use a single contiguous buffer.
+ A .
+
+
+
+ Retrieve a new object with the given tag and with contents copied from the provided
+ buffer. The provided buffer is not wrapped or used after construction.
+
+ The new stream's position is set to the beginning of the stream when returned.
+ A unique identifier which can be used to trace usages of the stream.
+ A tag which can be used to track the source of the stream.
+ The byte buffer to copy data from.
+ The offset from the start of the buffer to copy from.
+ The number of bytes to copy from the buffer.
+ A .
+
+
+
+ Retrieve a new object with the contents copied from the provided
+ buffer. The provided buffer is not wrapped or used after construction.
+
+ The new stream's position is set to the beginning of the stream when returned.
+ The byte buffer to copy data from.
+ A .
+
+
+
+ Retrieve a new object with the given tag and with contents copied from the provided
+ buffer. The provided buffer is not wrapped or used after construction.
+
+ The new stream's position is set to the beginning of the stream when returned.
+ A tag which can be used to track the source of the stream.
+ The byte buffer to copy data from.
+ The offset from the start of the buffer to copy from.
+ The number of bytes to copy from the buffer.
+ A .
+
+
+
+ Retrieve a new object with the given tag and with contents copied from the provided
+ buffer. The provided buffer is not wrapped or used after construction.
+
+ The new stream's position is set to the beginning of the stream when returned.
+ A unique identifier which can be used to trace usages of the stream.
+ A tag which can be used to track the source of the stream.
+ The byte buffer to copy data from.
+ A .
+
+
+
+ Retrieve a new object with the contents copied from the provided
+ buffer. The provided buffer is not wrapped or used after construction.
+
+ The new stream's position is set to the beginning of the stream when returned.
+ The byte buffer to copy data from.
+ A .
+
+
+
+ Retrieve a new object with the given tag and with contents copied from the provided
+ buffer. The provided buffer is not wrapped or used after construction.
+
+ The new stream's position is set to the beginning of the stream when returned.
+ A tag which can be used to track the source of the stream.
+ The byte buffer to copy data from.
+ A .
+
+
+
+ Triggered when a new block is created.
+
+
+
+
+ Triggered when a new large buffer is created.
+
+
+
+
+ Triggered when a new stream is created.
+
+
+
+
+ Triggered when a stream is disposed.
+
+
+
+
+ Triggered when a stream is disposed of twice (an error).
+
+
+
+
+ Triggered when a stream is finalized.
+
+
+
+
+ Triggered when a stream is disposed to report the stream's length.
+
+
+
+
+ Triggered when a user converts a stream to array.
+
+
+
+
+ Triggered when a stream is requested to expand beyond the maximum length specified by the responsible RecyclableMemoryStreamManager.
+
+
+
+
+ Triggered when a buffer of either type is discarded, along with the reason for the discard.
+
+
+
+
+ Periodically triggered to report usage statistics.
+
+
+
+
+ MemoryStream implementation that deals with pooling and managing memory streams which use potentially large
+ buffers.
+
+
+ This class works in tandem with the to supply MemoryStream-derived
+ objects to callers, while avoiding these specific problems:
+
+ -
+ LOH allocations
+ Since all large buffers are pooled, they will never incur a Gen2 GC
+
+ -
+ Memory wasteA standard memory stream doubles its size when it runs out of room. This
+ leads to continual memory growth as each stream approaches the maximum allowed size.
+
+ -
+ Memory copying
+ Each time a MemoryStream grows, all the bytes are copied into new buffers.
+ This implementation only copies the bytes when is called.
+
+ -
+ Memory fragmentation
+ By using homogeneous buffer sizes, it ensures that blocks of memory
+ can be easily reused.
+
+
+
+
+ The stream is implemented on top of a series of uniformly-sized blocks. As the stream's length grows,
+ additional blocks are retrieved from the memory manager. It is these blocks that are pooled, not the stream
+ object itself.
+
+
+ The biggest wrinkle in this implementation is when is called. This requires a single
+ contiguous buffer. If only a single block is in use, then that block is returned. If multiple blocks
+ are in use, we retrieve a larger buffer from the memory manager. These large buffers are also pooled,
+ split by size--they are multiples/exponentials of a chunk size (1 MB by default).
+
+
+ Once a large buffer is assigned to the stream the small blocks are NEVER again used for this stream. All operations take place on the
+ large buffer. The large buffer can be replaced by a larger buffer from the pool as needed. All blocks and large buffers
+ are maintained in the stream until the stream is disposed (unless AggressiveBufferReturn is enabled in the stream manager).
+
+
+ A further wrinkle is what happens when the stream is longer than the maximum allowable array length under .NET. This is allowed
+ when only blocks are in use, and only the Read/Write APIs are used. Once a stream grows to this size, any attempt to convert it
+ to a single buffer will result in an exception. Similarly, if a stream is already converted to use a single larger buffer, then
+ it cannot grow beyond the limits of the maximum allowable array size.
+
+
+ Any method that modifies the stream has the potential to throw an OutOfMemoryException, either because
+ the stream is beyond the limits set in RecyclableStreamManager, or it would result in a buffer larger than
+ the maximum array size supported by .NET.
+
+
+
+
+
+ All of these blocks must be the same size.
+
+
+
+
+ This list is used to store buffers once they're replaced by something larger.
+ This is for the cases where you have users of this class that may hold onto the buffers longer
+ than they should and you want to prevent race conditions which could corrupt the data.
+
+
+
+
+ This is only set by GetBuffer() if the necessary buffer is larger than a single block size, or on
+ construction if the caller immediately requests a single large buffer.
+
+ If this field is non-null, it contains the concatenation of the bytes found in the individual
+ blocks. Once it is created, this (or a larger) largeBuffer will be used for the life of the stream.
+
+
+
+
+ Unique identifier for this stream across its entire lifetime.
+
+ Object has been disposed.
+
+
+
+ A temporary identifier for the current usage of this stream.
+
+ Object has been disposed.
+
+
+
+ Gets the memory manager being used by this stream.
+
+ Object has been disposed.
+
+
+
+ Call stack of the constructor. It is only set if is true,
+ which should only be in debugging situations.
+
+
+
+
+ Call stack of the call. It is only set if is true,
+ which should only be in debugging situations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory manager.
+
+
+
+ Initializes a new instance of the class.
+
+ The memory manager.
+ A unique identifier which can be used to trace usages of the stream.
+
+
+
+ Initializes a new instance of the class.
+
+ The memory manager.
+ A string identifying this stream for logging and debugging purposes.
+
+
+
+ Initializes a new instance of the class.
+
+ The memory manager.
+ A unique identifier which can be used to trace usages of the stream.
+ A string identifying this stream for logging and debugging purposes.
+
+
+
+ Initializes a new instance of the class.
+
+ The memory manager.
+ A string identifying this stream for logging and debugging purposes.
+ The initial requested size to prevent future allocations.
+
+
+
+ Initializes a new instance of the class.
+
+ The memory manager
+ A unique identifier which can be used to trace usages of the stream.
+ A string identifying this stream for logging and debugging purposes.
+ The initial requested size to prevent future allocations.
+
+
+
+ Initializes a new instance of the class.
+
+ The memory manager.
+ A unique identifier which can be used to trace usages of the stream.
+ A string identifying this stream for logging and debugging purposes.
+ The initial requested size to prevent future allocations.
+ An initial buffer to use. This buffer will be owned by the stream and returned to the memory manager upon Dispose.
+
+
+
+ The finalizer will be called when a stream is not disposed properly.
+
+ Failing to dispose indicates a bug in the code using streams. Care should be taken to properly account for stream lifetime.
+
+
+
+ Returns the memory used by this stream back to the pool.
+
+ Whether we're disposing (true), or being called by the finalizer (false).
+
+
+
+ Equivalent to Dispose.
+
+
+
+
+ Gets or sets the capacity.
+
+
+
+ Capacity is always in multiples of the memory manager's block size, unless
+ the large buffer is in use. Capacity never decreases during a stream's lifetime.
+ Explicitly setting the capacity to a lower value than the current value will have no effect.
+ This is because the buffers are all pooled by chunks and there's little reason to
+ allow stream truncation.
+
+
+ Writing past the current capacity will cause to automatically increase, until MaximumStreamCapacity is reached.
+
+
+ If the capacity is larger than int.MaxValue, then InvalidOperationException will be thrown. If you anticipate using
+ larger streams, use the property instead.
+
+
+ Object has been disposed.
+ Capacity is larger than int.MaxValue.
+
+
+
+ Returns a 64-bit version of capacity, for streams larger than int.MaxValue in length.
+
+
+
+
+ Gets the number of bytes written to this stream.
+
+ Object has been disposed.
+ If the buffer has already been converted to a large buffer, then the maximum length is limited by the maximum allowed array length in .NET.
+
+
+
+ Gets the current position in the stream.
+
+ Object has been disposed.
+ A negative value was passed.
+ Stream is in large-buffer mode, but an attempt was made to set the position past the maximum allowed array length.
+ If the buffer has already been converted to a large buffer, then the maximum length (and thus position) is limited by the maximum allowed array length in .NET.
+
+
+
+ Whether the stream can currently read.
+
+
+
+
+ Whether the stream can currently seek.
+
+
+
+
+ Always false.
+
+
+
+
+ Whether the stream can currently write.
+
+
+
+
+ Returns a single buffer containing the contents of the stream.
+ The buffer may be longer than the stream length.
+
+ A byte[] buffer.
+ IMPORTANT: Doing a after calling GetBuffer invalidates the buffer. The old buffer is held onto
+ until is called, but the next time GetBuffer is called, a new buffer from the pool will be required.
+ Object has been disposed.
+ stream is too large for a contiguous buffer.
+
+
+ Asynchronously reads all the bytes from the current position in this stream and writes them to another stream.
+ The stream to which the contents of the current stream will be copied.
+ This parameter is ignored.
+ The token to monitor for cancellation requests.
+ A task that represents the asynchronous copy operation.
+
+ is .
+ Either the current stream or the destination stream is disposed.
+ The current stream does not support reading, or the destination stream does not support writing.
+ Similarly to MemoryStream's behavior, CopyToAsync will adjust the source stream's position by the number of bytes written to the destination stream, as a Read would do.
+
+
+
+ Notifies the stream that bytes were written to the buffer returned by or .
+ Seeks forward by bytes.
+
+
+ You must request a new buffer after calling Advance to continue writing more data and cannot write to a previously acquired buffer.
+
+ How many bytes to advance.
+ Object has been disposed.
+ is negative.
+ is larger than the size of the previously requested buffer.
+
+
+
+
+ IMPORTANT: Calling Write(), GetBuffer(), TryGetBuffer(), Seek(), GetLength(), Advance(),
+ or setting Position after calling GetMemory() invalidates the memory.
+
+
+
+
+
+ IMPORTANT: Calling Write(), GetBuffer(), TryGetBuffer(), Seek(), GetLength(), Advance(),
+ or setting Position after calling GetSpan() invalidates the span.
+
+
+
+
+ When callers to GetSpan() or GetMemory() request a buffer that is larger than the remaining size of the current block
+ this method return a temp buffer. When Advance() is called, that temp buffer is then copied into the stream.
+
+
+
+
+ Returns a sequence containing the contents of the stream.
+
+ A ReadOnlySequence of bytes.
+ IMPORTANT: Calling Write(), GetMemory(), GetSpan(), Dispose(), or Close() after calling GetReadOnlySequence() invalidates the sequence.
+ Object has been disposed.
+
+
+
+ Returns an ArraySegment that wraps a single buffer containing the contents of the stream.
+
+ An ArraySegment containing a reference to the underlying bytes.
+ Returns if a buffer can be returned; otherwise, .
+
+
+
+ Returns a new array with a copy of the buffer's contents. You should almost certainly be using combined with the to
+ access the bytes in this stream. Calling ToArray will destroy the benefits of pooled buffers, but it is included
+ for the sake of completeness.
+
+ Object has been disposed.
+ The current object disallows ToArray calls.
+ The length of the stream is too long for a contiguous array.
+
+
+
+ Reads from the current position into the provided buffer.
+
+ Destination buffer.
+ Offset into buffer at which to start placing the read bytes.
+ Number of bytes to read.
+ The number of bytes read.
+ buffer is null.
+ offset or count is less than 0.
+ offset subtracted from the buffer length is less than count.
+ Object has been disposed.
+
+
+
+ Reads from the specified position into the provided buffer.
+
+ Destination buffer.
+ Offset into buffer at which to start placing the read bytes.
+ Number of bytes to read.
+ Position in the stream to start reading from.
+ The number of bytes read.
+ is null.
+ or is less than 0.
+ subtracted from the buffer length is less than .
+ Object has been disposed.
+
+
+
+ Reads from the current position into the provided buffer.
+
+ Destination buffer.
+ The number of bytes read.
+ Object has been disposed.
+
+
+
+ Reads from the specified position into the provided buffer.
+
+ Destination buffer.
+ Position in the stream to start reading from.
+ The number of bytes read.
+ Object has been disposed.
+
+
+
+ Writes the buffer to the stream.
+
+ Source buffer.
+ Start position.
+ Number of bytes to write.
+ buffer is null.
+ offset or count is negative.
+ buffer.Length - offset is not less than count.
+ Object has been disposed.
+
+
+
+ Writes the buffer to the stream.
+
+ Source buffer.
+ buffer is null.
+ Object has been disposed.
+
+
+
+ Returns a useful string for debugging. This should not normally be called in actual production code.
+
+
+
+
+ Writes a single byte to the current position in the stream.
+
+ byte value to write.
+ Object has been disposed.
+
+
+
+ Reads a single byte from the current position in the stream.
+
+ The byte at the current position, or -1 if the position is at the end of the stream.
+ Object has been disposed.
+
+
+
+ Reads a single byte from the specified position in the stream.
+
+ The position in the stream to read from.
+ The byte at the current position, or -1 if the position is at the end of the stream.
+ Object has been disposed.
+
+
+
+ Sets the length of the stream.
+
+ value is negative or larger than .
+ Object has been disposed.
+
+
+
+ Sets the position to the offset from the seek location.
+
+ How many bytes to move.
+ From where.
+ The new position.
+ Object has been disposed.
+ is larger than .
+ Invalid seek origin.
+ Attempt to set negative position.
+
+
+
+ Synchronously writes this stream's bytes to the argument stream.
+
+ Destination stream.
+ Important: This does a synchronous write, which may not be desired in some situations.
+ is null.
+ Object has been disposed.
+
+
+
+ Synchronously writes this stream's bytes, starting at offset, for count bytes, to the argument stream.
+
+ Destination stream.
+ Offset in source.
+ Number of bytes to write.
+ is null.
+
+ is less than 0, or + is beyond this 's length.
+
+ Object has been disposed.
+
+
+
+ Writes bytes from the current stream to a destination byte array.
+
+ Target buffer.
+ The entire stream is written to the target array.
+ > is null.
+ Object has been disposed.
+
+
+
+ Writes bytes from the current stream to a destination byte array.
+
+ Target buffer.
+ Offset in the source stream, from which to start.
+ Number of bytes to write.
+ > is null.
+
+ is less than 0, or + is beyond this stream's length.
+
+ Object has been disposed.
+
+
+
+ Writes bytes from the current stream to a destination byte array.
+
+ Target buffer.
+ Offset in the source stream, from which to start.
+ Number of bytes to write.
+ Offset in the target byte array to start writing
+ buffer is null
+
+ is less than 0, or + is beyond this stream's length.
+
+
+ is less than 0, or + is beyond the target 's length.
+
+ Object has been disposed.
+
+
+
+ Release the large buffer (either stores it for eventual release or returns it immediately).
+
+
+
+
diff --git a/bin/Microsoft.ScriptManager.MSAjax.dll b/bin/Microsoft.ScriptManager.MSAjax.dll
new file mode 100644
index 0000000..f92d46a
Binary files /dev/null and b/bin/Microsoft.ScriptManager.MSAjax.dll differ
diff --git a/bin/Microsoft.ScriptManager.WebForms.dll b/bin/Microsoft.ScriptManager.WebForms.dll
new file mode 100644
index 0000000..272d686
Binary files /dev/null and b/bin/Microsoft.ScriptManager.WebForms.dll differ
diff --git a/bin/Microsoft.Web.Infrastructure.dll b/bin/Microsoft.Web.Infrastructure.dll
new file mode 100644
index 0000000..33ffd21
Binary files /dev/null and b/bin/Microsoft.Web.Infrastructure.dll differ
diff --git a/bin/NPOI.Core.dll b/bin/NPOI.Core.dll
new file mode 100644
index 0000000..6ad273e
Binary files /dev/null and b/bin/NPOI.Core.dll differ
diff --git a/bin/NPOI.Core.xml b/bin/NPOI.Core.xml
new file mode 100644
index 0000000..a83fdc9
--- /dev/null
+++ b/bin/NPOI.Core.xml
@@ -0,0 +1,47696 @@
+
+
+
+ NPOI.Core
+
+
+
+ Common abstract class for {@link EscherOptRecord} and
+ {@link EscherTertiaryOptRecord}
+
+ @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
+ @author Glen Stampoultzis
+
+
+ Add a property to this record.
+
+
+ The list of properties stored by this record.
+
+
+ The list of properties stored by this record.
+
+
+ Records should be sorted by property number before being stored.
+
+
+ * Set an escher property. If a property with given propId already
+ exists it is replaced.
+ *
+ * @param value the property to set.
+
+
+ Retrieve the string representation of this record.
+
+
+
+ Generates escher records when provided the byte array containing those records.
+ @author Glen Stampoultzis
+ @author Nick Burch (nick at torchbox . com)
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Generates an escher record including the any children contained under that record.
+ An exception is thrown if the record could not be generated.
+
+ The byte array containing the records
+ The starting offset into the byte array
+ The generated escher record
+
+
+
+ Converts from a list of classes into a map that Contains the record id as the key and
+ the Constructor in the value part of the map. It does this by using reflection to look up
+ the RECORD_ID field then using reflection again to find a reference to the constructor.
+
+ The records to convert
+ The map containing the id/constructor pairs.
+
+
+
+ Escher array properties are the most wierd construction ever invented
+ with all sorts of special cases. I'm hopeful I've got them all.
+ @author Glen Stampoultzis (glens at superlinksoftware.com)
+
+
+
+ The size of the header that goes at the
+ start of the array, before the data
+
+
+ Normally, the size recorded in the simple data (for the complex
+ data) includes the size of the header.
+ There are a few cases when it doesn't though...
+
+
+ When Reading a property from data stream remeber if the complex part is empty and Set this flag.
+
+
+
+ Gets the element.
+
+ The index.
+
+
+
+
+ Sets the element.
+
+ The index.
+ The element.
+
+
+
+ Retrieves the string representation for this property.
+
+
+
+
+
+ We have this method because the way in which arrays in escher works
+ is screwed for seemly arbitary reasons. While most properties are
+ fairly consistent and have a predictable array size, escher arrays
+ have special cases.
+
+ The data array containing the escher array information
+ The offset into the array to start Reading from.
+ the number of bytes used by this complex property.
+
+
+
+ Serializes the simple part of this property. ie the first 6 bytes.
+ Needs special code to handle the case when the size doesn't
+ include the size of the header block
+
+
+
+
+
+
+
+ Sometimes the element size is stored as a negative number. We
+ negate it and shift it to Get the real value.
+
+ The size of elements.
+
+
+
+
+ @author Glen Stampoultzis
+ @version $Id: EscherBitmapBlip.java 569827 2007-08-26 15:26:29Z yegor $
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ Serializes the record to an existing byte array.
+
+ the offset within the byte array
+ the data array to Serialize to
+ a listener for begin and end serialization events.
+ the number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ Gets or sets the UID.
+
+ The UID.
+
+
+
+ Gets or sets the marker.
+
+ The marker.
+
+
+
+ Toes the string.
+
+
+
+
+
+ @author Glen Stampoultzis
+ @version $Id: EscherBlipRecord.java 569827 2007-08-26 15:26:29Z yegor $
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ Serializes the record to an existing byte array.
+
+ the offset within the byte array
+ the data array to Serialize to
+ a listener for begin and end serialization events.
+ the number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ The short name for this record
+
+
+
+
+
+ Gets or sets the picture data.
+
+ The picture data.
+
+
+
+ Sets the picture data bytes
+
+ the picture data
+ the offset into the picture data
+ the amount of bytes to be used
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ The blip record is used to hold details about large binary objects that occur in escher such
+ as JPEG, GIF, PICT and WMF files. The contents of the stream is usually compressed. Inflate
+ can be used to decompress the data.
+ @author Glen Stampoultzis
+
+
+
+
+ This method deserializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into
+ May be null since this is not a container record.
+
+ The number of bytes Read from the byte array.
+
+
+
+
+ This method Serializes this escher record into a byte array.
+ @param offset
+
+ The offset into data to start writing the record data to.
+ the data array to Serialize to
+ a listener for begin and end serialization events.
+ the number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ The short name for this record
+
+
+
+
+
+ Gets or sets the secondary UID.
+
+ The secondary UID.
+
+
+
+ Gets or sets the size of the cache of.
+
+ The size of the cache of.
+
+
+
+ Gets or sets the top boundary of the metafile drawing commands
+
+ The boundary top.
+
+
+
+ Gets or sets the left boundary of the metafile drawing commands
+
+ The boundary left.
+
+
+
+ Gets or sets the boundary width of the metafile drawing commands
+
+ The width of the boundary.
+
+
+
+ Gets or sets the boundary height of the metafile drawing commands
+
+ The height of the boundary.
+
+
+
+ Gets or sets the width of the metafile in EMU's (English Metric Units).
+
+ The width.
+
+
+
+ Gets or sets the height of the metafile in EMU's (English Metric Units).
+
+ The height.
+
+
+
+ Gets or sets the cache of the saved size
+
+ the cache of the saved size.
+
+
+
+ Is the contents of the blip compressed?
+
+ The compression flag.
+
+
+
+ Gets or sets the filter.
+
+ The filter.
+
+
+
+ Gets or sets The BLIP data
+
+ The data.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Compress the contents of the provided array
+
+ An uncompressed byte array
+
+
+
+
+ Decompresses the specified data.
+
+ The compressed byte array.
+ The starting position into the byte array.
+ The number of compressed bytes to decompress.
+ An uncompressed byte array
+
+
+
+ Represents a bool property. The actual utility of this property is in doubt because many
+ of the properties marked as bool seem to actually contain special values. In other words
+ they're not true bools.
+ @author Glen Stampoultzis
+
+
+
+
+ Create an instance of an escher bool property.
+
+ The property number (or id)
+ The 32 bit value of this bool property
+
+
+
+ Whether this bool property is true
+
+ true if this instance is true; otherwise, false.
+
+
+
+ Whether this bool property is false
+
+ true if this instance is false; otherwise, false.
+
+
+
+ The BSE record is related closely to the EscherBlipRecord and stores
+ extra information about the blip. A blip record is actually stored inside
+ the BSE record even though the BSE record isn't actually a container record.
+ @author Glen Stampoultzis
+ @see EscherBlipRecord
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ This method Serializes this escher record into a byte array.
+
+ The offset into
+ data to start writing the record data to
+ The byte array to Serialize to.
+ a listener for begin and end serialization events.
+ The number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ The short name for this record
+
+
+
+
+
+ Gets or sets the expected blip type under windows (failure to match this blip type will result in
+ Excel converting to this format).
+
+ The blip type win32.
+
+
+
+ Gets or sets the expected blip type under MacOS (failure to match this blip type will result in
+ Excel converting to this format).
+
+ The blip type mac OS.
+
+
+
+ Gets or sets 16 byte MD4 checksum.
+
+ The UID.
+
+
+
+ Gets or sets the tag. (Unused)
+
+ The tag.
+
+
+
+ Gets or sets Blip size in stream..
+
+ The size.
+
+
+
+ Gets or sets the reference count of this blip.
+
+ The ref.
+
+
+
+ Gets or sets the offset in the delay stream..
+
+ The offset.
+
+
+
+ Defines the way this blip is used.
+
+ The usage.
+
+
+
+ Gets or sets the blip name.
+
+ The name.
+
+
+
+ Gets or sets the unused2.
+
+ The unused2.
+
+
+
+ Gets or sets the unused3.
+
+ The unused3.
+
+
+
+ Gets or sets the blip record.
+
+ The blip record.
+
+
+
+ Gets or sets any remaining data in this record.
+
+ The remaining data.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Retrieve the string representation given a blip id.
+
+ The b.
+
+
+
+
+ The escher child achor record is used to specify the position of a shape under an
+ existing group. The first level of shape records use a EscherClientAnchor record instead.
+ @author Glen Stampoultzis
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ This method Serializes this escher record into a byte array.
+
+ The offset into data to start writing the record data to.
+ The byte array to Serialize to.
+ a listener for begin and end serialization events.
+ The number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ The record id for the EscherChildAnchorRecord.
+
+
+
+
+
+ The short name for this record
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets or sets offset within the parent coordinate space for the top left point.
+
+ The DX1.
+
+
+
+ Gets or sets the offset within the parent coordinate space for the top left point.
+
+ The dy1.
+
+
+
+ Gets or sets the offset within the parent coordinate space for the bottom right point.
+
+ The DX2.
+
+
+
+ Gets or sets the offset within the parent coordinate space for the bottom right point.
+
+ The dy2.
+
+
+
+ The escher client anchor specifies which rows and cells the shape is bound to as well as
+ the offsets within those cells. Each cell is 1024 units wide by 256 units long regardless
+ of the actual size of the cell. The EscherClientAnchorRecord only applies to the top-most
+ shapes. Shapes contained in groups are bound using the EscherChildAnchorRecords.
+ @author Glen Stampoultzis
+
+
+
+ bit[0] - fMove (1 bit): A bit that specifies whether the shape will be kept intact when the cells are moved.
+ bit[1] - fSize (1 bit): A bit that specifies whether the shape will be kept intact when the cells are resized. If fMove is 1, the value MUST be 1.
+ bit[2-4] - reserved, MUST be 0 and MUST be ignored
+ bit[5-15]- Undefined and MUST be ignored.
+
+ it can take values: 0, 2, 3
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ This method Serializes this escher record into a byte array.
+
+ The offset into data to start writing the record data to.
+ The byte array to Serialize to.
+ a listener for begin and end serialization events.
+ The number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ The record id for this record.
+
+
+
+
+
+ The short name for this record
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets or sets the flag.
+
+ 0 = Move and size with Cells, 2 = Move but don't size with cells, 3 = Don't move or size with cells.
+
+
+
+ Gets or sets The column number for the top-left position. 0 based.
+
+ The col1.
+
+
+
+ Gets or sets The x offset within the top-left cell. Range is from 0 to 1023.
+
+ The DX1.
+
+
+
+ Gets or sets The row number for the top-left corner of the shape.
+
+ The row1.
+
+
+
+ Gets or sets The y offset within the top-left corner of the current shape.
+
+ The dy1.
+
+
+
+ Gets or sets The column of the bottom right corner of this shape.
+
+ The col2.
+
+
+
+ Gets or sets The x offset withing the cell for the bottom-right corner of this shape.
+
+ The DX2.
+
+
+
+ Gets or sets The row number for the bottom-right corner of the current shape.
+
+ The row2.
+
+
+
+ Gets or sets The y offset withing the cell for the bottom-right corner of this shape.
+
+ The dy2.
+
+
+
+ Gets or sets the remaining data.
+
+ The remaining data.
+
+
+
+ The EscherClientDataRecord is used to store client specific data about the position of a
+ shape within a container.
+ @author Glen Stampoultzis
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+ This method Serializes this escher record into a byte array.
+
+ @param offset The offset into data to start writing the record data to.
+ @param data The byte array to Serialize to.
+ @param listener A listener to retrieve start and end callbacks. Use a NullEscherSerailizationListener to ignore these events.
+ @return The number of bytes written.
+ @see NullEscherSerializationListener
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ @return Number of bytes
+
+
+ Returns the identifier of this record.
+
+
+ The short name for this record
+
+
+ Returns the string representation of this record.
+
+
+ Any data recording this record.
+
+
+ The following enum specifies values that indicate special procedural properties that
+ are used to modify the color components of another color. These values are combined with
+ those of the {@link SysIndexSource} enum or with a user-specified color.
+ The first six values are mutually exclusive.
+
+
+ An OfficeArtCOLORREF structure entry which also handles color extension opid data
+
+
+ @return {@link SysIndexSource} if {@link #hasSysIndexFlag()} is {@code true}, otherwise null
+
+
+ Return the {@link SysIndexProcedure} - for invert flag use {@link #getSysIndexInvert()}
+ @return {@link SysIndexProcedure} if {@link #hasSysIndexFlag()} is {@code true}, otherwise null
+
+
+ @return 0 for no invert flag, 1 for {@link SysIndexProcedure#INVERT_AFTER} and
+ 2 for {@link SysIndexProcedure#INVERT_HIGHBIT_AFTER}
+
+
+ @return index of the scheme color or -1 if {@link #hasSchemeIndexFlag()} is {@code false}
+
+ @see NPOI.HSLF.Record.ColorSchemeAtom#getColor(int)
+
+
+ @return index of current palette (color) or -1 if {@link #hasPaletteIndexFlag()} is {@code false}
+
+
+
+ A complex property differs from a simple property in that the data can not fit inside a 32 bit
+ integer. See the specification for more detailed information regarding exactly what is
+ stored here.
+ @author Glen Stampoultzis
+
+
+
+
+ Create a complex property using the property id and a byte array containing the complex
+ data value.
+
+ The id consists of the property number, a flag indicating whether this is a blip id and a flag
+ indicating that this is a complex property.
+ The value of this property.
+
+
+
+ Create a complex property using the property number, a flag to indicate whether this is a
+ blip reference and the complex property data.
+
+ The property number.
+ Whether this is a blip id. Should be false.
+ The value of this complex property.
+
+
+
+ Serializes the simple part of this property. ie the first 6 bytes.
+
+
+
+
+
+
+
+ Serializes the complex part of this property
+
+ The data array to Serialize to
+ The offset within data to start serializing to.
+ The number of bytes Serialized.
+
+
+
+ Gets the complex data.
+
+ The complex data.
+
+
+
+ Determine whether this property is equal to another property.
+
+ The object to compare to.
+ True if the objects are equal.
+
+
+
+ Caclulates the number of bytes required to Serialize this property.
+
+ Number of bytes
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Escher container records store other escher records as children.
+ The container records themselves never store any information beyond
+ the standard header used by all escher records. This one record is
+ used to represent many different types of records.
+ @author Glen Stampoultzis
+
+
+
+ in case if document contains any charts we have such document structure:
+ BOF
+ ...
+ DrawingRecord
+ ...
+ ObjRecord|TxtObjRecord
+ ...
+ EOF
+ ...
+ BOF(Chart begin)
+ ...
+ DrawingRecord
+ ...
+ ObjRecord|TxtObjRecord
+ ...
+ EOF
+ So, when we call EscherAggregate.createAggregate() we have not all needed data.
+ When we got warning "WARNING: " + bytesRemaining + " bytes remaining but no space left"
+ we should save value of bytesRemaining
+ and add it to container size when we serialize it
+
+
+
+ The contract of this method is to deSerialize an escher record including
+ it's children.
+
+ The byte array containing the Serialized escher
+ records.
+ The offset into the byte array.
+ A factory for creating new escher records
+ The number of bytes written.
+
+
+
+ Serializes to an existing byte array without serialization listener.
+ This is done by delegating to Serialize(int, byte[], EscherSerializationListener).
+
+ the offset within the data byte array.
+ the data array to Serialize to.
+ a listener for begin and end serialization events.
+ The number of bytes written.
+
+
+
+ Subclasses should effeciently return the number of bytes required to
+ Serialize the record.
+
+ number of bytes
+
+
+
+ Do any of our (top level) children have the
+ given recordId?
+
+ The record id.
+
+ true if [has child of type] [the specified record id]; otherwise, false.
+
+
+
+
+ Returns a list of all the child (escher) records
+ of the container.
+
+
+
+
+
+ Returns all of our children which are also
+ EscherContainers (may be 0, 1, or vary rarely
+ 2 or 3)
+
+ The child containers.
+
+
+
+ Subclasses should return the short name for this escher record.
+
+
+
+
+
+ The display methods allows escher variables to print the record names
+ according to their hierarchy.
+
+ The current indent level.
+
+
+
+ Adds the child record.
+
+ The record.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets the child by id.
+
+ The record id.
+
+
+
+
+ Recursively find records with the specified record ID
+
+
+ list to store found records
+
+
+
+ This record defines the drawing groups used for a particular sheet.
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ This method Serializes this escher record into a byte array.
+
+ The offset into data to start writing the record data to.
+ The byte array to Serialize to.
+ a listener for begin and end serialization events.
+ The number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ Return the current record id.
+
+ The 16 bit record id.
+
+
+
+ The short name for this record
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets or sets the shape id max.
+
+ The shape id max.
+
+
+
+ Gets the Number of id clusters + 1
+
+ The num id clusters.
+
+
+
+ Gets or sets the num shapes saved.
+
+ The num shapes saved.
+
+
+
+ Gets or sets the drawings saved.
+
+ The drawings saved.
+
+
+
+ Gets or sets the max drawing group id.
+
+ The max drawing group id.
+
+
+
+ Gets or sets the file id clusters.
+
+ The file id clusters.
+
+
+
+ Adds the cluster.
+
+ The dg id.
+ The num shaped used.
+
+
+
+ Adds the cluster.
+
+ id of the drawing group (stored in the record options)
+ initial value of the numShapedUsed field
+ if set to true if true then sort clusters by drawing group id.(
+ In Excel the clusters are sorted but in PPT they are not).
+
+
+
+ This record simply holds the number of shapes in the drawing group and the
+ last shape id used for this drawing group.
+ @author Glen Stampoultzis
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ This method Serializes this escher record into a byte array.
+
+ The offset into data to start writing the record data to.
+ The byte array to Serialize to.
+ The number of bytes written.
+ a listener for begin and end serialization events.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ Return the current record id.
+
+ The 16 bit record id.
+
+
+
+ The short name for this record
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets or sets The number of shapes in this drawing group.
+
+ The num shapes.
+
+
+
+ Gets or sets The last shape id used in this drawing group.
+
+ The last MSOSPID.
+
+
+
+ Gets the drawing group id for this record. This is encoded in the
+ instance part of the option record.
+
+ The drawing group id.
+
+
+
+ Increments the shape count.
+
+
+
+
+ Used to dump the contents of escher records to a PrintStream.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Decodes the escher stream from a byte array and dumps the results to
+ a print stream.
+
+ The data array containing the escher records.
+ The starting offset within the data array.
+ The number of bytes to Read.
+
+
+
+ This version of dump is a translation from the open office escher dump routine.
+
+ The number of bytes to Read
+ An input stream to Read from.
+
+
+
+ Returns a property name given a property id. This is used only by the
+ old escher dump routine.
+
+ The property number for the name
+ A descriptive name.
+
+
+
+ Returns the blip description given a blip id.
+
+ blip id
+ A description.
+
+
+
+ Straight conversion from OO. Converts a type of float.
+
+ The N32.
+
+
+
+
+ Dumps out a hex value by Reading from a input stream.
+
+ How many bytes this hex value consists of.
+ The stream to Read the hex value from.
+
+
+
+ Dumps the specified record size.
+
+ Size of the record.
+ The data.
+
+
+
+ @author Daniel Noll
+
+
+
+ BLIP signatures as defined in the escher spec
+
+
+ The primary UID is only saved to disk if (blip_instance ^ blip_signature == 1)
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into
+ May be null since this is not a container record.
+
+ The number of bytes Read from the byte array.
+
+
+
+
+ Serializes the record to an existing byte array.
+
+ the offset within the byte array
+ the data array to Serialize to
+ a listener for begin and end serialization events.
+ the number of bytes written.
+
+
+
+ Decompresses the provided data, returning the inflated result.
+
+ the deflated picture data.
+ the inflated picture data.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ Gets or sets the UID.
+
+ The UID.
+
+
+
+ Gets or sets the primary UID.
+
+ The primary UID.
+
+
+
+ Gets or sets the size of the uncompressed.
+
+ The size of the uncompressed.
+
+
+
+ Gets or sets the bounds.
+
+ The bounds.
+
+
+
+ Gets or sets the size EMU.
+
+ The size EMU.
+
+
+
+ Gets or sets the size of the compressed.
+
+ The size of the compressed.
+
+
+
+ Gets or sets a value indicating whether this instance is compressed.
+
+
+ true if this instance is compressed; otherwise, false.
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Return the blip signature
+
+ the blip signature
+
+
+
+ The opt record is used to store property values for a shape. It is the key to determining
+ the attributes of a shape. Properties can be of two types: simple or complex. Simple types
+ are fixed Length. Complex properties are variable Length.
+ @author Glen Stampoultzis
+
+
+
+
+ Automatically recalculate the correct option
+
+
+
+
+
+ The short name for this record
+
+
+
+
+
+ @author Daniel Noll
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into
+ May be null since this is not a container record.
+
+ The number of bytes Read from the byte array.
+
+
+
+
+ Serializes the record to an existing byte array.
+
+ the offset within the byte array
+ the data array to Serialize to
+ a listener for begin and end serialization events.
+ the number of bytes written.
+
+
+
+ Decompresses the provided data, returning the inflated result.
+
+ the deflated picture data.
+ the inflated picture data.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ Gets or sets the UID.
+
+ The UID.
+
+
+
+ Gets or sets the size of the uncompressed.
+
+ The size of the uncompressed.
+
+
+
+ Gets or sets the bounds.
+
+ The bounds.
+
+
+
+ Gets or sets the size EMU.
+
+ The size EMU.
+
+
+
+ Gets or sets the size of the compressed.
+
+ The size of the compressed.
+
+
+
+ Gets a value indicating whether this instance is compressed.
+
+
+ true if this instance is compressed; otherwise, false.
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Provides a list of all known escher properties including the description and
+ type.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Inits the props.
+
+
+
+
+ Adds the prop.
+
+ The s.
+ The data.
+
+
+
+ Gets the data.
+
+ Name of the prop.
+ The type.
+
+
+
+
+ Gets the data.
+
+ Name of the prop.
+
+
+
+
+ Gets the name of the property.
+
+ The property id.
+
+
+
+
+ Gets the type of the property.
+
+ The property id.
+
+
+
+
+ This is the abstract base class for all escher properties.
+ @see EscherOptRecord
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ The id is distinct from the actual property number. The id includes the property number the blip id
+ flag and an indicator whether the property is complex or not.
+
+
+
+ Initializes a new instance of the class.The three parameters are combined to form a property
+ id.
+
+ The property number.
+ if set to true [is complex].
+ if set to true [is blip id].
+
+
+
+ Gets the id.
+
+ The id.
+
+
+
+ Gets the property number.
+
+ The property number.
+
+
+
+ Gets a value indicating whether this instance is complex.
+
+
+ true if this instance is complex; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is blip id.
+
+
+ true if this instance is blip id; otherwise, false.
+
+
+
+
+ Gets the name.
+
+ The name.
+
+
+
+ Most properties are just 6 bytes in Length. Override this if we're
+ dealing with complex properties.
+
+ The size of the property.
+
+
+
+ Escher properties consist of a simple fixed Length part and a complex variable Length part.
+ The fixed Length part is Serialized first.
+
+ The data.
+ The pos.
+
+
+
+
+ Escher properties consist of a simple fixed Length part and a complex variable Length part.
+ The fixed Length part is Serialized first.
+
+ The data.
+ The pos.
+
+
+
+
+ Generates a property given a reference into the byte array storing that property.
+ @author Glen Stampoultzis
+
+
+
+
+ Create new properties from a byte array.
+
+ The byte array containing the property
+ The starting offset into the byte array
+ The new properties
+
+
+
+
+ This class stores the type and description of an escher property.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ The description of the escher property.
+
+
+
+ Initializes a new instance of the class.
+
+ The description of the escher property.
+ The type of the property.
+
+
+
+ Gets the description.
+
+ The description.
+
+
+
+ Gets the type.
+
+ The type.
+
+
+
+ The base abstract record from which all escher records are defined. Subclasses will need
+ to define methods for serialization/deserialization and for determining the record size.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Delegates to FillFields(byte[], int, EscherRecordFactory)
+
+ the bytes to serialize from
+ the escher record factory
+ The number of bytes written.
+
+
+
+ The contract of this method is to deSerialize an escher record including
+ it's children.
+
+ The byte array containing the Serialized escher
+ records.
+ The offset into the byte array.
+ A factory for creating new escher records.
+ The number of bytes written.
+
+
+
+ Reads the 8 byte header information and populates the
+ options
+ and
+ recordId
+ records.
+
+ the byte array to Read from
+ the offset to start Reading from
+ the number of bytes remaining in this record. This
+
+
+
+ Read the options field from header and return instance part of it.
+
+ the byte array to read from
+ the offset to start reading from
+ value of instance part of options field
+
+
+
+ Determine whether this is a container record by inspecting the option
+ field.
+
+
+ true if this instance is container record; otherwise, false.
+
+
+
+
+ Gets or sets the options field for this record. All records have one
+
+ The options.
+
+
+
+ Serializes to a new byte array. This is done by delegating to
+ Serialize(int, byte[]);
+
+ the Serialized record.
+
+
+
+ Serializes to an existing byte array without serialization listener.
+ This is done by delegating to Serialize(int, byte[], EscherSerializationListener).
+
+ the offset within the data byte array.
+ the data array to Serialize to.
+ The number of bytes written.
+
+
+
+ Serializes the record to an existing byte array.
+
+ the offset within the byte array.
+ the offset within the byte array
+ a listener for begin and end serialization events. This.
+ is useful because the serialization is
+ hierarchical/recursive and sometimes you need to be able
+ break into that.
+
+
+
+
+
+ Subclasses should effeciently return the number of bytes required to
+ Serialize the record.
+
+ number of bytes
+
+
+
+ Return the current record id.
+
+ The 16 bit record id.
+
+
+
+ Gets or sets the child records.
+
+ Returns the children of this record. By default this will
+ be an empty list. EscherCotainerRecord is the only record that may contain children.
+
+
+
+ Creates a new object that is a copy of the current instance.
+
+
+ A new object that is a copy of this instance.
+
+
+
+
+ Returns the indexed child record.
+
+ The index.
+
+
+
+
+ The display methods allows escher variables to print the record names
+ according to their hierarchy.
+
+ The current indent level.
+
+
+
+ Gets the name of the record.
+
+ The name of the record.
+
+
+
+ This class Reads the standard escher header.
+
+
+
+
+ Reads the header.
+
+ The data.
+ The off set.
+
+
+
+
+ Gets the options.
+
+ The options.
+
+
+
+ Gets the record id.
+
+ The record id.
+
+
+
+ Gets the remaining bytes.
+
+ The remaining bytes.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Get or set the instance part of the option record.
+
+
+
+
+ Get or set the version part of the option record.
+
+
+
+ @param tab - each children must be a right of his parent
+ @return xml representation of this record
+
+
+
+ The escher record factory interface allows for the creation of escher
+ records from a pointer into a data array.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Create a new escher record from the data provided. Does not attempt
+ to Fill the contents of the record however.
+
+ The data.
+ The off set.
+
+
+
+
+ A color property.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ The property number.
+ Color of the RGB.
+
+
+
+ Gets the color of the RGB.
+
+ The color of the RGB.
+
+
+
+ Gets the red.
+
+ The red.
+
+
+
+ Gets the green.
+
+ The green.
+
+
+
+ Gets the blue.
+
+ The blue.
+
+
+ Interface for listening to escher serialization events.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Fired before a given escher record is Serialized.
+
+ @param offset The position in the data array at which the record will be Serialized.
+ @param recordId The id of the record about to be Serialized.
+
+
+ Fired after a record has been Serialized.
+
+ @param offset The position of the end of the Serialized record + 1
+ @param recordId The id of the record about to be Serialized
+ @param size The number of bytes written for this record. If it is a container
+ record then this will include the size of any included records.
+
+
+
+ Defines the constants for the various possible shape paths.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ The property number.
+ The shape path.
+
+
+
+ A simple property is of fixed Length and as a property number in Addition
+ to a 32-bit value. Properties that can't be stored in only 32-bits are
+ stored as EscherComplexProperty objects.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ The id is distinct from the actual property number. The id includes the property number the blip id
+ flag and an indicator whether the property is complex or not.
+
+ The id.
+ The property value.
+
+
+
+ Constructs a new escher property. The three parameters are combined to form a property
+ id.
+
+ The property number.
+ if set to true [is complex].
+ if set to true [is blip id].
+ The property value.
+
+
+
+ Serialize the simple part of the escher record.
+
+ The data.
+ The off set.
+ the number of bytes Serialized.
+
+
+
+ Escher properties consist of a simple fixed Length part and a complex variable Length part.
+ The fixed Length part is Serialized first.
+
+
+
+
+
+
+
+ Return the 32 bit value of this property.
+
+ The property value.
+
+
+
+ Returns true if one escher property is equal to another.
+
+ The o.
+
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ The spgr record defines information about a shape group. Groups in escher
+ are simply another form of shape that you can't physically see.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ This method Serializes this escher record into a byte array
+
+ The offset into data
+ to start writing the record data to.
+ The byte array to Serialize to.
+ a listener for begin and end serialization events.
+ The number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ Return the current record id.
+
+ The 16 bit identifier of this shape group record.
+
+
+
+ The short name for this record
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets or sets the starting top-left coordinate of child records.
+
+ The rect x1.
+
+
+
+ Gets or sets the starting bottom-right coordinate of child records.
+
+ The rect x2.
+
+
+
+ Gets or sets the starting top-left coordinate of child records.
+
+ The rect y1.
+
+
+
+ Gets or sets the starting bottom-right coordinate of child records.
+
+ The rect y2.
+
+
+
+ A list of the most recently used colours for the drawings contained in
+ this document.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ This method Serializes this escher record into a byte array
+
+ The offset into data
+ to start writing the record data to.
+ The byte array to Serialize to.
+ a listener for begin and end serialization events.
+ The number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ number of bytes
+
+
+
+ Return the current record id.
+
+ the 16 bit identifer for this record.
+
+
+
+ Gets the short name for this record
+
+ The name of the record.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+ @return a string representation of this record.
+
+
+
+ Gets or sets the color1.
+
+ The color1.
+
+
+
+ Gets or sets the color2.
+
+ The color2.
+
+
+
+ Gets or sets the color3.
+
+ The color3.
+
+
+
+ Gets or sets the color4.
+
+ The color4.
+
+
+
+ ToGether the the EscherOptRecord this record defines some of the basic
+ properties of a shape.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ The contract of this method is to deSerialize an escher record including
+ it's children.
+
+ The byte array containing the Serialized escher
+ records.
+ The offset into the byte array.
+ A factory for creating new escher records
+ The number of bytes written.
+
+
+
+ Serializes to an existing byte array without serialization listener.
+ This is done by delegating to Serialize(int, byte[], EscherSerializationListener).
+
+ the offset within the data byte array.
+ the data array to Serialize to.
+ a listener for begin and end serialization events.
+ The number of bytes written.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ @return the 16 bit identifier for this record.
+
+
+
+
+
+ The short name for this record
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Converts the shape flags into a more descriptive name.
+
+ The flags.
+
+
+
+
+ Gets or sets A number that identifies this shape
+
+ The shape id.
+
+
+
+ The flags that apply to this shape.
+
+ The flags.
+
+
+
+ Get or set shape type. Must be one of MSOSPT values (see [MS-ODRAW] for details).
+
+
+
+ "The OfficeArtTertiaryFOPT record specifies a table of OfficeArtRGFOPTE properties, as defined in section 2.3.1."
+ -- [MS-ODRAW] -- v20110608; Office Drawing Binary File Format
+
+ @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
+
+
+
+ Holds data from the parent application. Most commonly used to store
+ text in the format of the parent application, rather than in
+ Escher format. We don't attempt to understand the contents, since
+ they will be in the parent's format, not Escher format.
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Nick Burch (nick at torchbox dot com)
+
+
+
+ The data for this record not including the the 8 byte header
+
+
+ This method deserializes the record from a byte array.
+
+ @param data The byte array containing the escher record information
+ @param offset The starting offset into data.
+ @param recordFactory May be null since this is not a container record.
+ @return The number of bytes Read from the byte array.
+
+
+
+ Writes this record and any contained records to the supplied byte
+
+
+
+ a listener for begin and end serialization events.
+ the number of bytes written.
+
+
+
+ Returns any extra data associated with this record. In practice excel
+ does not seem to put anything here, but with PowerPoint this will
+ contain the bytes that make up a TextHeaderAtom followed by a
+ TextBytesAtom/TextCharsAtom
+
+ The data.
+
+
+
+ Sets the extra data (in the parent application's format) to be
+ contained by the record. Used when the parent application changes
+ the contents.
+
+ The b.
+ The start.
+ The length.
+
+
+
+ Sets the data.
+
+ The b.
+
+
+
+ Returns the number of bytes that are required to serialize this record.
+
+ Number of bytes
+
+
+
+ The short name for this record
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ This record is used whenever a escher record is encountered that
+ we do not explicitly support.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+ The data for this record not including the the 8 byte header
+
+
+
+ This method deSerializes the record from a byte array.
+
+ The byte array containing the escher record information
+ The starting offset into data
+ May be null since this is not a container record.
+ The number of bytes Read from the byte array.
+
+
+
+ Writes this record and any contained records to the supplied byte
+ array.
+
+
+
+ a listener for begin and end serialization events.
+ the number of bytes written.
+
+
+
+ Gets the data.
+
+ The data.
+
+
+
+ Returns the number of bytes that are required to Serialize this record.
+
+ Number of bytes
+
+
+
+ Returns the children of this record. By default this will
+ be an empty list. EscherCotainerRecord is the only record
+ that may contain children.
+
+
+
+
+
+ The short name for this record
+
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Adds the child record.
+
+ The child record.
+
+
+
+ Maintains the instances of {@link CustomProperty} that belong To a
+ {@link DocumentSummaryInformation}. The class maintains the names of the
+ custom properties in a dictionary. It implements the {@link Map} interface
+ and by this provides a simplified view on custom properties: A property's
+ name is the key that maps To a typed value. This implementation hides
+ property IDs from the developer and regards the property names as keys To
+ typed values.
+ While this class provides a simple API To custom properties, it ignores
+ the fact that not names, but IDs are the real keys To properties. Under the
+ hood this class maintains a 1:1 relationship between IDs and names. Therefore
+ you should not use this class To process property Sets with several IDs
+ mapping To the same name or with properties without a name: the result will
+ contain only a subSet of the original properties. If you really need To deal
+ such property Sets, use HPSF's low-level access methods.
+ An application can call the {@link #isPure} method To check whether a
+ property Set parsed by {@link CustomProperties} is still pure (i.e.
+ unmodified) or whether one or more properties have been dropped.
+ This class is not thRead-safe; concurrent access To instances of this
+ class must be syncronized.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2006-02-09
+
+
+
+ Maps property IDs To property names.
+
+
+ Maps property names To property IDs.
+
+
+ Tells whether this object is pure or not.
+
+
+
+ Puts a {@link CustomProperty} into this map. It is assumed that the
+ {@link CustomProperty} alReady has a valid ID. Otherwise use
+ {@link #Put(CustomProperty)}.
+
+ The name.
+ The custom property.
+
+
+
+ Returns a set of all the names of our
+ custom properties. Equivalent to
+ {@link #nameSet()}
+
+
+ Returns a set of all the names of our
+ custom properties
+
+
+ Returns a set of all the IDs of our
+ custom properties
+
+
+
+ Puts a {@link CustomProperty} that has not yet a valid ID into this
+ map. The method will allocate a suitable ID for the custom property:
+
+ - If there is alReady a property with the same name, take the ID
+ of that property.
+ - Otherwise Find the highest ID and use its value plus one.
+
+
+ The custom property.
+ If the was alReady a property with the same name, the
+
+
+
+ Removes a custom property.
+
+ The name of the custom property To Remove
+ The Removed property or
+ null
+ if the specified property was not found.
+
+
+
+ Adds a named string property.
+
+ The property's name.
+ The property's value.
+ the property that was stored under the specified name before, or
+ null
+ if there was no such property before.
+
+
+
+ Adds a named long property
+
+ The property's name.
+ The property's value.
+ the property that was stored under the specified name before, or
+ null
+ if there was no such property before.
+
+
+
+ Adds a named double property.
+
+ The property's name.
+ The property's value.
+ the property that was stored under the specified name before, or
+ null
+ if there was no such property before.
+
+
+
+ Adds a named integer property.
+
+ The property's name.
+ The property's value.
+ the property that was stored under the specified name before, or
+ null
+ if there was no such property before.
+
+
+
+ Adds a named bool property.
+
+ The property's name.
+ The property's value.
+ the property that was stored under the specified name before, or
+ null
+ if there was no such property before.
+
+
+
+ Adds a named date property.
+
+ The property's name.
+ The property's value.
+ the property that was stored under the specified name before, or
+ null
+ if there was no such property before.
+
+
+
+ Gets the with the specified name.
+
+ the value or
+ null
+ if a value with the specified
+ name is not found in the custom properties.
+
+
+ Checks against both String Name and Long ID
+
+
+ Checks against both the property, and its values.
+
+
+
+ Gets the dictionary which Contains IDs and names of the named custom
+ properties.
+
+ The dictionary.
+
+
+
+ Gets or sets the codepage.
+
+ The codepage.
+
+
+
+ Tells whether this {@link CustomProperties} instance is pure or one or
+ more properties of the underlying low-level property Set has been
+ dropped.
+
+ true if this instance is pure; otherwise, false.
+
+
+
+ This class represents custum properties in the document summary
+ information stream. The difference To normal properties is that custom
+ properties have an optional name. If the name is not null it
+ will be maintained in the section's dictionary.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2006-02-09
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ the property To copy
+
+
+
+ Initializes a new instance of the class.
+
+ This property's attributes are copied To the new custom
+ property.
+ The new custom property's name.
+
+
+
+ Gets or sets the property's name.
+
+ the property's name.
+
+
+
+ Compares two custom properties for equality. The method returns
+ true if all attributes of the two custom properties are
+ equal.
+
+ The custom property To Compare with.
+ true
+ if both custom properties are equal, else
+ false
+
+
+
+
+
+ @see Object#GetHashCode()
+
+
+
+ Convenience class representing a DocumentSummary Information stream in a
+ Microsoft Office document.
+ @author Rainer Klute
+ klute@rainer-klute.de
+ @author Drew Varner (Drew.Varner cloSeto sc.edu)
+ @author robert_flaherty@hyperion.com
+ @since 2002-02-09
+
+
+
+ The document name a document summary information stream
+ usually has in a POIFS filesystem.
+
+
+
+ Initializes a new instance of the class.
+
+ A property Set which should be Created from a
+ document summary information stream.
+
+
+
+ Gets or sets the category.
+
+ The category value
+
+
+
+ Removes the category.
+
+
+
+
+ Gets or sets the presentation format (or null).
+
+ The presentation format value
+
+
+
+ Removes the presentation format.
+
+
+
+
+ Gets or sets the byte count or 0 if the {@link
+ DocumentSummaryInformation} does not contain a byte count.
+
+ The byteCount value
+
+
+
+ Removes the byte count.
+
+
+
+
+ Gets or sets the line count or 0 if the {@link
+ DocumentSummaryInformation} does not contain a line count.
+
+ The line count value.
+
+
+
+ Removes the line count.
+
+
+
+
+ Gets or sets the par count or 0 if the {@link
+ DocumentSummaryInformation} does not contain a par count.
+
+ The par count value
+
+
+
+ Removes the par count.
+
+
+
+
+ Gets or sets the slide count or 0 if the {@link
+ DocumentSummaryInformation} does not contain a slide count.
+
+ The slide count value
+
+
+
+ Removes the slide count.
+
+
+
+
+ Gets or sets the note count or 0 if the {@link
+ DocumentSummaryInformation} does not contain a note count
+
+ The note count value
+
+
+
+ Removes the note count.
+
+
+
+
+ Gets or sets the hidden count or 0 if the {@link
+ DocumentSummaryInformation} does not contain a hidden
+ count.
+
+ The hidden count value.
+
+
+
+ Removes the hidden count.
+
+
+
+
+ Returns the mmclip count or 0 if the {@link
+ DocumentSummaryInformation} does not contain a mmclip
+ count.
+
+ The mmclip count value.
+
+
+
+ Removes the MMClip count.
+
+
+
+
+ Gets or sets a value indicating whether this is scale.
+
+ true if cropping is desired; otherwise, false.
+
+
+
+ Removes the scale.
+
+
+
+
+ Gets or sets the heading pair (or null)
+
+ The heading pair value.
+
+
+
+ Removes the heading pair.
+
+
+
+
+ Gets or sets the doc parts.
+
+ The doc parts value
+
+
+
+ Removes the doc parts.
+
+
+
+
+ Gets or sets the manager (or null).
+
+ The manager value
+
+
+
+ Removes the manager.
+
+
+
+
+ Gets or sets the company (or null).
+
+ The company value
+
+
+
+ Removes the company.
+
+
+
+
+ Gets or sets a value indicating whether [links dirty].
+
+ true if the custom links are dirty.; otherwise, false.
+
+
+
+ Removes the links dirty.
+
+
+
+ Returns the character count including whitespace, or 0 if the
+ {@link DocumentSummaryInformation} does not contain this char count.
+ This is the whitespace-including version of {@link SummaryInformation#getCharCount()}
+
+ @return The character count or null
+
+
+ Removes the character count
+
+
+ Get if the User Defined Property Set has been updated outside of the
+ Application.
+ If it has (true), the hyperlinks should be updated on document load.
+
+
+ Removes the flag for if the User Defined Property Set has been updated
+ outside of the Application.
+
+
+ Gets the version of the Application which wrote the
+ Property set, stored with the two high order bytes having the major
+ version number, and the two low order bytes the minor version number.
+ This will be 0 if no version is set.
+
+
+ Removes the Application Version
+
+
+ Returns the VBA digital signature for the VBA project
+ embedded in the document (or null).
+
+
+ Removes the VBA Digital Signature
+
+
+ Gets the content type of the file (or null).
+
+
+ Removes the content type of the file
+
+
+ Gets the content status of the file (or null).
+
+
+ Removes the content status of the file
+
+
+ Gets the document language, which is normally unset and empty
+ (or null).
+
+
+ Removes the document language
+
+
+ Gets the document version as a string, which is normally unset and empty
+ (or null).
+
+
+ Removes the document version string
+
+
+
+ Gets or sets the custom properties.
+
+ The custom properties.
+
+
+
+ Creates section 2 if it is not alReady present.
+
+
+
+
+ Removes the custom properties.
+
+
+
+
+ Extracts all of the HPSF properties, both
+ build in and custom, returning them in
+ textual form.
+
+
+
+
+ Gets the document summary information text.
+
+ The document summary information text.
+
+
+
+ Gets the summary information text.
+
+ The summary information text.
+
+
+
+ Gets the properties text.
+
+ The ps.
+
+
+
+
+ Return the text of all the properties defined in
+ the document.
+
+ All the text from the document.
+
+
+
+ Returns another text extractor, which is able to
+ output the textual content of the document
+ metadata / properties, such as author and title.
+
+ The metadata text extractor.
+
+
+
+ This exception is the superclass of all other checked exceptions thrown
+ in this package. It supports a nested "reason" throwable, i.e. an exception
+ that caused this one To be thrown.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-02-09
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message string.
+
+
+
+ Initializes a new instance of the class.
+
+ The reason, i.e. a throwable that indirectly
+ caused this exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The message string.
+ The reason, i.e. a throwable that indirectly
+ caused this exception.
+
+
+
+ Returns the {@link Exception} that caused this exception To
+ be thrown or null if there was no such {@link
+ Exception}.
+
+ The reason.
+
+
+ A version of {@link POIDocument} which allows access to the
+ HPSF Properties, but no other document contents.
+ Normally used when you want to read or alter the Document Properties,
+ without affecting the rest of the file
+
+
+ Write out to the currently open file the properties changes, but nothing else
+
+
+ Write out, with any properties changes, but nothing else
+
+
+ Write out, with any properties changes, but nothing else
+
+
+
+ This exception is the superclass of all other unchecked
+ exceptions thrown in this package. It supports a nested "reason"
+ throwable, i.e. an exception that caused this one To be thrown.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-02-09
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message string.
+
+
+
+ Initializes a new instance of the class.
+
+ The reason, i.e. a throwable that indirectly
+ caused this exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The message string.
+ The reason, i.e. a throwable that indirectly
+ caused this exception.
+
+
+
+ This exception is thrown when there is an illegal value Set in a
+ {@link PropertySet}. For example, a {@link Variant#VT_BOOL} must
+ have a value of -1 (true) or 0 (false).
+ Any other value would trigger this exception. It supports a nested
+ "reason" throwable, i.e. an exception that caused this one To be
+ thrown.
+ @author Drew Varner(Drew.Varner atDomain sc.edu)
+ @since 2002-05-26
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+
+
+
+ Initializes a new instance of the class.
+
+ This exception's underlying reason
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+ This exception's underlying reason
+
+
+
+ This exception is thrown if HPSF encounters a variant type that is illegal
+ in the current context.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2004-06-21
+
+
+
+
+ Initializes a new instance of the class.
+
+ The unsupported variant type
+ The value
+ A message string
+
+
+
+ Initializes a new instance of the class.
+
+ The unsupported variant type
+ The value.
+
+
+
+ This exception is thrown if an {@link java.io.InputStream} does
+ not support the {@link java.io.InputStream#mark} operation.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-02-09
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string.
+
+
+
+ Initializes a new instance of the class.
+
+ This exception's underlying reason.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+ This exception's underlying reason
+
+
+
+ This exception is thrown if one of the {@link PropertySet}'s
+ convenience methods does not Find a required {@link Section}.
+ The constructors of this class are analogous To those of its
+ superclass and documented there.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2006-02-08
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+
+
+
+ Initializes a new instance of the class.
+
+ This exception's underlying reason.
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+ This exception's underlying reason
+
+
+
+ Adds writing capability To the {@link Property} class.
+ Please be aware that this class' functionality will be merged into the
+ {@link Property} class at a later time, so the API will Change.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2003-08-03
+
+
+
+
+ Creates an empty property. It must be Filled using the Set method To
+ be usable.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The property To copy.
+
+
+
+ Writes the property To an output stream.
+
+ The output stream To Write To.
+ The codepage To use for writing non-wide strings
+ the number of bytes written To the stream
+
+
+
+ Adds writing support To the {@link PropertySet} class.
+ Please be aware that this class' functionality will be merged into the
+ {@link PropertySet} class at a later time, so the API will Change.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2003-02-19
+
+
+
+
+ Initializes a new instance of the class.
+ Its primary task is To initialize the immutable field with their proper
+ values. It also Sets fields that might Change To reasonable defaults.
+
+
+
+
+ Initializes a new instance of the class.
+ All nested elements, i.e.Sections and Property instances, will be their
+ mutable counterparts in the new MutablePropertySet.
+
+ The property Set To copy
+
+
+ The Length of the property Set stream header.
+
+
+
+ Gets or sets the "byteOrder" property.
+
+ the byteOrder value To Set
+
+
+
+ Gets or sets the "format" property.
+
+ the format value To Set
+
+
+
+ Gets or sets the "osVersion" property
+
+ the osVersion value To Set.
+
+
+
+ Gets or sets the property Set stream's low-level "class ID"
+
+ The property Set stream's low-level "class ID" field.
+
+
+
+ Removes all sections from this property Set.
+
+
+
+
+ Adds a section To this property Set.
+
+ section The {@link Section} To Add. It will be Appended
+ after any sections that are alReady present in the property Set
+ and thus become the last section.
+
+
+
+ Writes the property Set To an output stream.
+
+ the output stream To Write the section To
+
+
+
+ Returns the contents of this property set stream as an input stream.
+ The latter can be used for example to write the property set into a POIFS
+ document. The input stream represents a snapshot of the property set.
+ If the latter is modified while the input stream is still being
+ read, the modifications will not be reflected in the input stream but in
+ the {@link MutablePropertySet} only.
+
+ the contents of this property set stream
+
+
+
+ Writes a property Set To a document in a POI filesystem directory
+
+ The directory in the POI filesystem To Write the document To.
+ The document's name. If there is alReady a document with the
+ same name in the directory the latter will be overwritten.
+
+
+
+ Adds writing capability To the {@link Section} class.
+ Please be aware that this class' functionality will be merged into the
+ {@link Section} class at a later time, so the API will Change.
+ @since 2002-02-20
+
+
+
+ If the "dirty" flag is true, the section's size must be
+ (re-)calculated before the section is written.
+
+
+ List To assemble the properties. Unfortunately a wrong
+ decision has been taken when specifying the "properties" field
+ as an Property[]. It should have been a {@link java.util.List}.
+
+
+ Contains the bytes making out the section. This byte array is
+ established when the section's size is calculated and can be reused
+ later. It is valid only if the "dirty" flag is false.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Constructs a MutableSection by doing a deep copy of an
+ existing Section. All nested Property
+ instances, will be their mutable counterparts in the new
+ MutableSection.
+
+ The section Set To copy
+
+
+
+ Sets the section's format ID.
+
+ The section's format ID
+
+
+
+ Sets the section's format ID.
+
+ The section's format ID as a byte array. It components
+ are in big-endian format.
+
+
+
+ Sets this section's properties. Any former values are overwritten.
+
+ This section's new properties.
+
+
+
+ Sets the string value of the property with the specified ID.
+
+ The property's ID
+ The property's value. It will be written as a Unicode
+ string.
+
+
+
+ Sets the int value of the property with the specified ID.
+
+ The property's ID
+ The property's value.
+
+
+
+ Sets the long value of the property with the specified ID.
+
+ The property's ID
+ The property's value.
+
+
+
+ Sets the bool value of the property with the specified ID.
+
+ The property's ID
+ The property's value.
+
+
+
+ Sets the value and the variant type of the property with the
+ specified ID. If a property with this ID is not yet present in
+ the section, it will be Added. An alReady present property with
+ the specified ID will be overwritten. A default mapping will be
+ used To choose the property's type.
+
+ The property's ID.
+ The property's variant type.
+ The property's value.
+
+
+
+ Sets the property.
+
+ The property To be Set.
+
+
+
+ Removes the property.
+
+ The ID of the property To be Removed
+
+
+
+ Sets the value of the bool property with the specified
+ ID.
+
+ The property's ID
+ The property's value
+
+
+
+ Returns the section's size in bytes.
+
+ The section's size in bytes.
+
+
+
+ Calculates the section's size. It is the sum of the Lengths of the
+ section's header (8), the properties list (16 times the number of
+ properties) and the properties themselves.
+
+ the section's Length in bytes.
+
+
+
+ Writes this section into an output stream.
+ Internally this is done by writing into three byte array output
+ streams: one for the properties, one for the property list and one for
+ the section as such. The two former are Appended To the latter when they
+ have received all their data.
+
+ The stream To Write into.
+ The number of bytes written, i.e. the section's size.
+
+
+
+ Writes the section's dictionary
+
+ The output stream To Write To.
+ The dictionary.
+ The codepage to be used to Write the dictionary items.
+ The number of bytes written
+
+ see MSDN KB: http://msdn.microsoft.com/en-us/library/aa380065(VS.85).aspx
+
+
+
+
+ OverWrites the base class' method To cope with a redundancy:
+ the property count is maintained in a separate member variable, but
+ shouldn't.
+
+ The number of properties in this section.
+
+
+
+ Returns this section's properties.
+
+ This section's properties.
+
+
+
+ Ensures the properties.
+
+
+
+
+ Gets a property.
+
+ The ID of the property To Get
+ The property or null if there is no such property
+
+
+
+ Sets the section's dictionary. All keys in the dictionary must be
+ {@link java.lang.long} instances, all values must be
+ {@link java.lang.String}s. This method overWrites the properties with IDs
+ 0 and 1 since they are reserved for the dictionary and the dictionary's
+ codepage. Setting these properties explicitly might have surprising
+ effects. An application should never do this but always use this
+ method.
+
+
+ the dictionary
+
+
+
+
+ Sets the property.
+
+ The property ID.
+ The property's value. The value's class must be one of those
+ supported by HPSF.
+
+
+
+ Removes all properties from the section including 0 (dictionary) and
+ 1 (codepage).
+
+
+
+
+ Gets the section's codepage, if any.
+
+ The section's codepage if one is defined, else -1.
+
+
+
+ This exception is thrown if a {@link MutablePropertySet} is To be written
+ but does not have a formatID Set (see {@link
+ MutableSection#SetFormatID(ClassID)} or
+ {@link org.apache.poi.hpsf.MutableSection#SetFormatID(byte[])}.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-09-03
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+
+
+
+ Initializes a new instance of the class.
+
+ This exception's underlying reason
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+ This exception's underlying reason
+
+
+
+ This exception is thrown if a format error in a property Set stream Is
+ detected or when the input data do not constitute a property Set stream.
+ The constructors of this class are analogous To those of its superclass
+ and are documented there.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-02-09
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+
+
+
+ Initializes a new instance of the class.
+
+ This exception's underlying reason
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+ This exception's underlying reason
+
+
+
+ This exception is thrown if one of the {@link PropertySet}'s
+ convenience methods that require a single {@link Section} is called
+ and the {@link PropertySet} does not contain exactly one {@link
+ Section}.
+ The constructors of this class are analogous To those of its
+ superclass and documented there.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-02-09
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+
+
+
+ Initializes a new instance of the class.
+
+ This exception's underlying reason
+
+
+
+ Initializes a new instance of the class.
+
+ The exception's message string
+ This exception's underlying reason
+
+
+
+ A property in a {@link Section} of a {@link PropertySet}.
+ The property's ID gives the property a meaning
+ in the context of its {@link Section}. Each {@link Section} spans
+ its own name space of property IDs.
+ The property's type determines how its
+ value is interpreted. For example, if the type Is
+ {@link Variant#VT_LPSTR} (byte string), the value consists of a
+ DWord telling how many bytes the string Contains. The bytes follow
+ immediately, including any null bytes that terminate the
+ string. The type {@link Variant#VT_I4} denotes a four-byte integer
+ value, {@link Variant#VT_FILETIME} some DateTime and time (of a
+ file).
+ Please note that not all {@link Variant} types yet. This might Change
+ over time but largely depends on your feedback so that the POI team knows
+ which variant types are really needed. So please feel free To submit error
+ reports or patches for the types you need.
+ Microsoft documentation:
+
+ Property Set Display Name Dictionary
+ .
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @author Drew Varner (Drew.Varner InAndAround sc.edu)
+ @see Section
+ @see Variant
+ @since 2002-02-09
+
+
+
+ The property's ID.
+
+
+ Returns the property's ID.
+
+ @return The ID value
+
+
+ The property's type.
+
+
+ Returns the property's type.
+
+ @return The type value
+
+
+ The property's value.
+
+
+
+ Gets the property's value.
+
+ The property's value
+
+
+
+ Initializes a new instance of the class.
+
+ the property's ID.
+ the property's type, see {@link Variant}.
+ the property's value. Only certain types are allowed, see
+ {@link Variant}.
+
+
+
+ Initializes a new instance of the class.
+
+ The property's ID.
+ The bytes the property Set stream consists of.
+ The property's type/value pair's offset in the
+ section.
+ The property's type/value pair's Length in bytes.
+ The section's and thus the property's
+ codepage. It is needed only when Reading string values
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Reads the dictionary.
+
+ The byte array containing the bytes making out the dictionary.
+ At this offset within src the dictionary starts.
+ The dictionary Contains at most this many bytes.
+ The codepage of the string values.
+ The dictonary
+
+
+
+ Gets the property's size in bytes. This is always a multiple of
+ 4.
+
+ the property's size in bytes
+
+
+
+ Compares two properties.
+ Please beware that a property with
+ ID == 0 is a special case: It does not have a type, and its value is the
+ section's dictionary. Another special case are strings: Two properties
+ may have the different types Variant.VT_LPSTR and Variant.VT_LPWSTR;
+
+ The o.
+
+
+
+
+ Typeses the are equal.
+
+ The t1.
+ The t2.
+
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Represents a property Set in the Horrible Property Set Format
+ (HPSF). These are usually metadata of a Microsoft Office
+ document.
+ An application that wants To access these metadata should Create
+ an instance of this class or one of its subclasses by calling the
+ factory method {@link PropertySetFactory#Create} and then retrieve
+ the information its needs by calling appropriate methods.
+ {@link PropertySetFactory#Create} does its work by calling one
+ of the constructors {@link PropertySet#PropertySet(InputStream)} or
+ {@link PropertySet#PropertySet(byte[])}. If the constructor's
+ argument is not in the Horrible Property Set Format, i.e. not a
+ property Set stream, or if any other error occurs, an appropriate
+ exception is thrown.
+ A {@link PropertySet} has a list of {@link Section}s, and each
+ {@link Section} has a {@link Property} array. Use {@link
+ #GetSections} To retrieve the {@link Section}s, then call {@link
+ Section#GetProperties} for each {@link Section} To Get hold of the
+ {@link Property} arrays. Since the vast majority of {@link
+ PropertySet}s Contains only a single {@link Section}, the
+ convenience method {@link #GetProperties} returns the properties of
+ a {@link PropertySet}'s {@link Section} (throwing a {@link
+ NoSingleSectionException} if the {@link PropertySet} Contains more
+ (or less) than exactly one {@link Section}).
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @author Drew Varner (Drew.Varner hanginIn sc.edu)
+ @since 2002-02-09
+
+
+
+ The "byteOrder" field must equal this value.
+
+
+ Specifies this {@link PropertySet}'s byte order. See the
+ HPFS documentation for details!
+
+
+
+ Gets or sets the property Set stream's low-level "byte order"
+ field. It is always 0xFFFE
+
+ The property Set stream's low-level "byte order" field..
+
+
+ The "format" field must equal this value.
+
+
+ Specifies this {@link PropertySet}'s format. See the HPFS
+ documentation for details!
+
+
+
+ Gets or sets the property Set stream's low-level "format"
+ field. It is always 0x0000
+
+ The property Set stream's low-level "format" field.
+
+
+ Specifies the version of the operating system that Created
+ this {@link PropertySet}. See the HPFS documentation for
+ details!
+
+
+ If the OS version field holds this value the property Set stream Was
+ Created on a 16-bit Windows system.
+
+
+ If the OS version field holds this value the property Set stream Was
+ Created on a Macintosh system.
+
+
+ If the OS version field holds this value the property Set stream Was
+ Created on a 32-bit Windows system.
+
+
+
+ Returns the property Set stream's low-level "OS version"
+ field.
+
+ The property Set stream's low-level "OS version" field.
+
+
+ Specifies this {@link PropertySet}'s "classID" field. See
+ the HPFS documentation for details!
+
+
+
+ Gets or sets the property Set stream's low-level "class ID"
+
+ The property Set stream's low-level "class ID" field.
+
+
+
+ Returns the number of {@link Section}s in the property
+ Set.
+
+ The number of {@link Section}s in the property Set.
+
+
+ The sections in this {@link PropertySet}.
+
+
+
+ Returns the {@link Section}s in the property Set.
+
+ {@link Section}s in the property Set.
+
+
+
+ Creates an empty (uninitialized) {@link PropertySet}
+ Please note: For the time being this
+ constructor is protected since it is used for internal purposes
+ only, but expect it To become public once the property Set's
+ writing functionality is implemented.
+
+
+
+
+ Creates a {@link PropertySet} instance from an {@link
+ InputStream} in the Horrible Property Set Format.
+ The constructor Reads the first few bytes from the stream
+ and determines whether it is really a property Set stream. If
+ it Is, it parses the rest of the stream. If it is not, it
+ Resets the stream To its beginning in order To let other
+ components mess around with the data and throws an
+ exception.
+
+ Holds the data making out the property Set
+ stream.
+
+
+
+ Creates a {@link PropertySet} instance from a byte array
+ that represents a stream in the Horrible Property Set
+ Format.
+
+ The byte array holding the stream data.
+ The offset in stream where the stream data begin.
+ If the stream data begin with the first byte in the
+ array, the offset is 0.
+ The Length of the stream data.
+
+
+
+ Creates a {@link PropertySet} instance from a byte array
+ that represents a stream in the Horrible Property Set
+ Format.
+
+ The byte array holding the stream data. The
+ complete byte array contents is the stream data.
+
+
+
+ Checks whether an {@link InputStream} is in the Horrible
+ Property Set Format.
+
+ The {@link InputStream} To check. In order To
+ perform the check, the method Reads the first bytes from the
+ stream. After Reading, the stream is Reset To the position it
+ had before Reading. The {@link InputStream} must support the
+ {@link InputStream#mark} method.
+
+ true if the stream is a property Set
+ stream; otherwise, false.
+
+
+
+
+ Checks whether a byte array is in the Horrible Property Set
+ Format.
+
+ The byte array To check.
+ The offset in the byte array.
+ The significant number of bytes in the byte
+ array. Only this number of bytes will be checked.
+
+ true if the byte array is a property Set
+ stream; otherwise, false.
+
+
+
+
+ Initializes this {@link PropertySet} instance from a byte
+ array. The method assumes that it has been checked alReady that
+ the byte array indeed represents a property Set stream. It does
+ no more checks on its own.
+
+ Byte array containing the property Set stream
+ The property Set stream starts at this offset
+ Length of the property Set stream.
+
+
+
+ Checks whether this {@link PropertySet} represents a Summary
+ Information.
+
+
+ true Checks whether this {@link PropertySet} represents a Summary
+ Information; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is document summary information.
+
+
+ true if this instance is document summary information; otherwise, false.
+
+ Checks whether this {@link PropertySet} is a Document
+ Summary Information.
+ @return
+ true
+ if this {@link PropertySet}
+ represents a Document Summary Information, else
+ false
+
+
+
+ Convenience method returning the {@link Property} array
+ contained in this property Set. It is a shortcut for Getting
+ the {@link PropertySet}'s {@link Section}s list and then
+ Getting the {@link Property} array from the first {@link
+ Section}.
+
+ The properties of the only {@link Section} of this
+ {@link PropertySet}.
+
+
+
+ Convenience method returning the value of the property with
+ the specified ID. If the property is not available,
+ null is returned and a subsequent call To {@link
+ #WasNull} will return true .
+
+ The property ID
+ The property value
+
+
+
+ Convenience method returning the value of a bool property
+ with the specified ID. If the property is not available,
+ false is returned. A subsequent call To {@link
+ #WasNull} will return true To let the caller
+ distinguish that case from a real property value of
+ false.
+
+ The property ID
+ The property value
+
+
+
+ Convenience method returning the value of the numeric
+ property with the specified ID. If the property is not
+ available, 0 is returned. A subsequent call To {@link #WasNull}
+ will return true To let the caller distinguish
+ that case from a real property value of 0.
+
+ The property ID
+ The propertyIntValue value
+
+
+
+ Checks whether the property which the last call To {@link
+ #GetPropertyIntValue} or {@link #GetProperty} tried To access
+ Was available or not. This information might be important for
+ callers of {@link #GetPropertyIntValue} since the latter
+ returns 0 if the property does not exist. Using {@link
+ #WasNull}, the caller can distiguish this case from a
+ property's real value of 0.
+
+ true if the last call To {@link
+ #GetPropertyIntValue} or {@link #GetProperty} tried To access a
+ property that Was not available; otherwise, false.
+
+
+
+ Gets the first section.
+
+ The first section.
+
+
+
+ If the {@link PropertySet} has only a single section this
+ method returns it.
+
+ The singleSection value
+
+
+
+ Returns true if the PropertySet is equal
+ To the specified parameter, else false.
+
+ the object To Compare this
+ PropertySet
+ with
+ true
+ if the objects are equal,
+ false
+ if not
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Factory class To Create instances of {@link SummaryInformation},
+ {@link DocumentSummaryInformation} and {@link PropertySet}.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-02-09
+
+
+
+ Creates the most specific {@link PropertySet} from an entry
+ in the specified POIFS Directory. This is preferrably a {@link
+ DocumentSummaryInformation} or a {@link SummaryInformation}. If
+ the specified entry does not contain a property Set stream, an
+ exception is thrown. If no entry is found with the given name,
+ an exception is thrown.
+
+ @param dir The directory to find the PropertySet in
+ @param name The name of the entry Containing the PropertySet
+ @return The Created {@link PropertySet}.
+ @if there is no entry with that name
+ @if the stream does not
+ contain a property Set.
+ @if some I/O problem occurs.
+ @exception EncoderFallbackException if the specified codepage is not
+ supported.
+
+
+
+ Creates the most specific {@link PropertySet} from an {@link
+ InputStream}. This is preferrably a {@link
+ DocumentSummaryInformation} or a {@link SummaryInformation}. If
+ the specified {@link InputStream} does not contain a property
+ Set stream, an exception is thrown and the {@link InputStream}
+ is repositioned at its beginning.
+
+ Contains the property set stream's data.
+ The Created {@link PropertySet}.
+
+
+
+ Creates a new summary information
+
+ the new summary information.
+
+
+
+ Creates a new document summary information.
+
+ the new document summary information.
+
+
+
+ This exception is thrown when HPSF tries To Read a (yet) unsupported
+ variant type.
+ @see WritingNotSupportedException
+ @see UnsupportedVariantTypeException
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2003-08-08
+
+
+
+
+ Initializes a new instance of the class.
+
+ The unsupported variant type
+ The value who's variant type is not yet supported
+
+
+
+ Represents a section in a {@link PropertySet}.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @author Drew Varner (Drew.Varner allUpIn sc.edu)
+ @since 2002-02-09
+
+
+
+ Maps property IDs To section-private PID strings. These
+ strings can be found in the property with ID 0.
+
+
+ The section's format ID, {@link #GetFormatID}.
+
+
+
+ Returns the format ID. The format ID is the "type" of the
+ section. For example, if the format ID of the first {@link
+ Section} Contains the bytes specified by
+ org.apache.poi.hpsf.wellknown.SectionIDMap.SUMMARY_INFORMATION_ID
+ the section (and thus the property Set) is a SummaryInformation.
+
+ The format ID.
+
+
+
+ Gets the offset of the section in the stream.
+
+ The offset of the section in the stream
+
+
+
+ Returns the section's size in bytes.
+
+ The section's size in bytes.
+
+
+
+ Returns the number of properties in this section.
+
+ The number of properties in this section.
+
+
+
+ Returns this section's properties.
+
+ This section's properties.
+
+
+
+ Creates an empty and uninitialized {@link Section}.
+
+
+
+
+ Creates a {@link Section} instance from a byte array.
+
+ Contains the complete property Set stream.
+ The position in the stream that points To the
+ section's format ID.
+
+
+ Represents an entry in the property list and holds a property's ID and
+ its offset from the section's beginning.
+
+
+ Compares this {@link PropertyListEntry} with another one by their
+ offsets. A {@link PropertyListEntry} is "smaller" than another one if
+ its offset from the section's begin is smaller.
+
+ @see Comparable#CompareTo(java.lang.Object)
+
+
+ Returns the value of the property with the specified ID. If
+ the property is not available, null is returned
+ and a subsequent call To {@link #wasNull} will return
+ true.
+
+ @param id The property's ID
+
+ @return The property's value
+
+
+ Returns the value of the numeric property with the specified
+ ID. If the property is not available, 0 is returned. A
+ subsequent call To {@link #wasNull} will return
+ true To let the caller distinguish that case from
+ a real property value of 0.
+
+ @param id The property's ID
+
+ @return The property's value
+
+
+ Returns the value of the bool property with the specified
+ ID. If the property is not available, false Is
+ returned. A subsequent call To {@link #wasNull} will return
+ true To let the caller distinguish that case from
+ a real property value of false.
+
+ @param id The property's ID
+
+ @return The property's value
+
+
+ This member is true if the last call To {@link
+ #GetPropertyIntValue} or {@link #GetProperty} tried To access a
+ property that was not available, else false.
+
+
+
+ Checks whether the property which the last call To {@link
+ #GetPropertyIntValue} or {@link #GetProperty} tried To access
+ was available or not. This information might be important for
+ callers of {@link #GetPropertyIntValue} since the latter
+ returns 0 if the property does not exist. Using {@link
+ #wasNull} the caller can distiguish this case from a property's
+ real value of 0.
+
+ true if the last call To {@link
+ #GetPropertyIntValue} or {@link #GetProperty} tried To access a
+ property that was not available; otherwise, false.
+
+
+
+ Returns the PID string associated with a property ID. The ID
+ is first looked up in the {@link Section}'s private
+ dictionary. If it is not found there, the method calls {@link
+ SectionIDMap#GetPIDString}.
+
+ The property ID.
+ The property ID's string value
+
+
+ Checks whether this section is equal To another object. The result Is
+ false if one of the the following conditions holds:
+
+
+
+ - The other object is not a {@link Section}.
+
+ - The format IDs of the two sections are not equal.
+
+ - The sections have a different number of properties. However,
+ properties with ID 1 (codepage) are not counted.
+
+ - The other object is not a {@link Section}.
+
+ - The properties have different values. The order of the properties
+ is irrelevant.
+
+
+
+ @param o The object To Compare this section with
+ @return true if the objects are equal, false if
+ not
+
+
+
+ Removes a field from a property array. The resulting array Is
+ compactified and returned.
+
+ The property array.
+ The index of the field To be Removed.
+ the compactified array.
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets the section's dictionary. A dictionary allows an application To
+ use human-Readable property names instead of numeric property IDs. It
+ Contains mappings from property IDs To their associated string
+ values. The dictionary is stored as the property with ID 0. The codepage
+ for the strings in the dictionary is defined by property with ID 1.
+
+ the dictionary or null
+ if the section does not have
+ a dictionary.
+
+
+
+ Gets the section's codepage, if any.
+
+ The section's codepage if one is defined, else -1.
+
+
+
+ Abstract superclass for the convenience classes {@link
+ SummaryInformation} and {@link DocumentSummaryInformation}.
+ The motivation behind this class is quite nasty if you look
+ behind the scenes, but it serves the application programmer well by
+ providing him with the easy-to-use {@link SummaryInformation} and
+ {@link DocumentSummaryInformation} classes. When parsing the data a
+ property Set stream consists of (possibly coming from an {@link
+ java.io.Stream}) we want To Read and process each byte only
+ once. Since we don't know in advance which kind of property Set we
+ have, we can expect only the most general {@link
+ PropertySet}. Creating a special subclass should be as easy as
+ calling the special subclass' constructor and pass the general
+ {@link PropertySet} in. To make things easy internally, the special
+ class just holds a reference To the general {@link PropertySet} and
+ delegates all method calls To it.
+ A cleaner implementation would have been like this: The {@link
+ PropertySetFactory} parses the stream data into some internal
+ object first. Then it Finds out whether the stream is a {@link
+ SummaryInformation}, a {@link DocumentSummaryInformation} or a
+ general {@link PropertySet}. However, the current implementation
+ went the other way round historically: the convenience classes came
+ only late To my mind.
+ @author Rainer Klute
+ klute@rainer-klute.de
+ @since 2002-02-09
+
+
+
+ The id to name mapping of the properties
+ in this set.
+
+
+ The "real" property Set SpecialPropertySet
+ delegates To.
+
+
+
+ Initializes a new instance of the class.
+
+ The property Set To be encapsulated by the SpecialPropertySet
+
+
+
+ Initializes a new instance of the class.
+
+ The mutable property Set To be encapsulated by the SpecialPropertySet
+
+
+
+ gets or sets the "byteOrder" property.
+
+ the byteOrder value To Set
+
+
+
+ gets or sets the "format" property
+
+ the format value To Set
+
+
+
+ gets or sets the property Set stream's low-level "class ID"
+ field.
+
+ The property Set stream's low-level "class ID" field
+
+
+
+ Returns the number of {@link Section}s in the property
+ Set.
+
+ The number of {@link Section}s in the property Set.
+
+
+
+ Checks whether this {@link PropertySet} represents a Summary
+ Information.
+
+
+ true Checks whether this {@link PropertySet} represents a Summary
+ Information; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is document summary information.
+
+
+ true if this instance is document summary information; otherwise, false.
+
+ Checks whether this {@link PropertySet} is a Document
+ Summary Information.
+ @return
+ true
+ if this {@link PropertySet}
+ represents a Document Summary Information, else
+ false
+
+
+
+ Gets the PropertySet's first section.
+
+ The {@link PropertySet}'s first section.
+
+
+
+ Adds a section To this property set.
+
+ The {@link Section} To Add. It will be Appended
+ after any sections that are alReady present in the property Set
+ and thus become the last section.
+
+
+
+ Removes all sections from this property Set.
+
+
+
+
+ gets or sets the "osVersion" property
+
+ the osVersion value To Set
+
+
+
+ Writes a property Set To a document in a POI filesystem directory.
+
+ The directory in the POI filesystem To Write the document To
+ The document's name. If there is alReady a document with the
+ same name in the directory the latter will be overwritten.
+
+
+
+ Writes the property Set To an output stream.
+
+ the output stream To Write the section To
+
+
+
+ Returns true if the PropertySet is equal
+ To the specified parameter, else false.
+
+ the object To Compare this
+ PropertySet
+ with
+
+ true
+ if the objects are equal,
+ false
+ if not
+
+
+
+
+ Convenience method returning the {@link Property} array
+ contained in this property Set. It is a shortcut for Getting
+ the {@link PropertySet}'s {@link Section}s list and then
+ Getting the {@link Property} array from the first {@link
+ Section}.
+
+
+ The properties of the only {@link Section} of this
+ {@link PropertySet}.
+
+
+
+
+ Convenience method returning the value of the property with
+ the specified ID. If the property is not available,
+ null is returned and a subsequent call To {@link
+ #WasNull} will return true .
+
+ The property ID
+ The property value
+
+
+
+ Convenience method returning the value of a bool property
+ with the specified ID. If the property is not available,
+ false is returned. A subsequent call To {@link
+ #WasNull} will return true To let the caller
+ distinguish that case from a real property value of
+ false.
+
+ The property ID
+ The property value
+
+
+
+ Convenience method returning the value of the numeric
+ property with the specified ID. If the property is not
+ available, 0 is returned. A subsequent call To {@link #WasNull}
+ will return true To let the caller distinguish
+ that case from a real property value of 0.
+
+ The property ID
+ The propertyIntValue value
+
+
+ Fetches the property with the given ID, then does its
+ best to return it as a String
+ @return The property as a String, or null if unavailable
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Checks whether the property which the last call To {@link
+ #GetPropertyIntValue} or {@link #GetProperty} tried To access
+ Was available or not. This information might be important for
+ callers of {@link #GetPropertyIntValue} since the latter
+ returns 0 if the property does not exist. Using {@link
+ #WasNull}, the caller can distiguish this case from a
+ property's real value of 0.
+
+
+ true if the last call To {@link
+ #GetPropertyIntValue} or {@link #GetProperty} tried To access a
+ property that Was not available; otherwise, false.
+
+
+
+
+ Convenience class representing a Summary Information stream in a
+ Microsoft Office document.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @see DocumentSummaryInformation
+ @since 2002-02-09
+
+
+
+ The document name a summary information stream usually has in a POIFS
+ filesystem.
+
+
+
+ Initializes a new instance of the class.
+
+ A property Set which should be Created from a summary
+ information stream.
+
+
+
+ Gets or sets the title.
+
+ The title.
+
+
+
+ Removes the title.
+
+
+
+
+ Gets or sets the subject.
+
+ The subject.
+
+
+
+ Removes the subject.
+
+
+
+
+ Gets or sets the author.
+
+ The author.
+
+
+
+ Removes the author.
+
+
+
+
+ Gets or sets the keywords.
+
+ The keywords.
+
+
+
+ Removes the keywords.
+
+
+
+
+ Gets or sets the comments.
+
+ The comments.
+
+
+
+ Removes the comments.
+
+
+
+
+ Gets or sets the template.
+
+ The template.
+
+
+
+ Removes the template.
+
+
+
+
+ Gets or sets the last author.
+
+ The last author.
+
+
+
+ Removes the last author.
+
+
+
+
+ Gets or sets the rev number.
+
+ The rev number.
+
+
+
+ Removes the rev number.
+
+
+
+
+ Returns the Total time spent in editing the document (or 0).
+
+ The Total time spent in editing the document or 0 if the {@link
+ SummaryInformation} does not contain this information.
+
+
+
+ Removes the edit time.
+
+
+
+
+ Gets or sets the last printed time
+
+ The last printed time
+ Returns the last printed time (or null).
+
+
+
+ Removes the last printed.
+
+
+
+
+ Gets or sets the create date time.
+
+ The create date time.
+
+
+
+ Removes the create date time.
+
+
+
+
+ Gets or sets the last save date time.
+
+ The last save date time.
+
+
+
+ Removes the last save date time.
+
+
+
+
+ Gets or sets the page count or 0 if the {@link SummaryInformation} does
+ not contain a page count.
+
+ The page count or 0 if the {@link SummaryInformation} does not
+ contain a page count.
+
+
+
+ Removes the page count.
+
+
+
+
+ Gets or sets the word count or 0 if the {@link SummaryInformation} does
+ not contain a word count.
+
+ The word count.
+
+
+
+ Removes the word count.
+
+
+
+
+ Gets or sets the character count or 0 if the {@link SummaryInformation}
+ does not contain a char count.
+
+ The character count.
+
+
+
+ Removes the char count.
+
+
+
+
+ Gets or sets the thumbnail (or null) when this
+ method is implemented. Please note that the return type is likely To
+ Change!
+ To process this data, you may wish to make use of the
+ {@link Thumbnail} class. The raw data is generally
+ an image in WMF or Clipboard (BMP?) format
+
+ The thumbnail.
+
+
+
+ Returns the thumbnail or null, processed as an object
+ which is (largely) able to unpack the thumbnail image data.
+
+
+
+
+ Removes the thumbnail.
+
+
+
+
+ Gets or sets the name of the application.
+
+ The name of the application.
+
+
+
+ Removes the name of the application.
+
+
+
+
+ Gets or sets a security code which is one of the following values:
+
+ - 0 if the {@link SummaryInformation} does not contain a
+ security field or if there is no security on the document. Use
+ {@link PropertySet#wasNull()} To distinguish between the two
+ cases!
+ - 1 if the document is password protected
+ - 2 if the document is Read-only recommended
+ - 4 if the document is Read-only enforced
+ - 8 if the document is locked for annotations
+
+
+ The security code
+
+
+
+ Removes the security code.
+
+
+
+
+ Class To manipulate data in the Clipboard Variant (Variant#VT_CF VT_CF) format.
+ @author Drew Varner (Drew.Varner inOrAround sc.edu)
+ @since 2002-04-29
+
+
+
+
+ OffSet in bytes where the Clipboard Format Tag starts in the byte[] returned by SummaryInformation#GetThumbnail()
+
+
+
+
+ OffSet in bytes where the Clipboard Format starts in the byte[] returned by SummaryInformation#GetThumbnail()
+
+ This is only valid if the Clipboard Format Tag is CFTAG_WINDOWS
+
+
+
+ OffSet in bytes where the Windows Metafile (WMF) image data starts in the byte[] returned by SummaryInformation#GetThumbnail()
+ There is only WMF data at this point in the
+ byte[] if the Clipboard Format Tag is
+ CFTAG_WINDOWS and the Clipboard Format is
+ CF_METAFILEPICT.
+
+ Note: The byte[] that starts at
+ OFFSet_WMFDATA and ends at
+ GetThumbnail().Length - 1 forms a complete WMF
+ image. It can be saved To disk with a .wmf file
+ type and Read using a WMF-capable image viewer.
+
+
+
+ Clipboard Format Tag - Windows clipboard format
+
+ A DWORD indicating a built-in Windows clipboard format value
+
+
+
+ Clipboard Format Tag - Macintosh clipboard format
+
+ A DWORD indicating a Macintosh clipboard format value
+
+
+
+ Clipboard Format Tag - Format ID
+
+ A GUID containing a format identifier (FMTID). This is rarely used.
+
+
+
+ Clipboard Format Tag - No Data
+
+ A DWORD indicating No data. This is rarely used.
+
+
+
+ Clipboard Format - Windows metafile format. This is the recommended way To store thumbnails in Property Streams.
+
+ Note:This is not the same format used in
+ regular WMF images. The clipboard version of this format has an
+ extra clipboard-specific header.
+
+
+
+ Clipboard Format - Device Independent Bitmap
+
+
+
+
+ Clipboard Format - Enhanced Windows metafile format
+
+
+
+
+ Clipboard Format - Bitmap
+
+ see msdn.microsoft.com/library/en-us/dnw98bk/html/clipboardoperations.asp
+
+
+ A byte[] To hold a thumbnail image in (
+ Variant#VT_CF VT_CF) format.
+
+
+
+ Default Constructor. If you use it then one you'll have To Add
+ the thumbnail byte[] from {@link
+ SummaryInformation#GetThumbnail()} To do any useful
+ manipulations, otherwise you'll Get a
+ NullPointerException.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The thumbnail data.
+
+
+
+ Gets or sets the thumbnail as a byte[] in {@link
+ Variant#VT_CF VT_CF} format.
+
+ The thumbnail value
+
+
+
+ Returns an int representing the Clipboard
+ Format Tag
+ Possible return values are:
+
+ - {@link #CFTAG_WINDOWS CFTAG_WINDOWS}
+ - {@link #CFTAG_MACINTOSH CFTAG_MACINTOSH}
+ - {@link #CFTAG_FMTID CFTAG_FMTID}
+ - {@link #CFTAG_NODATA CFTAG_NODATA}
+
+
+ A flag indicating the Clipboard Format Tag
+
+
+
+ Returns an int representing the Clipboard
+ Format
+ Will throw an exception if the Thumbnail's Clipboard Format
+ Tag is not {@link Thumbnail#CFTAG_WINDOWS CFTAG_WINDOWS}.
+ Possible return values are:
+
+ - {@link #CF_METAFILEPICT CF_METAFILEPICT}
+ - {@link #CF_DIB CF_DIB}
+ - {@link #CF_ENHMETAFILE CF_ENHMETAFILE}
+ - {@link #CF_BITMAP CF_BITMAP}
+
+
+ a flag indicating the Clipboard Format
+
+
+
+ Returns the Thumbnail as a byte[] of WMF data
+ if the Thumbnail's Clipboard Format Tag is {@link
+ #CFTAG_WINDOWS CFTAG_WINDOWS} and its Clipboard Format is
+ {@link #CF_METAFILEPICT CF_METAFILEPICT}
+ This
+ byte[] is in the traditional WMF file, not the
+ clipboard-specific version with special headers.
+ See http://www.wvware.com/caolan/ora-wmf.html
+ for more information on the WMF image format.
+ @return A WMF image of the Thumbnail
+ @throws HPSFException if the Thumbnail isn't CFTAG_WINDOWS and
+ CF_METAFILEPICT
+
+
+
+
+
+ Class for writing little-endian data and more.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2003-02-20
+
+
+
+
+ Writes a two-byte value (short) To an output stream.
+
+ The stream To Write To..
+ The number of bytes that have been written.
+
+
+
+ Writes a four-byte value To an output stream.
+
+ @param out The stream To Write To.
+ @param n The value To Write.
+ @exception IOException if an I/O error occurs
+ @return The number of bytes written To the output stream.
+
+
+ Writes a four-byte value To an output stream.
+
+ @param out The stream To Write To.
+ @param n The value To Write.
+ @exception IOException if an I/O error occurs
+ @return The number of bytes written To the output stream.
+
+
+ Writes a eight-byte value To an output stream.
+
+ @param out The stream To Write To.
+ @param n The value To Write.
+ @exception IOException if an I/O error occurs
+ @return The number of bytes written To the output stream.
+
+
+ Writes an unsigned two-byte value To an output stream.
+
+ @param out The stream To Write To
+ @param n The value To Write
+ @exception IOException if an I/O error occurs
+
+
+ Writes an unsigned four-byte value To an output stream.
+
+ @param out The stream To Write To.
+ @param n The value To Write.
+ @return The number of bytes that have been written To the output stream.
+ @exception IOException if an I/O error occurs
+
+
+ Writes a 16-byte {@link ClassID} To an output stream.
+
+ @param out The stream To Write To
+ @param n The value To Write
+ @return The number of bytes written
+ @exception IOException if an I/O error occurs
+
+
+ Writes an array of {@link Property} instances To an output stream
+ according To the Horrible Property Format.
+
+ @param out The stream To Write To
+ @param properties The array To Write To the stream
+ @param codepage The codepage number To use for writing strings
+ @exception IOException if an I/O error occurs
+ @throws UnsupportedVariantTypeException if HPSF does not support some
+ variant type.
+
+
+ Writes a double value value To an output stream.
+
+ @param out The stream To Write To.
+ @param n The value To Write.
+ @exception IOException if an I/O error occurs
+ @return The number of bytes written To the output stream.
+
+
+
+ This exception is thrown if a certain type of property Set Is
+ expected (e.g. a Document Summary Information) but the provided
+ property Set is not of that type.
+ The constructors of this class are analogous To those of its
+ superclass and documented there.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-02-09
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message string.
+
+
+
+ Initializes a new instance of the class.
+
+ The reason, i.e. a throwable that indirectly
+ caused this exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The message string.
+ The reason, i.e. a throwable that indirectly
+ caused this exception.
+
+
+ Checks to see if the specified length seems valid,
+ given the amount of data available still to read,
+ and the requirement that the string be NULL-terminated
+
+
+ The Character Encoding is not supported.
+
+ @author Asmus Freytag
+ @since JDK1.1
+
+
+ Constructs an UnsupportedEncodingException without a detail message.
+
+
+ Constructs an UnsupportedEncodingException with a detail message.
+ @param s Describes the reason for the exception.
+
+
+
+ This exception is thrown if HPSF encounters a variant type that isn't
+ supported yet. Although a variant type is unsupported the value can still be
+ retrieved using the {@link VariantTypeException#GetValue} method.
+ Obviously this class should disappear some day.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2003-08-05
+
+
+
+
+ Initializes a new instance of the class.
+
+ The unsupported variant type
+ The value who's variant type is not yet supported
+
+
+
+ Provides various static utility methods.
+ @author Rainer Klute (klute@rainer-klute.de)
+ @since 2002-02-09
+
+
+
+
+ Copies a part of a byte array into another byte array.
+
+ The source byte array.
+ OffSet in the source byte array.
+ The number of bytes To Copy.
+ The destination byte array.
+ OffSet in the destination byte array.
+
+
+
+ Concatenates the contents of several byte arrays into a
+ single one.
+
+ The byte arrays To be conCatened.
+ A new byte array containing the conCatenated byte arrays.
+
+
+
+ Copies bytes from a source byte array into a new byte
+ array.
+
+ Copy from this byte array.
+ Start Copying here.
+ Copy this many bytes.
+ The new byte array. Its Length is number of copied bytes.
+
+
+ The difference between the Windows epoch (1601-01-01
+ 00:00:00) and the Unix epoch (1970-01-01 00:00:00) in
+ milliseconds: 11644473600000L. (Use your favorite spReadsheet
+ program To verify the correctness of this value. By the way,
+ did you notice that you can tell from the epochs which
+ operating system is the modern one? :-))
+
+
+
+ Converts a Windows FILETIME into a {@link DateTime}. The Windows
+ FILETIME structure holds a DateTime and time associated with a
+ file. The structure identifies a 64-bit integer specifying the
+ number of 100-nanosecond intervals which have passed since
+ January 1, 1601. This 64-bit value is split into the two double
+ words stored in the structure.
+
+ The higher double word of the FILETIME structure.
+ The lower double word of the FILETIME structure.
+ The Windows FILETIME as a {@link DateTime}.
+
+
+
+ Converts a Windows FILETIME into a {@link DateTime}. The Windows
+ FILETIME structure holds a DateTime and time associated with a
+ file. The structure identifies a 64-bit integer specifying the
+ number of 100-nanosecond intervals which have passed since
+ January 1, 1601.
+
+ The filetime To Convert.
+ The Windows FILETIME as a {@link DateTime}.
+
+
+
+ Converts a {@link DateTime} into a filetime.
+
+ The DateTime To be Converted
+ The filetime
+
+
+
+ Compares To object arrays with regarding the objects' order. For
+ example, [1, 2, 3] and [2, 1, 3] are equal.
+
+ The first object array.
+ The second object array.
+ true
+ if the object arrays are equal,
+ false
+ if they are not.
+
+
+
+ Internals the equals.
+
+ The c1.
+ The c2.
+
+
+
+
+ Pads a byte array with 0x00 bytes so that its Length is a multiple of
+ 4.
+
+ The byte array To pad.
+ The padded byte array.
+
+
+
+ Pads a character array with 0x0000 characters so that its Length is a
+ multiple of 4.
+
+ The character array To pad.
+ The padded character array.
+
+
+
+ Pads a string with 0x0000 characters so that its Length is a
+ multiple of 4.
+
+ The string To pad.
+ The padded string as a character array.
+
+
+
+ The Variant types as defined by Microsoft's COM. I
+ found this information in
+ http://www.marin.clara.net/COM/variant_type_definitions.htm.
+ In the variant types descriptions the following shortcuts are
+ used: [V] - may appear in a VARIANT,
+ [T] - may appear in a TYPEDESC,
+ [P] - may appear in an OLE property Set,
+ [S] - may appear in a Safe Array.
+ @author Rainer Klute (klute@rainer-klute.de)
+ @since 2002-02-09
+
+
+
+ [V][P] Nothing, i.e. not a single byte of data.
+
+
+ [V][P] SQL style Null.
+
+
+ [V][T][P][S] 2 byte signed int.
+
+
+ [V][T][P][S] 4 byte signed int.
+
+
+ [V][T][P][S] 4 byte real.
+
+
+ [V][T][P][S] 8 byte real.
+
+
+ [V][T][P][S] currency. How long is this? How is it To be
+ interpreted?
+
+
+ [V][T][P][S] DateTime. How long is this? How is it To be
+ interpreted?
+
+
+ [V][T][P][S] OLE Automation string. How long is this? How is it
+ To be interpreted?
+
+
+ [V][T][P][S] IDispatch *. How long is this? How is it To be
+ interpreted?
+
+
+ [V][T][S] SCODE. How
+ long is this? How is it To be interpreted?
+
+
+ [V][T][P][S] True=-1, False=0.
+
+
+ [V][T][P][S] VARIANT *. How long is this? How is it To be
+ interpreted?
+
+
+ [V][T][S] IUnknown *. How long is this? How is it To be
+ interpreted?
+
+
+ [V][T][S] 16 byte fixed point.
+
+
+ [T] signed char.
+
+
+ [V][T][P][S] unsigned char.
+
+
+ [T][P] unsigned short.
+
+
+ [T][P] unsigned int.
+
+
+ [T][P] signed 64-bit int.
+
+
+ [T][P] unsigned 64-bit int.
+
+
+ [T] signed machine int.
+
+
+ [T] unsigned machine int.
+
+
+ [T] C style void.
+
+
+ [T] Standard return type. How long is this? How is it To be
+ interpreted?
+
+
+ [T] pointer type. How long is this? How is it To be
+ interpreted?
+
+
+ [T] (use VT_ARRAY in VARIANT).
+
+
+ [T] C style array. How long is this? How is it To be
+ interpreted?
+
+
+ [T] user defined type. How long is this? How is it To be
+ interpreted?
+
+
+ [T][P] null terminated string.
+
+
+ [T][P] wide (Unicode) null terminated string.
+
+
+ [P] FILETIME. The FILETIME structure holds a DateTime and time
+ associated with a file. The structure identifies a 64-bit
+ integer specifying the number of 100-nanosecond intervals which
+ have passed since January 1, 1601. This 64-bit value is split
+ into the two dwords stored in the structure.
+
+
+ [P] Length prefixed bytes.
+
+
+ [P] Name of the stream follows.
+
+
+ [P] Name of the storage follows.
+
+
+ [P] Stream Contains an object. How long is this? How is it
+ To be interpreted?
+
+
+ [P] Storage Contains an object. How long is this? How is it
+ To be interpreted?
+
+
+ [P] Blob Contains an object. How long is this? How is it To be
+ interpreted?
+
+
+ [P] Clipboard format. How long is this? How is it To be
+ interpreted?
+
+
+ [P] A Class ID.
+
+ It consists of a 32 bit unsigned integer indicating the size
+ of the structure, a 32 bit signed integer indicating (Clipboard
+ Format Tag) indicating the type of data that it Contains, and
+ then a byte array containing the data.
+
+ The valid Clipboard Format Tags are:
+
+
+ - {@link Thumbnail#CFTAG_WINDOWS}
+ - {@link Thumbnail#CFTAG_MACINTOSH}
+ - {@link Thumbnail#CFTAG_NODATA}
+ - {@link Thumbnail#CFTAG_FMTID}
+
+
+ typedef struct tagCLIPDATA {
+ // cbSize is the size of the buffer pointed To
+ // by pClipData, plus sizeof(ulClipFmt)
+ ULONG cbSize;
+ long ulClipFmt;
+ BYTE* pClipData;
+ } CLIPDATA;
+
+ See
+ msdn.microsoft.com/library/en-us/com/stgrstrc_0uwk.asp.
+
+
+ "MUST be a VersionedStream. The storage representing the (non-simple)
+ property set MUST have a stream element with the name in the StreamName
+ field." -- [MS-OLEPS] -- v20110920; Object Linking and Embedding (OLE)
+ Property Set Data Structures; page 24 / 63
+
+
+ [P] simple counted array. How long is this? How is it To be
+ interpreted?
+
+
+ [V] SAFEARRAY*. How
+ long is this? How is it To be interpreted?
+
+
+ [V] void* for local use. How long is this? How is it To be
+ interpreted?
+
+
+ FIXME (3): Document this!
+
+
+ FIXME (3): Document this!
+
+
+ FIXME (3): Document this!
+
+
+ FIXME (3): Document this!
+
+
+ Maps the numbers denoting the variant types To their corresponding
+ variant type names.
+
+
+ Denotes a variant type with a Length that is unknown To HPSF yet.
+
+
+ Denotes a variant type with a variable Length.
+
+
+ Denotes a variant type with a Length of 0 bytes.
+
+
+ Denotes a variant type with a Length of 2 bytes.
+
+
+ Denotes a variant type with a Length of 4 bytes.
+
+
+ Denotes a variant type with a Length of 8 bytes.
+
+
+
+ Returns the variant type name associated with a variant type
+ number.
+
+ The variant type number.
+ The variant type name or the string "unknown variant type"
+
+
+
+ Returns a variant type's Length.
+
+ The variant type number.
+ The Length of the variant type's data in bytes. If the Length Is
+ variable, i.e. the Length of a string, -1 is returned. If HPSF does not
+ know the Length, -2 is returned. The latter usually indicates an
+ unsupported variant type.
+
+
+
+ Supports Reading and writing of variant data.
+ FIXME (3):
+ Reading and writing should be made more
+ uniform than it is now. The following items should be resolved:
+ Reading requires a Length parameter that is 4 byte greater than the
+ actual data, because the variant type field is included.
+ Reading Reads from a byte array while writing Writes To an byte array
+ output stream.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2003-08-08
+
+
+
+
+ Checks whether logging of unsupported variant types warning is turned
+ on or off.
+
+
+ true if logging is turned on; otherwise, false.
+
+
+
+ Keeps a list of the variant types an "unsupported" message has alReady
+ been issued for.
+
+
+
+ Writes a warning To System.err that a variant type Is
+ unsupported by HPSF. Such a warning is written only once for each variant
+ type. Log messages can be turned on or off by
+
+ The exception To log
+
+
+ HPSF is able To Read these {@link Variant} types.
+
+
+
+ Checks whether HPSF supports the specified variant type. Unsupported
+ types should be implemented included in the {@link #SUPPORTED_TYPES}
+ array.
+
+ the variant type To check
+
+ true if HPFS supports this type,otherwise, false.
+
+
+
+
+ Reads a variant type from a byte array
+
+ The byte array
+ The offset in the byte array where the variant starts
+ The Length of the variant including the variant type field
+ The variant type To Read
+ The codepage To use for non-wide strings
+ A Java object that corresponds best To the variant field. For
+ example, a VT_I4 is returned as a {@link long}, a VT_LPSTR as a
+ {@link String}.
+
+
+ Turns a codepage number into the equivalent character encoding's
+ name.
+
+ @param codepage The codepage number
+
+ @return The character encoding's name. If the codepage number is 65001,
+ the encoding name is "UTF-8". All other positive numbers are mapped to
+ "cp" followed by the number, e.g. if the codepage number is 1252 the
+ returned character encoding name will be "cp1252".
+
+ @exception UnsupportedEncodingException if the specified codepage is
+ less than zero.
+
+
+
+ Writes a variant value To an output stream. This method ensures that
+ always a multiple of 4 bytes is written.
+ If the codepage is UTF-16, which is encouraged, strings
+ must always be written as {@link Variant#VT_LPWSTR}
+ strings, not as {@link Variant#VT_LPSTR} strings. This method ensure this
+ by Converting strings appropriately, if needed.
+
+ The stream To Write the value To.
+ The variant's type.
+ The variant's value.
+ The codepage To use To Write non-wide strings
+ The number of entities that have been written. In many cases an
+ "entity" is a byte but this is not always the case.
+
+
+
+ This exception is thrown if HPSF encounters a problem with a variant type.
+ Concrete subclasses specifiy the problem further.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2004-06-21
+
+
+
+
+ Initializes a new instance of the class.
+
+ The variant type causing the problem
+ The value who's variant type causes the problem
+ A message text describing the problem
+
+
+
+ Gets the offending variant type
+
+ the offending variant type.
+
+
+
+ Returns the value who's variant type caused the problem.
+
+ the value who's variant type caused the problem.
+
+
+
+ This is a dictionary which maps property ID values To property
+ ID strings.
+ The methods {@link #GetSummaryInformationProperties} and {@link
+ #GetDocumentSummaryInformationProperties} return singleton {@link
+ PropertyIDMap}s. An application that wants To extend these maps
+ should treat them as unmodifiable, copy them and modifiy the
+ copies.
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2002-02-09
+
+
+
+ ID of the property that denotes the document's title
+
+
+ ID of the property that denotes the document's subject
+
+
+ ID of the property that denotes the document's author
+
+
+ ID of the property that denotes the document's keywords
+
+
+ ID of the property that denotes the document's comments
+
+
+ ID of the property that denotes the document's template
+
+
+ ID of the property that denotes the document's last author
+
+
+ ID of the property that denotes the document's revision number
+
+
+ ID of the property that denotes the document's edit time
+
+
+ ID of the property that denotes the DateTime and time the document was
+ last printed
+
+
+ ID of the property that denotes the DateTime and time the document was
+ Created.
+
+
+ ID of the property that denotes the DateTime and time the document was
+ saved
+
+
+ ID of the property that denotes the number of pages in the
+ document
+
+
+ ID of the property that denotes the number of words in the
+ document
+
+
+ ID of the property that denotes the number of characters in the
+ document
+
+
+ ID of the property that denotes the document's thumbnail
+
+
+ ID of the property that denotes the application that Created the
+ document
+
+
+ ID of the property that denotes whether Read/Write access To the
+ document is allowed or whether is should be opened as Read-only. It can
+ have the following values:
+
+
+
+
+ | Value |
+ Description |
+
+
+ | 0 |
+ No restriction |
+
+
+ | 2 |
+ Read-only recommended |
+
+
+ | 4 |
+ Read-only enforced |
+
+
+
+
+
+ The entry is a dictionary.
+
+
+ The entry denotes a code page.
+
+
+ The entry is a string denoting the category the file belongs
+ To, e.g. review, memo, etc. This is useful To Find documents of
+ same type.
+
+
+ TarGet format for power point presentation, e.g. 35mm,
+ printer, video etc.
+
+
+ Number of bytes.
+
+
+ Number of lines.
+
+
+ Number of paragraphs.
+
+
+ Number of slides in a power point presentation.
+
+
+ Number of slides with notes.
+
+
+ Number of hidden slides.
+
+
+ Number of multimedia clips, e.g. sound or video.
+
+
+ This entry is Set To -1 when scaling of the thumbnail Is
+ desired. Otherwise the thumbnail should be cropped.
+
+
+ This entry denotes an internally used property. It is a
+ vector of variants consisting of pairs of a string (VT_LPSTR)
+ and a number (VT_I4). The string is a heading name, and the
+ number tells how many document parts are under that
+ heading.
+
+
+ This entry Contains the names of document parts (word: names
+ of the documents in the master document, excel: sheet names,
+ power point: slide titles, binder: document names).
+
+
+ This entry Contains the name of the project manager.
+
+
+ This entry Contains the company name.
+
+
+ If this entry is -1 the links are dirty and should be
+ re-evaluated.
+
+
+ The entry specifies an estimate of the number of characters
+ in the document, including whitespace, as an integer
+
+
+ This entry contains a boolean which marks if the User Defined
+ Property Set has been updated outside of the Application, if so the
+ hyperlinks should be updated on document load.
+
+
+ This entry contains the version of the Application which wrote the
+ Property set, stored with the two high order bytes having the major
+ version number, and the two low order bytes the minor version number.
+
+
+ This entry contains the VBA digital signature for the VBA project
+ embedded in the document.
+
+
+ This entry contains a string of the content type of the file.
+
+
+ This entry contains a string of the document status.
+
+
+ This entry contains a string of the document language, but
+ normally should be empty.
+
+
+ This entry contains a string of the document version, but
+ normally should be empty
+
+
+ The highest well-known property ID. Applications are free to use
+ higher values for custom purposes. (This value is based on Office 12,
+ earlier versions of Office had lower values)
+
+
+ Contains the summary information property ID values and
+ associated strings. See the overall HPSF documentation for
+ details!
+
+
+ Contains the summary information property ID values and
+ associated strings. See the overall HPSF documentation for
+ details!
+
+
+
+ Initializes a new instance of the class.
+
+ initialCapacity The initial capacity as defined for
+ {@link HashMap}
+ The load factor as defined for {@link HashMap}
+
+
+
+ Initializes a new instance of the class.
+
+ The instance To be Created is backed by this map.
+
+
+
+ Puts a ID string for an ID into the {@link
+ PropertyIDMap}.
+
+ The ID string.
+ The id string.
+ As specified by the {@link java.util.Map} interface, this method
+ returns the previous value associated with the specified id
+
+
+
+ Gets the ID string for an ID from the {@link
+ PropertyIDMap}.
+
+ The ID.
+ The ID string associated with id
+
+
+
+ Gets the Summary Information properties singleton
+
+
+
+
+
+ Gets the Document Summary Information properties
+ singleton.
+
+ The Document Summary Information properties singleton.
+
+
+
+ Maps section format IDs To {@link PropertyIDMap}s. It Is
+ initialized with two well-known section format IDs: those of the
+ \005SummaryInformation stream and the
+ \005DocumentSummaryInformation stream.
+ If you have a section format ID you can use it as a key To query
+ this map. If you Get a {@link PropertyIDMap} returned your section
+ is well-known and you can query the {@link PropertyIDMap} for PID
+ strings. If you Get back null you are on your own.
+ This {@link java.util.Map} expects the byte arrays of section format IDs
+ as keys. A key maps To a {@link PropertyIDMap} describing the
+ property IDs in sections with the specified section format ID.
+ @author Rainer Klute (klute@rainer-klute.de)
+ @since 2002-02-09
+
+
+
+ The SummaryInformation's section's format ID.
+
+
+ The DocumentSummaryInformation's first and second sections' format
+ ID.
+
+
+ A property without a known name is described by this string.
+
+
+ The default section ID map. It maps section format IDs To
+ {@link PropertyIDMap}s.
+
+
+
+ Returns the singleton instance of the default {@link
+ SectionIDMap}.
+
+ The instance value
+
+
+
+ Returns the property ID string that is associated with a
+ given property ID in a section format ID's namespace.
+
+ Each section format ID has its own name
+ space of property ID strings and thus must be specified.
+ The property ID
+ The well-known property ID string associated with the
+ property ID pid in the name space spanned by sectionFormatID If the pid
+ sectionFormatID combination is not well-known, the
+ string "[undefined]" is returned.
+
+
+
+
+ Returns the {@link PropertyIDMap} for a given section format
+ ID.
+
+ The section format ID.
+ the property ID map
+
+
+
+ Associates a section format ID with a {@link
+ PropertyIDMap}.
+
+ the section format ID
+ The property ID map.
+
+
+
+
+ This exception is thrown when trying To Write a (yet) unsupported variant
+ type.
+ @see ReadingNotSupportedException
+ @see UnsupportedVariantTypeException
+ @author Rainer Klute
+ <klute@rainer-klute.de>
+ @since 2003-08-08
+
+
+
+
+ Initializes a new instance of the class.
+
+ The unsupported variant type.
+ The value
+
+
+ An ERFListener Is registered with the EventRecordFactory.
+ An ERFListener listens for Records coming from the stream
+ via the EventRecordFactory
+
+ @see EventRecordFactory
+ @author Andrew C. Oliver acoliver@apache.org
+
+
+ Process a Record. This method Is called by the
+ EventRecordFactory when a record Is returned.
+ @return bool specifying whether the effort was a success.
+
+
+ Event-based record factory. As opposed to RecordFactory
+ this refactored version throws record events as it comes
+ accross the records. I throws the "lazily" one record behind
+ to ensure that ContinueRecords are Processed first.
+
+ @author Andrew C. Oliver (acoliver@apache.org) - probably to blame for the bugs (so yank his chain on the list)
+ @author Marc Johnson (mjohnson at apache dot org) - methods taken from RecordFactory
+ @author Glen Stampoultzis (glens at apache.org) - methods taken from RecordFactory
+ @author Csaba Nagy (ncsaba at yahoo dot com)
+
+
+ Create an EventRecordFactory
+ @param abortable specifies whether the return from the listener
+ handler functions are obeyed. False means they are ignored. True
+ means the event loop exits on error.
+
+
+ sends the record event to all registered listeners.
+ @param record the record to be thrown.
+ @return false to abort. This aborts
+ out of the event loop should the listener return false
+
+
+ Create an array of records from an input stream
+
+ @param in the InputStream from which the records will be
+ obtained
+
+ @exception RecordFormatException on error Processing the
+ InputStream
+
+
+ Interface for use with the HSSFRequest and HSSFEventFactory. Users should Create
+ a listener supporting this interface and register it with the HSSFRequest (associating
+ it with Record SID's).
+
+ @see org.apache.poi.hssf.eventusermodel.HSSFEventFactory
+ @see org.apache.poi.hssf.eventusermodel.HSSFRequest
+ @see org.apache.poi.hssf.eventusermodel.HSSFUserException
+
+ @author Carey Sublette (careysub@earthling.net)
+
+
+
+ This method, inherited from HSSFListener Is implemented as a stub.
+ It Is never called by HSSFEventFActory or HSSFRequest.
+
+
+
+ Process an HSSF Record. Called when a record occurs in an HSSF file.
+ Provides two options for halting the Processing of the HSSF file.
+
+ The return value provides a means of non-error termination with a
+ user-defined result code. A value of zero must be returned to
+ continue Processing, any other value will halt Processing by
+ HSSFEventFactory with the code being passed back by
+ its abortable Process events methods.
+
+ Error termination can be done by throwing the HSSFUserException.
+
+ Note that HSSFEventFactory will not call the inherited Process
+
+ @return result code of zero for continued Processing.
+
+ @throws HSSFUserException User code can throw this to abort
+ file Processing by HSSFEventFactory and return diagnostic information.
+
+
+
+
+ A dummy record to indicate that we've now had the last
+ cell record for this row.
+
+
+ Returns the (0 based) number of the row we are
+ currently working on.
+
+
+ Returns the (0 based) number of the last column
+ seen for this row. You should have alReady been
+ called with that record.
+ This Is -1 in the case of there being no columns
+ for the row.
+
+
+ A dummy record for when we're missing a cell in a row,
+ but still want to trigger something
+
+
+ A dummy record for when we're missing a row, but still
+ want to trigger something
+
+
+
+ When working with the EventUserModel, if you want to
+ Process formulas, you need an instance of
+ Workbook to pass to a HSSFWorkbook,
+ to finally give to HSSFFormulaParser,
+ and this will build you stub ones.
+ Since you're working with the EventUserModel, you
+ wouldn't want to Get a full Workbook and
+ HSSFWorkbook, as they would eat too much memory.
+ Instead, you should collect a few key records as they
+ go past, then call this once you have them to build a
+ stub Workbook, and from that a stub
+ HSSFWorkbook, to use with the HSSFFormulaParser.
+ The records you should collect are:
+ ExternSheetRecord
+ BoundSheetRecord
+ You should probably also collect SSTRecord,
+ but it's not required to pass this in.
+ To help, this class includes a HSSFListener wrapper
+ that will do the collecting for you.
+
+
+
+
+ Creates a stub Workbook from the supplied records,
+ suitable for use with the {@link HSSFFormulaParser}
+
+ The ExternSheetRecords in your file
+ The BoundSheetRecords in your file
+ TThe SSTRecord in your file.
+ A stub Workbook suitable for use with HSSFFormulaParser
+
+
+
+ Creates a stub workbook from the supplied records,
+ suitable for use with the HSSFFormulaParser
+
+ The ExternSheetRecords in your file
+ A stub Workbook suitable for use with HSSFFormulaParser
+ A stub Workbook suitable for use with {@link HSSFFormulaParser}
+
+
+
+ A wrapping HSSFListener which will collect
+ BoundSheetRecords and {@link ExternSheetRecord}s as
+ they go past, so you can Create a Stub {@link Workbook} from
+ them once required.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The child listener.
+
+
+
+ Gets the bound sheet records.
+
+
+
+
+
+ Gets the extern sheet records.
+
+
+
+
+
+ Gets the SST record.
+
+
+
+
+
+ Gets the stub HSSF workbook.
+
+
+
+
+
+ Gets the stub workbook.
+
+
+
+
+
+ Process this record ourselves, and then
+ pass it on to our child listener
+
+ The record.
+
+
+
+ Process the record ourselves, but do not
+ pass it on to the child Listener.
+
+ The record.
+
+
+ A proxy HSSFListener that keeps track of the document
+ formatting records, and provides an easy way to look
+ up the format strings used by cells from their ids.
+
+
+ Process this record ourselves, and then
+ pass it on to our child listener
+
+
+ Process the record ourselves, but do not
+ pass it on to the child Listener.
+ @param record
+
+
+ Formats the given numeric of date Cell's contents
+ as a String, in as close as we can to the way
+ that Excel would do so.
+ Uses the various format records to manage this.
+
+ TODO - move this to a central class in such a
+ way that hssf.usermodel can make use of it too
+
+
+ Returns the format string, eg $##.##, for the
+ given number format index.
+
+
+ Returns the format string, eg $##.##, used
+ by your cell
+
+
+ Returns the index of the format string, used by your cell,
+ or -1 if none found
+
+
+
+ Low level event based HSSF Reader. Pass either a DocumentInputStream to
+ Process events along with a request object or pass a POIFS POIFSFileSystem to
+ ProcessWorkbookEvents along with a request.
+ This will cause your file to be Processed a record at a time. Each record with
+ a static id matching one that you have registed in your HSSFRequest will be passed
+ to your associated HSSFListener.
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Carey Sublette (careysub@earthling.net)
+
+
+
+
+ Creates a new instance of HSSFEventFactory
+
+
+
+
+ Processes a file into essentially record events.
+
+ an Instance of HSSFRequest which has your registered listeners
+ a POIFS filesystem containing your workbook
+
+
+
+ Processes a file into essentially record events.
+
+ an Instance of HSSFRequest which has your registered listeners
+ a POIFS filesystem containing your workbook
+ numeric user-specified result code.
+
+
+
+ Processes a DocumentInputStream into essentially Record events.
+ If an
+ AbortableHSSFListener
+ causes a halt to Processing during this call
+ the method will return just as with
+ abortableProcessEvents
+ , but no
+ user code or
+ HSSFUserException
+ will be passed back.
+
+ an Instance of HSSFRequest which has your registered listeners
+ a DocumentInputStream obtained from POIFS's POIFSFileSystem object
+
+
+
+ Processes a DocumentInputStream into essentially Record events.
+
+ an Instance of HSSFRequest which has your registered listeners
+ a DocumentInputStream obtained from POIFS's POIFSFileSystem object
+ numeric user-specified result code.
+
+
+
+ Processes a DocumentInputStream into essentially Record events.
+
+ an Instance of HSSFRequest which has your registered listeners
+ a DocumentInputStream obtained from POIFS's POIFSFileSystem object
+ numeric user-specified result code.
+
+
+
+ Interface for use with the HSSFRequest and HSSFEventFactory. Users should Create
+ a listener supporting this interface and register it with the HSSFRequest (associating
+ it with Record SID's).
+ @author acoliver@apache.org
+
+
+
+
+ Process an HSSF Record. Called when a record occurs in an HSSF file.
+
+ The record.
+
+
+
+ A stream based way to Get at complete records, with
+ as low a memory footprint as possible.
+ This handles Reading from a RecordInputStream, turning
+ the data into full records, Processing continue records
+ etc.
+ Most users should use HSSFEventFactory
+ HSSFListener and have new records pushed to
+ them, but this does allow for a "pull" style of coding.
+
+
+
+ Have we run out of records on the stream?
+
+
+ Have we returned all the records there are?
+
+
+ Sometimes we end up with a bunch of
+ records. When we do, these should
+ be returned before the next normal
+ record Processing occurs (i.e. before
+ we Check for continue records and
+ return rec)
+
+
+ The next record to return, which may need to have its
+ continue records passed to it before we do
+
+
+ The most recent record that we gave to the user
+
+
+ The most recent DrawingRecord seen
+
+
+
+ Returns the next (complete) record from the
+ stream, or null if there are no more.
+
+
+
+
+
+ If there are any "bonus" records, that should
+ be returned before Processing new ones,
+ grabs the next and returns it.
+ If not, returns null;
+
+
+
+
+
+ Returns the next available record, or null if
+ this pass didn't return a record that's
+ suitable for returning (eg was a continue record).
+
+
+
+
+
+ An HSSFRequest object should be constructed registering an instance or multiple
+ instances of HSSFListener with each Record.sid you wish to listen for.
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Carey Sublette (careysub@earthling.net)
+
+
+
+
+ Creates a new instance of HSSFRequest
+
+
+
+
+ Add an event listener for a particular record type. The trick Is you have to know
+ what the records are for or just start with our examples and build on them. Alternatively,
+ you CAN call AddListenerForAllRecords and you'll recieve ALL record events in one listener,
+ but if you like to squeeze every last byte of efficiency out of life you my not like this.
+ (its sure as heck what I plan to do)
+
+ for the event
+ identifier for the record type this Is the .sid static member on the individual records
+
+
+
+ This Is the equivilent of calling AddListener(myListener, sid) for EVERY
+ record in the org.apache.poi.hssf.record package. This Is for lazy
+ people like me. You can call this more than once with more than one listener, but
+ that seems like a bad thing to do from a practice-perspective Unless you have a
+ compelling reason to do so (like maybe you send the event two places or log it or
+ something?).
+
+ a single listener to associate with ALL records
+
+
+
+ Called by HSSFEventFactory, passes the Record to each listener associated with
+ a record.sid.
+ Exception and return value Added 2002-04-19 by Carey Sublette
+
+ The record.
+ numeric user-specified result code. If zero continue Processing.
+
+
+
+ This exception Is provided as a way for API users to throw
+ exceptions from their event handling code. By doing so they
+ abort file Processing by the HSSFEventFactory and by
+ catching it from outside the HSSFEventFactory.ProcessEvents
+ method they can diagnose the cause for the abort.
+ The HSSFUserException supports a nested "reason"
+ throwable, i.e. an exception that caused this one to be thrown.
+ The HSSF package does not itself throw any of these
+ exceptions.
+
+
+ @author Rainer Klute (klute@rainer-klute.de)
+ @author Carey Sublette (careysub@earthling.net)
+
+
+
+
+ Creates a new HSSFUserException
+
+
+
+
+ Creates a new HSSFUserException with a message
+ string.
+
+ The MSG.
+
+
+
+ Creates a new HSSFUserException with a reason.
+
+ The reason.
+
+
+
+ Creates a new HSSFUserException with a message string
+ and a reason.
+
+ The MSG.
+ The reason.
+
+
+
+ A HSSFListener which tracks rows and columns, and will
+ trigger your HSSFListener for all rows and cells,
+ even the ones that aren't actually stored in the file.
+ This allows your code to have a more "Excel" like
+ view of the data in the file, and not have to worry
+ (as much) about if a particular row/cell Is in the
+ file, or was skipped from being written as it was
+ blank.
+
+
+
+
+ Constructs a new MissingRecordAwareHSSFListener, which
+ will fire ProcessRecord on the supplied child
+ HSSFListener for all Records, and missing records.
+
+ The HSSFListener to pass records on to
+
+
+
+ Process an HSSF Record. Called when a record occurs in an HSSF file.
+
+
+
+
+
+ A text extractor for Excel files, that is based
+ on the hssf eventusermodel api.
+ It will typically use less memory than
+ ExcelExtractor, but may not provide
+ the same richness of formatting.
+ Returns the textual content of the file, suitable for
+ indexing by something like Lucene, but not really
+ intended for display to the user.
+
+
+
+
+ Would return the document information metadata for the document,
+ if we supported it
+
+ The doc summary information.
+
+
+
+ Would return the summary information metadata for the document,
+ if we supported it
+
+ The summary information.
+
+
+
+ Should sheet names be included? Default is true
+
+ if set to true [include sheet names].
+
+
+
+ Should we return the formula itself, and not
+ the result it produces? Default is false
+
+ if set to true [formulas not results].
+
+
+
+ Retreives the text contents of the file
+
+ All the text from the document.
+
+
+
+ Triggers the extraction.
+
+
+
+
+
+ Process an HSSF Record. Called when a record occurs in an HSSF file.
+
+
+
+
+
+ Formats a number or date cell, be that a real number, or the
+ answer to a formula
+
+ The cell.
+ The value.
+
+
+
+
+ A text extractor for Excel files.
+ Returns the textual content of the file, suitable for
+ indexing by something like Lucene, but not really
+ intended for display to the user.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The wb.
+
+
+
+ Initializes a new instance of the class.
+
+ The fs.
+
+
+
+ Should header and footer be included? Default is true
+
+
+
+
+ Should sheet names be included? Default is true
+
+ if set to true [include sheet names].
+
+
+
+ Should we return the formula itself, and not
+ the result it produces? Default is false
+
+ if set to true [formulas not results].
+
+
+
+ Should cell comments be included? Default is false
+
+ if set to true [include cell comments].
+
+
+
+ Should blank cells be output? Default is to only
+ output cells that are present in the file and are
+ non-blank.
+
+ if set to true [include blank cells].
+
+
+
+ Retreives the text contents of the file
+
+ All the text from the document.
+
+
+
+ Extracts the header footer.
+
+ The header or footer
+
+
+
+ A text extractor for old Excel files, which are too old for
+ HSSFWorkbook to handle. This includes Excel 95, and very old
+ (pre-OLE2) Excel files, such as Excel 4 files.
+
+ Returns much (but not all) of the textual content of the file,
+ suitable for indexing by something like Apache Lucene, or used
+ by Apache Tika, but not really intended for display to the user.
+
+
+
+ The Biff version, largely corresponding to the Excel version
+
+
+ The kind of the file, one of {@link BOFRecord#TYPE_WORKSHEET},
+ {@link BOFRecord#TYPE_CHART}, {@link BOFRecord#TYPE_EXCEL_4_MACRO}
+ or {@link BOFRecord#TYPE_WORKSPACE_FILE}
+
+
+ Retrieves the text contents of the file, as best we can
+ for these old file formats
+
+
+
+ Creates the anchor.
+
+ The user anchor.
+
+
+
+ Allocates new shape id for the new drawing Group id.
+
+ @return a new shape id.
+
+
+
+ Provides utilities to manage drawing Groups.
+
+
+ Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Clears the cached list of drawing Groups
+
+
+
+
+ Allocates new shape id for the new drawing Group id.
+
+
+ a new shape id.
+
+
+
+ Allocates new shape id for the new drawing group id.
+
+
+
+ a new shape id.
+
+
+
+ Finds the next available (1 based) drawing Group id
+
+
+
+
+ HSSF wrapper for the {@link FormulaParser} and {@link FormulaRenderer}
+
+ @author Josh Micich
+
+
+ Convenience method for parsing cell formulas. see {@link #parse(String, HSSFWorkbook, int)}
+
+
+ @param formulaType a constant from {@link FormulaType}
+ @return the parsed formula tokens
+
+
+ @param formula the formula to parse
+ @param workbook the parent workbook
+ @param formulaType a constant from {@link FormulaType}
+ @param sheetIndex the 0-based index of the sheet this formula belongs to.
+ The sheet index is required to resolve sheet-level names. -1 means that
+ the scope of the name will be ignored and the parser will match named ranges only by name
+
+ @return the parsed formula tokens
+
+
+ Static method to convert an array of {@link Ptg}s in RPN order
+ to a human readable string format in infix mode.
+ @param book used for defined names and 3D references
+ @param ptgs must not be null
+ @return a human readable String
+
+
+ Gets the size of the margin in inches.
+ @param margin which margin to Get
+ @return the size of the margin
+
+
+ Sets the size of the margin in inches.
+ @param margin which margin to Get
+ @param size the size of the margin
+
+
+
+ SERIESDATA = Dimensions 3(SIIndex *(Number / BoolErr / Blank / Label))
+
+
+
+
+
+ AXES = [IVAXIS DVAXIS [SERIESAXIS] / DVAXIS DVAXIS] *3ATTACHEDLABEL [PlotArea FRAME]
+
+
+
+
+ AXISPARENT = AxisParent Begin Pos [AXES] 1*4CRT End
+ CRT = ChartFormat Begin (Bar / Line / (BopPop [BopPopCustom]) / Pie / Area / Scatter / Radar / RadarArea / Surf)
+ CrtLink [SeriesList] [Chart3d] [LD] [2DROPBAR] *4(CrtLine LineFormat) *2DFTTEXT [DataLabExtContents] [SS] *4SHAPEPROPS End
+ LD = Legend Begin Pos ATTACHEDLABEL [FRAME] [CrtLayout12] [TEXTPROPS] [CRTMLFRT] End
+
+
+
+
+
+ DFTTEXT = [DataLabExt StartObject] DefaultText ATTACHEDLABEL [EndObject]
+
+
+
+
+
+ ATTACHEDLABEL = Text Begin Pos [FontX] [AlRuns] AI [FRAME] [ObjectLink] [DataLabExtContents] [CrtLayout12] [TEXTPROPS] [CRTMLFRT] End
+
+
+
+
+ Low level model implementation of a Sheet (one workbook Contains many sheets)
+ This file Contains the low level binary records starting at the sheets BOF and
+ ending with the sheets EOF. Use HSSFSheet for a high level representation.
+
+ The structures of the highlevel API use references to this to perform most of their
+ operations. Its probably Unwise to use these low level structures directly Unless you
+ really know what you're doing. I recommend you Read the Microsoft Excel 97 Developer's
+ Kit (Microsoft Press) and the documentation at http://sc.openoffice.org/excelfileformat.pdf
+ before even attempting to use this.
+
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Shawn Laubach (slaubach at apache dot org) Gridlines, Headers, Footers, PrintSetup, and Setting Default Column Styles
+ @author Jason Height (jheight at chariot dot net dot au) Clone support. DBCell and Index Record writing support
+ @author Brian Sanders (kestrel at burdell dot org) Active Cell support
+ @author Jean-Pierre Paris (jean-pierre.paris at m4x dot org) (Just a little)
+
+
+
+ java object always present, but if empty no BIFF records are written
+
+
+ the DimensionsRecord is always present
+
+
+ Add an UncalcedRecord if not true indicating formulas have not been calculated
+
+
+
+ Clones the low level records of this sheet and returns the new sheet instance.
+ This method is implemented by Adding methods for deep cloning to all records that
+ can be Added to a sheet. The Record object does not implement Cloneable.
+ When Adding a new record, implement a public Clone method if and only if the record
+ belongs to a sheet.
+
+
+
+
+
+ Creates the sheet.
+
+ The stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+
+
+ Creates a sheet with all the usual records minus values and the "index"
+ record (not required). Sets the location pointer to where the first value
+ records should go. Use this to Create a sheet from "scratch".
+
+ Sheet object with all values Set to defaults
+
+
+
+ Adds the merged region.
+
+ the row index From
+ The column index From.
+ The row index To
+ The column To.
+
+
+
+
+ Removes the merged region.
+
+ The index.
+
+
+
+ Gets the column infos.
+
+ The column infos.
+
+
+
+ Gets the merged region at.
+
+ The index.
+
+
+
+
+ Gets the number of merged regions.
+
+ The number merged regions.
+
+
+
+ Gets the number of conditional formattings.
+
+ The number of conditional formattings.
+
+
+
+ Per an earlier reported bug in working with Andy Khan's excel Read library. This
+ Sets the values in the sheet's DimensionsRecord object to be correct. Excel doesn't
+ really care, but we want to play nice with other libraries.
+
+ The first row.
+ The first column.
+ The last row.
+ The last column.
+
+
+
+ Gets or Sets the preoffset when using DBCELL records (currently Unused) - this Is
+ the position of this sheet within the whole file.
+
+ the offset of the sheet's BOF within the file.
+
+
+
+ Create a row record. (does not Add it to the records contained in this sheet)
+
+ row number
+ RowRecord Created for the passed in row number
+
+
+
+ Create a LABELSST Record (does not Add it to the records contained in this sheet)
+
+ the row the LabelSST Is a member of
+ the column the LabelSST defines
+ the index of the string within the SST (use workbook AddSSTString method)
+ LabelSSTRecord newly Created containing your SST Index, row,col.
+
+
+
+ Create a NUMBER Record (does not Add it to the records contained in this sheet)
+
+ the row the NumberRecord is a member of
+ the column the NumberRecord defines
+ value for the number record
+ NumberRecord for that row, col containing that value as Added to the sheet
+
+
+
+ Create a BLANK record (does not Add it to the records contained in this sheet)
+
+ the row the BlankRecord is a member of
+ the column the BlankRecord is a member of
+
+
+
+
+ Adds a value record to the sheet's contained binary records
+ (i.e. LabelSSTRecord or NumberRecord).
+ This method is "loc" sensitive. Meaning you need to Set LOC to where you
+ want it to start searching. If you don't know do this: SetLoc(GetDimsLoc).
+ When Adding several rows you can just start at the last one by leaving loc
+ at what this Sets it to.
+
+ the row to Add the cell value to
+ the cell value record itself.
+
+
+
+ Remove a value record from the records array.
+ This method is not loc sensitive, it Resets loc to = dimsloc so no worries.
+
+ the row of the value record you wish to Remove
+ a record supporting the CellValueRecordInterface.
+
+
+
+ Replace a value record from the records array.
+ This method is not loc sensitive, it Resets loc to = dimsloc so no worries.
+
+ a record supporting the CellValueRecordInterface. this will Replace
+ the cell value with the same row and column. If there Isn't one, one will
+ be Added.
+
+
+
+ Adds a row record to the sheet
+ This method is "loc" sensitive. Meaning you need to Set LOC to where you
+ want it to start searching. If you don't know do this: SetLoc(GetDimsLoc).
+ When Adding several rows you can just start at the last one by leaving loc
+ at what this Sets it to.
+
+ the row record to be Added
+
+
+
+ Removes a row record
+ This method is not loc sensitive, it Resets loc to = dimsloc so no worries.
+
+ the row record to Remove
+
+
+ Get all the value records (from LOC). Records will be returned from the first
+ record (starting at LOC) which is a value record.
+
+ This method is "loc" sensitive. Meaning you need to set LOC to where you
+ want it to start searching. If you don't know do this: setLoc(getDimsLoc).
+ When adding several rows you can just start at the last one by leaving loc
+ at what this sets it to. For this method, set loc to dimsloc to start with,
+ subsequent calls will return values in (physical) sequence or NULL when you get to the end.
+
+ @return Iterator of CellValueRecordInterface representing the value records
+
+
+
+ Get the NEXT RowRecord (from LOC). The first record that is a Row record
+ (starting at LOC) will be returned.
+ This method is "loc" sensitive. Meaning you need to Set LOC to where you
+ want it to start searching. If you don't know do this: SetLoc(GetDimsLoc).
+ When Adding several rows you can just start at the last one by leaving loc
+ at what this Sets it to. For this method, Set loc to dimsloc to start with.
+ subsequent calls will return rows in (physical) sequence or NULL when you Get to the end.
+
+ RowRecord representing the next row record or NULL if there are no more
+
+
+
+ Get the NEXT (from LOC) RowRecord where rownumber matches the given rownum.
+ The first record that is a Row record (starting at LOC) that has the
+ same rownum as the given rownum will be returned.
+ This method is "loc" sensitive. Meaning you need to Set LOC to where you
+ want it to start searching. If you don't know do this: SetLoc(GetDimsLoc).
+ When Adding several rows you can just start at the last one by leaving loc
+ at what this Sets it to. For this method, Set loc to dimsloc to start with.
+ subsequent calls will return rows in (physical) sequence or NULL when you Get to the end.
+
+ which row to return (careful with LOC)
+ RowRecord representing the next row record or NULL if there are no more
+
+
+
+ Gets the page settings.
+
+
+
+
+
+ Creates the BOF record
+
+ record containing a BOFRecord
+
+
+
+ Creates the Index record - not currently used
+
+ record containing a IndexRecord
+
+
+
+ Creates the CalcMode record and Sets it to 1 (automatic formula caculation)
+
+ record containing a CalcModeRecord
+
+
+
+ Creates the CalcCount record and Sets it to 0x64 (default number of iterations)
+
+ record containing a CalcCountRecord
+
+
+
+ Creates the RefMode record and Sets it to A1 Mode (default reference mode)
+
+ record containing a RefModeRecord
+
+
+
+ Creates the Iteration record and Sets it to false (don't iteratively calculate formulas)
+
+ record containing a IterationRecord
+
+
+
+ Creates the Delta record and Sets it to 0.0010 (default accuracy)
+
+ record containing a DeltaRecord
+
+
+
+ Creates the SaveRecalc record and Sets it to true (recalculate before saving)
+
+ record containing a SaveRecalcRecord
+
+
+
+ Creates the PrintHeaders record and Sets it to false (we don't Create headers yet so why print them)
+
+ record containing a PrintHeadersRecord
+
+
+
+ Creates the PrintGridlines record and Sets it to false (that makes for ugly sheets). As far as I can
+ tell this does the same thing as the GridsetRecord
+
+ record containing a PrintGridlinesRecord
+
+
+
+ Creates the GridSet record and Sets it to true (user has mucked with the gridlines)
+
+ record containing a GridsetRecord
+
+
+
+ Creates the Guts record and Sets leftrow/topcol guttter and rowlevelmax/collevelmax to 0
+
+ record containing a GutsRecordRecord
+
+
+
+ Creates the DefaultRowHeight Record and Sets its options to 0 and rowheight to 0xff
+
+
+
+ record containing a DefaultRowHeightRecord
+
+
+ Creates the WSBoolRecord and Sets its values to defaults
+ @see org.apache.poi.hssf.record.WSBoolRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a WSBoolRecord
+
+
+ Creates the HCenter Record and Sets it to false (don't horizontally center)
+ @see org.apache.poi.hssf.record.HCenterRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a HCenterRecord
+
+
+ Creates the VCenter Record and Sets it to false (don't horizontally center)
+ @see org.apache.poi.hssf.record.VCenterRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a VCenterRecord
+
+
+ Creates the PrintSetup Record and Sets it to defaults and marks it invalid
+ @see org.apache.poi.hssf.record.PrintSetupRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a PrintSetupRecord
+
+
+ Creates the DefaultColWidth Record and Sets it to 8
+ @see org.apache.poi.hssf.record.DefaultColWidthRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a DefaultColWidthRecord
+
+
+ Get the default column width for the sheet (if the columns do not define their own width)
+ @return default column width
+
+
+ Get the default row height for the sheet (if the rows do not define their own height)
+ @return default row height
+
+
+ Get the width of a given column in Units of 1/256th of a Char width
+ @param column index
+ @see org.apache.poi.hssf.record.DefaultColWidthRecord
+ @see org.apache.poi.hssf.record.ColumnInfoRecord
+ @see #SetColumnWidth(short,short)
+ @return column width in Units of 1/256th of a Char width
+
+
+ Get the index to the ExtendedFormatRecord "associated" with
+ the column at specified 0-based index. (In this case, an
+ ExtendedFormatRecord index is actually associated with a
+ ColumnInfoRecord which spans 1 or more columns)
+
+ Returns the index to the default ExtendedFormatRecord (0xF)
+ if no ColumnInfoRecord exists that includes the column
+ index specified.
+ @param column
+ @return index of ExtendedFormatRecord associated with
+ ColumnInfoRecord that includes the column index or the
+ index of the default ExtendedFormatRecord (0xF)
+
+
+ Set the width for a given column in 1/256th of a Char width Units
+ @param column - the column number
+ @param width (in Units of 1/256th of a Char width)
+
+
+ Get the hidden property for a given column.
+ @param column index
+ @see org.apache.poi.hssf.record.DefaultColWidthRecord
+ @see org.apache.poi.hssf.record.ColumnInfoRecord
+ @see #SetColumnHidden(short,bool)
+ @return whether the column is hidden or not.
+
+
+ Get the hidden property for a given column.
+ @param column - the column number
+ @param hidden - whether the column is hidden or not
+
+
+ Creates an outline Group for the specified columns.
+ @param fromColumn Group from this column (inclusive)
+ @param toColumn Group to this column (inclusive)
+ @param indent if true the Group will be indented by one level,
+ if false indenting will be Removed by one level.
+
+
+ Creates the Dimensions Record and Sets it to bogus values (you should Set this yourself
+ or let the high level API do it for you)
+ @see org.apache.poi.hssf.record.DimensionsRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a DimensionsRecord
+
+
+ Creates the WindowTwo Record and Sets it to:
+ options = 0x6b6
+ toprow = 0
+ leftcol = 0
+ headercolor = 0x40
+ pagebreakzoom = 0x0
+ normalzoom = 0x0
+ @see org.apache.poi.hssf.record.WindowTwoRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a WindowTwoRecord
+
+
+
+ Creates the Selection record and Sets it to nothing selected
+
+ record containing a SelectionRecord
+
+
+
+ Gets or sets the top row.
+
+ The top row.
+
+
+
+ Gets or sets the left col.
+
+ The left col.
+
+
+
+ Sets the active cell.
+
+ The row.
+ The column.
+
+
+
+ Sets the active cell range.
+
+ The firstrow.
+ The lastrow.
+ The firstcolumn.
+ The lastcolumn.
+
+
+
+ Sets the active cell range.
+
+ The cellranges.
+ The index of the active range.
+ The active row in the active range
+ The active column in the active range
+
+
+
+ Returns the active row
+
+ the active row index
+ @see org.apache.poi.hssf.record.SelectionRecord
+
+
+
+ Gets the active cell col.
+
+ the active column index
+ @see org.apache.poi.hssf.record.SelectionRecord
+
+
+
+ Creates the EOF record
+
+ record containing a EOFRecord
+
+
+
+ Gets the gridset record for this sheet.
+
+ The gridset record.
+
+
+
+ Returns the first occurance of a record matching a particular sid.
+
+ The sid.
+
+
+
+
+ Sets the SCL record or Creates it in the correct place if it does not
+ already exist.
+
+ The record to set.
+
+
+ Finds the first occurance of a record matching a particular sid and
+ returns it's position.
+ @param sid the sid to search for
+ @return the record position of the matching record or -1 if no match
+ is made.
+
+
+
+ Gets or sets the header.
+
+ the HeaderRecord.
+
+
+
+ Gets or sets a value indicating whether this instance is auto tab color.
+
+
+ true if this instance is auto tab color; otherwise, false.
+
+
+
+
+ Gets or sets the footer.
+
+ FooterRecord for the sheet.
+
+
+ Returns the PrintSetupRecord.
+ @return PrintSetupRecord for the sheet.
+
+
+ @return true if gridlines are printed
+
+
+ Returns the PrintGridlinesRecord.
+ @return PrintGridlinesRecord for the sheet.
+
+
+ Returns the PrintHeadersRecord.
+ @return PrintHeadersRecord for the sheet.
+
+
+ Sets whether the sheet is selected
+ @param sel True to select the sheet, false otherwise.
+
+
+ Creates a split (freezepane). Any existing freezepane or split pane Is overwritten.
+ @param colSplit Horizonatal position of split.
+ @param rowSplit Vertical position of split.
+ @param topRow Top row visible in bottom pane
+ @param leftmostColumn Left column visible in right pane.
+
+
+ Creates a split pane. Any existing freezepane or split pane is overwritten.
+ @param xSplitPos Horizonatal position of split (in 1/20th of a point).
+ @param ySplitPos Vertical position of split (in 1/20th of a point).
+ @param topRow Top row visible in bottom pane
+ @param leftmostColumn Left column visible in right pane.
+ @param activePane Active pane. One of: PANE_LOWER_RIGHT,
+ PANE_UPPER_RIGHT, PANE_LOWER_LEFT, PANE_UPPER_LEFT
+ @see #PANE_LOWER_LEFT
+ @see #PANE_LOWER_RIGHT
+ @see #PANE_UPPER_LEFT
+ @see #PANE_UPPER_RIGHT
+
+
+ Returns the information regarding the currently configured pane (split or freeze).
+ @return null if no pane configured, or the pane information.
+
+
+ creates a Password record with password set to 00.
+
+
+ creates a Protect record with protect set to false.
+
+
+ Creates an ObjectProtect record with protect Set to false.
+ @see org.apache.poi.hssf.record.ObjectProtectRecord
+ @see org.apache.poi.hssf.record.Record
+ @return an ObjectProtectRecord
+
+
+ Creates a ScenarioProtect record with protect Set to false.
+ @see org.apache.poi.hssf.record.ScenarioProtectRecord
+ @see org.apache.poi.hssf.record.Record
+ @return a ScenarioProtectRecord
+
+
+ Returns if gridlines are Displayed.
+ @return whether gridlines are Displayed
+
+
+ Returns if formulas are Displayed.
+ @return whether formulas are Displayed
+
+
+ Returns if RowColHeadings are Displayed.
+ @return whether RowColHeadings are Displayed
+
+
+ Returns if RowColHeadings are displayed.
+ @return whether RowColHeadings are displayed
+
+
+ @return whether an Uncalced record must be Inserted or not at generation
+
+
+
+ Finds the DrawingRecord for our sheet, and attaches it to the DrawingManager (which knows about
+ the overall DrawingGroup for our workbook).
+ If requested, will Create a new DrawRecord if none currently exist
+
+ The DrawingManager2 for our workbook
+ Should one be Created if missing?
+ location of EscherAggregate record. if no EscherAggregate record is found return -1
+
+
+ Perform any work necessary before the sheet is about to be Serialized.
+ For instance the escher aggregates size needs to be calculated before
+ serialization so that the dgg record (which occurs first) can be written.
+
+
+ Shifts all the page breaks in the range "count" number of rows/columns
+ @param breaks The page record to be Shifted
+ @param start Starting "main" value to Shift breaks
+ @param stop Ending "main" value to Shift breaks
+ @param count number of Units (rows/columns) to Shift by
+
+
+ Shifts the horizontal page breaks for the indicated count
+ @param startingRow
+ @param endingRow
+ @param count
+
+
+ Shifts the vertical page breaks for the indicated count
+ @param startingCol
+ @param endingCol
+ @param count
+
+
+ Updates formulas in cells and conditional formats due to moving of cells
+ @param externSheetIndex the externSheet index of this sheet
+
+
+ 'initial sheet records' are between INDEX and the 'Row Blocks'
+ @param bofRecordIndex index of record after which INDEX record is to be placed
+ @return count of bytes from end of INDEX record to first ROW record.
+
+
+ Get the {@link NoteRecord}s (related to cell comments) for this sheet
+ @return never null, typically empty array
+
+
+ Low level model implementation of a Workbook. Provides creational methods
+ for Settings and objects contained in the workbook object.
+
+ This file Contains the low level binary records starting at the workbook's BOF and
+ ending with the workbook's EOF. Use HSSFWorkbook for a high level representation.
+
+ The structures of the highlevel API use references to this to perform most of their
+ operations. Its probably Unwise to use these low level structures directly Unless you
+ really know what you're doing. I recommend you Read the Microsoft Excel 97 Developer's
+ Kit (Microsoft Press) and the documentation at http://sc.openoffice.org/excelfileformat.pdf
+ before even attempting to use this.
+
+
+ @author Luc Girardin (luc dot girardin at macrofocus dot com)
+ @author Sergei Kozello (sergeikozello at mail.ru)
+ @author Shawn Laubach (slaubach at apache dot org) (Data Formats)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Brian Sanders (bsanders at risklabs dot com) - custom palette
+ @author Dan Sherman (dsherman at Isisph.com)
+ @author Glen Stampoultzis (glens at apache.org)
+ @see org.apache.poi.hssf.usermodel.HSSFWorkbook
+ @version 1.0-pre
+
+
+ Excel silently truncates long sheet names to 31 chars.
+ This constant is used to ensure uniqueness in the first 31 chars
+
+
+ Normally, the Workbook will be in a POIFS Stream
+ called "Workbook". However, some weird XLS generators use "WORKBOOK"
+
+
+ Name of older (pre-Excel 97) Workbook streams, which
+ aren't supported by HSSFWorkbook, only by
+ {@link OldExcelExtractor}
+
+
+ constant used to Set the "codepage" wherever "codepage" is Set in records
+ (which is duplciated in more than one record)
+
+
+ this Contains the Worksheet record objects
+
+
+ this Contains a reference to the SSTRecord so that new stings can be Added
+ to it.
+
+
+ holds the "boundsheet" records (aka bundlesheet) so that they can have their
+ reference to their "BOF" marker
+
+
+ Creates new Workbook with no intitialization --useless right now
+ @see #CreateWorkbook(List)
+
+
+ Read support for low level
+ API. Pass in an array of Record objects, A Workbook
+ object is constructed and passed back with all of its initialization Set
+ to the passed in records and references to those records held. Unlike Sheet
+ workbook does not use an offset (its assumed to be 0) since its first in a file.
+ If you need an offset then construct a new array with a 0 offset or Write your
+ own ;-p.
+
+ @param recs an array of Record objects
+ @return Workbook object
+
+
+ gets the name comment record
+ @param nameRecord name record who's comment is required.
+ @return name comment record or null if there isn't one for the given name.
+
+
+ Creates an empty workbook object with three blank sheets and all the empty
+ fields. Use this to Create a workbook from scratch.
+
+
+ Retrieves the Builtin NameRecord that matches the name and index
+ There shouldn't be too many names to make the sequential search too slow
+ @param name byte representation of the builtin name to match
+ @param sheetIndex Index to match
+ @return null if no builtin NameRecord matches
+
+
+ Removes the specified Builtin NameRecord that matches the name and index
+ @param name byte representation of the builtin to match
+ @param sheetIndex zero-based sheet reference
+
+
+ Gets the font record at the given index in the font table. Remember
+ "There is No Four" (someone at M$ must have gone to Rocky Horror one too
+ many times)
+
+ @param idx the index to look at (0 or greater but NOT 4)
+ @return FontRecord located at the given index
+
+
+ Creates a new font record and Adds it to the "font table". This causes the
+ boundsheets to move down one, extended formats to move down (so this function moves
+ those pointers as well)
+
+ @return FontRecord that was just Created
+
+
+ Check if the cloned sheet has drawings. If yes, then allocate a new drawing group ID and
+ re-generate shape IDs
+
+ @param sheet the cloned sheet
+
+
+ Gets the number of font records
+
+ @return number of font records in the "font table"
+
+
+ Sets the BOF for a given sheet
+
+ @param sheetnum the number of the sheet to Set the positing of the bof for
+ @param pos the actual bof position
+
+
+ Returns the position of the backup record.
+
+
+ Sets the name for a given sheet. If the boundsheet record doesn't exist and
+ its only one more than we have, go ahead and Create it. If its > 1 more than
+ we have, except
+
+ @param sheetnum the sheet number (0 based)
+ @param sheetname the name for the sheet
+
+
+ Determines whether a workbook Contains the provided sheet name.
+
+ @param name the name to test (case insensitive match)
+ @param excludeSheetIdx the sheet to exclude from the Check or -1 to include all sheets in the Check.
+ @return true if the sheet Contains the name, false otherwise.
+
+
+ Sets the name for a given sheet forcing the encoding. This is STILL A BAD IDEA.
+ Poi now automatically detects Unicode
+
+ @deprecated 3-Jan-06 Simply use SetSheetNam e(int sheetnum, String sheetname)
+ @param sheetnum the sheet number (0 based)
+ @param sheetname the name for the sheet
+
+
+ Sets the order of appearance for a given sheet.
+
+ @param sheetname the name of the sheet to reorder
+ @param pos the position that we want to Insert the sheet into (0 based)
+
+
+ Gets the name for a given sheet.
+
+ @param sheetnum the sheet number (0 based)
+ @return sheetname the name for the sheet
+
+
+ Gets the hidden flag for a given sheet.
+
+ @param sheetnum the sheet number (0 based)
+ @return True if sheet is hidden
+
+
+ Gets the hidden flag for a given sheet.
+ Note that a sheet could instead be
+ set to be very hidden, which is different
+ ({@link #isSheetVeryHidden(int)})
+
+ @param sheetnum the sheet number (0 based)
+ @return True if sheet is hidden
+
+
+ Hide or Unhide a sheet
+
+ @param sheetnum The sheet number
+ @param hidden True to mark the sheet as hidden, false otherwise
+
+
+ Hide or unhide a sheet.
+ 0 = not hidden
+ 1 = hidden
+ 2 = very hidden.
+
+ @param sheetnum The sheet number
+ @param hidden 0 for not hidden, 1 for hidden, 2 for very hidden
+
+
+ Get the sheet's index
+ @param name sheet name
+ @return sheet index or -1 if it was not found.
+
+
+ if we're trying to Address one more sheet than we have, go ahead and Add it! if we're
+ trying to Address >1 more than we have throw an exception!
+
+
+
+ make the tabid record look like the current situation.
+
+ number of bytes written in the TabIdRecord
+
+
+ returns the number of boundsheet objects contained in this workbook.
+
+ @return number of BoundSheet records
+
+
+ Get the number of ExtendedFormat records contained in this workbook.
+
+ @return int count of ExtendedFormat records
+
+
+ Retrieves the index of the given font
+
+
+ Returns the StyleRecord for the given
+ xfIndex, or null if that ExtendedFormat doesn't
+ have a Style set.
+
+
+ Gets the ExtendedFormatRecord at the given 0-based index
+
+ @param index of the Extended format record (0-based)
+ @return ExtendedFormatRecord at the given index
+
+
+ Creates a new Cell-type Extneded Format Record and Adds it to the end of
+ ExtendedFormatRecords collection
+
+ @return ExtendedFormatRecord that was Created
+
+
+ Adds a string to the SST table and returns its index (if its a duplicate
+ just returns its index and update the counts) ASSUMES compressed Unicode
+ (meaning 8bit)
+
+ @param string the string to be Added to the SSTRecord
+
+ @return index of the string within the SSTRecord
+
+
+ given an index into the SST table, this function returns the corresponding String value
+ @return String containing the SST String
+
+
+ use this function to Add a Shared String Table to an existing sheet (say
+ generated by a different java api) without an sst....
+ @see #CreateSST()
+ @see org.apache.poi.hssf.record.SSTRecord
+
+
+ Serializes all records int the worksheet section into a big byte array. Use
+ this to Write the Workbook out.
+ @param offset of the data to be written
+ @param data array of bytes to Write this to
+
+
+ Perform any work necessary before the workbook is about to be serialized.
+
+ Include in it ant code that modifies the workbook record stream and affects its size.
+
+
+ Creates the BOF record
+ @see org.apache.poi.hssf.record.BOFRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a BOFRecord
+
+
+ Creates the InterfaceHdr record
+ @see org.apache.poi.hssf.record.InterfaceHdrRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a InterfaceHdrRecord
+
+
+ Creates an MMS record
+ @see org.apache.poi.hssf.record.MMSRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a MMSRecord
+
+
+ Creates the InterfaceEnd record
+ @see org.apache.poi.hssf.record.InterfaceEndRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a InterfaceEndRecord
+
+
+ Creates the WriteAccess record containing the logged in user's name
+ @see org.apache.poi.hssf.record.WriteAccessRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a WriteAccessRecord
+
+
+ Creates the Codepage record containing the constant stored in CODEPAGE
+ @see org.apache.poi.hssf.record.CodepageRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a CodepageRecord
+
+
+ Creates the DSF record containing a 0 since HSSF can't even Create Dual Stream Files
+ @see org.apache.poi.hssf.record.DSFRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a DSFRecord
+
+
+ Creates the TabId record containing an array of 0,1,2. This release of HSSF
+ always has the default three sheets, no less, no more.
+ @see org.apache.poi.hssf.record.TabIdRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a TabIdRecord
+
+
+ Creates the FnGroupCount record containing the Magic number constant of 14.
+ @see org.apache.poi.hssf.record.FnGroupCountRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a FnGroupCountRecord
+
+
+ Creates the WindowProtect record with protect Set to false.
+ @see org.apache.poi.hssf.record.WindowProtectRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a WindowProtectRecord
+
+
+ Creates the Protect record with protect Set to false.
+ @see org.apache.poi.hssf.record.ProtectRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a ProtectRecord
+
+
+ Creates the Password record with password Set to 0.
+ @see org.apache.poi.hssf.record.PasswordRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a PasswordRecord
+
+
+ Creates the ProtectionRev4 record with protect Set to false.
+ @see org.apache.poi.hssf.record.ProtectionRev4Record
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a ProtectionRev4Record
+
+
+ Creates the PasswordRev4 record with password Set to 0.
+ @see org.apache.poi.hssf.record.PasswordRev4Record
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a PasswordRev4Record
+
+
+ Creates the WindowOne record with the following magic values:
+ horizontal hold - 0x168
+ vertical hold - 0x10e
+ width - 0x3a5c
+ height - 0x23be
+ options - 0x38
+ selected tab - 0
+ Displayed tab - 0
+ num selected tab- 0
+ tab width ratio - 0x258
+ @see org.apache.poi.hssf.record.WindowOneRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a WindowOneRecord
+
+
+ Creates the Backup record with backup Set to 0. (loose the data, who cares)
+ @see org.apache.poi.hssf.record.BackupRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a BackupRecord
+
+
+ Creates the HideObj record with hide object Set to 0. (don't hide)
+ @see org.apache.poi.hssf.record.HideObjRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a HideObjRecord
+
+
+ Creates the DateWindow1904 record with windowing Set to 0. (don't window)
+ @see org.apache.poi.hssf.record.DateWindow1904Record
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a DateWindow1904Record
+
+
+ Creates the Precision record with precision Set to true. (full precision)
+ @see org.apache.poi.hssf.record.PrecisionRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a PrecisionRecord
+
+
+ Creates the RefreshAll record with refreshAll Set to true. (refresh all calcs)
+ @see org.apache.poi.hssf.record.RefreshAllRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a RefreshAllRecord
+
+
+ Creates the BookBool record with saveLinkValues Set to 0. (don't save link values)
+ @see org.apache.poi.hssf.record.BookBoolRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a BookBoolRecord
+
+
+ Creates a Font record with the following magic values:
+ fontheight = 0xc8
+ attributes = 0x0
+ color palette index = 0x7fff
+ bold weight = 0x190
+ Font Name Length = 5
+ Font Name = Arial
+
+ @see org.apache.poi.hssf.record.FontRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a FontRecord
+
+
+ Creates an ExtendedFormatRecord object
+ @param id the number of the extended format record to Create (meaning its position in
+ a file as MS Excel would Create it.)
+
+ @return record containing an ExtendedFormatRecord
+ @see org.apache.poi.hssf.record.ExtendedFormatRecord
+ @see org.apache.poi.hssf.record.Record
+
+
+ Creates an default cell type ExtendedFormatRecord object.
+ @return ExtendedFormatRecord with intial defaults (cell-type)
+
+
+ Creates a new StyleRecord, for the given Extended
+ Format index, and adds it onto the end of the
+ records collection
+
+
+ Creates a StyleRecord object
+ @param id the number of the style record to Create (meaning its position in
+ a file as MS Excel would Create it.
+ @return record containing a StyleRecord
+ @see org.apache.poi.hssf.record.StyleRecord
+ @see org.apache.poi.hssf.record.Record
+
+
+ Creates a palette record initialized to the default palette
+ @return a PaletteRecord instance populated with the default colors
+ @see org.apache.poi.hssf.record.PaletteRecord
+
+
+ Creates the UseSelFS object with the use natural language flag Set to 0 (false)
+ @return record containing a UseSelFSRecord
+ @see org.apache.poi.hssf.record.UseSelFSRecord
+ @see org.apache.poi.hssf.record.Record
+
+
+ Create a "bound sheet" or "bundlesheet" (depending who you ask) record
+ Always Sets the sheet's bof to 0. You'll need to Set that yourself.
+ @param id either sheet 0,1 or 2.
+ @return record containing a BoundSheetRecord
+ @see org.apache.poi.hssf.record.BoundSheetRecord
+ @see org.apache.poi.hssf.record.Record
+
+
+ Creates the Country record with the default country Set to 1
+ and current country Set to 7 in case of russian locale ("ru_RU") and 1 otherwise
+ @return record containing a CountryRecord
+ @see org.apache.poi.hssf.record.CountryRecord
+ @see org.apache.poi.hssf.record.Record
+
+
+ Creates the ExtendedSST record with numstrings per bucket Set to 0x8. HSSF
+ doesn't yet know what to do with this thing, but we Create it with nothing in
+ it hardly just to make Excel happy and our sheets look like Excel's
+
+ @return record containing an ExtSSTRecord
+ @see org.apache.poi.hssf.record.ExtSSTRecord
+ @see org.apache.poi.hssf.record.Record
+
+
+ lazy initialization
+ Note - creating the link table causes creation of 1 EXTERNALBOOK and 1 EXTERNALSHEET record
+
+
+ Finds the first sheet name by his extern sheet index
+ @param externSheetIndex extern sheet index
+ @return first sheet name.
+
+
+ Finds the (first) sheet index for a particular external sheet number.
+ @param externSheetNumber The external sheet number to convert
+ @return The index to the sheet found.
+
+
+ Finds the last sheet index for a particular external sheet number,
+ which may be the same as the first (except for multi-sheet references)
+ @param externSheetNumber The external sheet number to convert
+ @return The index to the sheet found.
+
+
+ Returns the extern sheet number for specific sheet number.
+ If this sheet doesn't exist in extern sheet, add it
+ @param sheetNumber local sheet number
+ @return index to extern sheet
+
+
+ Returns the extern sheet number for specific range of sheets.
+ If this sheet range doesn't exist in extern sheet, add it
+ @param firstSheetNumber first local sheet number
+ @param lastSheetNumber last local sheet number
+ @return index to extern sheet
+
+
+ Gets the total number of names
+ @return number of names
+
+
+
+ @param name the name of an external function, typically a name of a UDF
+ @param sheetRefIndex the sheet ref index, or -1 if not known
+ @param udf locator of user-defiend functions to resolve names of VBA and Add-In functions
+ @return the external name or null
+
+
+ Gets the name record
+ @param index name index
+ @return name record
+
+
+ Creates new name
+ @return new name record
+
+
+ Creates new name
+ @return new name record
+
+
+ Generates a NameRecord to represent a built-in region
+ @return a new NameRecord Unless the index is invalid
+
+
+ Removes the name
+ @param namenum name index
+
+
+ If a {@link NameCommentRecord} is added or the name it references
+ is renamed, then this will update the lookup cache for it.
+
+
+ Returns a format index that matches the passed in format. It does not tie into HSSFDataFormat.
+ @param format the format string
+ @param CreateIfNotFound Creates a new format if format not found
+ @return the format id of a format that matches or -1 if none found and CreateIfNotFound
+
+
+ Returns the list of FormatRecords in the workbook.
+ @return ArrayList of FormatRecords in the notebook
+
+
+ Creates a FormatRecord, Inserts it, and returns the index code.
+ @param format the format string
+ @return the index code of the format record.
+ @see org.apache.poi.hssf.record.FormatRecord
+ @see org.apache.poi.hssf.record.Record
+
+
+ Creates a FormatRecord object
+ @param id the number of the format record to create (meaning its position in
+ a file as M$ Excel would create it.)
+
+
+ Returns the first occurance of a record matching a particular sid.
+
+
+ Returns the index of a record matching a particular sid.
+ @param sid The sid of the record to match
+ @return The index of -1 if no match made.
+
+
+ Returns the next occurance of a record matching a particular sid.
+
+
+ Whether date windowing is based on 1/2/1904 or 1/1/1900.
+ Some versions of Excel (Mac) can save workbooks using 1904 date windowing.
+
+ @return true if using 1904 date windowing
+
+
+ Returns the custom palette in use for this workbook; if a custom palette record
+ does not exist, then it is Created.
+
+
+ Finds the primary drawing Group, if one already exists
+
+
+ Creates a primary drawing Group record. If it already
+ exists then it's modified.
+
+
+ Removes the given font record from the
+ file's list. This will make all
+ subsequent font indicies drop by one,
+ so you'll need to update those yourself!
+
+
+ Removes the given ExtendedFormatRecord record from the
+ file's list. This will make all
+ subsequent font indicies drop by one,
+ so you'll need to update those yourself!
+
+
+
+ Removes ExtendedFormatRecord record with given index from the file's list. This will make all
+ subsequent font indicies drop by one,so you'll need to update those yourself!
+
+ index of the Extended format record (0-based)
+
+
+ is the workbook protected with a password (not encrypted)?
+
+
+ protect a workbook with a password (not encypted, just Sets Writeprotect
+ flags and the password.
+ @param password to Set
+
+
+ Removes the Write protect flag
+
+
+ @param reFindex Index to REF entry in EXTERNSHEET record in the Link Table
+ @param definedNameIndex zero-based to DEFINEDNAME or EXTERNALNAME record
+ @return the string representation of the defined or external name
+
+
+ Updates named ranges due to moving of cells
+
+
+ Get or create RecalcIdRecord
+
+ @see org.apache.poi.hssf.usermodel.HSSFWorkbook#setForceFormulaRecalculation(boolean)
+
+
+ Changes an external referenced file to another file.
+ A formular in Excel which refers a cell in another file is saved in two parts:
+ The referenced file is stored in an reference table. the row/cell information is saved separate.
+ This method invokation will only change the reference in the lookup-table itself.
+ @param oldUrl The old URL to search for and which is to be replaced
+ @param newUrl The URL replacement
+ @return true if the oldUrl was found and replaced with newUrl. Otherwise false
+
+
+ Link Table (OOO pdf reference: 4.10.3 )
+
+ The main data of all types of references is stored in the Link Table inside the Workbook Globals
+ Substream (4.2.5). The Link Table itself is optional and occurs only, if there are any
+ references in the document.
+
+
+ In BIFF8 the Link Table consists of
+
+ - zero or more EXTERNALBOOK Blocks
+ each consisting of
+
+ - exactly one EXTERNALBOOK (0x01AE) record
+ - zero or more EXTERNALNAME (0x0023) records
+ - zero or more CRN Blocks
+ each consisting of
+
+ - exactly one XCT (0x0059)record
+ - zero or more CRN (0x005A) records (documentation says one or more)
+
+
+
+
+ - zero or one EXTERNSHEET (0x0017) record
+ - zero or more DEFINEDNAME (0x0018) records
+
+
+
+ @author Josh Micich
+
+
+ Create a new block for registering add-in functions
+
+ @see org.apache.poi.hssf.model.LinkTable#addNameXPtg(String)
+
+
+ Create a new block for external references.
+
+
+ Create a new block for internal references. It is called when constructing a new LinkTable.
+
+ @see org.apache.poi.hssf.model.LinkTable#LinkTable(int, WorkbookRecordList)
+
+
+ Performs case-insensitive search
+ @return -1 if not found
+
+
+ TODO - would not be required if calling code used RecordStream or similar
+
+
+ @param extRefIndex as from a {@link Ref3DPtg} or {@link Area3DPtg}
+ @return -1 if the reference is to an external book
+
+
+ @param extRefIndex as from a {@link Ref3DPtg} or {@link Area3DPtg}
+ @return -1 if the reference is to an external book
+
+
+ Finds the external name definition for the given name,
+ optionally restricted by externsheet index, and returns
+ (if found) as a NameXPtg.
+ @param sheetRefIndex The Extern Sheet Index to look for, or -1 if any
+
+
+ Register an external name in this workbook
+
+ @param name the name to register
+ @return a NameXPtg describing this name
+
+
+ copied from Workbook
+
+
+ Changes an external referenced file to another file.
+ A formular in Excel which refers a cell in another file is saved in two parts:
+ The referenced file is stored in an reference table. the row/cell information is saved separate.
+ This method invokation will only change the reference in the lookup-table itself.
+ @param oldUrl The old URL to search for and which is to be replaced
+ @param newUrl The URL replacement
+ @return true if the oldUrl was found and replaced with newUrl. Otherwise false
+
+
+ Represents a syntactic element from a formula by encapsulating the corresponding Ptg
+ token. Each ParseNode may have child ParseNodes in the case when the wrapped
+ Ptg is non-atomic.
+
+ @author Josh Micich
+
+
+
+ Collects the array of Ptg
+ tokens for the specified tree.
+
+ The root node.
+
+
+
+
+ The IF() function Gets marked up with two or three tAttr tokens.
+ Similar logic will be required for CHOOSE() when it is supported
+ See excelfileformat.pdf sec 3.10.5 "tAttr (19H)
+
+ The temp.
+
+
+ Finds correct insert positions for records in workbook streams
+
+ See OOO excelfileformat.pdf sec. 4.2.5 'Record Order in a BIFF8 Workbook Stream'
+
+ @author Josh Micich
+
+
+ Adds the specified new record in the correct place in sheet records list
+
+
+
+
+ Finds the index where the protection block should be inserted
+
+ the records for this sheet
+
+
+ + BOF
+ o INDEX
+ o Calculation Settings Block
+ o PRINTHEADERS
+ o PRINTGRIDLINES
+ o GRIDSET
+ o GUTS
+ o DEFAULTROWHEIGHT
+ o SHEETPR
+ o Page Settings Block
+ o Worksheet Protection Block
+ o DEFCOLWIDTH
+ oo COLINFO
+ o SORT
+ + DIMENSION
+
+
+
+
+ These records may occur between the 'Worksheet Protection Block' and DIMENSION:
+
+
+
+
+ o DEFCOLWIDTH
+ oo COLINFO
+ o SORT
+
+
+
+
+ Find correct position to add new CFHeader record
+
+
+
+
+
+ Finds the index where the sheet validations header record should be inserted
+ @param records the records for this sheet
+
+ + WINDOW2
+ o SCL
+ o PANE
+ oo SELECTION
+ o STANDARDWIDTH
+ oo MERGEDCELLS
+ o LABELRANGES
+ o PHONETICPR
+ o Conditional Formatting Table
+ o Hyperlink Table
+ o Data Validity Table
+ o SHEETLAYOUT
+ o SHEETPROTECTION
+ o RANGEPROTECTION
+ + EOF
+
+
+ DIMENSIONS record is always present
+
+
+
+ if the specified record ID terminates a sequence of Row block records
+ It is assumed that at least one row or cell value record has been found prior to the current
+ record
+
+
+
+
+
+
+ Whether the specified record id normally appears in the row blocks section of the sheet records
+
+
+
+
+
+
+ Simplifies iteration over a sequence of Record objects.
+ @author Josh Micich
+
+
+
+
+ Determines whether this instance has next.
+
+
+ true if this instance has next; otherwise, false.
+
+
+
+
+ Gets the next record
+
+
+
+
+
+ Peeks the next sid.
+
+ -1 if at end of records
+
+
+
+ Peeks the next class.
+
+ the class of the next Record.return null if this stream Is exhausted.
+
+
+ Segregates the 'Row Blocks' section of a single sheet into plain row/cell records and
+ shared formula records.
+
+ @author Josh Micich
+
+
+ Also collects any loose MergeCellRecords and puts them in the supplied
+ mergedCellsTable
+
+
+ Some unconventional apps place {@link MergeCellsRecord}s within the row block. They
+ actually should be in the {@link MergedCellsTable} which is much later (see bug 45699).
+ @return any loose MergeCellsRecords found
+
+
+ @return a {@link RecordStream} containing all the non-{@link SharedFormulaRecord}
+ non-{@link ArrayRecord} and non-{@link TableRecord} Records.
+
+
+
+ List for records in Workbook
+
+
+
+
+ Gets or sets the records.
+
+ The records.
+
+
+
+ Gets the count.
+
+ The count.
+
+
+
+ Gets the at the specified index.
+
+
+
+
+
+ Adds the specified pos.
+
+ The pos.
+ The r.
+
+
+
+ Removes the specified record.
+
+ The record.
+
+
+
+ Removes the specified position.
+
+ The position.
+
+
+
+ Gets or sets the protpos.
+
+ The protpos.
+
+
+
+ Gets or sets the bspos.
+
+ The bspos.
+
+
+
+ Gets or sets the tabpos.
+
+ The tabpos.
+
+
+
+ Gets or sets the fontpos.
+
+ The fontpos.
+
+
+
+ Gets or sets the xfpos.
+
+ The xfpos.
+
+
+
+ Gets or sets the backuppos.
+
+ The backuppos.
+
+
+
+ Gets or sets the palettepos.
+
+ The palettepos.
+
+
+
+ Gets or sets the namepos.
+
+ The namepos.
+
+
+
+ Gets or sets the supbookpos.
+
+ The supbookpos.
+
+
+
+ Gets or sets the externsheet pos.
+
+ The externsheet pos.
+
+
+ The escher container record is used to hold escher records. It is abstract and
+ must be subclassed for maximum benefit.
+
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Michael Zalewski (zalewski at optonline.net)
+
+
+ Constructs a Bar record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (including 4 byte header)
+
+
+ Clone the current record, via a call to serialise
+ it, and another to Create a new record from the
+ bytes.
+ May only be used for classes which don't have
+ internal counts / ids in them. For those which
+ do, a full record-aware serialise is needed, which
+ allocates new ids / counts as needed.
+
+
+ If we have a EscherContainerRecord as one of our
+ children (and most top level escher holders do),
+ then return that.
+
+
+ Descends into all our children, returning the
+ first EscherRecord with the given id, or null
+ if none found
+
+
+ Big drawing Group records are split but it's easier to deal with them
+ as a whole Group so we need to join them toGether.
+
+
+ Convert raw data to escher records.
+
+
+
+
+
+ CFRecordsAggregate - aggregates Conditional Formatting records CFHeaderRecord
+ and number of up to three CFRuleRecord records toGether to simplify
+ access to them.
+ @author Dmitriy Kumshayev
+
+
+ Excel allows up to 3 conditional formating rules
+
+
+ List of CFRuleRecord objects
+
+
+
+ Create CFRecordsAggregate from a list of CF Records
+
+ list of Record objects
+
+
+
+ Create CFRecordsAggregate from a list of CF Records
+
+ list of Record objects
+ position of CFHeaderRecord object in the list of Record objects
+
+
+
+ Create a deep Clone of the record
+
+
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ The offset to begin writing at
+ The data byte array containing instance data
+ number of bytes written
+
+
+ @return false if this whole {@link CFHeaderRecord} / {@link CFRuleRecord}s should be deleted
+
+
+ Manages the all the records associated with a chart sub-stream.
+ Includes the Initial {@link BOFRecord} and {@link EOFRecord}.
+
+ @author Josh Micich
+
+
+ All the records between BOF and EOF
+
+
+
+ ATTACHEDLABEL = Text Begin Pos [FontX] [AlRuns] AI [FRAME] [ObjectLink] [DataLabExtContents] [CrtLayout12] [TEXTPROPS] [CRTMLFRT] End
+ AI = BRAI [SeriesText]
+
+
+
+
+ AXES = [IVAXIS DVAXIS [SERIESAXIS] / DVAXIS DVAXIS] *3ATTACHEDLABEL [PlotArea FRAME]
+
+
+
+
+ AXISPARENT = AxisParent Begin Pos [AXES] 1*4CRT End
+
+
+
+
+ AXM = YMult StartObject ATTACHEDLABEL EndObject
+
+
+
+
+ AXS = [IFmtRecord] [Tick] [FontX] *4(AxisLine LineFormat) [AreaFormat]
+ [GELFRAME] *4SHAPEPROPS [TextPropsStream *ContinueFrt12]
+
+
+
+
+ CHARTFOMATS = Chart Begin *2FONTLIST Scl PlotGrowth [FRAME] *SERIESFORMAT *SS ShtProps
+ *2DFTTEXT AxesUsed 1*2AXISPARENT [CrtLayout12A] [DAT] *ATTACHEDLABEL [CRTMLFRT]
+ *([DataLabExt StartObject] ATTACHEDLABEL [EndObject]) [TEXTPROPS] *2CRTMLFRT End
+
+
+
+
+ CHARTSHEET = BOF CHARTSHEETCONTENT
+ CHARTSHEETCONTENT = [WriteProtect] [SheetExt] [WebPub] *HFPicture PAGESETUP PrintSize
+ [HeaderFooter] [BACKGROUND] *Fbi *Fbi2 [ClrtClient] [PROTECTION] [Palette] [SXViewLink]
+ [PivotChartBits] [SBaseRef] [MsoDrawingGroup] OBJECTS Units CHARTFOMATS SERIESDATA
+ *WINDOW *CUSTOMVIEW [CodeName] [CRTMLFRT] EOF
+
+
+
+ All the records between BOF and EOF
+
+
+
+ CRT = ChartFormat Begin (Bar / Line / (BopPop [BopPopCustom]) / Pie / Area / Scatter / Radar /
+ RadarArea / Surf) CrtLink [SeriesList] [Chart3d] [LD] [2DROPBAR] *4(CrtLine LineFormat)
+ *2DFTTEXT [DataLabExtContents] [SS] *4SHAPEPROPS End
+
+
+
+
+ CRTMLFRT = CrtMlFrt *CrtMlFrtContinue
+
+
+
+
+ DAT = Dat Begin LD End
+
+
+
+
+ DFTTEXT = [DataLabExt StartObject] DefaultText ATTACHEDLABEL [EndObject]
+
+
+
+
+ DROPBAR = DropBar Begin LineFormat AreaFormat [GELFRAME] [SHAPEPROPS] End
+
+
+
+
+ DVAXIS = Axis Begin [ValueRange] [AXM] AXS [CRTMLFRT] End
+
+
+
+
+ FONTLIST = FrtFontList StartObject *(Font [Fbi]) EndObject
+
+
+
+
+ FRAME = Frame Begin LineFormat AreaFormat [GELFRAME] [SHAPEPROPS] End
+
+
+
+
+ GELFRAME = 1*2GelFrame *Continue [PICF]
+ PICF = Begin PicF End
+
+
+
+
+ IVAXIS = Axis Begin [CatSerRange] AxcExt [CatLab] AXS [CRTMLFRT] End
+
+
+
+
+ LD = Legend Begin Pos ATTACHEDLABEL [FRAME] [CrtLayout12] [TEXTPROPS] [CRTMLFRT] End
+
+
+
+
+ SERIESAXIS = Axis Begin [CatSerRange] AXS [CRTMLFRT] End
+
+
+
+
+ SERIESDATA = Dimensions 3(SIIndex *(Number / BoolErr / Blank / Label))
+
+
+
+
+ SERIESFORMAT = Series Begin 4AI *SS (SerToCrt / (SerParent (SerAuxTrend / SerAuxErrBar)))
+ *(LegendException [Begin ATTACHEDLABEL [TEXTPROPS] End]) End
+
+
+
+
+ LegendException [Begin ATTACHEDLABEL [TEXTPROPS] End]
+
+
+
+
+ SHAPEPROPS = ShapePropsStream *ContinueFrt12
+
+
+
+
+ SS = DataFormat Begin [Chart3DBarShape] [LineFormat AreaFormat PieFormat] [SerFmt]
+ [GELFRAME] [MarkerFormat] [AttachedLabel] *2SHAPEPROPS [CRTMLFRT] End
+
+
+
+
+ TEXTPROPS = (RichTextStream / TextPropsStream) *ContinueFrt12
+
+
+
+
+ @author Glen Stampoultzis
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The rs.
+
+
+ It's an aggregate... just made something up
+
+
+
+ Gets the num columns.
+
+ The num columns.
+
+
+
+ Gets the size of the record.
+
+ The size of the record.
+
+
+ Performs a deep Clone of the record
+
+
+
+ Inserts a column into the aggregate (at the end of the list).
+
+ The column.
+
+
+
+ Inserts a column into the aggregate (at the position specified
+ by index
+
+ The index.
+ The columninfo.
+
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ offset to begin writing at
+ byte array containing instance data
+ number of bytes written
+
+
+
+ Visit each of the atomic BIFF records contained in this {@link RecordAggregate} in the order
+ that they should be written to file. Implementors may or may not return the actual
+ Records being used to manage POI's internal implementation. Callers should not
+ assume either way, and therefore only attempt to modify those Records after cloning
+
+
+
+
+
+ Finds the start of column outline group.
+
+ The idx.
+
+
+
+
+ Finds the end of column outline group.
+
+ The idx.
+
+
+
+
+ Gets the col info.
+
+ The idx.
+
+
+
+
+ Determines whether [is column group collapsed] [the specified idx].
+
+ The idx.
+
+ true if [is column group collapsed] [the specified idx]; otherwise, false.
+
+
+
+
+ Determines whether [is column group hidden by parent] [the specified idx].
+
+ The idx.
+
+ true if [is column group hidden by parent] [the specified idx]; otherwise, false.
+
+
+
+
+ Collapses the column.
+
+ The column number.
+
+
+
+ Expands the column.
+
+ The column number.
+
+
+ Sets all non null fields into the ci parameter.
+
+
+
+ Attempts to merge the col info record at the specified index
+ with either or both of its neighbours
+
+ The col info ix.
+
+
+ merges two column info records (if they are adjacent and have the same formatting, etc)
+ @return false if the two column records could not be merged
+
+
+
+ Sets all adjacent columns of the same outline level to the specified hidden status.
+
+ the col info index of the start of the outline group.
+ The level.
+ The hidden.
+ the column index of the last column in the outline group
+
+
+
+ Sets the column.
+
+ The target column ix.
+ Index of the xf.
+ The width.
+ The level.
+ The hidden.
+ The collapsed.
+
+
+ Sets all non null fields into the ci parameter.
+
+
+
+ Collapses the col info records.
+
+ The column index.
+
+
+
+ Creates an outline Group for the specified columns.
+
+ Group from this column (inclusive)
+ Group to this column (inclusive)
+ if true the Group will be indented by one level;if false indenting will be Removed by one level.
+
+
+
+ Finds the ColumnInfoRecord
+ which contains the specified columnIndex
+
+ index of the column (not the index of the ColumnInfoRecord)
+ /// null
+ if no column info found for the specified column
+
+
+
+
+ Gets the max outline level.
+
+ The max outline level.
+
+
+ Holds all the conditional formatting for a workbook sheet.
+
+ See OOO exelfileformat.pdf sec 4.12 'Conditional Formatting Table'
+
+ @author Josh Micich
+
+
+ Creates an empty ConditionalFormattingTable
+
+
+ @return index of the newly added CF header aggregate
+
+
+ Manages the all the records associated with a 'Custom View Settings' sub-stream.
+ Includes the Initial USERSVIEWBEGIN(0x01AA) and USERSVIEWEND(0x01AB).
+
+ @author Josh Micich
+
+
+ All the records between BOF and EOF
+
+
+
+ Manages the DVALRecord and DVRecords for a single sheet
+ See OOO excelfileformat.pdf section 4.14
+ @author Josh Micich
+
+
+
+ The list of data validations for the current sheet.
+ Note - this may be empty (contrary to OOO documentation)
+
+
+
+ The formula record aggregate is used to join toGether the formula record and it's
+ (optional) string record and (optional) Shared Formula Record (template Reads, excel optimization).
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+ caches the calculated result of the formula
+
+
+
+ Initializes a new instance of the class.
+
+ The formula rec.
+ The string rec.
+ The SVM.
+
+
+ Should be called by any code which is either deleting this formula cell, or changing
+ its type. This method gives the aggregate a chance to unlink any shared formula
+ that may be involved with this cell formula.
+
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ offset to begin writing at
+ byte array containing instance data.
+ number of bytes written
+
+
+
+ Visit each of the atomic BIFF records contained in this {@link RecordAggregate} in the order
+ that they should be written to file. Implementors may or may not return the actual
+ {@link Record}s being used to manage POI's internal implementation. Callers should not
+ assume either way, and therefore only attempt to modify those {@link Record}s after cloning
+
+
+
+
+
+ Get the current Serialized size of the record. Should include the sid and recLength (4 bytes).
+
+ The size of the record.
+
+
+
+ return the non static version of the id for this record.
+
+ The sid.
+
+
+
+ Sometimes the shared formula flag "seems" to be erroneously set (because the corresponding
+ SharedFormulaRecord does not exist). Normally this would leave no way of determining
+ the Ptg tokens for the formula. However as it turns out in these
+ cases, Excel encodes the unshared Ptg tokens in the right place (inside the FormulaRecord).
+ So the the only thing that needs to be done is to ignore the erroneous
+ shared formula flag.
+
+ This method may also be used for setting breakpoints to help diagnose issues regarding the
+ abnormally-set 'shared formula' flags.
+
+ The formula.
+
+
+
+ Gets or sets the formula record.
+
+ The formula record.
+
+
+
+ Gets or sets the string record.
+
+ The string record.
+
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+
+ true if the specified is equal to the current ; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets the string value.
+
+ The string value.
+
+
+
+ Sets the cached string result.
+
+ The value.
+
+
+
+ Sets the cached boolean result.
+
+ if set to true [value].
+
+
+
+ Sets the cached error result.
+
+ The error code.
+
+
+ Also checks for a related shared formula and unlinks it if found
+
+
+ Removes an array formula
+ @return the range of the array formula containing the specified cell. Never null
+
+
+
+ @author Josh Micich
+
+
+
+ Creates an empty aggregate
+
+
+
+ Reads zero or more consecutive {@link MergeCellsRecord}s
+ @param rs
+
+
+ Groups the page settings records for a worksheet.
+
+ See OOO excelfileformat.pdf sec 4.4 'Page Settings Block'
+
+ @author Josh Micich
+
+
+ Creates a PageSettingsBlock with default settings
+
+
+ @return true if the specified Record sid is one belonging to the
+ 'Page Settings Block'.
+
+
+ Sets a page break at the indicated column
+
+
+
+ Removes a page break at the indicated column
+
+
+
+ Creates the HCenter Record and sets it to false (don't horizontally center)
+
+
+ Creates the VCenter Record and sets it to false (don't horizontally center)
+
+
+ Creates the PrintSetup Record and sets it to defaults and marks it invalid
+ @see org.apache.poi.hssf.record.PrintSetupRecord
+ @see org.apache.poi.hssf.record.Record
+ @return record containing a PrintSetupRecord
+
+
+ Returns the HeaderRecord.
+ @return HeaderRecord for the sheet.
+
+
+ Returns the FooterRecord.
+ @return FooterRecord for the sheet.
+
+
+ Returns the PrintSetupRecord.
+ @return PrintSetupRecord for the sheet.
+
+
+ Gets the size of the margin in inches.
+ @param margin which margin to Get
+ @return the size of the margin
+
+
+ Sets the size of the margin in inches.
+ @param margin which margin to Get
+ @param size the size of the margin
+
+
+ Shifts all the page breaks in the range "count" number of rows/columns
+ @param breaks The page record to be shifted
+ @param start Starting "main" value to shift breaks
+ @param stop Ending "main" value to shift breaks
+ @param count number of units (rows/columns) to shift by
+
+
+ Sets a page break at the indicated row
+ @param row
+
+
+ Removes a page break at the indicated row
+ @param row
+
+
+ Queries if the specified row has a page break
+ @param row
+ @return true if the specified row has a page break
+
+
+ Queries if the specified column has a page break
+
+ @return true if the specified column has a page break
+
+
+ Shifts the horizontal page breaks for the indicated count
+ @param startingRow
+ @param endingRow
+ @param count
+
+
+ Shifts the vertical page breaks for the indicated count
+ @param startingCol
+ @param endingCol
+ @param count
+
+
+ @return all the horizontal page breaks, never null
+
+
+ @return the number of row page breaks
+
+
+ @return all the column page breaks, never null
+
+
+ @return the number of column page breaks
+
+
+
+ HEADERFOOTER is new in 2007. Some apps seem to have scattered this record long after
+ the PageSettingsBlock where it belongs.
+
+
+
+
+
+ This method reads PageSettingsBlock records from the supplied RecordStream until the first non-PageSettingsBlock record is encountered.
+ As each record is read, it is incorporated into this PageSettingsBlock.
+
+
+
+
+ holds any continue records found after the PLS record.
+ This would not be required if PLS was properly interpreted.
+ Currently, PLS is an {@link UnknownRecord} and does not automatically
+ include any trailing {@link ContinueRecord}s.
+
+
+ Implementors may call non-mutating methods on Record r.
+ @param r must not be null
+
+
+ RecordAggregates are groups of of BIFF Records that are typically stored
+ together and/or updated together. Workbook / Sheet records are typically stored in a sequential
+ list, which does not provide much structure to coordinate updates.
+
+ @author Josh Micich
+
+
+ Visit each of the atomic BIFF records contained in this {@link RecordAggregate} in the order
+ that they should be written to file. Implementors may or may not return the actual
+ {@link Record}s being used to manage POI's internal implementation. Callers should not
+ assume either way, and therefore only attempt to modify those {@link Record}s after cloning
+
+
+ A wrapper for {@link RecordVisitor} which accumulates the sizes of all
+ records visited.
+
+
+
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Creates a new instance of ValueRecordsAggregate
+
+
+ @param rs record stream with all {@link SharedFormulaRecord}
+ {@link ArrayRecord}, {@link TableRecord} {@link MergeCellsRecord} Records removed
+
+
+ Handles UnknownRecords which appear within the row/cell records
+
+
+ Returns the number of row blocks.
+ The row blocks are goupings of rows that contain the DBCell record
+ after them
+
+
+ Returns the number of physical rows within a block
+
+
+ Returns the physical row number of the first row in a block
+
+
+ Returns the physical row number of the end row in a block
+
+
+ Create a row record.
+
+ @param row number
+ @return RowRecord Created for the passed in row number
+ @see org.apache.poi.hssf.record.RowRecord
+
+
+ Returns an iterator for the cell values
+
+
+
+ Manages various auxiliary records while constructing a RowRecordsAggregate
+ @author Josh Micich
+
+
+
+ Coordinates of the first cell having a formula that uses this shared formula.
+ This is often but not always the top left cell in the range covered by
+ {@link #_sfr}
+
+
+ Note - the 'first cell' of a shared formula group is not always the top-left cell
+ of the enclosing range.
+ @return true if the specified coordinates correspond to the 'first cell'
+ of this shared formula group.
+
+
+ cached for optimization purposes
+
+
+ @param firstCells
+ @param recs list of sheet records (possibly Contains records for other parts of the Excel file)
+ @param startIx index of first row/cell record for current sheet
+ @param endIx one past index of last row/cell record for current sheet. It is important
+ that this code does not inadvertently collect SharedFormulaRecords from any other
+ sheet (which could happen if endIx is chosen poorly). (see bug 44449)
+
+
+ @param firstCell as extracted from the {@link ExpPtg} from the cell's formula.
+ @return never null
+
+
+ Gets the {@link SharedValueRecordBase} record if it should be encoded immediately after the
+ formula record Contained in the specified {@link FormulaRecordAggregate} agg. Note - the
+ shared value record always appears after the first formula record in the group. For arrays
+ and tables the first formula is always the in the top left cell. However, since shared
+ formula groups can be sparse and/or overlap, the first formula may not actually be in the
+ top left cell.
+
+ @return the SHRFMLA, TABLE or ARRAY record for the formula cell, if it is the first cell of
+ a table or array region. null if the formula cell is not shared/array/table,
+ or if the specified formula is not the the first in the group.
+
+
+ Converts all {@link FormulaRecord}s handled by sharedFormulaRecord
+ to plain unshared formulas
+
+
+ Add specified Array Record.
+
+
+ Removes the {@link ArrayRecord} for the cell group containing the specified cell.
+ The caller should clear (set blank) all cells in the returned range.
+ @return the range of the array formula which was just removed. Never null.
+
+
+ @return the shared ArrayRecord identified by (firstRow, firstColumn). never null.
+
+
+
+ Aggregate value records toGether. Things are easier to handle that way.
+
+ @author andy
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Creates a new instance of ValueRecordsAggregate
+
+
+ Sometimes the shared formula flag "seems" to be erroneously Set, in which case there is no
+ call to SharedFormulaRecord.ConvertSharedFormulaRecord and hence the
+ ParsedExpression field of this FormulaRecord will not Get updated.
+ As it turns out, this is not a problem, because in these circumstances, the existing value
+ for ParsedExpression is perfectly OK.
+
+ This method may also be used for Setting breakpoints to help diagnose Issues regarding the
+ abnormally-Set 'shared formula' flags.
+ (see TestValueRecordsAggregate.testSpuriousSharedFormulaFlag()).
+
+ The method currently does nothing but do not delete it without Finding a nice home for this
+ comment.
+
+
+ Tallies a count of the size of the cell records
+ that are attached to the rows in the range specified.
+
+
+ Returns true if the row has cells attached to it
+
+
+ Serializes the cells that are allocated to a certain row range
+
+
+ Groups the sheet protection records for a worksheet.
+
+
+ See OOO excelfileformat.pdf sec 4.18.2 'Sheet Protection in a Workbook
+ (BIFF5-BIFF8)'
+
+ @author Josh Micich
+
+
+ Creates an empty WorksheetProtectionBlock
+
+
+ @return true if the specified Record sid is one belonging to
+ the 'Page Settings Block'.
+
+
+ This method Reads {@link WorksheetProtectionBlock} records from the supplied RecordStream
+ until the first non-WorksheetProtectionBlock record is encountered. As each record is Read,
+ it is incorporated into this WorksheetProtectionBlock.
+
+ As per the OOO documentation, the protection block records can be expected to be written
+ toGether (with no intervening records), but earlier versions of POI (prior to Jun 2009)
+ didn't do this. Workbooks with sheet protection Created by those earlier POI versions
+ seemed to be valid (Excel opens them OK). So PO allows continues to support Reading of files
+ with non continuous worksheet protection blocks.
+
+
+ Note - when POI Writes out this WorksheetProtectionBlock, the records will always be
+ written in one consolidated block (in the standard ordering) regardless of how scattered the
+ records were when they were originally Read.
+
+
+
+ the ProtectRecord. If one is not contained in the sheet, then one is created.
+
+
+
+
+ the PasswordRecord. If one is not Contained in the sheet, then one is Created.
+
+
+
+
+ protect a spreadsheet with a password (not encrypted, just sets protect flags and the password.)
+
+ password to set;Pass null to remove all protection
+ shouldProtectObjects are protected
+ shouldProtectScenarios are protected
+
+
+
+ Creates an ObjectProtect record with protect set to false.
+
+
+
+
+
+ Creates a ScenarioProtect record with protect set to false.
+
+
+
+
+
+ Creates a Password record with password set to 0x0000.
+
+
+
+
+ ARRAY (0x0221)
+
+ Treated in a similar way to SharedFormulaRecord
+
+ @author Josh Micich
+
+
+
+ DOPER Structure for AutoFilter record
+
+ author: Tony Qu
+
+
+
+ get or set the RK record
+
+
+
+
+ Gets or sets Length of the string (the string is stored in the rgch field that follows the DOPER structures)
+
+
+
+
+ Whether the bBoolErr field contains a Boolean value
+
+
+
+
+ Whether the bBoolErr field contains a Error value
+
+
+
+
+ Get or sets the boolean value
+
+
+
+
+ Get or sets the boolean value
+
+
+
+ Title: Backup Record
+ Description: bool specifying whether
+ the GUI should store a backup of the file.
+ REFERENCE: PG 287 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a BackupRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the backup flag
+
+ @return short 0/1 (off/on)
+
+
+ Read an unsigned short from the stream without decrypting
+
+
+ Read an unsigned short from the stream without decrypting
+
+
+ Title: Blank cell record
+ Description: Represents a column in a row with no value but with styling.
+ REFERENCE: PG 287 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Creates a new instance of BlankRecord
+
+
+ Constructs a BlankRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the row this cell occurs on
+
+ @return the row
+
+
+ Get the column this cell defines within the row
+
+ @return the column
+
+
+ Set the index of the extended format record to style this cell with
+
+ @param xf - the 0-based index of the extended format
+ @see org.apache.poi.hssf.record.ExtendedFormatRecord
+
+
+ return the non static version of the id for this record.
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ @return byte array containing instance data
+
+
+ Title: Beginning Of File
+ Description: Somewhat of a misnomer, its used for the beginning of a Set of
+ records that have a particular pupose or subject.
+ Used in sheets and workbooks.
+ REFERENCE: PG 289 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ for BIFF8 files the BOF is 0x809. For earlier versions see
+ {@link #biff2_sid} {@link #biff3_sid} {@link #biff4_sid}
+ {@link #biff5_sid}
+
+
+ suggested default (0x06 - BIFF8)
+
+
+ suggested default 0x10d3
+
+
+ suggested default 0x07CC (1996)
+
+
+ suggested default for a normal sheet (0x41)
+
+
+ Constructs an empty BOFRecord with no fields Set.
+
+
+ Constructs a BOFRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ Version number - for BIFF8 should be 0x06
+ @see #VERSION
+ @param version version to be Set
+
+
+ Set the history bit mask (not very useful)
+ @see #HISTORY_MASK
+ @param bitmask bitmask to Set for the history
+
+
+ Set the minimum version required to Read this file
+
+ @see #VERSION
+ @param version version to Set
+
+
+ type of object this marks
+ @see #TYPE_WORKBOOK
+ @see #TYPE_VB_MODULE
+ @see #TYPE_WORKSHEET
+ @see #TYPE_CHART
+ @see #TYPE_EXCEL_4_MACRO
+ @see #TYPE_WORKSPACE_FILE
+ @return short type of object
+
+
+ Get the build that wrote this file
+ @see #BUILD
+ @return short build number of the generator of this file
+
+
+ Year of the build that wrote this file
+ @see #BUILD_YEAR
+ @return short build year of the generator of this file
+
+
+ Title: Save External Links record (BookBool)
+ Description: Contains a flag specifying whether the Gui should save externally
+ linked values from other workbooks.
+ REFERENCE: PG 289 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a BookBoolRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the save ext links flag
+
+ @return short 0/1 (off/on)
+
+
+ Creates new BoolErrRecord.
+ REFERENCE: PG ??? Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Michael P. Harhen
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ If true, this record represents an error cell value, otherwise this record represents a boolean cell value
+
+
+ Creates new BoolErrRecord
+
+
+ Constructs a BoolErr record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Set the bool value for the cell
+
+ @param value representing the bool value
+
+
+ set the error value for the cell. See {@link FormulaError} for valid codes.
+
+ @param value error representing the error value
+ this value can only be 0,7,15,23,29,36 or 42
+ see bugzilla bug 16560 for an explanation
+
+
+ Set the error value for the cell
+
+ @param value error representing the error value
+ this value can only be 0,7,15,23,29,36 or 42
+ see bugzilla bug 16560 for an explanation
+
+
+ Get the value for the cell
+
+ @return bool representing the bool value
+
+
+ Get the error value for the cell
+
+ @return byte representing the error value
+
+
+ Indicates whether the call holds a boolean value
+
+ @return boolean true if the cell holds a boolean value
+
+
+ Indicates whether the call holds an error value
+
+ @return bool true if the cell holds an error value
+
+
+ Record for the bottom margin.
+ NOTE: This source was automatically generated.
+
+ @author Shawn Laubach (slaubach at apache dot org)
+
+
+ Constructs a BottomMargin record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the margin field for the BottomMargin record.
+
+
+ Title: Bound Sheet Record (aka BundleSheet)
+ Description: Defines a sheet within a workbook. Basically stores the sheetname
+ and tells where the Beginning of file record Is within the HSSF
+ file.
+ REFERENCE: PG 291 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Sergei Kozello (sergeikozello at mail.ru)
+
+
+ Constructs a BoundSheetRecord and Sets its fields appropriately
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the offset in bytes of the Beginning of File Marker within the HSSF Stream part of the POIFS file
+
+ @return offset in bytes
+
+
+ Is the sheet very hidden? Different from (normal) hidden
+
+
+ Get the sheetname for this sheet. (this appears in the tabs at the bottom)
+ @return sheetname the name of the sheet
+
+
+ Converts a List of {@link BoundSheetRecord}s to an array and sorts by the position of their
+ BOFs.
+
+
+ Title: Calc Count Record
+ Description: Specifies the maximum times the gui should perform a formula
+ recalculation. For instance: in the case a formula includes
+ cells that are themselves a result of a formula and a value
+ Changes. This Is essentially a failsafe against an infinate
+ loop in the event the formulas are not independant.
+ REFERENCE: PG 292 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+ @see org.apache.poi.hssf.record.CalcModeRecord
+
+
+ Constructs a CalcCountRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+
+ Get the number of iterations to perform
+ @return iterations
+
+
+ Title: Calc Mode Record
+ Description: Tells the gui whether to calculate formulas
+ automatically, manually or automatically
+ except for tables.
+ REFERENCE: PG 292 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+ @see org.apache.poi.hssf.record.CalcCountRecord
+
+
+ manually calculate formulas (0)
+
+
+ automatically calculate formulas (1)
+
+
+ automatically calculate formulas except for tables (-1)
+
+
+ Constructs a CalcModeRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ Set the calc mode flag for formulas
+
+ @see #MANUAL
+ @see #AUTOMATIC
+ @see #AUTOMATIC_EXCEPT_TABLES
+
+ @param calcmode one of the three flags above
+
+
+ Get the calc mode flag for formulas
+
+ @see #MANUAL
+ @see #AUTOMATIC
+ @see #AUTOMATIC_EXCEPT_TABLES
+
+ @return calcmode one of the three flags above
+
+
+ get the index to the ExtendedFormat
+
+ @see org.apache.poi.hssf.record.ExtendedFormatRecord
+ @return index to the XF record
+
+
+ Append specific debug info (used by {@link #toString()} for the value
+ contained in this record. Trailing new-line should not be Appended
+ (superclass does that).
+
+
+ Gets the debug info BIFF record type name (used by {@link #toString()}.
+
+
+ writes out the value data for this cell record
+
+
+ @return the size (in bytes) of the value data for this cell record
+
+
+ The cell value record interface Is implemented by all classes of type Record that
+ contain cell values. It allows the containing sheet to move through them and Compare
+ them.
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+ @see org.apache.poi.hssf.model.Sheet
+ @see org.apache.poi.hssf.record.Record
+ @see org.apache.poi.hssf.record.RecordFactory
+
+
+ Get the row this cell occurs on
+
+ @return the row
+
+
+ Get the column this cell defines within the row
+
+ @return the column
+
+
+ Conditional Formatting Header v12 record CFHEADER12 (0x0879),
+ for conditional formattings introduced in Excel 2007 and newer.
+
+
+ Creates new CFHeaderRecord
+
+
+ Parent of Conditional Formatting Header records,
+ {@link CFHeaderRecord} and {@link CFHeader12Record}.
+
+
+ Creates new CFHeaderBase
+
+
+ Set cell ranges list to a single cell range and
+ modify the enclosing cell range accordingly.
+ @param cellRanges - list of CellRange objects
+
+
+ Conditional Formatting Header record CFHEADER (0x01B0).
+ Used to describe a {@link CFRuleRecord}.
+ @see CFHeader12Record
+
+
+ Creates new CFHeaderRecord
+
+
+
+ Creates new CFRuleRecord
+
+
+ Creates a new comparison operation rule
+
+
+ Creates a new comparison operation rule
+
+
+ Creates a new comparison operation rule
+
+
+
+ Creates a new Data Bar formatting
+
+
+
+
+
+
+
+ Creates a new Icon Set / Multi-State formatting
+
+
+
+
+
+
+
+ Creates a new Color Scale / Color Gradient formatting
+
+
+
+
+
+ Get the stack of the scale expression as a list
+
+ @return list of tokens (casts stack to a list and returns it!)
+ this method can return null is we are unable to create Ptgs from
+ existing excel file
+ callers should check for null!
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ @param out the stream to write to
+
+
+
+ Creates new CFRuleRecord
+
+
+ Get the option flags
+
+ @return bit mask
+
+
+ Get the stack of the 1st expression as a list
+
+ @return list of tokens (casts stack to a list and returns it!)
+ this method can return null is we are unable to create Ptgs from
+ existing excel file
+ callers should check for null!
+
+
+ Get the stack of the 2nd expression as a list
+
+ @return array of {@link Ptg}s, possibly null
+
+
+ @param formula must not be null
+ @return encoded size of the formula tokens (does not include 2 bytes for ushort length)
+
+
+
+
+ Creates new CFRuleRecord
+
+
+ Creates a new comparison operation rule
+
+
+ Creates a new comparison operation rule
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ @param out the stream to write to
+
+
+ Border Formatting Block of the Conditional Formatting Rule Record.
+
+ @author Dmitriy Kumshayev
+
+
+ Creates new FontFormatting
+
+
+
+ Get the type of border to use for the left border of the cell
+
+
+
+
+ Get the type of border to use for the right border of the cell
+
+
+
+
+ Get the type of border to use for the top border of the cell
+
+
+
+
+ Get the type of border to use for the bottom border of the cell
+
+
+
+
+ Get the type of border to use for the diagonal border of the cell
+
+
+
+
+ Get the color to use for the left border
+
+
+
+
+ Get the color to use for the right border
+
+
+
+
+ Get the color to use for the top border
+
+
+
+
+ Get the color to use for the bottom border
+
+
+
+
+ Get the color to use for the diagonal border
+
+
+
+
+ true if forward diagonal is on
+
+
+
+
+ true if backward diagonal Is on
+
+
+
+ Color Gradient / Color Scale Conditional Formatting Rule Record.
+ (Called Color Gradient in the file format docs, but more commonly
+ Color Scale in the UI)
+
+
+ Color Gradient / Color Scale specific Threshold / value (CFVO),
+ for Changes in Conditional Formatting
+
+
+ Creates new Color Gradient Threshold
+
+
+ Data Bar Conditional Formatting Rule Record.
+
+
+ Data Bar specific Threshold / value (CFVO),
+ for Changes in Conditional Formatting
+
+
+ Creates new Data Bar Threshold
+
+
+ Font Formatting Block of the Conditional Formatting Rule Record.
+
+ @author Dmitriy Kumshayev
+
+
+ Normal boldness (not bold)
+
+
+ Bold boldness (bold)
+
+
+ Creates new FontFormatting
+
+
+ Gets the height of the font in 1/20th point Units
+
+ @return fontheight (in points/20); or -1 if not modified
+
+
+ Get whether the font Is to be italics or not
+
+ @return italics - whether the font Is italics or not
+ @see #GetAttributes()
+
+
+ Get whether the font Is to be stricken out or not
+
+ @return strike - whether the font Is stricken out or not
+ @see #GetAttributes()
+
+
+
+ Get or set the font weight for this font (100-1000dec or 0x64-0x3e8).
+ Default Is 0x190 for normal and 0x2bc for bold
+
+
+
+
+ Get or set whether the font weight is set to bold or not
+
+
+
+ Get the type of base or subscript for the font
+
+ @return base or subscript option
+ @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_NONE
+ @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUPER
+ @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUB
+
+
+ Get the type of Underlining for the font
+
+ @return font Underlining type
+
+
+ Icon / Multi-State Conditional Formatting Rule Record.
+
+
+ Icon / Multi-State specific Threshold / value (CFVO),
+ for Changes in Conditional Formatting
+
+
+ Cell values that are equal to the threshold value do not pass the threshold
+
+
+ Cell values that are equal to the threshold value pass the threshold.
+
+
+ Creates new Ico Multi-State Threshold
+
+
+ Pattern Formatting Block of the Conditional Formatting Rule Record.
+
+ @author Dmitriy Kumshayev
+
+
+ Creates new FontFormatting
+
+
+ Get the Fill pattern
+ @return Fill pattern
+
+
+ Get the background Fill color
+ @see org.apache.poi.hssf.usermodel.HSSFPalette#GetColor(short)
+ @return Fill color
+
+
+ Get the foreground Fill color
+ @see org.apache.poi.hssf.usermodel.HSSFPalette#GetColor(short)
+ @return Fill color
+
+
+ Threshold / value (CFVO) for Changes in Conditional Formatting
+
+
+ Creates new Threshold
+
+
+
+ The AlRuns record specifies Rich Text Formatting within chart
+ titles (section 2.2.3.3), trendline (section 2.2.3.12), and
+ data labels (section 2.2.3.11).
+
+
+
+ * The area format record is used to define the colours and patterns for an area.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a AreaFormat record and s its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ the foreground color field for the AreaFormat record.
+
+
+ the background color field for the AreaFormat record.
+
+
+ the pattern field for the AreaFormat record.
+
+
+ the format flags field for the AreaFormat record.
+
+
+ the forecolor index field for the AreaFormat record.
+
+
+ the backcolor index field for the AreaFormat record.
+
+
+ automatic formatting
+ @return the automatic field value.
+
+
+ swap foreground and background colours when data is negative
+ @return the invert field value.
+
+
+ * The area record is used to define a area chart.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Area record and s its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ the format flags field for the Area record.
+
+
+ series is stacked
+ @return the stacked field value.
+
+
+ results Displayed as percentages
+ @return the Display as percentage field value.
+
+
+ Display a shadow for the chart
+ @return the shadow field value.
+
+
+ * The series label record defines the type of label associated with the data format record.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a SeriesLabels record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the format flags field for the SeriesLabels record.
+
+
+ show actual value of the data point
+ @return the show actual field value.
+
+
+ show value as percentage of total (pie charts only)
+ @return the show percent field value.
+
+
+ show category label/value as percentage (pie charts only)
+ @return the label as percentage field value.
+
+
+ show smooth line
+ @return the smoothed line field value.
+
+
+ Display category label
+ @return the show label field value.
+
+
+ ??
+ @return the show bubble sizes field value.
+
+
+
+ The AxcExt record specifies additional extension properties of a date axis (section 2.2.3.6),
+ along with a CatSerRange record (section 2.4.39).
+
+
+
+
+ specifies the interval at which the major tick marks are displayed on the axis (section 2.2.3.6),
+ in the unit defined by duMajor.
+
+
+
+
+ specifies the unit of time to use for catMajor when the axis (section 2.2.3.6) is a date axis (section 2.2.3.6).
+ If fDateAxis is set to 0, MUST be ignored.
+
+
+
+
+ specifies the interval at which the minor tick marks are displayed on the axis (section 2.2.3.6),
+ in a unit defined by duMinor.
+
+
+
+
+ specifies the smallest unit of time used by the axis (section 2.2.3.6).
+
+
+
+
+ specifies at which date, as a date in the date system specified by the Date1904 record (section 2.4.77),
+ in the units defined by duBase, the value axis (section 2.2.3.6) crosses this axis (section 2.2.3.6).
+
+
+
+
+ specifies whether MinimumDate is calculated automatically.
+
+
+
+
+ specifies whether MaximumDate is calculated automatically.
+
+
+
+ * The number of axes used on a chart.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a AxisUsed record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the num axis field for the AxisUsed record.
+
+
+
+ The axis (section 2.2.3.6) line itself.
+
+
+
+
+ The major gridlines along the axis
+
+
+
+
+ The minor gridlines along the axis
+
+
+
+
+ The walls or floor of a 3-D chart
+
+
+
+
+ The AxisLine record specifies which part of the axis (section 2.2.3.6) is
+ specified by the LineFormat record (section 2.4.156) that follows.
+
+ Excel Binary File Format (.xls) Structure Specification
+
+
+
+ Constructs a AxisLineFormat record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+
+
+
+
+
+ The axis options record provides unit information and other various tidbits about the axis.
+
+ @author Andrew C. Oliver(acoliver at apache.org)
+
+
+ Get the minimum category field for the AxisOptions record.
+
+
+ Get the maximum category field for the AxisOptions record.
+
+
+ Get the major unit value field for the AxisOptions record.
+
+
+ Get the major unit field for the AxisOptions record.
+
+
+ Get the minor unit value field for the AxisOptions record.
+
+
+ Get the minor unit field for the AxisOptions record.
+
+
+ Get the base unit field for the AxisOptions record.
+
+
+ Get the crossing point field for the AxisOptions record.
+
+
+ Get the options field for the AxisOptions record.
+
+
+ use the default minimum category
+ @return the default minimum field value.
+
+
+ use the default maximum category
+ @return the default maximum field value.
+
+
+ use the default major unit
+ @return the default major field value.
+
+
+ use the default minor unit
+ @return the default minor unit field value.
+
+
+ Sets the isDate field value.
+ this is a date axis
+
+
+ this is a date axis
+ @return the isDate field value.
+
+
+ use the default base unit
+ @return the default base field value.
+
+
+ use the default crossing point
+ @return the default cross field value.
+
+
+ use default date Setttings for this axis
+ @return the default date Settings field value.
+
+
+ * The axis size and location
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a AxisParent record and s its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ the axis type field for the AxisParent record.
+
+ @return One of
+ AXIS_TYPE_MAIN
+ AXIS_TYPE_SECONDARY
+
+
+ the x field for the AxisParent record.
+
+
+ the y field for the AxisParent record.
+
+
+ the width field for the AxisParent record.
+
+
+ the height field for the AxisParent record.
+
+
+ * The axis record defines the type of an axis.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Axis record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the axis type field for the Axis record.
+
+ @return One of
+ AXIS_TYPE_CATEGORY_OR_X_AXIS
+ AXIS_TYPE_VALUE_AXIS
+ AXIS_TYPE_SERIES_AXIS
+
+
+ Get the reserved1 field for the Axis record.
+
+
+ Get the reserved2 field for the Axis record.
+
+
+ Get the reserved3 field for the Axis record.
+
+
+ Get the reserved4 field for the Axis record.
+
+
+ * The number of axes used on a chart.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a AxisUsed record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the num axis field for the AxisUsed record.
+
+
+ * The bar record is used to define a bar chart.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Bar record and s its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ the bar space field for the Bar record.
+
+
+ the category space field for the Bar record.
+
+
+ the format flags field for the Bar record.
+
+
+ true to Display horizontal bar charts, false for vertical
+ @return the horizontal field value.
+
+
+ stack Displayed values
+ @return the stacked field value.
+
+
+ Display chart values as a percentage
+ @return the Display as percentage field value.
+
+
+ Display a shadow for the chart
+ @return the shadow field value.
+
+
+ The begin record defines the start of a block of records for a (grpahing
+ data object. This record is matched with a corresponding EndRecord.
+
+ @see EndRecord
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a BeginRecord record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+
+ The BopPopCustom record specifies which data points in the series are contained
+ in the secondary bar/pie instead of the primary pie. MUST follow a BopPop record
+ that has its split field set to Custom (0x0003).
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The BopPop record specifies that the chart group is a bar of pie chart group or
+ a pie of pie chart group and specifies the chart group attributes.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The BRAI record specifies a reference to data in a sheet (1) that is used by a part of a series,
+ legend entry, trendline or error bars.
+
+
+
+
+ A ChartParsedFormula structure that specifies the formula (section 2.2.2) that specifies the reference.
+
+
+
+ Constructs a LinkedData record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+
+ specifies the part of the series, trendline, or error bars the referenced data specifies.
+
+
+
+
+ specifies the number format to use for the data.
+
+
+
+ This record refers to a category or series axis and is used to specify label/tickmark frequency.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Get the crossing point field for the CategorySeriesAxis record.
+
+
+ Get the label frequency field for the CategorySeriesAxis record.
+
+
+ Get the tick mark frequency field for the CategorySeriesAxis record.
+
+
+ Get the options field for the CategorySeriesAxis record.
+
+
+ Set true to indicate axis crosses between categories and false to cross axis midway
+ @return the value axis crossing field value.
+
+
+ axis crosses at the far right
+ @return the crosses far right field value.
+
+
+ categories are displayed in reverse order
+ @return the reversed field value.
+
+
+ CATLAB - Category Labels (0x0856)
+
+ @author Patrick Cheng
+
+
+
+ specifies the properties of a category (3) axis, a date axis, or a series axis.
+
+
+
+ Constructs a CategorySeriesAxis record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+
+ specifies where the value axis crosses this axis, based on the following table.
+ If fMaxCross is set to 1, the value this field MUST be ignored.
+ Category (3) axis This field specifies the category (3) at which the value axis crosses.
+ For example, if this field is 2, the value axis crosses this axis at the second category (3)
+ on this axis. MUST be greater than or equal to 1 and less than or equal to 31999.
+ Series axis MUST be 0.
+ Date axis catCross MUST be equal to the value given by the following formula:
+ catCross = catCrossDate ¨C catMin + 1
+ Where catCrossDate is the catCrossDate field of the AxcExt record
+ and catMin is the catMin field of the AxcExt record.
+
+
+
+
+ specifies the interval between axis labels on this axis. MUST be greater than or equal to 1 and
+ less than or equal to 31999. MUST be ignored for a date axis.
+
+
+
+
+ specifies the interval at which major tick marks and minor tick marks are displayed on the axis.
+ Major tick marks and minor tick marks that would have been visible are hidden unless they are
+ located at a multiple of this field.
+
+
+
+
+ specifies whether the value axis crosses this axis between major tick marks. MUST be a value from to following table:
+ 0 The value axis crosses this axis on a major tick mark.
+ 1 The value axis crosses this axis between major tick marks.
+
+
+
+
+ specifies whether the value axis crosses this axis at the last category (3), the last series,
+ or the maximum date. MUST be a value from the following table:
+ 0 The value axis crosses this axis at the value specified by catCross.
+ 1 The value axis crosses this axis at the last category (3), the last series, or the maximum date.
+
+
+
+
+ specifies whether the axis is displayed in reverse order. MUST be a value from the following table:
+ 0 The axis is displayed in order.
+ 1 The axis is display in reverse order.
+
+
+
+
+ the shape of the base of the data points in a bar or column chart group.
+ MUST be a value from the following table
+ 0x00 The base of the data point is a rectangle.
+ 0x01 The base of the data point is an ellipse.
+
+
+
+
+ how the data points in a bar or column chart group taper from base to tip.
+ MUST be a value from the following
+ 0x00 The data points of the bar or column chart group do not taper.
+ The shape at the maximum value of the data point is the same as the shape at the base.:
+ 0x01 The data points of the bar or column chart group taper to a point at the maximum value of each data point.
+ 0x02 The data points of the bar or column chart group taper towards a projected point at the position of
+ the maximum value of all of the data points in the chart group, but are clipped at the value of each data point.
+
+
+
+
+ The Chart3d record specifies that the plot area of the chart group is rendered in a 3-D scene
+ and also specifies the attributes of the 3-D plot area. The preceding chart group type MUST be
+ of type bar, pie, line, area, or surface.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ A signed integer that specifies the clockwise rotation, in degrees, of the 3-D plot area
+ around a vertical line through the center of the 3-D plot area. MUST be greater than or
+ equal to 0 and MUST be less than or equal to 360.
+
+
+
+
+ A signed integer that specifies the rotation, in degrees, of the 3-D plot area around
+ a horizontal line through the center of the 3-D plot area.MUST be greater than or equal
+ to -90 and MUST be less than or equal to 90.
+
+
+
+
+ A signed integer that specifies the field of view angle for the 3-D plot area.
+ MUST be greater than or equal to zero and less than 200.
+
+
+
+
+ If fNotPieChart is 0, then this is an unsigned integer that specifies the thickness of the pie for a pie chart group.
+ If fNotPieChart is 1, then this is a signed integer that specifies the height of the 3-D plot area as a percentage of its width.
+
+
+
+
+ A signed integer that specifies the depth of the 3-D plot area as a percentage of its width.
+ MUST be greater than or equal to 1 and less than or equal to 2000.
+
+
+
+
+ An unsigned integer that specifies the width of the gap between the series and the front and
+ back edges of the 3-D plot area as a percentage of the data point depth divided by 2.
+ If fCluster is not 1 and chart group type is not a bar then pcGap also specifies distance
+ between adjacent series as a percentage of the data point depth. MUST be less than or equal to 500.
+
+
+
+
+ A bit that specifies whether the 3-D plot area is rendered with a vanishing point.
+ If fNotPieChart is 0 the value MUST be 0. If fNotPieChart is 1 then the value
+ MUST be a value from the following
+ true Perspective vanishing point applied based on value of pcDist.
+ false No vanishing point applied.
+
+
+
+
+ specifies whether data points are clustered together in a bar chart group.
+ If chart group type is not bar or pie, value MUST be ignored. If chart group type is pie,
+ value MUST be 0. If chart group type is bar, then the value MUST be a value from the following
+ true Data points are clustered.
+ false Data points are not clustered.
+
+
+
+
+ A bit that specifies whether the height of the 3-D plot area is automatically determined.
+ If fNotPieChart is 0 then this MUST be 0. If fNotPieChart is 1 then the value MUST be a value from the following table:
+ false The value of pcHeight is used to determine the height of the 3-D plot area
+ true The height of the 3-D plot area is automatically determined
+
+
+
+
+ A bit that specifies whether the chart group type is pie. MUST be a value from the following :
+ false Chart group type MUST be pie.
+ true Chart group type MUST not be pie.
+
+
+
+
+ Whether the walls are rendered in 2-D. If fPerspective is 1 then this MUST be ignored.
+ If the chart group type is not bar, area or pie this MUST be ignored.
+ If the chart group is of type bar and fCluster is 0, then this MUST be ignored.
+ If the chart group type is pie this MUST be 0 and MUST be ignored.
+ If the chart group type is bar or area, then the value MUST be a value from the following
+ false Chart walls and floor are rendered in 3D.
+ true Chart walls are rendered in 2D and the chart floor is not rendered.
+
+
+
+ ENDBLOCK - Chart Future Record Type End Block (0x0853)
+
+ @author Patrick Cheng
+
+
+ ENDOBJECT - Chart Future Record Type End Object (0x0855)
+
+ @author Patrick Cheng
+
+
+
+ The ChartFrtInfo record specifies the versions of the application that originally created and last saved the file.
+
+
+
+ * The chart record is used to define the location and size of a chart.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Chart record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the x field for the Chart record.
+
+
+ Get the y field for the Chart record.
+
+
+ Get the width field for the Chart record.
+
+
+ Get the height field for the Chart record.
+
+
+ STARTBLOCK - Chart Future Record Type Start Block (0x0852)
+
+ @author Patrick Cheng
+
+
+ STARTOBJECT - Chart Future Record Type Start Object (0x0854)
+
+ @author Patrick Cheng
+
+
+ Describes the formatting runs associated with a chart title.
+
+
+
+ The CrtLayout12A record specifies layout information for a plot area.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ specifies the type of plot area for the layout target.
+ false Outer plot area - The bounding rectangle that includes the axis labels, axis titles, data table (2) and plot area of the chart.
+ true Inner plot area – The rectangle bounded by the chart axes.
+
+
+
+
+ specifies the checksum
+
+
+
+
+ specifies the horizontal offset of the plot area’s upper-left corner, relative to the upper-left corner of the chart area
+
+
+
+
+ specifies the vertical offset of the plot area’s upper-left corner, relative to the upper-left corner of the chart area
+
+
+
+
+ specifies the width of the plot area
+
+
+
+
+ specifies the height of the plot area
+
+
+
+
+ A CrtLayout12Mode structure that specifies the meaning of x.
+
+
+
+
+ A CrtLayout12Mode structure that specifies the meaning of y.
+
+
+
+
+ A CrtLayout12Mode structure that specifies the meaning of dx.
+
+
+
+
+ A CrtLayout12Mode structure that specifies the meaning of dy.
+
+
+
+
+ An Xnum (section 2.5.342) value that specifies a horizontal offset. The meaning is determined by wXMode.
+
+
+
+
+ An Xnum value that specifies a vertical offset. The meaning is determined by wYMode.
+
+
+
+
+ An Xnum value that specifies a width or an horizontal offset. The meaning is determined by wWidthMode.
+
+
+
+
+ An Xnum value that specifies a height or an vertical offset. The meaning is determined by wHeightMode.
+
+
+
+
+ The CrtLayout12Mode specifies a layout mode. Each layout mode specifies a different
+ meaning of the x, y, dx, and dy fields of CrtLayout12 and CrtLayout12A.
+
+
+
+
+ Position and dimension (2) are determined by the application. x, y, dx and dy MUST be ignored.
+
+
+
+
+ x and y specify the offset of the top left corner, relative to its default position,
+ as a fraction of the chart area. MUST be greater than or equal to -1.0 and MUST be
+ less than or equal to 1.0. dx and dy specify the width and height, as a fraction of
+ the chart area, MUST be greater than or equal to 0.0, and MUST be less than or equal to 1.0.
+
+
+
+
+ x and y specify the offset of the upper-left corner; dx and dy specify the offset of the bottom-right corner.
+ x, y, dx and dy are specified relative to the upper-left corner of the chart area as a fraction of the chart area.
+ x, y, dx and dy MUST be greater than or equal to 0.0, and MUST be less than or equal to 1.0.
+
+
+
+
+ The CrtLayout12 record specifies the layout information for attached label, when contained
+ in the sequence of records that conforms to the ATTACHEDLABEL rule,
+ or legend, when contained in the sequence of records that conforms to the LD rule.
+
+
+
+
+ automatic layout type of the legend.
+ MUST be ignored when this record is in the sequence of records that conforms to the ATTACHEDLABEL rule.
+ MUST be a value from the following table:
+ 0x0 Align to the bottom
+ 0x1 Align to top right corner
+ 0x2 Align to the top
+ 0x3 Align to the right
+ 0x4 Align to the left
+
+
+
+
+ specifies the checksum of the values in the order as follows,
+
+
+
+
+ A CrtLayout12Mode structure that specifies the meaning of x.
+
+
+
+
+ A CrtLayout12Mode structure that specifies the meaning of y.
+
+
+
+
+ A CrtLayout12Mode structure that specifies the meaning of dx.
+
+
+
+
+ A CrtLayout12Mode structure that specifies the meaning of dy.
+
+
+
+
+ An Xnum (section 2.5.342) value that specifies a horizontal offset. The meaning is determined by wXMode.
+
+
+
+
+ An Xnum value that specifies a vertical offset. The meaning is determined by wYMode.
+
+
+
+
+ An Xnum value that specifies a width or an horizontal offset. The meaning is determined by wWidthMode.
+
+
+
+
+ An Xnum value that specifies a height or an vertical offset. The meaning is determined by wHeightMode.
+
+
+
+
+ The CrtLine record specifies the presence of drop lines, high-low lines, series lines
+ or leader lines on the chart group. This record is followed by a LineFormat record
+ which specifies the format of the lines.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The CrtLink record is written but unused.
+
+
+
+
+ The CrtMlFrtContinue record specifies additional data for a CrtMlFrt record, as specified in the CrtMlFrt record.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The CrtMlFrt record specifies additional properties for chart elements, as specified by
+ the Chart Sheet Substream ABNF. These properties complement the record to which they
+ correspond, and are stored as a structure chain defined in XmlTkChain. An application
+ can ignore this record without loss of functionality, except for the additional properties.
+ If this record is longer than 8224 bytes, it MUST be split into several records. The first
+ section of the data appears in this record and subsequent sections appear in one or more
+ CrtMlFrtContinue records that follow this record.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+ * The data format record is used to index into a series.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a DataFormat record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the point number field for the DataFormat record.
+
+
+ Get the series index field for the DataFormat record.
+
+
+ Get the series number field for the DataFormat record.
+
+
+ Get the format flags field for the DataFormat record.
+
+
+ Set true to use excel 4 colors.
+ @return the use excel 4 colors field value.
+
+
+ DATALABEXT - Chart Data Label Extension (0x086A)
+
+ @author Patrick Cheng
+
+
+
+ The DataLabExtContents record specifies the contents of an extended data label.
+
+
+
+ DATALABEXT - Chart Data Label Extension (0x086A)
+
+ @author Patrick Cheng
+
+
+ * The dat record is used to store options for the chart.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Dat record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the options field for the Dat record.
+
+
+ Sets the horizontal border field value.
+ has a horizontal border
+
+
+ has a horizontal border
+ @return the horizontal border field value.
+
+
+ Sets the vertical border field value.
+ has vertical border
+
+
+ has vertical border
+ @return the vertical border field value.
+
+
+ Sets the border field value.
+ data table has a border
+
+
+ data table has a border
+ @return the border field value.
+
+
+ Sets the show series key field value.
+ shows the series key
+
+
+ shows the series key
+ @return the show series key field value.
+
+
+ The default data label text properties record identifies the text characteristics of the preceding text record.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Get the category data type field for the DefaultDataLabelTextProperties record.
+
+ @return One of
+ CATEGORY_DATA_TYPE_SHOW_LABELS_CHARACTERISTIC
+ CATEGORY_DATA_TYPE_VALUE_AND_PERCENTAGE_CHARACTERISTIC
+ CATEGORY_DATA_TYPE_ALL_TEXT_CHARACTERISTIC
+
+
+
+ specifies the text elements that are formatted using the position and appearance information
+ specified by the Text record immediately following this record.
+
+
+
+
+ Format all Text records in the chart group where fShowPercent is equal to 0 or fShowValue is equal to 0.
+
+
+
+
+ Format all Text records in the chart group where fShowPercent is equal to 1 or fShowValue is equal to 1.
+
+
+
+
+ Format all Text records in the chart where the value of fScaled of the associated FontInfo structure is equal to 0.
+
+
+
+
+ Format all Text records in the chart where the value of fScaled of the associated FontInfo structure is equal to 1.
+
+
+
+
+ specifies the text elements that are formatted using the information specified by
+ the Text record immediately following this record.
+
+
+
+ Constructs a DefaultDataLabelTextProperties record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+
+ specifies the text elements that are formatted using the position and appearance
+ information specified by the Text record immediately following this record.
+
+
+
+
+ The DropBar record specifies the attributes of the up bars or the down bars between multiple
+ series of a line chart group and specifies the beginning of a collection of records as
+ defined by the Chart Sheet Substream ABNF. The first of these collections in the line chart
+ group specifies the attributes of the up bars. The second specifies the attributes of the
+ down bars. If this record exists, then the chart group type MUST be line and the field cSer
+ in the record SeriesList MUST be greater than 1.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+ ENDBLOCK - Chart Future Record Type End Block (0x0853)
+
+ @author Patrick Cheng
+
+
+ The end record defines the end of a block of records for a (Graphing)
+ data object. This record is matched with a corresponding BeginRecord.
+
+ @see BeginRecord
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a EndRecord record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+
+ The Fbi2 record specifies the font information at the time the scalable font is added to the chart.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The Fbi record specifies the font information at the time the scalable font is added to the chart.
+
+
+
+ Constructs a FontBasis record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the x Basis field for the FontBasis record.
+
+
+ Get the y Basis field for the FontBasis record.
+
+
+ Get the height basis field for the FontBasis record.
+
+
+ Get the scale field for the FontBasis record.
+
+
+ Get the index to font table field for the FontBasis record.
+
+
+ * The font basis record stores various font metrics.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a FontBasis record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the x Basis field for the FontBasis record.
+
+
+ Get the y Basis field for the FontBasis record.
+
+
+ Get the height basis field for the FontBasis record.
+
+
+ Get the scale field for the FontBasis record.
+
+
+ Get the index to font table field for the FontBasis record.
+
+
+
+ The FontX record specifies the font for a given text element.
+ The Font record referenced by iFont can exist in this chart sheet substream or the workbook.
+
+
+
+ Constructs a FontIndex record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+
+ specifies the font to use for subsequent records.
+ This font can either be the default font of the chart, part of the collection of Font records following
+ the FrtFontList record, or part of the collection of Font records in the globals substream.
+ If iFont is 0x0000, this record specifies the default font of the chart.
+ If iFont is less than or equal to the number of Font records in the globals substream,
+ iFont is a one-based index to a Font record in the globals substream.
+ Otherwise iFont is a one-based index into the collection of Font records in this chart sheet substream
+ where the index is equal to iFont ¨C n, where n is the number of Font records in the globals substream.
+
+
+
+ * The frame record indicates whether there is a border around the Displayed text of a chart.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Frame record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the border type field for the Frame record.
+
+ @return One of
+ BORDER_TYPE_REGULAR
+ BORDER_TYPE_SHADOW
+
+
+ Get the options field for the Frame record.
+
+
+ excel calculates the size automatically if true
+ @return the auto size field value.
+
+
+ excel calculates the position automatically
+ @return the auto position field value.
+
+
+
+ The FrtFontList record specifies font information used on the chart and specifies the
+ beginning of a collection of Font records as defined by the Chart Sheet Substream ABNF.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ specifies the properties of a fill pattern for parts of a chart.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The IFmtRecord record specifies the number format to use for the text on an axis.
+
+
+
+ Constructs a NumberFormatIndex record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the format index field for the NumberFormatIndex record.
+
+
+
+ The LegendException record specifies information about a legend entry which was
+ changed from the default legend entry settings, and specifies the beginning of
+ a collection of records as defined by the Chart Sheet Substream ABNF.
+ The collection of records specifies legend entry formatting. On a chart where
+ the legend contains legend entries for the series and trendlines, as defined
+ in the legend overview, there MUST be zero instances or one instance of this
+ record in the sequence of records that conform to the SERIESFORMAT rule.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+ * Defines a legend for a chart.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Andrew C. Oliver (acoliver at apache.org)
+
+
+ Constructs a Legend record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the x axis upper left field for the Legend record.
+
+
+ Get the y axis upper left field for the Legend record.
+
+
+ Get the x size field for the Legend record.
+
+
+ Get the y size field for the Legend record.
+
+
+ Get the type field for the Legend record.
+
+ @return One of
+ TYPE_BOTTOM
+ TYPE_CORNER
+ TYPE_TOP
+ TYPE_RIGHT
+ TYPE_LEFT
+ TYPE_UNDOCKED
+
+
+ Get the spacing field for the Legend record.
+
+ @return One of
+ SPACING_CLOSE
+ SPACING_MEDIUM
+ SPACING_OPEN
+
+
+ Get the options field for the Legend record.
+
+
+ automatic positioning (1=docked)
+ @return the auto position field value.
+
+
+ excel 5 only (true)
+ @return the auto series field value.
+
+
+ position of legend on the x axis is automatic
+ @return the auto x positioning field value.
+
+
+ position of legend on the y axis is automatic
+ @return the auto y positioning field value.
+
+
+ vertical or horizontal legend (1 or 0 respectively). Always 0 if not automatic.
+ @return the vertical field value.
+
+
+ 1 if chart Contains data table
+ @return the data table field value.
+
+
+ * Describes a line format record. The line format record controls how a line on a chart appears.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a LineFormat record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the line color field for the LineFormat record.
+
+
+ Get the line pattern field for the LineFormat record.
+
+ @return One of
+ LINE_PATTERN_SOLID
+ LINE_PATTERN_DASH
+ LINE_PATTERN_DOT
+ LINE_PATTERN_DASH_DOT
+ LINE_PATTERN_DASH_DOT_DOT
+ LINE_PATTERN_NONE
+ LINE_PATTERN_DARK_GRAY_PATTERN
+ LINE_PATTERN_MEDIUM_GRAY_PATTERN
+ LINE_PATTERN_LIGHT_GRAY_PATTERN
+
+
+ Get the weight field for the LineFormat record.
+ specifies the thickness of the line.
+ @return One of
+ WEIGHT_HAIRLINE
+ WEIGHT_NARROW
+ WEIGHT_MEDIUM
+ WEIGHT_WIDE
+
+
+ Get the format field for the LineFormat record.
+
+
+ Get the colour palette index field for the LineFormat record.
+
+
+ automatic format
+ @return the auto field value.
+
+
+ draw tick marks
+ @return the draw ticks field value.
+
+
+ book marks this as reserved = 0 but it seems to do something
+ @return the Unknown field value.
+
+
+ Describes a linked data record. This record refers to the series data or text.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Get the link type field for the LinkedData record.
+
+ @return One of
+ LINK_TYPE_TITLE_OR_TEXT
+ LINK_TYPE_VALUES
+ LINK_TYPE_CATEGORIES
+
+
+ Get the reference type field for the LinkedData record.
+
+ @return One of
+ REFERENCE_TYPE_DEFAULT_CATEGORIES
+ REFERENCE_TYPE_DIRECT
+ REFERENCE_TYPE_WORKSHEET
+ REFERENCE_TYPE_NOT_USED
+ REFERENCE_TYPE_ERROR_REPORTED
+
+
+ Get the options field for the LinkedData record.
+
+
+ Get the index number fmt record field for the LinkedData record.
+
+
+ Get the formula of link field for the LinkedData record.
+
+
+ true if this object has a custom number format
+ @return the custom number format field value.
+
+
+
+ specifies the color, size, and shape of the associated data markers that appear on line, radar,
+ and scatter chart groups. The associated data markers are specified by the preceding DataFormat record.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ the border color of the data marker.
+
+
+
+
+ the interior color of the data marker.
+
+
+
+
+ the type of data marker.
+
+
+
+
+ whether the data marker is automatically generated.
+ false The data marker is not automatically generated.
+ true The data marker type, size, and color are automatically generated and the values are set accordingly in this record.
+
+
+
+
+ whether to show the data marker interior.
+ false The data marker interior is shown.
+ true The data marker interior is not shown.
+
+
+
+
+ whether to show the data marker border.
+ false The data marker border is shown.
+ true The data marker border is not shown.
+
+
+
+
+ the border color of the data marker.
+
+
+
+
+ the interior color of the data marker.
+
+
+
+
+ specifies the size in twips of the data marker.
+
+
+
+ * The number format index record indexes format table. This applies to an axis.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a NumberFormatIndex record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the format index field for the NumberFormatIndex record.
+
+
+ * Links text to an object on the chart or identifies it as the title.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Andrew C. Oliver (acoliver at apache.org)
+
+
+ Constructs a ObjectLink record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the anchor id field for the ObjectLink record.
+
+ @return One of
+ ANCHOR_ID_CHART_TITLE
+ ANCHOR_ID_Y_AXIS
+ ANCHOR_ID_X_AXIS
+ ANCHOR_ID_SERIES_OR_POINT
+ ANCHOR_ID_Z_AXIS
+
+
+ Get the link 1 field for the ObjectLink record.
+
+
+ Get the link 2 field for the ObjectLink record.
+
+
+
+ The PicF record specifies the layout of a picture that is attached to a picture-filled chart element.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The PieFormat record specifies the distance of a data point or data points in a series from the center of one of the following:
+ The plot area for a doughnut or pie chart group.
+ The primary pie in a pie of pie or bar of pie chart group.
+ The secondary bar/pie of a pie of pie chart group.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ A signed integer that specifies the distance of a data point or data points in a series from the center of one of the following:
+ The plot area for a doughnut or pie chart group.
+ The primary pie in a pie of pie or bar of pie chart group.
+ The secondary bar/pie of a pie of pie chart group.
+
+
+
+
+ The Pie record specifies that the chart group is a pie chart group or
+ a doughnut chart group, and specifies the chart group attributes.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ An unsigned integer that specifies the starting angle of the first data point,
+ clockwise from the top of the circle. MUST be less than or equal to 360.
+
+
+
+
+ An unsigned integer that specifies the size of the center hole in a doughnut chart group
+ as a percentage of the plot area size. MUST be a value from the following table:
+ 0 Pie chart group.
+ 10 to 90 Doughnut chart group.
+
+
+
+
+ A bit that specifies whether one data point or more data points in the chart group have shadows.
+
+
+
+
+ A bit that specifies whether the leader lines to the data labels are shown.
+
+
+
+ * preceeds and identifies a frame as belonging to the plot area.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Andrew C. Oliver (acoliver at apache.org)
+
+
+ Constructs a PlotArea record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ * The plot growth record specifies the scaling factors used when a font is scaled.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a PlotGrowth record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the horizontalScale field for the PlotGrowth record.
+
+
+ Get the verticalScale field for the PlotGrowth record.
+
+
+
+ pecifies positioning mode for position information saved in a Pos record.
+
+
+
+
+ Relative position to the chart, in points.
+
+
+
+
+ Absolute width and height in points. It can only be applied to the mdBotRt field of Pos.
+
+
+
+
+ Owner of Pos determines how to interpret the position data.
+
+
+
+
+ Offset to default position, in 1/1000th of the plot area size.
+
+
+
+
+ Relative position to the chart, in SPRC.
+
+
+
+
+ specifies the size and position for a legend, an attached label, or the plot area, as specified by the primary axis group.
+
+
+
+
+ specifies the positioning mode for the upper-left corner of a legend, an attached label, or the plot area.
+
+
+
+
+ specifies the positioning mode for the lower-right corner of a legend, an attached label, or the plot area
+
+
+
+
+ specifies a position. The meaning is specified in the earlier table showing the valid combinations mdTopLt and mdBotRt by type.
+
+
+
+
+ specifies a width. The meaning is specified in the earlier table showing the valid combinations mdTopLt and mdBotRt by type.
+
+
+
+
+ specifies a position. The meaning is specified in the earlier table showing the valid combinations mdTopLt and mdBotRt by type.
+
+
+
+
+ specifies a height. The meaning is specified in the earlier table showing the valid combinations mdTopLt and mdBotRt by type.
+
+
+
+
+ The RadarArea record specifies that the chart group is a filled radar chart group and specifies the chart group attributes.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The Radar record specifies that the chart group is a radar chart group and specifies the chart group attributes.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The RichTextStream record specifies additional text properties for the text in
+ the entire chart, text in the current legend, text in the current legend entry,
+ or text in the attached label. These text properties are a superset of the
+ properties stored in the Text, Font, FontX, BRAI, and ObjectLink records based
+ on the following table, as specified by the Chart Sheet Substream ABNF. In each
+ case, the associated Font record is specified by the associated FontX record.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The Scatter record specifies that the chart group is a scatter chart group or
+ a bubble chart group, and specifies the chart group attributes.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The SerAuxErrBar record specifies properties of an error bar.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The SerAuxTrend record specifies a trendline.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The SerFmt record specifies properties of the associated data points, data markers,
+ or lines of the series. The associated data points, data markers, or lines of the
+ series are specified by the preceding DataFormat record. If this record is not
+ present in the sequence of records that conforms to the SS rule of the Chart Sheet
+ Substream ABNF, then the properties of the associated data points, data markers,
+ or lines of the series are specified by the default values of the fields of this record.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+ * The series chart Group index record stores the index to the CHARTFORMAT record (0 based).
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a SeriesChartGroupIndex record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the chart Group index field for the SeriesChartGroupIndex record.
+
+
+ * links a series to its position in the series list.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Andrew C. Oliver (acoliver at apache.org)
+
+
+ Constructs a SeriesIndex record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the index field for the SeriesIndex record.
+
+
+ * The series label record defines the type of label associated with the data format record.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a SeriesLabels record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the format flags field for the SeriesLabels record.
+
+
+ show actual value of the data point
+ @return the show actual field value.
+
+
+ show value as percentage of total (pie charts only)
+ @return the show percent field value.
+
+
+ show category label/value as percentage (pie charts only)
+ @return the label as percentage field value.
+
+
+ show smooth line
+ @return the smoothed line field value.
+
+
+ Display category label
+ @return the show label field value.
+
+
+ ??
+ @return the show bubble sizes field value.
+
+
+ * The series list record defines the series Displayed as an overlay to the main chart record.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a SeriesList record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the series numbers field for the SeriesList record.
+
+
+ * The series record describes the overall data for a series.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Series record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the category data type field for the Series record.
+
+ @return One of
+ CATEGORY_DATA_TYPE_DATES
+ CATEGORY_DATA_TYPE_NUMERIC
+ CATEGORY_DATA_TYPE_SEQUENCE
+ CATEGORY_DATA_TYPE_TEXT
+
+
+ Get the values data type field for the Series record.
+
+ @return One of
+ VALUES_DATA_TYPE_DATES
+ VALUES_DATA_TYPE_NUMERIC
+ VALUES_DATA_TYPE_SEQUENCE
+ VALUES_DATA_TYPE_TEXT
+
+
+ Get the num categories field for the Series record.
+
+
+ Get the num values field for the Series record.
+
+
+ Get the bubble series type field for the Series record.
+
+ @return One of
+ BUBBLE_SERIES_TYPE_DATES
+ BUBBLE_SERIES_TYPE_NUMERIC
+ BUBBLE_SERIES_TYPE_SEQUENCE
+ BUBBLE_SERIES_TYPE_TEXT
+
+
+ Get the num bubble values field for the Series record.
+
+
+ * Defines a series name
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Andrew C. Oliver (acoliver at apache.org)
+
+
+ the actual text cannot be longer than 255 characters
+
+
+ Constructs a SeriesText record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the id field for the SeriesText record.
+
+
+ Get the text field for the SeriesText record.
+
+
+ * Indicates the chart-group index for a series. The order probably defines the mapping. So the 0th record probably means the 0th series. The only field in this of course defines which chart Group the 0th series (for instance) would map to. Confusing? Well thats because it Is. (p 522 BCG)
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Andrew C. Oliver (acoliver at apache.org)
+
+
+ Constructs a SeriesToChartGroup record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the chart Group index field for the SeriesToChartGroup record.
+
+
+
+ The SerParent record specifies the series to which the current trendline or error bar corresponds.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The SerToCrt record specifies the chart group for the current series.
+
+
+
+ Constructs a SeriesChartGroupIndex record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the chart Group index field for the SeriesChartGroupIndex record.
+
+
+
+ The ShapePropsStream record specifies the shape formatting properties for chart elements.
+ These shape formatting properties are a superset of the properties stored in the LineFormat,
+ AreaFormat, MarkerFormat, and GelFrame records. They are stored in the rgb field, which is an
+ XML stream (section 2.1.7.22), as defined in [ECMA-376] Part 4, section 5.7.2.198.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+ * Describes a chart sheet properties record.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+ specifies properties of a chart as defined by the Chart Sheet Substream ABNF
+
+
+
+ Constructs a SheetProperties record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the flags field for the SheetProperties record.
+
+
+ Get the empty field for the SheetProperties record.
+
+ @return One of
+ EMPTY_NOT_PLOTTED
+ EMPTY_ZERO
+ EMPTY_INTERPOLATED
+
+ specifies how the empty cells are plotted be a value from the following table:
+ 0x00 Empty cells are not plotted.
+ 0x01 Empty cells are plotted as zero.
+ 0x02 Empty cells are plotted as interpolated.
+
+
+
+
+ whether series are automatically allocated for the chart.
+
+
+
+
+ whether to plot visible cells only.
+
+
+
+
+ whether to size the chart with the window.
+
+
+
+
+ If fAlwaysAutoPlotArea is 1, then this field MUST be 1.
+ If fAlwaysAutoPlotArea is 0, then this field MUST be ignored.
+
+
+
+
+ specifies whether the default plot area dimension (2) is used.
+ 0 Use the default plot area dimension (2) regardless of the Pos record information.
+ 1 Use the plot area dimension (2) of the Pos record; and fManPlotArea MUST be 1.
+
+
+
+ STARTBLOCK - Chart Future Record Type Start Block (0x0852)
+
+ @author Patrick Cheng
+
+
+
+ The Surf record specifies that the chart group is a surface chart group and specifies the chart group attributes.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ The RichTextStream record specifies additional text properties for the text
+ in the entire chart, text in the current legend, text in the current legend
+ entry, or text in the attached label. These text properties are a superset
+ of the properties stored in the Text, Font, FontX, BRAI, and ObjectLink records
+ based on the following table, as specified by the Chart Sheet Substream ABNF.
+ In each case, the associated Font record is specified by the associated FontX record.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+ * The value range record defines the range of the value axis.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a ValueRange record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the minimum axis value field for the ValueRange record.
+
+
+ Get the maximum axis value field for the ValueRange record.
+
+
+ Get the major increment field for the ValueRange record.
+
+
+ Get the minor increment field for the ValueRange record.
+
+
+ Get the category axis cross field for the ValueRange record.
+
+
+ Get the options field for the ValueRange record.
+
+
+ automatic minimum value selected
+ @return the automatic minimum field value.
+
+
+ automatic maximum value selected
+ @return the automatic maximum field value.
+
+
+ automatic major Unit selected
+ @return the automatic major field value.
+
+
+ automatic minor Unit selected
+ @return the automatic minor field value.
+
+
+ category crossing point is automatically selected
+ @return the automatic category crossing field value.
+
+
+ use logarithmic scale
+ @return the logarithmic scale field value.
+
+
+ values are reverses in graph
+ @return the values in reverse field value.
+
+
+ category axis to cross at maximum value
+ @return the cross category axis at maximum field value.
+
+
+ reserved, must equal 1 (excel dev. guide says otherwise)
+ @return the reserved field value.
+
+
+
+ The YMult record specifies properties of the value multiplier for a value axis and
+ that specifies the beginning of a collection of records as defined by the Chart Sheet
+ substream ABNF. The collection of records specifies a display units label.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+ Class ChartFormatRecord
+
+
+ @author Glen Stampoultzis (glens at apache.org)
+ @version %I%, %G%
+
+
+ Constructs a ChartFormatRecord record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+
+ Section [2.4.324]. The Text record specifies the properties of an attached label and specifies the beginning of
+ a collection of records as defined by the chart sheet substream ABNF. This collection of records specifies an attached label.
+
+
+
+
+ Left-alignment if iReadingOrder specifies left-to-right reading order; otherwise, right-alignment
+
+
+
+
+ Center-alignment
+
+
+
+
+ Right-alignment if iReadingOrder specifies left-to-right reading order; otherwise, left-alignment
+
+
+
+
+ Justify-alignment
+
+
+
+
+ distributed alignment
+
+
+
+
+ distributed alignment
+
+
+
+
+ Transparent background
+
+
+
+
+ Opaque background
+
+
+
+ Constructs a Text record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the horizontal alignment field for the Text record.
+
+ @return One of
+ HORIZONTAL_ALIGNMENT_LEFT
+ HORIZONTAL_ALIGNMENT_CENTER
+ HORIZONTAL_ALIGNMENT_BOTTOM
+ HORIZONTAL_ALIGNMENT_JUSTIFY
+
+
+ Get the vertical alignment field for the Text record.
+
+ @return One of
+ VERTICAL_ALIGNMENT_TOP
+ VERTICAL_ALIGNMENT_CENTER
+ VERTICAL_ALIGNMENT_BOTTOM
+ VERTICAL_ALIGNMENT_JUSTIFY
+
+
+ Get the Display mode field for the Text record.
+
+ @return One of
+ DISPLAY_MODE_TRANSPARENT
+ DISPLAY_MODE_OPAQUE
+
+
+ Get the rgbColor field for the Text record.
+
+
+ Get the x field for the Text record.
+
+
+ Get the y field for the Text record.
+
+
+ Set the width field for the Text record.
+
+
+ Get the height field for the Text record.
+
+
+ Get the options1 field for the Text record.
+
+
+ Get the index of color value field for the Text record.
+
+
+ Get the options2 field for the Text record.
+
+
+ Get the text rotation field for the Text record.
+
+
+ true = automaticly selected colour, false = user-selected
+ @return the auto color field value.
+
+
+ true = draw legend
+ @return the show key field value.
+
+
+ false = text is category label
+ @return the show value field value.
+
+
+
+ @return the auto generated text field value.
+
+
+
+ @return the generated field value.
+
+
+
+ @return the auto label deleted field value.
+
+
+
+ @return the auto background field value.
+
+
+
+ @return the show category label as percentage field value.
+
+
+
+ @return the show value as percentage field value.
+
+
+
+ @return the show bubble sizes field value.
+
+
+
+ @return the show label field value.
+
+
+
+ @return the data label placement field value.
+
+
+ * The Tick record defines how tick marks and label positioning/formatting
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Andrew C. Oliver(acoliver at apache.org)
+
+
+ Constructs a Tick record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the major tick type field for the Tick record.
+
+
+ Get the minor tick type field for the Tick record.
+
+
+ Get the label position field for the Tick record.
+
+
+ Get the background field for the Tick record.
+
+
+ Get the label color rgb field for the Tick record.
+
+
+ Get the zero 1 field for the Tick record.
+
+
+ Get the zero 2 field for the Tick record.
+
+
+ Get the options field for the Tick record.
+
+
+ Get the tick color field for the Tick record.
+
+
+ Get the zero 3 field for the Tick record.
+
+
+ use the quote Unquote automatic color for text
+ @return the auto text color field value.
+
+
+ use the quote Unquote automatic color for text background
+ @return the auto text background field value.
+
+
+ rotate text (0=none, 1=normal, 2=90 degrees counterclockwise, 3=90 degrees clockwise)
+ @return the rotation field value.
+
+
+ automatically rotate the text
+ @return the autorotate field value.
+
+
+ * The Units record describes Units.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Units record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the Units field for the Units record.
+
+
+ Title: Codepage Record
+ Description: the default characterset. for the workbook
+ REFERENCE: PG 293 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ Use {@link CodePageUtil} to turn these values into Java code pages
+ to encode/decode strings.
+ @version 2.0-pre
+
+
+ Excel 97+ (Biff 8) should always store strings as UTF-16LE or
+ compressed versions of that. As such, this should always be
+ 0x4b0 = UTF_16, except for files coming from older versions.
+
+
+ Constructs a CodepageRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the codepage for this workbook
+
+ @see #CODEPAGE
+ @return codepage - the codepage to Set
+
+
+ Title: COLINFO Record
+ Description: Defines with width and formatting for a range of columns
+ REFERENCE: PG 293 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a ColumnInfo record and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ @return true if the format, options and column width match
+
+
+ Get the first column this record defines formatting info for
+ @return the first column index (0-based)
+
+
+ Get the last column this record defines formatting info for
+ @return the last column index (0-based)
+
+
+ Get the columns' width in 1/256 of a Char width
+ @return column width
+
+
+ Get the columns' default format info
+ @return the extended format index
+ @see org.apache.poi.hssf.record.ExtendedFormatRecord
+
+
+ Get the options bitfield - use the bitSetters instead
+ @return the bitfield raw value
+
+
+ Get whether or not these cells are hidden
+ @return whether the cells are hidden.
+ @see #SetOptions(short)
+
+
+ Get the outline level for the cells
+ @see #SetOptions(short)
+ @return outline level for the cells
+
+
+ Get whether the cells are collapsed
+ @return wether the cells are collapsed
+ @see #SetOptions(short)
+
+
+ * The common object data record is used to store all common preferences for an excel object.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a CommonObjectData record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the object type field for the CommonObjectData record.
+
+
+ Get the object id field for the CommonObjectData record.
+
+
+ Get the option field for the CommonObjectData record.
+
+
+ Get the reserved1 field for the CommonObjectData record.
+
+
+ Get the reserved2 field for the CommonObjectData record.
+
+
+ Get the reserved3 field for the CommonObjectData record.
+
+
+ true if object is locked when sheet has been protected
+ @return the locked field value.
+
+
+ object appears when printed
+ @return the printable field value.
+
+
+ whether object uses an automatic Fill style
+ @return the autoFill field value.
+
+
+ whether object uses an automatic line style
+ @return the autoline field value.
+
+
+
+ @return Palette color index, if type is {@link #TYPE_INDEXED}
+
+
+ @return Red Green Blue Alpha, if type is {@link #TYPE_RGB}
+
+
+ @return Theme color type index, eg {@link #THEME_DARK_1}, if type is {@link #TYPE_THEMED}
+
+
+ @return Tint and Shade value, between -1 and +1
+
+
+ FeatFormulaErr2 (Formula Evaluation Shared Feature) common record part
+
+ This record part specifies Formula Evaluation & Error Ignoring data
+ for a sheet, stored as part of a Shared Feature. It can be found in
+ records such as {@link FeatRecord}.
+ For the full meanings of the flags, see pages 669 and 670
+ of the Excel binary file format documentation.
+
+
+ What errors we should ignore
+
+
+ Title: FeatProtection (Protection Shared Feature) common record part
+
+ This record part specifies Protection data for a sheet, stored
+ as part of a Shared Feature. It can be found in records such
+ as {@link FeatRecord}
+
+
+ 0 means no password. Otherwise indicates the
+ password verifier algorithm (same kind as
+ {@link PasswordRecord} and
+ {@link PasswordRev4Record})
+
+
+ Title: FeatSmartTag (Smart Tag Shared Feature) common record part
+
+ This record part specifies Smart Tag data for a sheet, stored as part
+ of a Shared Feature. It can be found in records such as {@link FeatRecord}.
+ It is made up of a hash, and a Set of Factoid Data that Makes up
+ the smart tags.
+ For more details, see page 669 of the Excel binary file
+ format documentation.
+
+
+ Title: FtrHeader (Future Record Header) common record part
+
+ This record part specifies a header for a Ftr (Future)
+ style record, which includes extra attributes above and
+ beyond those of a traditional record.
+
+
+ This MUST match the type on the Containing record
+
+
+ This is a FrtFlags
+
+
+ The range of cells the parent record applies to, or 0 if N/A
+
+
+ Title: Future Record, a newer (largely Excel 2007+) record
+ which Contains a Future Record Header ({@link FtrHeader})
+
+
+ Common Interface for all Shared Features
+
+
+ Title: Unicode String
+ Description: Unicode String - just standard fields that are in several records.
+ It is considered more desirable then repeating it in all of them.
+ This is often called a XLUnicodeRichExtendedString in MS documentation.
+ REFERENCE: PG 264 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ REFERENCE: PG 951 Excel Binary File Format (.xls) Structure Specification v20091214
+
+
+ Returns our size, excluding our
+ 4 byte header
+
+
+ Our handling of Equals is inconsistent with CompareTo. The trouble is because we don't truely understand
+ rich text fields yet it's difficult to make a sound comparison.
+
+ @param o The object to Compare.
+ @return true if the object is actually Equal.
+
+
+ construct a unicode string record and fill its fields, ID is ignored
+ @param in the RecordInputstream to read the record from
+
+
+ get the number of characters in the string,
+ as an un-wrapped int
+
+ @return number of characters
+
+
+ Get the option flags which among other things return if this is a 16-bit or
+ 8 bit string
+
+ @return optionflags bitmask
+
+
+
+ @return the actual string this Contains as a java String object
+
+
+ Adds a font run to the formatted string.
+
+ If a font run exists at the current charcter location, then it is
+ Replaced with the font run to be Added.
+
+
+ Swaps all use in the string of one font index
+ for use of a different font index.
+ Normally only called when fonts have been
+ Removed / re-ordered
+
+
+ unlike the real records we return the same as "getString()" rather than debug info
+ @see #getDebugInfo()
+ @return String value of the record
+
+
+ return a character representation of the fields of this record
+
+
+ @return String of output for biffviewer etc.
+
+
+
+ Serialises out the String. There are special rules
+ about where we can and can't split onto
+ Continue records.
+
+
+
+ The ContinueFrt12 record specifies a continuation of the data in a preceding Future Record
+ Type record that has data longer than 8,224 bytes. Such records are split into several records.
+ The first section of the data appears in the base record and subsequent sections appear in
+ one or more ContinueFrt12 records that appear after the base record. The preceding base record
+ MUST contain a FrtRefHeader or a FrtHeader field.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+ Title: Continue Record - Helper class used primarily for SST Records
+ Description: handles overflow for prior record in the input
+ stream; content Is tailored to that prior record
+ @author Marc Johnson (mjohnson at apache dot org)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Csaba Nagy (ncsaba at yahoo dot com)
+ @version 2.0-pre
+
+
+ default constructor
+
+
+ Main constructor -- kinda dummy because we don't validate or fill fields
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Writes the full encoding of a Continue record without making an instance
+
+
+ @param initialDataByte (optional - often used for unicode flag).
+ If supplied, this will be written before srcData
+ @return the total number of bytes written
+
+
+ Get the data for continuation
+ @return byte array containing all of the continued data
+
+
+ Debugging toString
+
+ @return string representation
+
+
+ Clone this record.
+
+
+ Common superclass of all records that can produce {@link ContinueRecord}s while being Serialized.
+
+ @author Josh Micich
+
+
+ Serializes this record's content to the supplied data output.
+ The standard BIFF header (ushort sid, ushort size) has been handled by the superclass, so
+ only BIFF data should be written by this method. Simple data types can be written with the
+ standard {@link LittleEndianOutput} methods. Methods from {@link ContinuableRecordOutput}
+ can be used to Serialize strings (with {@link ContinueRecord}s being written as required).
+ If necessary, implementors can explicitly start {@link ContinueRecord}s (regardless of the
+ amount of remaining space).
+
+ @param out a data output stream
+
+
+ @return the total Length of the encoded record(s)
+ (Note - if any {@link ContinueRecord} is required, this result includes the
+ size of those too)
+
+
+ A decorated {@link RecordInputStream} that can read primitive data types
+ (short, int, long, etc.) spanned across a {@link ContinueRecord } boundary.
+
+
+ Most records construct themselves from {@link RecordInputStream}.
+ This class assumes that a {@link ContinueRecord} record break always occurs at the type boundary,
+ however, it is not always so.
+
+ Two attachments to Bugzilla 50779
+ demonstrate that a CONTINUE break can appear right in between two bytes of a unicode character
+ or between two bytes of a short. The problematic portion of the data is
+ in a Asian Phonetic Settings Block (ExtRst) of a UnicodeString.
+
+ {@link RecordInputStream} greedily requests the bytes to be read and stumbles on such files with a
+ "Not enough data (1) to read requested (2) bytes" exception. The ContinuableRecordInput
+ class circumvents this "type boundary" rule and Reads data byte-by-byte rolling over CONTINUE if necessary.
+
+
+
+ YK: For now (March 2011) this class is only used to read
+ @link NPOI.HSSF.Record.Common.UnicodeString.ExtRst} blocks of a UnicodeString.
+
+
+
+ @author Yegor Kozlov
+
+
+ An augmented {@link LittleEndianOutput} used for serialization of {@link ContinuableRecord}s.
+ This class keeps track of how much remaining space is available in the current BIFF record and
+ can start new {@link ContinueRecord}s as required.
+
+ @author Josh Micich
+
+
+ @return total number of bytes written so far (including all BIFF headers)
+
+
+ Terminates the last record (also updates its 'ushort size' field)
+
+
+ @return number of remaining bytes of space in current record
+
+
+ Terminates the current record and starts a new {@link ContinueRecord} (regardless
+ of how much space is still available in the current record).
+
+
+ Writes the 'optionFlags' byte and encoded character data of a unicode string. This includes:
+
+ - byte optionFlags
+ - encoded character data (in "ISO-8859-1" or "UTF-16LE" encoding)
+
+
+ Notes:
+
+ - The value of the 'is16bitEncoded' flag is determined by the actual character data
+ of text
+ - The string options flag is never separated (by a {@link ContinueRecord}) from the
+ first chunk of character data it refers to.
+ - The 'ushort Length' field is assumed to have been explicitly written earlier. Hence,
+ there may be an intervening {@link ContinueRecord}
+
+
+
+ Writes a unicode string complete with header and character data. This includes:
+
+ - ushort Length
+ - byte optionFlags
+ - ushort numberOfRichTextRuns (optional)
+ - ushort extendedDataSize (optional)
+ - encoded character data (in "ISO-8859-1" or "UTF-16LE" encoding)
+
+
+ The following bits of the 'optionFlags' byte will be set as appropriate:
+
+ | Mask | Description |
+ | 0x01 | is16bitEncoded |
+ | 0x04 | hasExtendedData |
+ | 0x08 | isRichText |
+
+ Notes:
+
+ - The value of the 'is16bitEncoded' flag is determined by the actual character data
+ of text
+ - The string header fields are never separated (by a {@link ContinueRecord}) from the
+ first chunk of character data (i.e. the first character is always encoded in the same
+ record as the string header).
+
+
+
+ **
+
+
+ Allows the writing of BIFF records when the 'ushort size' header field is not known in advance.
+ When the client is finished writing data, it calls {@link #terminate()}, at which point this
+ class updates the 'ushort size' with its value.
+
+ @author Josh Micich
+
+
+ for writing the 'ushort size' field once its value is known
+
+
+ includes 4 byte header
+
+
+ Finishes writing the current record and updates 'ushort size' field.
+ After this method is called, only {@link #getTotalSize()} may be called.
+
+
+ Title: Country Record (aka WIN.INI country)
+ Description: used for localization. Currently HSSF always Sets this to 1
+ and it seems to work fine even in Germany. (es geht's auch fuer Deutschland)
+
+ REFERENCE: PG 298 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a CountryRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ Gets the default country
+
+ @return country ID (1 = US)
+
+
+ Gets the current country
+
+ @return country ID (1 = US)
+
+
+ XCT ?CRN Count
+
+ REFERENCE: 5.114
+
+ @author Josh Micich
+
+
+ return the non static version of the id for this record.
+
+
+ Title: CRN
+ Description: This record stores the contents of an external cell or cell range
+ REFERENCE: 5.23
+
+ @author josh micich
+
+
+ return the non static version of the id for this record.
+
+
+
+ @author Josh Micich
+
+
+ Reads an unsigned short value without decrypting
+
+
+ Reads an unsigned short value without decrypting
+
+
+ Create using the default password and a specified docId
+ @param docId 16 bytes
+
+
+ @return true if the keyDigest is compatible with the specified saltData and saltHash
+
+
+ The {@link RC4} instance needs to be Changed every 1024 bytes.
+ @param keyBlockNo used to seed the newly Created {@link RC4}
+
+
+ Stores the BIFF8 encryption/decryption password for the current thread. This has been done
+ using a {@link ThreadLocal} in order to avoid further overloading the various public APIs
+ (e.g. {@link HSSFWorkbook}) that need this functionality.
+
+
+ @return the BIFF8 encryption/decryption password for the current thread.
+ null if it is currently unSet.
+
+
+ Used for both encrypting and decrypting BIFF8 streams. The internal
+ {@link RC4} instance is renewed (re-keyed) every 1024 bytes.
+
+ @author Josh Micich
+
+
+ This field is used to keep track of when to change the {@link RC4}
+ instance. The change occurs every 1024 bytes. Every byte passed over is
+ counted.
+
+
+ TODO: Additionally, the lbPlyPos (position_of_BOF) field of the BoundSheet8 record MUST NOT be encrypted.
+
+ @return true if record type specified by sid is never encrypted
+
+
+ Used when BIFF header fields (sid, size) are being Read. The internal
+ {@link RC4} instance must step even when unencrypted bytes are read
+
+
+ Simple implementation of the alleged RC4 algorithm.
+
+ Inspired by wikipedia's RC4 article
+
+ @author Josh Micich
+
+
+ @return The size of this field in bytes. This operation Is not valid
+ Until after the call to FillField()
+
+
+ Populates this fields data from the byte array passed in1.
+ @param in the RecordInputstream to Read the record from
+
+
+ Appends the string representation of this field to the supplied
+ StringBuilder.
+
+ @param str The string buffer to Append to.
+
+
+ Converts this field to it's byte array form.
+ @param offset The offset into the byte array to start writing to.
+ @param data The data array to Write to.
+ @return The number of bytes written.
+
+
+ Title: Date Window 1904 Flag record
+ Description: Flag specifying whether 1904 date windowing Is used.
+ (tick toc tick toc...BOOM!)
+ REFERENCE: PG 280 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a DateWindow1904 record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Gets whether or not to use 1904 date windowing (which means you'll be screwed in 2004)
+ @return window flag - 0/1 (false,true)
+
+
+ Title: DBCell Record
+ Description: Used by Excel and other MS apps to quickly Find rows in the sheets.
+ REFERENCE: PG 299/440 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height
+ @version 2.0-pre
+
+
+ Constructs a DBCellRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ offset from the start of this DBCellRecord to the start of the first cell in
+ the next DBCell block.
+
+
+ Gets offset from the start of this DBCellRecord to the start of the first cell in
+ the next DBCell block.
+
+ @return rowoffset to the start of the first cell in the next DBCell block
+
+
+ return the cell offset in the array
+
+ @param index of the cell offset to retrieve
+ @return celloffset from the celloffset array
+
+
+ Get the number of cell offsets in the celloffset array
+
+ @return number of cell offsets
+
+
+ @returns the size of the Group of DBCellRecords needed to encode
+ the specified number of blocks and rows
+
+
+ DConRef records specify a range in a workbook (internal or external) that serves as a data source
+ for pivot tables or data consolidation.
+
+ Represents a DConRef Structure
+ [MS-XLS s.
+ 2.4.86], and the contained DConFile structure
+
+ [MS-XLS s. 2.5.69]. This in turn contains a XLUnicodeStringNoCch
+
+ [MS-XLS s. 2.5.296].
+
+
+ _______________________________
+ | DConRef |
+ (bytes) +-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+
+ | ref |cch| stFile | un|
+ +-+-+-+-+-+-+-+-+-+-+...+-+-+-+-+
+ |
+ _________|_____________________
+ |DConFile / XLUnicodeStringNoCch|
+ +-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+
+ (bits) |h| reserved | rgb |
+ +-+-+-+-+-+-+-+-+-+-+-+...+-+-+-+
+
+ Where
+
+ DConFile.h = 0x00 if the characters inrgb are single byte, and
+ DConFile.h = 0x01 if they are double byte.
+ If they are double byte, then
+
+ - If it exists, the length of
DConRef.un = 2. Otherwise it is 1.
+ - The length of
DConFile.rgb = (2 * DConRef.cch). Otherwise it is equal to
+ DConRef.cch .
+
+
+ DConRef.rgb starts with 0x01 if it is an external reference,
+ and with 0x02 if it is a self-reference.
+
+
+ At the moment this class is read-only.
+
+ @author Niklas Rehfeld
+
+
+ The id of the record type,
+ sid = {@value}
+
+
+ A RefU structure specifying the range of cells if this record is part of an SXTBL.
+
+ [MS XLS s.2.5.211]
+
+
+ A RefU structure specifying the range of cells if this record is part of an SXTBL.
+
+ [MS XLS s.2.5.211]
+
+
+ A RefU structure specifying the range of cells if this record is part of an SXTBL.
+
+ [MS XLS s.2.5.211]
+
+
+ A RefU structure specifying the range of cells if this record is part of an SXTBL.
+
+ [MS XLS s.2.5.211]
+
+
+ the number of chars in the link
+
+
+ the type of characters (single or double byte)
+
+
+ The link's path string. This is the rgb field of a
+ XLUnicodeStringNoCch. Therefore it will contain at least one leading special
+ character (0x01 or 0x02) and probably other ones.
+ @see
+ DConFile [MS-XLS s. 2.5.77] and
+
+ VirtualPath [MS-XLS s. 2.5.69]
+
+
+
+ unused bits at the end, must be set to 0.
+
+
+ Read constructor.
+
+ @param data byte array containing a DConRef Record, including the header.
+
+
+ Read Constructor.
+
+ @param inStream RecordInputStream containing a DConRefRecord structure.
+
+
+ @return The first column of the range.
+
+
+ @return The first row of the range.
+
+
+ @return The last column of the range.
+
+
+ @return The last row of the range.
+
+
+
+ @return raw path byte array.
+
+
+ @return the link's path, with the special characters stripped/replaced. May be null.
+ See MS-XLS 2.5.277 (VirtualPath)
+
+
+ Checks if the data source in this reference record is external to this sheet or internal.
+
+ @return true iff this is an external reference.
+
+
+ Title: Default Column Width Record
+ Description: Specifies the default width for columns that have no specific
+ width Set.
+ REFERENCE: PG 302 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ The default column width is 8 characters
+
+
+ Constructs a DefaultColumnWidth record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the default column width
+ @return defaultwidth for columns
+
+
+ Title: Default Row Height Record
+ Description: Row height for rows with Undefined or not explicitly defined
+ heights.
+ REFERENCE: PG 301 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ The default row height for empty rows is 255 twips (255 / 20 == 12.75 points)
+
+
+
+ Constructs a DefaultRowHeight record and Sets its fields appropriately.
+
+ the RecordInputstream to Read the record from
+
+
+
+ Get the default row height
+
+
+
+ Title: Delta Record
+ Description: controls the accuracy of the calculations
+ REFERENCE: PG 303 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a Delta record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the maximum Change
+ @return maxChange - maximum rounding error
+
+
+ Title: Dimensions Record
+ Description: provides the minumum and maximum bounds
+ of a sheet.
+ REFERENCE: PG 303 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a Dimensions record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the first row number for the sheet
+ @return row - first row on the sheet
+
+
+ Get the last row number for the sheet
+ @return row - last row on the sheet
+
+
+ Get the first column number for the sheet
+ @return column - first column on the sheet
+
+
+ Get the last col number for the sheet
+ @return column - last column on the sheet
+
+
+ Process the bytes into escher records.
+ (Not done by default in case we break things,
+ Unless you Set the "poi.deSerialize.escher"
+ system property)
+
+
+ Size of record (including 4 byte headers for all sections)
+
+
+ DrawingRecord (0x00EC)
+
+
+
+ Cloning of drawing records must be executed through HSSFPatriarch, because all id's must be changed
+ @return cloned drawing records
+
+
+ This Is purely for the biff viewer. During normal operations we don't want
+ to be seeing this.
+
+
+
+ specifies the header for an entry in a property table
+
+
+
+
+ specifies the identifier of the property in this entry.
+
+
+
+
+ whether the value in the op field is a BLIP identifier.
+ If this value equals 0x1, the value in the op field specifies the BLIP identifier
+ in the OfficeArtBStoreContainer record, as defined in section 2.2.20. If fComplex equals 0x1, this bit MUST be ignored.
+
+
+
+
+ specifies whether this property is a complex property.
+ If this value equals 0x1, the op field specifies the size of the data for this property, rather than the property data itself.
+
+
+
+
+ specifies the common record header for all the OfficeArt records.
+
+
+ author: Antony liu (antony.apollo at gmail.com)
+
+
+
+
+ specifies the version if the record is an atom. If the record is a container, this field MUST contain 0xF.
+
+
+
+
+ An unsigned integer that differentiates an atom from the other atoms that are contained in the record.
+
+
+
+
+ specifies the type of the record. This value MUST be from 0xF000 through 0xFFFF, inclusive.
+
+
+
+
+ that specifies the length, in bytes, of the record.
+ If the record is an atom, this value specifies the length of the atom, excluding the header.
+ If the record is a container, this value specifies the sum of the lengths of the atoms that
+ the record contains, plus the length of the record header for each atom.
+
+
+
+ Title: double Stream Flag Record
+ Description: tells if this Is a double stream file. (always no for HSSF generated files)
+ double Stream files contain both BIFF8 and BIFF7 workbooks.
+ REFERENCE: PG 305 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a DBCellRecord and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Title: DATAVALIDATIONS Record
+ Description: used in data validation ;
+ This record Is the list header of all data validation records (0x01BE) in the current sheet.
+ @author Dragos Buleandra (dragos.buleandra@trade2b.ro)
+
+
+ Options of the DVAL
+
+
+ Horizontal position of the dialog
+
+
+ Vertical position of the dialog
+
+
+ Object ID of the drop down arrow object for list boxes ;
+ in our case this will be always FFFF , Until
+ MSODrawingGroup and MSODrawing records are implemented
+
+
+ Number of following DV Records
+
+
+ Constructs a DVAL record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ @return the field_1_options
+
+
+ @return the Horizontal position of the dialog
+
+
+ @return the the Vertical position of the dialog
+
+
+ Get Object ID of the drop down arrow object for list boxes
+
+
+ Get number of following DV records
+
+
+ Title: DATAVALIDATION Record (0x01BE)
+ Description: This record stores data validation Settings and a list of cell ranges
+ which contain these Settings. The data validation Settings of a sheet
+ are stored in a sequential list of DV records. This list Is followed by
+ DVAL record(s)
+ @author Dragos Buleandra (dragos.buleandra@trade2b.ro)
+ @version 2.0-pre
+
+
+ Option flags
+
+
+ Title of the prompt box, cannot be longer than 32 chars
+
+
+ Title of the error box, cannot be longer than 32 chars
+
+
+ Text of the prompt box, cannot be longer than 255 chars
+
+
+ Text of the error box, cannot be longer than 255 chars
+
+
+ Not used - Excel seems to always write 0x3FE0
+
+
+ Formula data for first condition (RPN token array without size field)
+
+
+ Not used - Excel seems to always write 0x0000
+
+
+ Formula data for second condition (RPN token array without size field)
+
+
+ Cell range address list with all affected ranges
+
+
+ Option flags field
+ @see org.apache.poi.hssf.util.HSSFDataValidation utility class
+
+
+ Constructs a DV record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ When entered via the UI, Excel translates empty string into "\0"
+ While it is possible to encode the title/text as empty string (Excel doesn't exactly crash),
+ the resulting tool-tip text / message box looks wrong. It is best to do the same as the
+ Excel UI and encode 'not present' as "\0".
+
+
+ Get the condition data type
+ @return the condition data type
+ @see org.apache.poi.hssf.util.HSSFDataValidation utility class
+
+
+ Get the condition error style
+ @return the condition error style
+ @see org.apache.poi.hssf.util.HSSFDataValidation utility class
+
+
+ return true if in list validations the string list Is explicitly given in the formula, false otherwise
+ @return true if in list validations the string list Is explicitly given in the formula, false otherwise
+ @see org.apache.poi.hssf.util.HSSFDataValidation utility class
+
+
+ return true if empty values are allowed in cells, false otherwise
+ @return if empty values are allowed in cells, false otherwise
+ @see org.apache.poi.hssf.util.HSSFDataValidation utility class
+
+
+ @return true if drop down arrow should be suppressed when list validation is
+ used, false otherwise
+
+
+ return true if a prompt window should appear when cell Is selected, false otherwise
+ @return if a prompt window should appear when cell Is selected, false otherwise
+ @see org.apache.poi.hssf.util.HSSFDataValidation utility class
+
+
+ return true if an error window should appear when an invalid value Is entered in the cell, false otherwise
+ @return if an error window should appear when an invalid value Is entered in the cell, false otherwise
+ @see org.apache.poi.hssf.util.HSSFDataValidation utility class
+
+
+ Get the condition operator
+ @return the condition operator
+ @see org.apache.poi.hssf.util.HSSFDataValidation utility class
+
+
+ Gets the option flags field.
+ @return options - the option flags field
+
+
+ Clones the object. Uses serialisation, as the
+ contents are somewhat complex
+
+
+ A sub-record within the OBJ record which stores a reference to an object
+ stored in a Separate entry within the OLE2 compound file.
+
+ @author Daniel Noll
+
+
+ either an area or a cell ref
+
+
+ Formulas often have a single non-zero trailing byte.
+ This is in a similar position to he pre-streamId padding
+ It is unknown if the value is important (it seems to mirror a value a few bytes earlier)
+
+
+
+ Constructs an EmbeddedObjectRef record and Sets its fields appropriately.
+
+ @param in the record input stream.
+
+
+ Gets the stream ID containing the actual data. The data itself
+ can be found under a top-level directory entry in the OLE2 filesystem
+ under the name "MBDxxxxxxxx" where xxxxxxxx is
+ this ID converted into hex (in big endian order, funnily enough.)
+
+ @return the data stream ID. Possibly null
+
+
+ * The end data record is used to denote the end of the subrecords.
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a End record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ End Of File record.
+
+ Description: Marks the end of records belonging to a particular object in the
+ HSSF File
+ REFERENCE: PG 307 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a EOFRecord record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ This class Is used to aggregate the MSODRAWING and OBJ record
+ combinations. This Is necessary due to the bizare way in which
+ these records are Serialized. What happens Is that you Get a
+ combination of MSODRAWING -> OBJ -> MSODRAWING -> OBJ records
+ but the escher records are Serialized _across_ the MSODRAWING
+ records.
+
+ It Gets even worse when you start looking at TXO records.
+
+ So what we do with this class Is aggregate lazily. That Is
+ we don't aggregate the MSODRAWING -> OBJ records Unless we
+ need to modify them.
+
+ At first document contains 4 types of records which belong to drawing layer.
+ There are can be such sequence of record:
+
+ DrawingRecord
+ ContinueRecord
+ ...
+ ContinueRecord
+ ObjRecord | TextObjectRecord
+ .....
+ ContinueRecord
+ ...
+ ContinueRecord
+ ObjRecord | TextObjectRecord
+ NoteRecord
+ ...
+ NoteRecord
+
+ To work with shapes we have to read data from Drawing and Continue records into single array of bytes and
+ build escher(office art) records tree from this array.
+ Each shape in drawing layer matches corresponding ObjRecord
+ Each textbox matches corresponding TextObjectRecord
+
+ ObjRecord contains information about shape. Thus each ObjRecord corresponds EscherContainerRecord(SPGR)
+
+ EscherAggrefate contains also NoteRecords
+ NoteRecords must be serial
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Maps shape container objects to their OBJ records
+
+
+ list of "tail" records that need to be Serialized after all drawing Group records
+
+
+ @return Returns the current sid.
+
+
+ Calculates the string representation of this record. This Is
+ simply a dump of all the records.
+
+
+ Calculates the xml representation of this record. This is
+ simply a dump of all the records.
+ @param tab - string which must be added before each line (used by default '\t')
+ @return xml representation of the all aggregated records
+
+
+ @param sid - record sid we want to check if it belongs to drawing layer
+ @return true if record is instance of DrawingRecord or ContinueRecord or ObjRecord or TextObjRecord
+
+
+ Collapses the drawing records into an aggregate.
+ read Drawing, Obj, TxtObj, Note and Continue records into single byte array,
+ create Escher tree from byte array, create map <EscherRecord, Record>
+
+ @param records - list of all records inside sheet
+ @param locFirstDrawingRecord - location of the first DrawingRecord inside sheet
+ @return new EscherAggregate create from all aggregated records which belong to drawing layer
+
+
+ Serializes this aggregate to a byte array. Since this Is an aggregate
+ record it will effectively Serialize the aggregated records.
+
+ @param offset The offset into the start of the array.
+ @param data The byte array to Serialize to.
+ @return The number of bytes Serialized.
+
+
+ @param drawingData - escher records saved into single byte array
+ @param writtenEscherBytes - count of bytes already saved into drawing records (we should know it to decide create
+ drawing or continue record)
+ @param pos current position of data array
+ @param data - array of bytes where drawing records must be serialized
+ @param i - number of shape, saved into data array
+ @return offset of data array after serialization
+
+
+ How many bytes do the raw escher records contain.
+
+ @param records List of escher records
+ @return the number of bytes
+
+
+ @param records list of records to look into
+ @param loc - location of the record which sid must be returned
+ @return sid of the record with selected location
+
+
+ @return record size, including header size of obj, text, note, drawing, continue records
+
+
+ create base tree with such structure:
+ EscherDgContainer
+ -EscherSpgrContainer
+ --EscherSpContainer
+ ---EscherSpRecord
+ ---EscherSpgrRecord
+ ---EscherSpRecord
+ -EscherDgRecord
+
+ id of DgRecord and SpRecord are empty and must be set later by HSSFPatriarch
+
+
+ Unused since this Is an aggregate record. Use CreateAggregate().
+
+ @see #CreateAggregate
+
+
+ Converts the Records into UserModel
+ objects on the bound HSSFPatriarch
+
+
+
+ Associates an escher record to an OBJ record or a TXO record.
+
+ ClientData or Textbox record
+ Obj or TextObj record
+
+
+
+ Remove echerRecord and associated to it Obj or TextObj record
+
+ clientData or textbox record to be removed
+
+
+ @return unmodifiable copy of tail records. We need to access them when building shapes.
+ Every HSSFComment shape has a link to a NoteRecord from the tailRec collection.
+
+
+ @param obj - ObjRecord with id == NoteRecord.id
+ @return null if note record is not found else returns note record with id == obj.id
+
+
+ Title: Extended Format Record
+ Description: Probably one of the more complex records. There are two breeds:
+ Style and Cell.
+
+ It should be noted that fields in the extended format record are
+ somewhat arbitrary. Almost all of the fields are bit-level, but
+ we name them as best as possible by functional Group. In some
+ places this Is better than others.
+
+
+ REFERENCE: PG 426 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructor ExtendedFormatRecord
+
+
+
+
+ Constructs an ExtendedFormat record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Clones all the style information from another
+ ExtendedFormatRecord, onto this one. This
+ will then hold all the same style options.
+
+ If The source ExtendedFormatRecord comes from
+ a different Workbook, you will need to sort
+ out the font and format indicies yourself!
+
+
+
+ Get the index to the FONT record (which font to use 0 based)
+
+
+
+
+ Get the index to the Format record (which FORMAT to use 0-based)
+
+
+
+
+ Gets the options bitmask - you can also use corresponding option bit Getters
+ (see other methods that reference this one)
+
+
+
+
+ Get whether the cell Is locked or not
+
+
+
+
+ Get whether the cell Is hidden or not
+
+
+
+
+ Get whether the cell Is a cell or style XFRecord
+
+
+
+
+ Get some old holdover from lotus 123. Who cares, its all over for Lotus.
+ RIP Lotus.
+
+
+
+
+ for cell XF types this Is the parent style (usually 0/normal). For
+ style this should be NULL.
+
+
+
+
+ Get the alignment options bitmask. See corresponding bitGetter methods
+ that reference this one.
+
+
+
+
+ Get the horizontal alignment of the cell.
+
+
+
+
+ Get whether to wrap the text in the cell
+
+
+
+
+ Get the vertical alignment of text in the cell
+
+
+
+
+ Docs just say this Is for far east versions.. (I'm guessing it
+ justifies for right-to-left Read languages)
+
+
+
+
+ Get the degree of rotation. (I've not actually seen this used anywhere)
+
+
+
+
+ Get the indent options bitmask (see corresponding bit Getters that reference
+ this field)
+
+
+
+
+ Get indention (not sure of the Units, think its spaces)
+
+
+
+
+ Get whether to shrink the text to fit
+
+
+
+
+ Get whether to merge cells
+
+
+
+
+ Get the Reading order for far east versions (0 - Context, 1 - Left to right,
+ 2 - right to left) - We could use some help with support for the far east.
+
+
+
+
+ Get whether or not to use the format in this XF instead of the parent XF.
+
+
+
+
+ Get whether or not to use the font in this XF instead of the parent XF.
+
+
+
+
+ Get whether or not to use the alignment in this XF instead of the parent XF.
+
+
+
+
+ Get whether or not to use the border in this XF instead of the parent XF.
+
+
+
+
+ Get whether or not to use the pattern in this XF instead of the parent XF.
+ (foregrount/background)
+
+
+
+
+ Get whether or not to use the locking/hidden in this XF instead of the parent XF.
+
+
+
+
+ Get the border options bitmask (see the corresponding bit Getter methods
+ that reference back to this one)
+
+
+
+
+ Get the borderline style for the left border
+
+
+
+
+ Get the borderline style for the right border
+
+
+
+
+ Get the borderline style for the top border
+
+
+
+
+ Get the borderline style for the bottom border
+
+
+
+
+ Get the palette options bitmask (see the individual bit Getter methods that
+ reference this one)
+
+
+
+
+ Get the palette index for the left border color
+
+
+
+
+ Get the palette index for the right border color
+
+
+
+
+ Get the Additional palette options bitmask (see individual bit Getter methods
+ that reference this method)
+
+
+
+
+ Get the palette index for the top border
+
+
+
+
+ Get the palette index for the bottom border
+
+
+
+
+ Get for diagonal borders
+
+
+
+
+ Get the diagonal border line style
+
+
+
+
+ Not sure what this Is for (maybe Fill lines?) 1 = down, 2 = up, 3 = both, 0 for none..
+
+
+
+
+ Get the Additional Fill pattern
+
+
+
+
+ Get the Fill palette options bitmask (see indivdual bit Getters that
+ reference this method)
+
+
+
+
+ Get the foreground palette color index
+
+
+
+
+ Get the background palette color index
+
+
+
+ Will consider two different records with the same
+ contents as Equals, as the various indexes
+ that matter are embedded in the records
+
+
+ EXTERNALNAME
+
+ @author Josh Micich
+
+
+ 'rgoper' / 'Last received results of the DDE link'
+ (seems to be only applicable to DDE links)
+ Logically this is a 2-D array, which has been flattened into 1-D array here.
+
+
+ (logical) number of columns in the {@link #_ddeValues} array
+
+
+ (logical) number of rows in the {@link #_ddeValues} array
+
+
+ Convenience Function to determine if the name Is a built-in name
+
+
+ For OLE and DDE, links can be either 'automatic' or 'manual'
+
+
+ only for OLE and DDE
+
+
+ DDE links only. If true, this denotes the 'StdDocumentName'
+
+
+ @return the standard String representation of this name
+
+
+ index to External Book Block (which starts with a EXTERNALBOOK record)
+
+
+ a Constructor for making new sub record
+
+
+ @param in the RecordInputstream to Read the record from
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ @param offset to begin writing at
+ @param data byte array containing instance data
+ @return number of bytes written
+
+
+ Title: Extern Sheet
+ Description: A List of Inndexes to SupBook
+ REFERENCE:
+ @author Libin Roman (Vista Portal LDT. Developer)
+ @version 1.0-pre
+
+
+ Constructs a Extern Sheet record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Add a zero-based reference to a {@link org.apache.poi.hssf.record.SupBookRecord}.
+
+ If the type of the SupBook record is same-sheet referencing, Add-In referencing,
+ DDE data source referencing, or OLE data source referencing,
+ then no scope is specified and this value MUST be -2. Otherwise,
+ the scope must be set as follows:
+
+ -2 Workbook-level reference that applies to the entire workbook.
+ -1 Sheet-level reference.
+ >=0 Sheet-level reference. This specifies the first sheet in the reference.
+
+ If the SupBook type is unused or external workbook referencing,
+ then this value specifies the zero-based index of an external sheet name,
+ see {@link org.apache.poi.hssf.record.SupBookRecord#getSheetNames()}.
+ This referenced string specifies the name of the first sheet within the external workbook that is in scope.
+ This sheet MUST be a worksheet or macro sheet.
+
+
+ If the supporting link type is self-referencing, then this value specifies the zero-based index of a
+ {@link org.apache.poi.hssf.record.BoundSheetRecord} record in the workbook stream that specifies
+ the first sheet within the scope of this reference. This sheet MUST be a worksheet or a macro sheet.
+
+
+
+
+ @param firstSheetIndex the scope, must be -2 for add-in references
+ @param lastSheetIndex the scope, must be -2 for add-in references
+ @return index of newly added ref
+
+
+ returns the number of REF Records, which is in model
+ @return number of REF records
+
+
+ @return number of REF structures
+
+
+ Adds REF struct (ExternSheetSubRecord)
+ @param rec REF struct
+
+
+ Returns the index of the SupBookRecord for this index
+
+
+ @return -1 if not found
+
+
+ Returns the first sheet that the reference applies to, or
+ -1 if the referenced sheet can't be found, or -2 if the
+ reference is workbook scoped.
+
+
+ Returns the last sheet that the reference applies to, or
+ -1 if the referenced sheet can't be found, or -2 if the
+ reference is workbook scoped.
+ For a single sheet reference, the first and last should be
+ the same.
+
+
+ called by the class that Is responsible for writing this sucker.
+ Subclasses should implement this so that their data Is passed back in a
+ byte array.
+
+ @param offset to begin writing at
+ @param data byte array containing instance data
+ @return number of bytes written
+
+
+ return the non static version of the id for this record.
+
+
+ Title: A sub Record for Extern Sheet
+ Description: Defines a named range within a workbook.
+ REFERENCE:
+ @author Libin Roman (Vista Portal LDT. Developer)
+ @version 1.0-pre
+
+
+ a Constractor for making new sub record
+
+
+ Constructs a Extern Sheet Sub Record record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Sets the Index to the sup book
+ @param index sup book index
+
+
+ Gets the index to sup book
+ @return sup book index
+
+
+ Sets the index to first sheet in supbook
+ @param index index to first sheet
+
+
+ Gets the index to first sheet from supbook
+ @return index to first supbook
+
+
+ Sets the index to last sheet in supbook
+ @param index index to last sheet
+
+
+ Gets the index to last sheet in supbook
+ @return index to last supbook
+
+
+ called by the class that Is responsible for writing this sucker.
+ Subclasses should implement this so that their data Is passed back in a
+ byte array.
+
+ @param offset to begin writing at
+ @param data byte array containing instance data
+ @return number of bytes written
+
+
+ returns the record size
+
+
+ return the non static version of the id for this record.
+
+
+ Extended SST table info subrecord
+ Contains the elements of "info" in the SST's array field
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+ @see org.apache.poi.hssf.record.ExtSSTRecord
+
+
+ Creates new ExtSSTInfoSubRecord
+
+
+ Title: Extended Static String Table
+ Description: This record Is used for a quick Lookup into the SST record. This
+ record breaks the SST table into a Set of buckets. The offsets
+ to these buckets within the SST record are kept as well as the
+ position relative to the start of the SST record.
+ REFERENCE: PG 313 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at apache dot org)
+ @version 2.0-pre
+ @see org.apache.poi.hssf.record.ExtSSTInfoSubRecord
+
+
+ Constructs a EOFRecord record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Returns the size of this record
+
+
+ Given a number of strings (in the sst), returns the size of the extsst record
+
+
+ Title: FeatHdr (Feature Header) Record
+
+ This record specifies common information for Shared Features, and
+ specifies the beginning of a collection of records to define them.
+ The collection of data (Globals Substream ABNF, macro sheet substream
+ ABNF or worksheet substream ABNF) specifies Shared Feature data.
+
+
+ Specifies the enhanced protection type. Used to protect a
+ shared workbook by restricting access to some areas of it
+
+
+ Specifies that formula errors should be ignored
+
+
+ Specifies the smart tag type. Recognises certain
+ types of entries (proper names, dates/times etc) and
+ flags them for action
+
+
+ Specifies the shared list type. Used for a table
+ within a sheet
+
+
+ 0x00000000 = rgbHdrData not present
+ 0xffffffff = rgbHdrData present
+
+
+ We need a BOFRecord to make sense of this...
+
+
+ Title: Feat (Feature) Record
+
+ This record specifies Shared Features data. It is normally paired
+ up with a {@link FeatHdrRecord}.
+
+
+ See SHAREDFEATURES_* on {@link FeatHdrRecord}
+
+
+ Only matters if type is ISFFEC2
+
+
+ Contents depends on isf_sharedFeatureType :
+ ISFPROTECTION -> FeatProtection
+ ISFFEC2 -> FeatFormulaErr2
+ ISFFACTOID -> FeatSmartTag
+
+
+
+
+
+
+ Rc4KeyData
+
+
+ key (2 bytes): An unsigned integer that specifies the obfuscation key.
+ See [MS-OFFCRYPTO], 2.3.6.2 section, the first step of Initializing XOR
+ array where it describes the generation of 16-bit XorKey value.
+
+
+ verificationBytes (2 bytes): An unsigned integer that specifies
+ the password verification identifier.
+
+
+
+
+
+ XorKeyData
+
+
+
+
+
+ FilePassRecord
+
+
+ Title: FILESHARING
+ Description: stores the encrypted Readonly for a workbook (Write protect)
+ This functionality Is accessed from the options dialog box available when performing 'Save As'.
+ REFERENCE: PG 314 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+
+
+ Constructs a FileSharing record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the Readonly
+
+ @return short representing if this Is Read only (1 = true)
+
+
+ @returns password hashed with hashPassword() (very lame)
+
+
+ @returns username of the user that Created the file
+
+
+ Clone this record.
+
+
+ Title: Function Group Count Record
+ Description: Number of built in function Groups in the current version of the
+ SpReadsheet (probably only used on Windoze)
+ REFERENCE: PG 315 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ suggested default (14 dec)
+
+
+ Constructs a FnGroupCount record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the number of built-in functions
+
+ @return number of built-in functions
+
+
+ Title: Font Record - descrbes a font in the workbook (index = 0-3,5-infinity - skip 4)
+ Description: An element in the Font Table
+ REFERENCE: PG 315 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a Font record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Clones all the font style information from another
+ FontRecord, onto this one. This
+ will then hold all the same font style options.
+
+
+ Set the font to be italics or not
+
+ @param italics - whether the font Is italics or not
+ @see #SetAttributes(short)
+
+
+ Set the font to be stricken out or not
+
+ @param strike - whether the font Is stricken out or not
+ @see #SetAttributes(short)
+
+
+ whether to use the mac outline font style thing (mac only) - Some mac person
+ should comment this instead of me doing it (since I have no idea)
+
+ @param mac - whether to do that mac font outline thing or not
+ @see #SetAttributes(short)
+
+
+ whether to use the mac shado font style thing (mac only) - Some mac person
+ should comment this instead of me doing it (since I have no idea)
+
+ @param mac - whether to do that mac font shadow thing or not
+ @see #SetAttributes(short)
+
+
+ Set the type of Underlining for the font
+
+
+ Set the font family (TODO)
+
+ @param f family
+
+
+ Set the Char Set
+
+ @param charSet - CharSet
+
+
+ Set the name of the font
+
+ @param fn - name of the font (i.e. "Arial")
+
+
+ Gets the height of the font in 1/20th point Units
+
+ @return fontheight (in points/20)
+
+
+ Get the font attributes (see individual bit Getters that reference this method)
+
+ @return attribute - the bitmask
+
+
+ Get the font's color palette index
+
+ @return cpi - font color index
+
+
+ Get the bold weight for this font (100-1000dec or 0x64-0x3e8). Default Is
+ 0x190 for normal and 0x2bc for bold
+
+ @return bw - a number between 100-1000 for the fonts "boldness"
+
+
+ Get the type of base or subscript for the font
+
+ @return base or subscript option
+
+
+ Does this FontRecord have all the same font
+ properties as the supplied FontRecord?
+ Note that {@link #equals(Object)} will check
+ for exact objects, while this will check
+ for exact contents, because normally the
+ font record's position makes a big
+ difference too.
+
+
+ Only returns two for the same exact object -
+ creating a second FontRecord with the same
+ properties won't be considered equal, as
+ the record's position in the record stream
+ matters.
+
+
+ Title: Footer Record
+ Description: Specifies the footer for a sheet
+ REFERENCE: PG 317 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Shawn Laubach (slaubach at apache dot org) Modified 3/14/02
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+
+ Initializes a new instance of the class.
+
+ the RecordInputstream to Read the record from
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+
+
+ return the non static version of the id for this record.
+
+
+ Title: Format Record
+ Description: describes a number format -- those goofy strings like $(#,###)
+
+ REFERENCE: PG 317 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Shawn M. Laubach (slaubach at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a Format record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the format index code (for built in formats)
+
+ @return the format index code
+ @see org.apache.poi.hssf.model.Workbook
+
+
+ Get the format string
+
+ @return the format string
+
+
+ Manages the cached formula result values of other types besides numeric.
+ Excel encodes the same 8 bytes that would be field_4_value with various NaN
+ values that are decoded/encoded by this class.
+
+
+ deliberately chosen by Excel in order to encode other values within Double NaNs
+
+
+ @return null if the double value encoded by valueLongBits
+ is a normal (non NaN) double value.
+
+
+ Formula Record.
+ REFERENCE: PG 317/444 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Since the NaN support seems sketchy (different constants) we'll store and spit it out directly
+
+
+ Creates new FormulaRecord
+
+
+ Constructs a Formula record and Sets its fields appropriately.
+ Note - id must be 0x06 (NOT 0x406 see MSKB #Q184647 for an
+ "explanation of this bug in the documentation) or an exception
+ will be throw upon validation
+
+ @param in the RecordInputstream to Read the record from
+
+
+ @return true if this {@link FormulaRecord} is followed by a
+ {@link StringRecord} representing the cached text result of the formula
+ evaluation.
+
+
+ Get the calculated value of the formula
+
+ @return calculated value
+
+
+ Get the option flags
+
+ @return bitmask
+
+
+ Get the stack as a list
+
+ @return list of tokens (casts stack to a list and returns it!)
+ this method can return null Is we are Unable to Create Ptgs from
+ existing excel file
+ callers should Check for null!
+
+
+ Construct a new FtCblsSubRecord and
+ fill its data with the default values
+
+
+ Convert this record to string.
+ Used by BiffViewer and other utilities.
+
+
+ Serialize the record data into the supplied array of bytes
+
+ @param out the stream to serialize into
+
+
+ @return id of this record.
+
+
+ The FtCf structure specifies the clipboard format of the picture-type Obj record Containing this FtCf.
+
+
+ Specifies the format of the picture is an enhanced metafile.
+
+
+ Specifies the format of the picture is a bitmap.
+
+
+ Specifies the picture is in an unspecified format that is
+ neither and enhanced metafile nor a bitmap.
+
+
+ Construct a new FtPioGrbitSubRecord and
+ fill its data with the default values
+
+
+ Convert this record to string.
+ Used by BiffViewer and other utilities.
+
+
+ Serialize the record data into the supplied array of bytes
+
+ @param out the stream to serialize into
+
+
+ @return id of this record.
+
+
+ This structure appears as part of an Obj record that represents image display properties.
+
+
+ A bit that specifies whether the picture's aspect ratio is preserved when rendered in
+ different views (Normal view, Page Break Preview view, Page Layout view and printing).
+
+
+ A bit that specifies whether the pictFmla field of the Obj record that Contains
+ this FtPioGrbit specifies a DDE reference.
+
+
+ A bit that specifies whether this object is expected to be updated on print to
+ reflect the values in the cell associated with the object.
+
+
+ A bit that specifies whether the picture is displayed as an icon.
+
+
+ A bit that specifies whether this object is an ActiveX control.
+ It MUST NOT be the case that both fCtl and fDde are equal to 1.
+
+
+ A bit that specifies whether the object data are stored in an
+ embedding storage (= 0) or in the controls stream (ctls) (= 1).
+
+
+ A bit that specifies whether this is a camera picture.
+
+
+ A bit that specifies whether this picture's size has been explicitly Set.
+ 0 = picture size has been explicitly Set, 1 = has not been Set
+
+
+ A bit that specifies whether the OLE server for the object is called
+ to load the object's data automatically when the parent workbook is opened.
+
+
+ Construct a new FtPioGrbitSubRecord and
+ fill its data with the default values
+
+
+ Use one of the bitmasks MANUAL_ADVANCE_BIT ... CURSOR_VISIBLE_BIT
+ @param bitmask
+ @param enabled
+
+
+ Convert this record to string.
+ Used by BiffViewer and other utilities.
+
+
+ Serialize the record data into the supplied array of bytes
+
+ @param out the stream to serialize into
+
+
+ @return id of this record.
+
+
+ Title: GridSet Record.
+ Description: flag denoting whether the user specified that gridlines are used when
+ printing.
+ REFERENCE: PG 320 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+ @version 2.0-pre
+
+
+ Constructs a GridSet record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether the gridlines are shown during printing.
+
+ @return gridSet - true if gridlines are NOT printed, false if they are.
+
+
+ * The Group marker record is used as a position holder for Groups.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Group marker record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Title: Guts Record
+ Description: Row/column gutter sizes
+ REFERENCE: PG 320 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a Guts record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the size of the gutter that appears at the left of the rows
+
+ @return gutter size in screen Units
+
+
+ Get the size of the gutter that appears at the above the columns
+
+ @return gutter size in screen Units
+
+
+ Get the maximum outline level for the row gutter.
+
+ @return maximum outline level
+
+
+ Get the maximum outline level for the col gutter.
+
+ @return maximum outline level
+
+
+ Title: HCenter record
+ Description: whether to center between horizontal margins
+ REFERENCE: PG 320 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs an HCenter record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether or not to horizonatally center this sheet.
+ @return center - t/f
+
+
+ Common header/footer base class
+
+ @author Josh Micich
+
+
+ get the length of the footer string
+
+ @return length of the footer string
+
+
+ The HEADERFOOTER record stores information Added in Office Excel 2007 for headers/footers.
+
+ @author Yegor Kozlov
+
+
+ construct a HeaderFooterRecord record. No fields are interpreted and the record will
+ be Serialized in its original form more or less
+ @param in the RecordInputstream to read the record from
+
+
+ spit the record out AS IS. no interpretation or identification
+
+
+ If this header belongs to a specific sheet view , the sheet view?s GUID will be saved here.
+
+ If it is zero, it means the current sheet. Otherwise, this field MUST match the guid field
+ of the preceding {@link UserSViewBegin} record.
+
+ @return the sheet view's GUID
+
+
+ @return whether this record belongs to the current sheet
+
+
+ Title: Header Record
+ Description: Specifies a header for a sheet
+ REFERENCE: PG 321 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Shawn Laubach (slaubach at apache dot org) Modified 3/14/02
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs an Header record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Title: Hide Object Record
+ Description: flag defines whether to hide placeholders and object
+ REFERENCE: PG 321 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs an HideObj record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Set hide object options
+
+ @param hide options
+ @see #HIDE_ALL
+ @see #SHOW_PLACEHOLDERS
+ @see #SHOW_ALL
+
+
+ Get hide object options
+
+ @return hide options
+ @see #HIDE_ALL
+ @see #SHOW_PLACEHOLDERS
+ @see #SHOW_ALL
+
+
+ HorizontalPageBreak record that stores page breaks at rows
+
+ This class Is just used so that SID Compares work properly in the RecordFactory
+ @see PageBreakRecord
+ @author Danny Mui (dmui at apache dot org)
+
+
+
+
+
+ @param in the RecordInputstream to Read the record from
+
+
+ The HyperlinkRecord wraps an HLINK-record
+ from the Excel-97 format.
+ Supports only external links for now (eg http://)
+
+ @author Mark Hissink Muller mark@hissinkmuller.nl
+ @author Yegor Kozlov (yegor at apache dot org)
+
+
+ Link flags
+
+
+ Tail of a URL link
+
+
+ Tail of a file link
+
+
+ cell range of this hyperlink
+
+
+ 16-byte GUID
+
+
+ Some sort of options for file links.
+
+
+ Link options. Can include any of HLINK_* flags.
+
+
+ Test label
+
+
+ Moniker. Makes sense only for URL and file links
+
+
+ in 8:3 DOS format No Unicode string header,
+ always 8-bit characters, zero-terminated
+
+
+ Link
+
+
+ Text describing a place in document. In Excel UI, this is appended to the
+ address, (after a '#' delimiter).
+ This field is optional. If present, the {@link #HLINK_PLACE} must be set.
+
+
+ Remaining bytes
+
+
+ Create a new hyperlink
+
+
+ Read hyperlink from input stream
+
+ @param in the stream to Read from
+
+
+ Return the column of the first cell that Contains the hyperlink
+
+ @return the 0-based column of the first cell that Contains the hyperlink
+
+
+ Set the column of the last cell that Contains the hyperlink
+
+ @return the 0-based column of the last cell that Contains the hyperlink
+
+
+ Return the row of the first cell that Contains the hyperlink
+
+ @return the 0-based row of the first cell that Contains the hyperlink
+
+
+ Return the row of the last cell that Contains the hyperlink
+
+ @return the 0-based row of the last cell that Contains the hyperlink
+
+
+ Returns a 16-byte guid identifier. Seems to always equal {@link STD_MONIKER}
+
+ @return 16-byte guid identifier
+
+
+ Returns a 16-byte moniker.
+
+ @return 16-byte moniker
+
+
+ Return text label for this hyperlink
+
+ @return text to Display
+
+
+ Hypelink Address. Depending on the hyperlink type it can be URL, e-mail, patrh to a file, etc.
+
+ @return the Address of this hyperlink
+
+
+ Link options. Must be a combination of HLINK_* constants.
+
+
+ Label options
+
+
+ Options for a file link
+
+
+ Based on the link options, is this a url?
+
+
+ Based on the link options, is this a file?
+
+
+ Based on the link options, is this a document?
+
+
+
+ Initialize a new url link
+
+
+
+
+ Initialize a new file link
+
+
+
+
+ Initialize a new document link
+
+
+
+ Title: Index Record
+ Description: Occurs right after BOF, tells you where the DBCELL records are for a sheet
+ Important for locating cells
+ NOT USED IN THIS RELEASE
+ REFERENCE: PG 323 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs an Index record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Returns the size of an INdexRecord when it needs to index the specified number of blocks
+
+
+
+ Title: Interface End Record
+ Description: Shows where the Interface Records end (MMS)
+ (has no fields)
+ REFERENCE: PG 324 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs an InterfaceEnd record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+
+ for test TestInterfaceEndRecord.TestCreate()
+
+
+
+
+ Title: Interface Header Record
+ Description: Defines the beginning of Interface records (MMS)
+ REFERENCE: PG 324 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ suggested (and probably correct) default
+
+
+ Constructs an Codepage record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Title: Iteration Record
+ Description: Tells whether to iterate over forumla calculations or not
+ (if a formula Is dependant upon another formula's result)
+ (odd feature for something that can only have 32 elements in
+ a formula!)
+ REFERENCE: PG 325 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs an Iteration record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether or not to iterate for calculations
+
+ @return whether iterative calculations are turned off or on
+
+
+ Label Record - Read only support for strings stored directly in the cell.. Don't
+ use this (except to Read), use LabelSST instead
+ REFERENCE: PG 325 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+
+ @see org.apache.poi.hssf.record.LabelSSTRecord
+
+
+ Creates new LabelRecord
+
+
+ Constructs an Label record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the number of Chars this string Contains
+ @return number of Chars
+
+
+ Is this Uncompressed Unicode (16bit)? Or just 8-bit compressed?
+ @return IsUnicode - True for 16bit- false for 8bit
+
+
+ Get the value
+
+ @return the text string
+ @see #GetStringLength
+
+
+ THROWS A RUNTIME EXCEPTION.. USE LABELSSTRecords. YOU HAVE NO REASON to use LABELRecord!!
+
+
+ Title: Label SST Record
+ Description: Refers to a string in the shared string table and Is a column
+ value.
+ REFERENCE: PG 325 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs an LabelSST record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the index to the string in the SSTRecord
+
+ @return index of string in the SST Table
+ @see org.apache.poi.hssf.record.SSTRecord
+
+
+ From [MS-XLS].pdf 2.5.147 FtLbsData:
+
+ An unsigned integer that indirectly specifies whether
+ some of the data in this structure appear in a subsequent Continue record.
+ If _cbFContinued is 0x00, all of the fields in this structure except sid and _cbFContinued
+ MUST NOT exist. If this entire structure is Contained within the same record,
+ then _cbFContinued MUST be greater than or equal to the size, in bytes,
+ of this structure, not including the four bytes for the ft and _cbFContinued fields
+
+
+ a formula that specifies the range of cell values that are the items in this list.
+
+
+ An unsigned integer that specifies the number of items in the list.
+
+
+ An unsigned integer that specifies the one-based index of the first selected item in this list.
+ A value of 0x00 specifies there is no currently selected item.
+
+
+ flags that tell what data follows
+
+
+ An ObjId that specifies the edit box associated with this list.
+ A value of 0x00 specifies that there is no edit box associated with this list.
+
+
+ An optional LbsDropData that specifies properties for this dropdown control.
+ This field MUST exist if and only if the Containing Obj?s cmo.ot is equal to 0x14.
+
+
+ An optional array of strings where each string specifies an item in the list.
+ The number of elements in this array, if it exists, MUST be {@link #_cLines}
+
+
+ An optional array of bools that specifies
+ which items in the list are part of a multiple selection
+
+
+ @param in the stream to read data from
+ @param cbFContinued the seconf short in the record header
+ @param cmoOt the Containing Obj's {@link CommonObjectDataSubRecord#field_1_objectType}
+
+
+
+ @return the formula that specifies the range of cell values that are the items in this list.
+
+
+ @return the number of items in the list
+
+
+
+ @return a new instance of LbsDataSubRecord to construct auto-filters
+ @see org.apache.poi.hssf.model.ComboboxShape#createObjRecord(org.apache.poi.hssf.usermodel.HSSFSimpleShape, int)
+
+
+ This structure specifies properties of the dropdown list control
+
+
+ Combo dropdown control
+
+
+ Combo Edit dropdown control
+
+
+ Simple dropdown control (just the dropdown button)
+
+
+ An unsigned integer that specifies the style of this dropdown.
+
+
+ An unsigned integer that specifies the number of lines to be displayed in the dropdown.
+
+
+ An unsigned integer that specifies the smallest width in pixels allowed for the dropdown window
+
+
+ a string that specifies the current string value in the dropdown
+
+
+ Optional, undefined and MUST be ignored.
+ This field MUST exist if and only if the size of str in bytes is an odd number
+
+
+ Record for the left margin.
+ NOTE: This source was automatically generated.
+ @author Shawn Laubach (slaubach at apache dot org)
+
+
+ Constructs a LeftMargin record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the margin field for the LeftMargin record.
+
+
+ Not implemented yet. May commit it anyway just so people can see
+ where I'm heading.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ The margin interface Is a parent used to define left, right, top and bottom margins.
+ This allows much of the code to be generic when it comes to handling margins.
+ NOTE: This source wass automatically generated.
+
+ @author Shawn Laubach (slaubach at apache dot org)
+
+
+ Get the margin field for the Margin.
+
+
+ Title: Merged Cells Record
+
+ Description: Optional record defining a square area of cells to "merged" into
+ one cell.
+ REFERENCE: NONE (UNDOCUMENTED PRESENTLY)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ sometimes the regions array is shared with other MergedCellsRecords
+
+
+ Constructs a MergedCellsRecord and Sets its fields appropriately
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the number of merged areas. If this drops down to 0 you should just go
+ ahead and delete the record.
+ @return number of areas
+
+
+ @return MergedRegion at the given index representing the area that is Merged (r1,c1 - r2,c2)
+
+
+ Title: MMS Record
+ Description: defines how many Add menu and del menu options are stored
+ in the file. Should always be Set to 0 for HSSF workbooks
+ REFERENCE: PG 328 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a MMS record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Set number of Add menu options (Set to 0)
+ @param am number of Add menu options
+
+
+ Set number of del menu options (Set to 0)
+ @param dm number of del menu options
+
+
+ Title: Mulitple Blank cell record
+ Description: Represents a Set of columns in a row with no value but with styling.
+ In this release we have Read-only support for this record type.
+ The RecordFactory Converts this to a Set of BlankRecord objects.
+ REFERENCE: PG 329 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @version 2.0-pre
+ @see org.apache.poi.hssf.record.BlankRecord
+
+
+ Creates new MulBlankRecord
+
+
+ Constructs a MulBlank record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the row number of the cells this represents
+
+ @return row number
+
+
+ starting column (first cell this holds in the row)
+ @return first column number
+
+
+ ending column (last cell this holds in the row)
+ @return first column number
+
+
+ Get the number of columns this Contains (last-first +1)
+ @return number of columns (last - first +1)
+
+
+ returns the xf index for column (coffset = column - field_2_first_col)
+ @param coffset the column (coffset = column - field_2_first_col)
+ @return the XF index for the column
+
+
+ Used to store multiple RK numbers on a row. 1 MulRk = Multiple Cell values.
+ HSSF just Converts this into multiple NUMBER records. Read-ONLY SUPPORT!
+ REFERENCE: PG 330 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Creates new MulRKRecord
+
+
+ Constructs a MulRK record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ starting column (first cell this holds in the row)
+ @return first column number
+
+
+ ending column (last cell this holds in the row)
+ @return first column number
+
+
+ Get the number of columns this Contains (last-first +1)
+ @return number of columns (last - first +1)
+
+
+ returns the xf index for column (coffset = column - field_2_first_col)
+ @return the XF index for the column
+
+
+ returns the rk number for column (coffset = column - field_2_first_col)
+ @return the value (decoded into a double)
+
+
+ Title: NAMECMT Record (0x0894)
+ Description: Defines a comment associated with a specified name.
+ REFERENCE:
+
+ @author Andrew Shirley (aks at corefiling.co.uk)
+
+
+ @param ris the RecordInputstream to read the record from
+
+
+ return the non static version of the id for this record.
+
+
+ @return the name of the NameRecord to which this comment applies.
+
+
+ @return the text of the comment.
+
+
+ Title: Name Record (aka Named Range)
+ Description: Defines a named range within a workbook.
+ REFERENCE:
+ @author Libin Roman (Vista Portal LDT. Developer)
+ @author Sergei Kozello (sergeikozello at mail.ru)
+ @author Glen Stampoultzis (glens at apache.org)
+ @version 1.0-pre
+
+
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ Included for completeness sake, not implemented
+
+
+ One-based extern index of sheet (resolved via LinkTable). Zero if this is a global name
+
+
+ the one based sheet number.
+
+
+ Creates new NameRecord
+
+
+ Constructs a Name record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Constructor to Create a built-in named region
+ @param builtin Built-in byte representation for the name record, use the public constants
+ @param index
+
+
+ @return function Group
+ @see FnGroupCountRecord
+
+
+ Gets the option flag
+ @return option flag
+
+
+ returns the keyboard shortcut
+ @return keyboard shortcut
+
+
+ **
+
+
+ Indicates that the defined name refers to a user-defined function.
+ This attribute is used when there is an add-in or other code project associated with the file.
+
+ @param function true indicates the name refers to a function.
+
+
+ @return true if name has a formula (named range or defined value)
+
+
+ @return true if name Is hidden
+
+
+ @return true if name Is a function
+
+
+ @return true if name Is a command
+
+
+ @return true if function macro or command macro
+
+
+ @return true if array formula or user defined
+
+
+ Convenience Function to determine if the name Is a built-in name
+
+
+ Gets the name
+ @return name
+
+
+ Gets the Built In Name
+ @return the built in Name
+
+
+ Gets the definition, reference (Formula)
+ @return definition -- can be null if we cant Parse ptgs
+
+
+ Get the custom menu text
+ @return custom menu text
+
+
+ Gets the description text
+ @return description text
+
+
+ Get the help topic text
+ @return gelp topic text
+
+
+ Gets the status bar text
+ @return status bar text
+
+
+ For named ranges, and built-in names
+ @return the 1-based sheet number.
+
+
+ called by the class that Is responsible for writing this sucker.
+ Subclasses should implement this so that their data Is passed back in a
+ @param offset to begin writing at
+ @param data byte array containing instance data
+ @return number of bytes written
+
+
+ Gets the extern sheet number
+ @return extern sheet index
+
+
+ return the non static version of the id for this record.
+
+
+ @see Object#ToString()
+
+
+ Creates a human Readable name for built in types
+ @return Unknown if the built-in name cannot be translated
+
+
+ NOTE: Comment Associated with a Cell (1Ch)
+
+ @author Yegor Kozlov
+
+
+ Flag indicating that the comment Is hidden (default)
+
+
+ Flag indicating that the comment Is visible
+
+
+ Saves padding byte value to reduce delta during round-trip serialization.
+
+ The documentation is not clear about how padding should work. In any case
+ Excel(2007) does something different.
+
+
+ Construct a new NoteRecord and
+ Fill its data with the default values
+
+
+ Constructs a NoteRecord and Fills its fields
+ from the supplied RecordInputStream.
+
+ @param in the stream to Read from
+
+
+ @return id of this record.
+
+
+ Serialize the record data into the supplied array of bytes
+
+ @param offset offset in the data
+ @param data the data to Serialize into
+
+ @return size of the record
+
+
+ Size of record
+
+
+ Convert this record to string.
+ Used by BiffViewer and other utulities.
+
+
+ Return the row that Contains the comment
+
+ @return the row that Contains the comment
+
+
+ Return the column that Contains the comment
+
+ @return the column that Contains the comment
+
+
+ Options flags.
+
+ @return the options flag
+ @see #NOTE_VISIBLE
+ @see #NOTE_HIDDEN
+
+
+ Object id for OBJ record that Contains the comment
+
+
+ Name of the original comment author
+
+ @return the name of the original author of the comment
+
+
+ For unit testing only!
+
+
+ Represents a NoteStructure (0xD) sub record.
+
+
+ The docs say nothing about it. The Length of this record is always 26 bytes.
+
+
+ @author Yegor Kozlov
+
+
+ Construct a new NoteStructureSubRecord and
+ Fill its data with the default values
+
+
+ Constructs a NoteStructureSubRecord and Sets its fields appropriately.
+
+
+
+ Convert this record to string.
+ Used by BiffViewer and other utulities.
+
+
+ Serialize the record data into the supplied array of bytes
+
+ @param offset offset in the data
+ @param data the data to Serialize into
+
+ @return size of the record
+
+
+ Size of record
+
+
+ @return id of this record.
+
+
+ Contains a numeric cell value.
+ REFERENCE: PG 334 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Creates new NumberRecord
+
+
+ Constructs a Number record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the value for the cell
+
+ @return double representing the value
+
+
+ Title: Object Protect Record
+ Description: Protect embedded object with the lamest "security" ever invented.
+ This record tells "I want to protect my objects" with lame security. It
+ appears in conjunction with the PASSWORD and PROTECT records as well as its
+ scenario protect cousin.
+ REFERENCE: PG 368 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+
+
+ Constructs a Protect record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether the sheet Is protected or not
+ @return whether to protect the sheet or not
+
+
+ The obj record is used to hold various graphic objects and controls.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ used when POI has no idea what is going on
+
+
+ Excel seems to tolerate padding to quad or double byte length
+
+
+ Constructs a OBJ record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Some XLS files have ObjRecords with nearly 8Kb of excessive padding. These were probably
+ written by a version of POI (around 3.1) which incorrectly interpreted the second short of
+ the ftLbs subrecord (0x1FEE) as a length, and read that many bytes as padding (other bugs
+ helped allow this to occur).
+
+ Excel reads files with this excessive padding OK, truncating the over-sized ObjRecord back
+ to the its proper size. POI does the same.
+
+
+ Size of record (excluding 4 byte header)
+
+
+ Base class for all old (Biff 2 - Biff 4) cell value records
+ (implementors of {@link CellValueRecordInterface}).
+ Subclasses are expected to manage the cell data values (of various types).
+
+
+ Get the index to the ExtendedFormat, for non-Biff2
+
+ @see NPOI.HSSF.Record.ExtendedFormatRecord
+ @return index to the XF record
+
+
+ Is this a Biff2 record, or newer?
+
+
+ Append specific debug info (used by {@link #ToString()} for the value
+ Contained in this record. Trailing new-line should not be Appended
+ (superclass does that).
+
+
+ Gets the debug info BIFF record type name (used by {@link #ToString()}.
+
+
+ Formula Record (0x0006 / 0x0206 / 0x0406) - holds a formula in
+ encoded form, along with the value if a number
+
+
+ Get the calculated value of the formula
+
+ @return calculated value
+
+
+ Get the option flags
+
+ @return bitmask
+
+
+ @return the formula tokens. never null
+
+
+ Biff2 - Biff 4 Label Record (0x0004 / 0x0204) - read only support for
+ strings stored directly in the cell, from the older file formats that
+ didn't use {@link LabelSSTRecord}
+
+
+ @param in the RecordInputstream to read the record from
+
+
+ Get the number of characters this string Contains
+ @return number of characters
+
+
+ Get the String of the cell
+
+
+ Not supported
+
+
+ Title: Bound Sheet Record (aka BundleSheet) (0x0085) for BIFF 5
+ Description: Defines a sheet within a workbook. Basically stores the sheet name
+ and tells where the Beginning of file record is within the HSSF
+ file.
+
+
+ Get the offset in bytes of the Beginning of File Marker within the HSSF Stream part of the POIFS file
+
+ @return offset in bytes
+
+
+ Get the sheetname for this sheet. (this appears in the tabs at the bottom)
+ @return sheetname the name of the sheet
+
+
+ Biff2 - Biff 4 Label Record (0x0007 / 0x0207) - read only support for
+ formula string results.
+
+
+ @param in the RecordInputstream to read the record from
+
+
+ @return The string represented by this record.
+
+
+ Record that Contains the functionality page _breaks (horizontal and vertical)
+
+ The other two classes just specifically Set the SIDS for record creation.
+
+ REFERENCE: Microsoft Excel SDK page 322 and 420
+
+ @see HorizontalPageBreakRecord
+ @see VerticalPageBreakRecord
+ @author Danny Mui (dmui at apache dot org)
+
+
+ Since both records store 2byte integers (short), no point in
+ differentiating it in the records.
+
+ The subs (rows or columns, don't seem to be able to Set but excel Sets
+ them automatically)
+
+
+ Adds the page break at the specified parameters
+ @param main Depending on sid, will determine row or column to put page break (zero-based)
+ @param subFrom No user-interface to Set (defaults to minumum, 0)
+ @param subTo No user-interface to Set
+
+
+ Removes the break indicated by the parameter
+ @param main (zero-based)
+
+
+ Retrieves the region at the row/column indicated
+ @param main FIXME: Document this!
+ @return The Break or null if no break exists at the row/col specified.
+
+
+ PaletteRecord - Supports custom palettes.
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Brian Sanders (bsanders at risklabs dot com) - custom palette editing
+ @version 2.0-pre
+
+
+ The standard size of an XLS palette
+
+
+ The byte index of the first color
+
+
+ Constructs a PaletteRecord record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+
+ Dangerous! Only call this if you intend to replace the colors!
+
+
+
+ Returns the color value at a given index
+
+ @return the RGB triplet for the color, or null if the specified index
+ does not exist
+
+
+ Sets the color value at a given index
+
+ If the given index Is greater than the current last color index,
+ then black Is Inserted at every index required to make the palette continuous.
+
+ @param byteIndex the index to Set; if this index Is less than 0x8 or greater than
+ 0x40, then no modification Is made
+
+
+ Creates the default palette as PaletteRecord binary data
+
+ @see org.apache.poi.hssf.model.Workbook#createPalette
+
+
+ PColor - element in the list of colors - consider it a "struct"
+
+
+ * Describes the frozen and Unfozen panes.
+ * NOTE: This source Is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a Pane record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the x field for the Pane record.
+
+
+ Get the y field for the Pane record.
+
+
+ Get the top row field for the Pane record.
+
+
+ Get the left column field for the Pane record.
+
+
+ Get the active pane field for the Pane record.
+
+ @return One of
+ ACTIVE_PANE_LOWER_RIGHT
+ ACTIVE_PANE_UPPER_RIGHT
+ ACTIVE_PANE_LOWER_LEFT
+ ACTIVE_PANE_UPPER_LEFT
+
+
+ Title: Password Record
+ Description: stores the encrypted password for a sheet or workbook (HSSF doesn't support encryption)
+ REFERENCE: PG 371 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a Password record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the password
+
+ @return short representing the password
+
+
+ Clone this record.
+
+
+ Title: Protection Revision 4 password Record
+ Description: Stores the (2 byte??!!) encrypted password for a shared
+ workbook
+ REFERENCE: PG 374 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a PasswordRev4 (PROT4REVPASS) record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ set the password
+
+ @param pw representing the password
+
+
+ SXDI - Data Item (0x00C5)
+
+ @author Patrick Cheng
+
+
+ SXVDEX - Extended PivotTable View Fields (0x0100)
+
+ @author Patrick Cheng
+
+
+ the value of the cchSubName field when the subName is not present
+
+
+ SXPI - Page Item (0x00B6)
+
+ @author Patrick Cheng
+
+
+ Index to the View Item SXVI(0x00B2) record
+
+
+ Index to the {@link ViewFieldsRecord} SXVD(0x00B1) record
+
+
+ Object ID for the drop-down arrow
+
+
+ SXIDSTM - Stream ID (0x00D5)
+
+ @author Patrick Cheng
+
+
+ SXVIEW - View Definition (0x00B0)
+
+ @author Patrick Cheng
+
+
+ SXVD - View Fields (0x00B1)
+
+ @author Patrick Cheng
+
+
+ values for the {@link ViewFieldsRecord#sxaxis} field
+
+
+ the value of the cchName field when the name is not present
+
+
+ 5 shorts
+
+
+ SXVS - View Source (0x00E3)
+
+ @author Patrick Cheng
+
+
+ Title: Precision Record
+ Description: defines whether to store with full precision or what's Displayed by the gui
+ (meaning have really screwed up and skewed figures or only think you do!)
+ REFERENCE: PG 372 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a Precision record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether to use full precision or just skew all you figures all to hell.
+
+ @return fullprecision - or not
+
+
+ Title: Print Gridlines Record
+ Description: whether to print the gridlines when you enjoy you spReadsheet on paper.
+ REFERENCE: PG 373 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a PrintGridlines record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether or not to print the gridlines (and make your spReadsheet ugly)
+
+ @return make spReadsheet ugly - Y/N
+
+
+ Title: Print Headers Record
+ Description: Whether or not to print the row/column headers when you
+ enjoy your spReadsheet in the physical form.
+ REFERENCE: PG 373 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a PrintHeaders record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+
+ Get whether to print the headers - y/n
+
+ true if [print headers]; otherwise, false.
+
+
+ Title: Print Setup Record
+ Description: Stores print Setup options -- bogus for HSSF (and marked as such)
+ REFERENCE: PG 385 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a PrintSetup (SetUP) record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Title: Protection Revision 4 Record
+ Description: describes whether this is a protected shared/tracked workbook
+ ( HSSF does not support encryption because we don't feel like going to jail )
+ REFERENCE: PG 373 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a ProtectionRev4 record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether the this is protected shared/tracked workbook or not
+ @return whether to protect the workbook or not
+
+
+ Title: Protect Record
+ Description: defines whether a sheet or workbook is protected (HSSF DOES NOT SUPPORT ENCRYPTION)
+ (kindly ask the US government to stop having arcane stupid encryption laws and we'll support it)
+ (after all terrorists will all use US-legal encrypton right??)
+ HSSF now supports the simple "protected" sheets (where they are not encrypted and open office et al
+ ignore the password record entirely).
+ REFERENCE: PG 373 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+
+
+ Constructs a Protect record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether the sheet is protected or not
+ @return whether to protect the sheet or not
+
+
+ Title: Recalc Id Record
+ Description: This record Contains an ID that marks when a worksheet was last
+ recalculated. It's an optimization Excel uses to determine if it
+ needs to recalculate the spReadsheet when it's opened. So far, only
+ the two values 0xC1 0x01 0x00 0x00 0x80 0x38 0x01 0x00
+ (do not recalculate) and 0xC1 0x01 0x00 0x00 0x60 0x69 0x01
+ 0x00 have been seen. If the field isNeeded Is
+ Set to false (default), then this record Is swallowed during the
+ serialization Process
+ REFERENCE: http://chicago.sourceforge.net/devel/docs/excel/biff8.html
+ @author Luc Girardin (luc dot girardin at macrofocus dot com)
+ @version 2.0-pre
+ @see org.apache.poi.hssf.model.Workbook
+
+
+ An unsigned integer that specifies the recalculation engine identifier
+ of the recalculation engine that performed the last recalculation.
+ If the value is less than the recalculation engine identifier associated with the application,
+ the application will recalculate the results of all formulas on
+ this workbook immediately after loading the file
+
+
+ Constructs a RECALCID record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Title: Record
+ Description: All HSSF Records inherit from this class. It
+ populates the fields common to all records (id, size and data).
+ Subclasses should be sure to validate the id,
+ Company:
+ @author Andrew C. Oliver
+ @author Marc Johnson (mjohnson at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ instantiates a blank record strictly for ID matching
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ @return byte array containing instance data
+
+
+ return the non static version of the id for this record.
+
+
+ Common base class of {@link Record} and {@link RecordAggregate}
+
+ @author Josh Micich
+
+
+ called by the class that is responsible for writing this sucker.
+ Subclasses should implement this so that their data is passed back in a
+ byte array.
+
+ @param offset to begin writing at
+ @param data byte array containing instance data
+ @return number of bytes written
+
+
+ gives the current serialized size of the record. Should include the sid
+ and reclength (4 bytes).
+
+
+ Title: Record Factory
+ Description: Takes a stream and outputs an array of Record objects.
+
+ @deprecated use {@link org.apache.poi.hssf.eventmodel.EventRecordFactory} instead
+ @see org.apache.poi.hssf.eventmodel.EventRecordFactory
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Marc Johnson (mjohnson at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Csaba Nagy (ncsaba at yahoo dot com)
+
+
+ A "create" method is used instead of the usual constructor if the created record might
+ be of a different class to the declaring class.
+
+
+ cache of the recordsToMap();
+
+
+ Debug / diagnosis method
+ Gets the POI implementation class for a given sid. Only a subset of the any BIFF
+ records are actually interpreted by POI. A few others are known but not interpreted
+ (see {@link UnknownRecord#getBiffName(int)}).
+ @return the POI implementation class for the specified record sid.
+ null if the specified record is not interpreted by POI.
+
+
+ Changes the default capacity (10000) to handle larger files
+
+
+ Create an array of records from an input stream
+
+ @param in the InputStream from which the records will be
+ obtained
+
+ @return an array of Records Created from the InputStream
+
+ @exception RecordFormatException on error Processing the
+ InputStream
+
+
+ Converts a {@link MulBlankRecord} into an equivalent array of {@link BlankRecord}s
+
+
+
+ RK record is a slightly smaller alternative to NumberRecord
+ POI likes NumberRecord better
+
+ The rk.
+
+
+
+
+ Converts a MulRKRecord into an equivalent array of NumberRecords
+
+ The MRK.
+
+
+
+ A stream based way to get at complete records, with
+ as low a memory footprint as possible.
+ This handles Reading from a RecordInputStream, turning
+ the data into full records, processing continue records
+ etc.
+ Most users should use {@link HSSFEventFactory} /
+ {@link HSSFListener} and have new records pushed to
+ them, but this does allow for a "pull" style of coding.
+
+
+ Keeps track of the sizes of the Initial records up to and including {@link FilePassRecord}
+ Needed for protected files because each byte is encrypted with respect to its absolute
+ position from the start of the stream.
+
+
+ @return last record scanned while looking for encryption info.
+ This will typically be the first or second record Read. Possibly null
+ if stream was empty
+
+
+ false in some test cases
+
+
+ Temporarily stores a group of {@link Record}s, for future return by {@link #nextRecord()}.
+ This is used at the start of the workbook stream, and also when the most recently read
+ underlying record is a {@link MulRKRecord}
+
+
+ used to help iterating over the unread records
+
+
+ The most recent record that we gave to the user
+
+
+ The most recent DrawingRecord seen
+
+
+ @param shouldIncludeContinueRecords caller can pass false if loose
+ {@link ContinueRecord}s should be skipped (this is sometimes useful in event based
+ processing).
+
+
+ Returns the next (complete) record from the
+ stream, or null if there are no more.
+
+
+ @return the next {@link Record} from the multiple record group as expanded from
+ a recently read {@link MulRKRecord}. null if not present.
+
+
+ @return the next available record, or null if
+ this pass didn't return a record that's
+ suitable for returning (eg was a continue record).
+
+
+ Title: Record Input Stream
+ Description: Wraps a stream and provides helper methods for the construction of records.
+
+ @author Jason Height (jheight @ apache dot org)
+
+
+ Maximum size of a single record (minus the 4 byte header) without a continue
+
+
+ Header {@link LittleEndianInput} facet of the wrapped {@link InputStream}
+
+
+ Data {@link LittleEndianInput} facet of the wrapped {@link InputStream}
+
+
+ the record identifier of the BIFF record currently being read
+
+
+ This method will Read a byte from the current record
+
+
+
+ @return the sid of the next record or {@link #INVALID_SID_VALUE} if at end of stream
+
+
+ Moves to the next record in the stream.
+
+ Note: The auto continue flag is Reset to true
+
+
+ Reads an 8 bit, signed value
+
+
+ Reads a 16 bit, signed value
+
+
+ Reads an 8 bit, Unsigned value
+
+
+ Reads a 16 bit,un- signed value.
+ @return
+
+
+ given a byte array of 16-bit Unicode Chars, compress to 8-bit and
+ return a string
+
+ { 0x16, 0x00 } -0x16
+
+ @param Length the Length of the string
+ @return the Converted string
+ @exception ArgumentException if len is too large (i.e.,
+ there is not enough data in string to Create a String of that
+ Length)
+
+
+ Returns the remaining bytes for the current record.
+
+ @return The remaining bytes of the current record.
+
+
+ Reads all byte data for the current record, including any
+ that overlaps into any following continue records.
+
+ @deprecated Best to write a input stream that wraps this one where there Is
+ special sub record that may overlap continue records.
+
+
+ The remaining number of bytes in the current record.
+
+ @return The number of bytes remaining in the current record
+
+
+ Returns true iif a Continue record is next in the excel stream _currentDataOffset
+
+ @return True when a ContinueRecord is next.
+
+
+ @return sid of next record. Can be called after hasNextRecord()
+
+
+ Title: RefMode Record
+ Description: Describes which reference mode to use
+ REFERENCE: PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a RefMode record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the reference mode to use (HSSF uses/assumes A1)
+ @return mode to use
+ @see #USE_A1_MODE
+ @see #USE_R1C1_MODE
+
+
+ Title: Refresh All Record
+ Description: Flag whether to refresh all external data when loading a sheet.
+ (which hssf doesn't support anyhow so who really cares?)
+ REFERENCE: PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a RefreshAll record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether to refresh all external data when loading a sheet
+ @return refreshall or not
+
+
+ Record for the right margin. * NOTE: This source was automatically generated. * @author Shawn Laubach (slaubach at apache dot org)
+
+
+ Constructs a RightMargin record and Sets its fields appropriately. * * @param id id must be 0x27 or an exception * will be throw upon validation * @param size size the size of the data area of the record * @param data data of the record (should not contain sid/len)
+
+
+ Get the margin field for the RightMargin record.
+
+
+ Title: RK Record
+ Description: An internal 32 bit number with the two most significant bits
+ storing the type. This is part of a bizarre scheme to save disk
+ space and memory (gee look at all the other whole records that
+ are in the file just "cause"..,far better to waste Processor
+ cycles on this then leave on of those "valuable" records out).
+ We support this in Read-ONLY mode. HSSF Converts these to NUMBER records
+
+
+
+ REFERENCE: PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+ @see org.apache.poi.hssf.record.NumberRecord
+
+
+ Constructs a RK record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the type of the number
+
+ @return one of these values:
+
+ - RK_IEEE_NUMBER
+ - RK_IEEE_NUMBER_TIMES_100
+ - RK_INTEGER
+ - RK_INTEGER_TIMES_100
+
+
+
+ Extract the value of the number
+
+ The mechanism for determining the value is dependent on the two
+ low order bits of the raw number. If bit 1 is Set, the number
+ is an integer and can be cast directly as a double, otherwise,
+ it's apparently the exponent and mantissa of a double (and the
+ remaining low-order bits of the double's mantissa are 0's).
+
+ If bit 0 is Set, the result of the conversion to a double Is
+ divided by 100; otherwise, the value is left alone.
+
+ [Insert picture of Screwy Squirrel in full Napoleonic regalia]
+
+ @return the value as a proper double (hey, it could
+ happen)
+
+
+
+ this record only used for record that has name and not implemented.
+
+
+
+ Title: Row Record
+ Description: stores the row information for the sheet.
+ REFERENCE: PG 379 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ The maximum row number that excel can handle (zero based) ie 65536 rows Is
+ max number of rows.
+
+
+ 16 bit options flags
+
+
+ Constructs a Row record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the logical row number for this row (0 based index)
+ @return row - the row number
+
+
+ Get the logical col number for the first cell this row (0 based index)
+ @return col - the col number
+
+
+ Get the logical col number for the last cell this row plus one (0 based index)
+ @return col - the last col number + 1
+
+
+ Get the height of the row
+ @return height of the row
+
+
+ Get whether to optimize or not (Set to 0)
+ @return optimize (Set to 0)
+
+
+ Gets the option bitmask. (use the individual bit Setters that refer to this
+ method)
+ @return options - the bitmask
+
+
+ Get the outline level of this row
+ @return ol - the outline level
+ @see #GetOptionFlags()
+
+
+ Get whether or not to colapse this row
+ @return c - colapse or not
+ @see #GetOptionFlags()
+
+
+ Get whether or not to Display this row with 0 height
+ @return - z height is zero or not.
+ @see #GetOptionFlags()
+
+
+ Get whether the font and row height are not compatible
+ @return - f -true if they aren't compatible (damn not logic)
+ @see #GetOptionFlags()
+
+
+ Get whether the row has been formatted (even if its got all blank cells)
+ @return formatted or not
+ @see #GetOptionFlags()
+
+
+ if the row is formatted then this is the index to the extended format record
+ @see org.apache.poi.hssf.record.ExtendedFormatRecord
+ @return index to the XF record or bogus value (undefined) if Isn't formatted
+
+
+ bit that specifies whether any cell in the row has a thick top border, or any
+ cell in the row directly above the current row has a thick bottom border.
+ @param f has thick top border
+
+
+ A bit that specifies whether any cell in the row has a medium or thick
+ bottom border, or any cell in the row directly below the current row has
+ a medium or thick top border.
+ @param f has thick bottom border
+
+
+ A bit that specifies whether the phonetic guide feature is enabled for
+ any cell in this row.
+ @param f use phoenetic guide
+
+
+ Title: Save Recalc Record
+ Description: defines whether to recalculate before saving (Set to true)
+ REFERENCE: PG 381 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs an SaveRecalc record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether to recalculate formulas/etc before saving or not
+ @return recalc - whether to recalculate or not
+
+
+ Title: Scenario Protect Record
+ Description: I have no idea what a Scenario is or why on would want to
+ protect it with the lamest "security" ever invented. However this record tells
+ excel "I want to protect my scenarios" (0xAF) with lame security. It appears
+ in conjunction with the PASSWORD and PROTECT records as well as its object
+ protect cousin.
+ REFERENCE: PG 383 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+
+
+ Constructs a Protect record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether the sheet is protected or not
+ @return whether to protect the sheet or not
+
+
+ * Specifies the window's zoom magnification. If this record Isn't present then the windows zoom is 100%. see p384 Excel Dev Kit
+ * NOTE: This source is automatically generated please do not modify this file. Either subclass or
+ * Remove the record in src/records/definitions.
+
+ * @author Andrew C. Oliver (acoliver at apache.org)
+
+
+ Constructs a SCL record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Size of record (exluding 4 byte header)
+
+
+ Get the numerator field for the SCL record.
+
+
+ Get the denominator field for the SCL record.
+
+
+ Title: Selection Record
+ Description: shows the user's selection on the sheet
+ for Write Set num refs to 0
+
+ TODO : Fully implement reference subrecords.
+ REFERENCE: PG 291 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+ Constructs a Selection record and Sets its fields appropriately.
+
+ the RecordInputstream to Read the record from
+
+
+
+ Gets or sets the pane this is for.
+
+ The pane.
+
+
+
+ Gets or sets the active cell row.
+
+ row number of active cell
+
+
+
+ Gets or sets the active cell's col
+
+ number of active cell
+
+
+
+ Gets or sets the active cell's reference number
+
+ ref number of active cell
+
+
+ Title: SharedFormulaRecord
+ Description: Primarily used as an excel optimization so that multiple similar formulas
+ are not written out too many times. We should recognize this record and
+ Serialize as Is since this Is used when Reading templates.
+
+ Note: the documentation says that the SID Is BC where biffviewer reports 4BC. The hex dump shows
+ that the two byte sid representation to be 'BC 04' that Is consistent with the other high byte
+ record types.
+ @author Danny Mui at apache dot org
+
+
+ @param in the RecordInputstream to Read the record from
+
+
+ print a sort of string representation ([SHARED FORMULA RECORD] id = x [/SHARED FORMULA RECORD])
+
+
+ @return the equivalent {@link Ptg} array that the formula would have, were it not shared.
+
+
+ Common base class for {@link SharedFormulaRecord}, {@link ArrayRecord} and
+ {@link TableRecord} which are have similarities.
+
+ @author Josh Micich
+
+
+ reads only the range (1 {@link CellRangeAddress8Bit}) from the stream
+
+
+ @return true if (rowIx, colIx) is within the range ({@link #Range})
+ of this shared value object.
+
+
+ @return true if (rowIx, colIx) describes the first cell in this shared value
+ object's range ({@link #Range})
+
+
+
+
+
+
+
+ Handles the task of deserializing a SST string. The two main entry points are
+
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Jason Height (jheight at apache.org)
+
+
+ This Is the starting point where strings are constructed. Note that
+ strings may span across multiple continuations. Read the SST record
+ carefully before beginning to hack.
+
+
+ Title: Static String Table Record
+
+ Description: This holds all the strings for LabelSSTRecords.
+
+ REFERENCE: PG 389 Microsoft Excel 97 Developer's Kit (ISBN:
+ 1-57231-498-2)
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Marc Johnson (mjohnson at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+
+ @see org.apache.poi.hssf.record.LabelSSTRecord
+ @see org.apache.poi.hssf.record.ContinueRecord
+
+
+ how big can an SST record be? As big as any record can be: 8228 bytes
+
+
+ standard record overhead: two shorts (record id plus data space size)
+
+
+ SST overhead: the standard record overhead, plus the number of strings and the number of Unique strings -- two ints
+
+
+ how much data can we stuff into an SST record? That would be _max minus the standard SST record overhead
+
+
+ Union of strings in the SST and EXTSST
+
+
+ according to docs ONLY SST
+
+
+ Offsets from the beginning of the SST record (even across continuations)
+
+
+ Offsets relative the start of the current SST or continue record
+
+
+ default constructor
+
+
+ Constructs an SST record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Add a string.
+
+ @param string string to be Added
+
+ @return the index of that string in the table
+
+
+ @return number of strings
+
+
+ @return number of Unique strings
+
+
+ Get a particular string by its index
+
+ @param id index into the array of strings
+
+ @return the desired string
+
+
+ Return a debugging string representation
+
+ @return string representation
+
+
+ @return sid
+
+
+ @return hashcode
+
+
+ @return an iterator of the strings we hold. All instances are
+ UnicodeStrings
+
+
+ @return count of the strings we hold.
+
+
+ called by the class that Is responsible for writing this sucker.
+ Subclasses should implement this so that their data Is passed back in a
+ byte array.
+
+ @return size
+
+
+ Creates an extended string record based on the current contents of
+ the current SST record. The offset within the stream to the SST record
+ Is required because the extended string record points directly to the
+ strings in the SST record.
+
+ NOTE: THIS FUNCTION MUST ONLY BE CALLED AFTER THE SST RECORD HAS BEEN
+ SERIALIZED.
+
+ @param sstOffset The offset in the stream to the start of the
+ SST record.
+ @return The new SST record.
+
+
+ Calculates the size in bytes of the EXTSST record as it would be if the
+ record was Serialized.
+
+ @return The size of the ExtSST record in bytes.
+
+
+ This class handles serialization of SST records. It utilizes the record processor
+ class write individual records. This has been refactored from the SSTRecord class.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ OffSets from the beginning of the SST record (even across continuations)
+
+
+ OffSets relative the start of the current SST or continue record
+
+
+ Subclasses of this class (the majority of BIFF records) are non-continuable. This allows for
+ some simplification of serialization logic
+
+ @author Josh Micich
+
+
+
+ Write the data content of this BIFF record including the sid and record length.
+ The subclass must write the exact number of bytes as reported by Record#getRecordSize()
+
+ offset
+ data
+
+
+
+ Write the data content of this BIFF record. The 'ushort sid' and 'ushort size' header fields
+ have already been written by the superclass.
+
+ The number of bytes written must equal the record size reported by
+ {@link Record#getDataSize()} minus four
+ ( record header consiting of a 'ushort sid' and 'ushort reclength' has already been written
+ by thye superclass).
+
+
+ Supports the STRING record structure.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Constructs a String record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ called by the class that Is responsible for writing this sucker.
+ Subclasses should implement this so that their data Is passed back in a
+ byte array.
+
+ @param offset to begin writing at
+ @param data byte array containing instance data
+ @return number of bytes written
+
+
+ return the non static version of the id for this record.
+
+
+ @return The string represented by this record.
+
+
+ Title: Style Record
+ Description: Describes a builtin to the gui or user defined style
+ REFERENCE: PG 390 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author aviks : string fixes for UserDefined Style
+ @version 2.0-pre
+
+
+ Constructs a Style record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ if this is a builtin style set the number of the built in style
+ @param builtinStyleId style number (0-7)
+
+
+
+ Get the actual index of the style extended format record
+ @see #Index
+ @return index of the xf record
+
+
+ Get the style's name
+ @return name of the style
+ @see #NameLength
+
+
+ Get the row or column level of the style (if builtin 1||2)
+
+
+
+ FtSbs structure
+
+
+
+ Subrecords are part of the OBJ class.
+
+
+ Wether this record terminates the sub-record stream.
+ There are two cases when this method must be overridden and return true
+ - EndSubRecord (sid = 0x00)
+ - LbsDataSubRecord (sid = 0x12)
+
+ @return whether this record is the last in the sub-record stream
+
+
+ Title: Sup Book (EXTERNALBOOK)
+ Description: A External Workbook Description (Suplemental Book)
+ Its only a dummy record for making new ExternSheet Record
+ REFERENCE: 5.38
+ @author Libin Roman (Vista Portal LDT. Developer)
+ @author Andrew C. Oliver (acoliver@apache.org)
+
+
+
+ Constructs a Extern Sheet record and Sets its fields appropriately.
+
+ @param id id must be 0x16 or an exception will be throw upon validation
+ @param size the size of the data area of the record
+ @param data data of the record (should not contain sid/len)
+
+
+ Title: Sheet Tab Index Array Record
+ Description: Contains an array of sheet id's. Sheets always keep their ID
+ regardless of what their name Is.
+ REFERENCE: PG 412 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a TabID record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Set the tab array. (0,1,2).
+ @param array of tab id's {0,1,2}
+
+
+ Get the tab array. (0,1,2).
+ @return array of tab id's {0,1,2}
+
+
+ DATATABLE (0x0236)
+
+ TableRecord - The record specifies a data table.
+ This record Is preceded by a single Formula record that
+ defines the first cell in the data table, which should
+ only contain a single Ptg, {@link TblPtg}.
+
+ See p536 of the June 08 binary docs
+
+
+ TABLESTYLES (0x088E)
+
+ @author Patrick Cheng
+
+
+ expect tRef, tRef3D, tArea, tArea3D or tName
+
+
+ Not clear if needed . Excel seems to be OK if this byte is not present.
+ Value is often the same as the earlier firstColumn byte.
+
+
+ Get the text orientation field for the TextObjectBase record.
+
+ @return a TextOrientation
+
+
+ @return the Horizontal text alignment field value.
+
+
+ @return the Vertical text alignment field value.
+
+
+ Text has been locked
+ @return the text locked field value.
+
+
+ Record for the top margin.
+ NOTE: This source was automatically generated.
+
+ @author Shawn Laubach (slaubach at apache dot org)
+
+
+ Constructs a TopMargin record and Sets its fields appropriately.
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the margin field for the TopMargin record.
+
+
+ Title: Uncalced Record
+
+ If this record occurs in the Worksheet Substream, it indicates that the formulas have not
+ been recalculated before the document was saved.
+
+ @author Olivier Leprince
+
+
+ Default constructor
+
+
+ Read constructor
+
+
+ Title: Unknown Record (for debugging)
+ Description: Unknown record just tells you the sid so you can figure out
+ what records you are missing. Also helps us Read/modify sheets we
+ don't know all the records to. (HSSF leaves these alone!)
+ Company: SuperLink Software, Inc.
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ @param id id of the record -not Validated, just stored for serialization
+ @param data the data
+
+
+ construct an Unknown record. No fields are interperated and the record will
+ be Serialized in its original form more or less
+ @param in the RecordInputstream to Read the record from
+
+
+ spit the record out AS IS. no interpretation or identification
+
+
+ print a sort of string representation ([UNKNOWN RECORD] id = x [/UNKNOWN RECORD])
+
+
+ These BIFF record types are known but still uninterpreted by POI
+
+ @return the documented name of this BIFF record type, null if unknown to POI
+
+
+ @return true if the unknown record id has been observed in POI unit tests
+
+
+ Unlike the other Record.Clone methods this Is a shallow Clone
+
+
+ The UserSViewBegin record specifies Settings for a custom view associated with the sheet.
+ This record also marks the start of custom view records, which save custom view Settings.
+ Records between {@link UserSViewBegin} and {@link UserSViewEnd} contain Settings for the custom view,
+ not Settings for the sheet itself.
+
+ @author Yegor Kozlov
+
+
+ construct an UserSViewBegin record. No fields are interpreted and the record will
+ be Serialized in its original form more or less
+ @param in the RecordInputstream to read the record from
+
+
+ spit the record out AS IS. no interpretation or identification
+
+
+ @return Globally unique identifier for the custom view
+
+
+ The UserSViewEnd record marks the end of the Settings for a custom view associated with the sheet
+
+ @author Yegor Kozlov
+
+
+ construct an UserSViewEnd record. No fields are interpreted and the record will
+ be Serialized in its original form more or less
+ @param in the RecordInputstream to read the record from
+
+
+ spit the record out AS IS. no interpretation or identification
+
+
+ Title: Use Natural Language Formulas Flag
+ Description: Tells the GUI if this was written by something that can use
+ "natural language" formulas. HSSF can't.
+ REFERENCE: PG 420 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a UseSelFS record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Title: VCenter record
+ Description: tells whether to center the sheet between vertical margins
+ REFERENCE: PG 420 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a VCENTER record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get whether to center vertically or not
+ @return vcenter or not
+
+
+ VerticalPageBreak record that stores page breaks at columns
+
+ This class Is just used so that SID Compares work properly in the RecordFactory
+ @see PageBreakRecord
+ @author Danny Mui (dmui at apache dot org)
+
+
+
+
+
+ @param in the RecordInputstream to Read the record from
+
+
+ Title: Window1 Record
+ Description: Stores the attributes of the workbook window. This Is basically
+ so the gui knows how big to make the window holding the spReadsheet
+ document.
+ REFERENCE: PG 421 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a WindowOne record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the horizontal position of the window (in 1/20ths of a point)
+ @return h - horizontal location
+
+
+ Get the vertical position of the window (in 1/20ths of a point)
+ @return v - vertical location
+
+
+ Get the width of the window
+ @return width
+
+
+ Get the height of the window
+ @return height
+
+
+ Get the options bitmask (see bit Setters)
+
+ @return o - the bitmask
+
+
+ Get whether the window Is hidden or not
+ @return Ishidden or not
+
+
+ Get whether the window has been iconized or not
+ @return iconize or not
+
+
+ Get whether to Display the horizontal scrollbar or not
+ @return Display or not
+
+
+ Get whether to Display the vertical scrollbar or not
+ @return Display or not
+
+
+ Get whether to Display the tabs or not
+ @return Display or not
+
+
+ @return the index of the currently Displayed sheet
+
+
+ @return the first visible sheet in the worksheet tab-bar.
+ I.E. the scroll position of the tab-bar.
+
+
+ Get the number of selected tabs
+ @return number of tabs
+
+
+ ratio of the width of the tabs to the horizontal scrollbar
+ @return ratio
+
+
+ Title: Window Protect Record
+ Description: flags whether workbook windows are protected
+ REFERENCE: PG 424 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ Constructs a WindowProtect record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Is this window protected or not
+
+ @return protected or not
+
+
+ Title: Window Two Record
+ Description: sheet window Settings
+ REFERENCE: PG 422 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a WindowTwo record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the options bitmask or just use the bit Setters.
+ @return options
+
+
+ Get whether the window should Display formulas
+ @return formulas or not
+
+
+ Get whether the window should Display gridlines
+ @return gridlines or not
+
+
+ Get whether the window should Display row and column headings
+ @return headings or not
+
+
+ Get whether the window should freeze panes
+ @return freeze panes or not
+
+
+ Get whether the window should Display zero values
+ @return zeros or not
+
+
+ Get whether the window should Display a default header
+ @return header or not
+
+
+ Is this arabic?
+ @return arabic or not
+
+
+ Get whether the outline symbols are displaed
+ @return symbols or not
+
+
+ freeze Unsplit panes or not
+ @return freeze or not
+
+
+ sheet tab Is selected
+ @return selected or not
+
+
+ Is the sheet currently Displayed in the window
+ @return Displayed or not
+
+
+ was the sheet saved in page break view
+ @return pagebreaksaved or not
+
+
+ Get the top row visible in the window
+ @return toprow
+
+
+ Get the leftmost column Displayed in the window
+ @return leftmost
+
+
+ Get the palette index for the header color
+ @return color
+
+
+ zoom magification in page break view
+ @return zoom
+
+
+ Get the zoom magnification in normal view
+ @return zoom
+
+
+ Get the reserved bits - why would you do this?
+ @return reserved stuff -probably garbage
+
+
+ Title: Write Access Record
+ Description: Stores the username of that who owns the spReadsheet generator
+ (on Unix the user's login, on Windoze its the name you typed when
+ you installed the thing)
+ REFERENCE: PG 424 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @version 2.0-pre
+
+
+ this record is always padded to a constant length
+
+
+ Constructs a WriteAccess record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get the username for the user that Created the report. HSSF uses the logged in user. On
+ natively Created M$ Excel sheet this would be the name you typed in when you installed it
+ in most cases.
+ @return username of the user who Is logged in (probably "tomcat" or "apache")
+
+
+ Title: Write Protect Record
+ Description: Indicated that the sheet/workbook Is Write protected.
+ REFERENCE: PG 425 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @version 3.0-pre
+
+
+ Constructs a WriteAccess record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Title: WSBool Record.
+ Description: stores workbook Settings (aka its a big "everything we didn't
+ put somewhere else")
+ REFERENCE: PG 425 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Glen Stampoultzis (gstamp@iprimus.com.au)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 2.0-pre
+
+
+ Constructs a WSBool record and Sets its fields appropriately.
+ @param in the RecordInputstream to Read the record from
+
+
+ Get first byte (see bit Getters)
+
+
+
+ Whether to show automatic page breaks or not
+
+
+
+
+ Whether sheet is a dialog sheet or not
+
+
+
+
+ Get if row summaries appear below detail in the outline
+
+
+
+
+ Get if col summaries appear right of the detail in the outline
+
+
+
+
+ Get the second byte (see bit Getters)
+
+
+
+
+ fit to page option is on
+
+
+
+
+ Whether to display the guts or not
+
+
+
+
+ whether alternate expression evaluation is on
+
+
+
+
+ whether alternative formula entry is on
+
+
+
+
+ The xtHeader.drType field MUST be equal to 0x07.
+
+
+
+
+ The xtHeader.drType field MUST be equal to 0x02.
+
+
+
+
+ The xtHeader.drType field MUST be equal to 0x03.
+
+
+
+
+ The xtHeader.drType field MUST be equal to 0x04.
+
+
+
+
+ The xtHeader.drType field MUST be equal to 0x01.
+
+
+
+
+ The xtHeader.drType field MUST be equal to 0x05.
+
+
+
+
+ An array of Unicode characters. The size of the array, in characters, is specified
+ by the cchValue field. The size of the field, in bytes, MUST equal the result of
+ the following formula:cchValue * 2.
+
+
+
+
+ The chartStyle.xtHeader.xmlTkTag MUST be equal to 0x0003.
+
+
+
+
+ The nInterval.xtHeader.xmlTkTag field MUST be equal to 0x0052.
+
+
+
+
+ @author Josh Micich
+
+
+ Creates a list constraint
+
+
+ Creates a number based data validation constraint. The text values entered for expr1 and expr2
+ can be either standard Excel formulas or formatted number values. If the expression starts
+ with '=' it is Parsed as a formula, otherwise it is Parsed as a formatted number.
+
+ @param validationType one of {@link NPOI.SS.UserModel.DataValidationConstraint.ValidationType#ANY},
+ {@link NPOI.SS.UserModel.DataValidationConstraint.ValidationType#DECIMAL},
+ {@link NPOI.SS.UserModel.DataValidationConstraint.ValidationType#INTEGER},
+ {@link NPOI.SS.UserModel.DataValidationConstraint.ValidationType#TEXT_LENGTH}
+ @param comparisonOperator any constant from {@link NPOI.SS.UserModel.DataValidationConstraint.OperatorType} enum
+ @param expr1 date formula (when first char is '=') or formatted number value
+ @param expr2 date formula (when first char is '=') or formatted number value
+
+
+ Creates a time based data validation constraint. The text values entered for expr1 and expr2
+ can be either standard Excel formulas or formatted time values. If the expression starts
+ with '=' it is Parsed as a formula, otherwise it is Parsed as a formatted time. To parse
+ formatted times, two formats are supported: "HH:MM" or "HH:MM:SS". This is contrary to
+ Excel which uses the default time format from the OS.
+
+ @param comparisonOperator constant from {@link NPOI.SS.UserModel.DataValidationConstraint.OperatorType} enum
+ @param expr1 date formula (when first char is '=') or formatted time value
+ @param expr2 date formula (when first char is '=') or formatted time value
+
+
+ Creates a date based data validation constraint. The text values entered for expr1 and expr2
+ can be either standard Excel formulas or formatted date values. If the expression starts
+ with '=' it is Parsed as a formula, otherwise it is Parsed as a formatted date (Excel uses
+ the same convention). To parse formatted dates, a date format needs to be specified. This
+ is contrary to Excel which uses the default short date format from the OS.
+
+ @param comparisonOperator constant from {@link NPOI.SS.UserModel.DataValidationConstraint.OperatorType} enum
+ @param expr1 date formula (when first char is '=') or formatted date value
+ @param expr2 date formula (when first char is '=') or formatted date value
+ @param dateFormat ignored if both expr1 and expr2 are formulas. Default value is "YYYY/MM/DD"
+ otherwise any other valid argument for SimpleDateFormat can be used
+ @see SimpleDateFormat
+
+
+ Distinguishes formula expressions from simple value expressions. This logic is only
+ required by a few factory methods in this class that create data validation constraints
+ from more or less the same parameters that would have been entered in the Excel UI. The
+ data validation dialog box uses the convention that formulas begin with '='. Other methods
+ in this class follow the POI convention (formulas and values are distinct), so the '='
+ convention is not used there.
+
+ @param textExpr a formula or value expression
+ @return all text After '=' if textExpr begins with '='. Otherwise null if textExpr does not begin with '='
+
+
+ @return null if numberStr is null
+
+
+ @return null if timeStr is null
+
+
+ @param dateFormat pass null for default YYYYMMDD
+ @return null if timeStr is null
+
+
+ Convenience method
+ @return true if this constraint is a 'list' validation
+
+
+ Convenience method
+ @return true if this constraint is a 'list' validation with explicit values
+
+
+ @return the numeric value for expression 1. May be null
+
+
+ @return the numeric value for expression 2. May be null
+
+
+ @return both Parsed formulas (for expression 1 and 2).
+
+
+ @return The Parsed token array representing the formula or value specified.
+ Empty array if both formula and value are null
+
+
+ Translates Graphics calls into escher calls. The translation Is lossy so
+ many features are not supported and some just aren't implemented yet. If
+ in doubt test the specific calls you wish to make. Graphics calls are
+ always performed into an EscherGroup so one will need to be Created.
+
+ Important:
+
+ One important concept worth considering Is that of font size. One of the
+ difficulties in Converting Graphics calls into escher Drawing calls Is that
+ Excel does not have the concept of absolute pixel positions. It measures
+ it's cell widths in 'Chars' and the cell heights in points.
+ Unfortunately it's not defined exactly what a type of Char it's
+ measuring. Presumably this Is due to the fact that the Excel will be
+ using different fonts on different platforms or even within the same
+ platform.
+
+ Because of this constraint we've had to calculate the
+ verticalPointsPerPixel. This the amount the font should be scaled by when
+ you Issue commands such as DrawString(). A good way to calculate this
+ Is to use the follow formula:
+
+
+ multipler = GroupHeightInPoints / heightOfGroup
+
+
+ The height of the Group Is calculated fairly simply by calculating the
+ difference between the y coordinates of the bounding box of the shape. The
+ height of the Group can be calculated by using a convenience called
+ HSSFClientAnchor.GetAnchorHeightInPoints().
+
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Construct an escher graphics object.
+
+ @param escherGroup The escher Group to Write the graphics calls into.
+ @param workbook The workbook we are using.
+ @param forecolor The foreground color to use as default.
+ @param verticalPointsPerPixel The font multiplier. (See class description for information on how this works.).
+
+
+ Constructs an escher graphics object.
+
+ @param escherGroup The escher Group to Write the graphics calls into.
+ @param workbook The workbook we are using.
+ @param foreground The foreground color to use as default.
+ @param verticalPointsPerPixel The font multiplier. (See class description for information on how this works.).
+ @param font The font to use.
+
+
+ Fills a (closed) polygon, as defined by a pair of arrays, which
+ hold the x and y coordinates.
+
+ This Draws the polygon, with nPoint line segments.
+ The first nPoint - 1 line segments are
+ Drawn between sequential points
+ (xPoints[i],yPoints[i],xPoints[i+1],yPoints[i+1]).
+ The line segment Is a closing one, from the last point to
+ the first (assuming they are different).
+
+ The area inside of the polygon Is defined by using an
+ even-odd Fill rule (also known as the alternating rule), and
+ the area inside of it Is Filled.
+ @param xPoints array of the x coordinates.
+ @param yPoints array of the y coordinates.
+ @param nPoints the total number of points in the polygon.
+ @see java.awt.Graphics#DrawPolygon(int[], int[], int)
+
+
+ Instances of this class keep track of multiple dependent cell evaluations due
+ to recursive calls to HSSFFormulaEvaluator.internalEvaluate().
+ The main purpose of this class Is to detect an attempt to evaluate a cell
+ that Is alReady being evaluated. In other words, it detects circular
+ references in spReadsheet formulas.
+
+ @author Josh Micich
+
+
+ Stores the parameters that identify the evaluation of one cell.
+
+
+ @return human Readable string for debug purposes
+
+
+ Notifies this evaluation tracker that evaluation of the specified cell Is
+ about to start.
+
+ In the case of a true return code, the caller should
+ continue evaluation of the specified cell, and also be sure to call
+ endEvaluate() when complete.
+
+ In the case of a false return code, the caller should
+ return an evaluation result of
+ ErrorEval.CIRCULAR_REF_ERROR, and not call endEvaluate().
+
+ @return true if the specified cell has not been visited yet in the current
+ evaluation. false if the specified cell Is alReady being evaluated.
+
+
+ Notifies this evaluation tracker that the evaluation of the specified
+ cell Is complete.
+
+ Every successful call to startEvaluate must be followed by a
+ call to endEvaluate (recommended in a finally block) to enable
+ proper tracking of which cells are being evaluated at any point in time.
+
+ Assuming a well behaved client, parameters to this method would not be
+ required. However, they have been included to assert correct behaviour,
+ and form more meaningful error messages.
+
+
+ This class makes an EvaluationCycleDetector instance available to
+ each thRead via a ThReadLocal in order to avoid Adding a parameter
+ to a few protected methods within HSSFFormulaEvaluator.
+
+ @author Josh Micich
+
+
+ @return
+
+
+
+ Stores width and height details about a font.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Construct the font details with the given name and height.
+
+ The font name.
+ The height of the font.
+
+
+
+ Gets the name of the font.
+
+
+
+
+
+ Gets the height.
+
+
+
+
+
+ Adds the char.
+
+ The c.
+ The width.
+
+
+
+ Retrieves the width of the specified Char. If the metrics for
+ a particular Char are not available it defaults to returning the
+ width for the 'W' Char.
+
+ The character.
+
+
+
+
+ Adds the chars.
+
+ The chars.
+ The widths.
+
+
+
+ Builds the font height property.
+
+ Name of the font.
+
+
+
+
+ Builds the font widths property.
+
+ Name of the font.
+
+
+
+
+ Builds the font chars property.
+
+ Name of the font.
+
+
+
+
+ Create an instance of
+ FontDetails
+ by loading them from the
+ provided property object.
+
+ the font name.
+ the property object holding the details of this
+ particular font.
+ a new FontDetails instance.
+
+
+
+ Gets the width of all Chars in a string.
+
+ The string to measure.
+ The width of the string for a 10 point font.
+
+
+
+ Split the given string into an array of strings using the given
+ delimiter.
+
+ The text.
+ The separator.
+ The max.
+
+
+
+
+ Common class for HSSFHeader and HSSFFooter
+
+
+
+ @return the internal text representation (combining center, left and right parts).
+ Possibly empty string if no header or footer is set. Never null.
+
+
+
+ Creates the complete footer string based on the left, center, and middle
+ strings.
+
+ The parts.
+
+
+
+ Sets the header footer text.
+
+ the new header footer text (contains mark-up tags). Possibly
+ empty string never
+
+
+
+ Get the left side of the header or footer.
+
+ The string representing the left side.
+
+
+
+ Get the center of the header or footer.
+
+ The string representing the center.
+
+
+
+ Get the right side of the header or footer.
+
+ The string representing the right side..
+
+
+
+ Returns the string that represents the change in font size.
+
+ the new font size.
+ The special string to represent a new font size
+
+
+
+ Returns the string that represents the change in font.
+
+ the new font.
+ the fonts style, one of regular, italic, bold, italic bold or bold italic.
+ The special string to represent a new font size
+
+
+
+ Returns the string representing the current page number
+
+ The special string for page number.
+
+
+
+ Returns the string representing the number of pages.
+
+ The special string for the number of pages.
+
+
+
+ Returns the string representing the current date
+
+ The special string for the date
+
+
+
+ Gets the time.
+
+ The time.
+ Returns the string representing the current time
+ @return The special string for the time
+
+
+
+ Returns the string representing the current file name
+
+ The special string for the file name.
+
+
+
+ Returns the string representing the current tab (sheet) name
+
+ The special string for tab name.
+
+
+
+ Returns the string representing the start bold
+
+ The special string for start bold
+
+
+
+ Returns the string representing the end bold
+
+ The special string for end bold.
+
+
+
+ Returns the string representing the start underline
+
+ The special string for start underline.
+
+
+
+ Returns the string representing the end underline
+
+ The special string for end underline.
+
+
+
+ Returns the string representing the start double underline
+
+ The special string for start double underline.
+
+
+
+ Returns the string representing the end double underline
+
+ The special string for end double underline.
+
+
+
+ Removes any fields (eg macros, page markers etc)
+ from the string.
+ Normally used to make some text suitable for showing
+ to humans, and the resultant text should not normally
+ be saved back into the document!
+
+ The text.
+
+
+
+
+ Are fields currently being Stripped from
+ the text that this {@link HeaderStories} returns?
+ Default is false, but can be changed
+
+ true if [are fields stripped]; otherwise, false.
+
+
+
+ Represents a special field in a header or footer,
+ eg the page number
+
+
+
+ The character sequence that marks this field
+
+
+
+ A special field that normally comes in a pair, eg
+ turn on underline / turn off underline
+
+
+
+
+ Instance to this class.
+
+
+
+
+ Explicit static constructor to tell C# compiler not to mark type as beforefieldinit.
+
+
+
+
+ Initialize AllFields.
+
+
+
+
+ Accessing the initialized instance.
+
+
+
+
+ Update formulas.
+
+
+
+
+
+
+ Update the formulas in specified row using the formula shifting policy specified by shifter
+
+ the row to update the formulas on
+ the formula shifting policy
+
+
+
+ Shift a formula using the supplied FormulaShifter
+
+ the row of the cell this formula belongs to. Used to get a reference to the parent workbook.
+ the formula to shift
+ the FormulaShifter object that operates on the parsed formula tokens
+ the shifted formula if the formula was changed, null if the formula wasn't modified
+
+
+ Helper for Shifting rows up or down
+
+ When possible, code should be implemented in the RowShifter abstract class to avoid duplication with {@link NPOI.XSSF.UserModel.helpers.XSSFRowShifter}
+
+
+
+ An anchor Is what specifics the position of a shape within a client object
+ or within another containing shape.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ The DX1.
+ The dy1.
+ The DX2.
+ The dy2.
+
+
+
+ Gets or sets the DX1.
+
+ The DX1.
+
+
+
+ Gets or sets the dy1.
+
+ The dy1.
+
+
+
+ Gets or sets the dy2.
+
+ The dy2.
+
+
+
+ Gets or sets the DX2.
+
+ The DX2.
+
+
+
+ Gets a value indicating whether this instance is horizontally flipped.
+
+
+ true if this instance is horizontally flipped; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is vertically flipped.
+
+
+ true if this instance is vertically flipped; otherwise, false.
+
+
+
+ High level representation for Border Formatting component
+ of Conditional Formatting Settings
+
+ @author Dmitriy Kumshayev
+
+
+
+
+ High level representation of a cell in a row of a spReadsheet.
+ Cells can be numeric, formula-based or string-based (text). The cell type
+ specifies this. String cells cannot conatin numbers and numeric cells cannot
+ contain strings (at least according to our model). Client apps should do the
+ conversions themselves. Formula cells have the formula string, as well as
+ the formula result, which can be numeric or string.
+ Cells should have their number (0 based) before being Added to a row. Only
+ cells that have values should be Added.
+
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Dan Sherman (dsherman at Isisph.com)
+ @author Brian Sanders (kestrel at burdell dot org) Active Cell support
+ @author Yegor Kozlov cell comments support
+
+
+
+
+ Creates new Cell - Should only be called by HSSFRow. This Creates a cell
+ from scratch.
+ When the cell is initially Created it is Set to CellType.Blank. Cell types
+ can be Changed/overwritten by calling SetCellValue with the appropriate
+ type as a parameter although conversions from one type to another may be
+ prohibited.
+
+ Workbook record of the workbook containing this cell
+ Sheet record of the sheet containing this cell
+ the row of this cell
+ the column for this cell
+
+
+
+ Creates new Cell - Should only be called by HSSFRow. This Creates a cell
+ from scratch.
+
+ Workbook record of the workbook containing this cell
+ Sheet record of the sheet containing this cell
+ the row of this cell
+ the column for this cell
+ CellType.Numeric, CellType.String, CellType.Formula, CellType.Blank,
+ CellType.Boolean, CellType.Error
+
+
+
+ Creates an Cell from a CellValueRecordInterface. HSSFSheet uses this when
+ reading in cells from an existing sheet.
+
+ Workbook record of the workbook containing this cell
+ Sheet record of the sheet containing this cell
+ the Cell Value Record we wish to represent
+
+
+ private constructor to prevent blank construction
+
+
+ used internally -- given a cell value record, figure out its type
+
+
+
+ the Workbook that this Cell is bound to
+
+
+
+
+ the HSSFRow this cell belongs to
+
+
+
+
+ Set the cells type (numeric, formula or string)
+
+ Type of the cell.
+
+
+
+ Sets the cell type. The SetValue flag indicates whether to bother about
+ trying to preserve the current value in the new record if one is Created.
+ The SetCellValue method will call this method with false in SetValue
+ since it will overWrite the cell value later
+
+ Type of the cell.
+ if set to true [set value].
+ The row.
+ The col.
+ Index of the style.
+
+
+
+ Get the cells type (numeric, formula or string)
+
+ The type of the cell.
+
+
+
+ Set a numeric value for the cell
+
+ the numeric value to Set this cell to. For formulas we'll Set the
+ precalculated value, for numerics we'll Set its value. For other types we
+ will Change the cell to a numeric cell and Set its value.
+
+
+
+ Set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as
+ a date.
+
+ the date value to Set this cell to. For formulas we'll Set the
+ precalculated value, for numerics we'll Set its value. For other types we
+ will Change the cell to a numeric cell and Set its value.
+
+
+
+ Set a string value for the cell. Please note that if you are using
+ full 16 bit Unicode you should call SetEncoding() first.
+
+ value to Set the cell to. For formulas we'll Set the formula
+ string, for String cells we'll Set its value. For other types we will
+ Change the cell to a string cell and Set its value.
+ If value is null then we will Change the cell to a Blank cell.
+
+
+ set a error value for the cell
+
+ @param errorCode the error value to set this cell to. For formulas we'll set the
+ precalculated value , for errors we'll set
+ its value. For other types we will change the cell to an error
+ cell and set its value.
+
+
+ set a error value for the cell
+
+ @param error the error value to set this cell to. For formulas we'll set the
+ precalculated value , for errors we'll set
+ its value. For other types we will change the cell to an error
+ cell and set its value.
+
+
+
+ Set a string value for the cell. Please note that if you are using
+ full 16 bit Unicode you should call SetEncoding() first.
+
+ value to Set the cell to. For formulas we'll Set the formula
+ string, for String cells we'll Set its value. For other types we will
+ Change the cell to a string cell and Set its value.
+ If value is null then we will Change the cell to a Blank cell.
+
+
+ Should be called any time that a formula could potentially be deleted.
+ Does nothing if this cell currently does not hold a formula
+
+
+
+ Gets or sets the cell formula.
+
+ The cell formula.
+
+
+
+ Called when this an array formula in this cell is deleted.
+
+ a customized exception message for the case if deletion of the cell is impossible. If null, a default message will be generated
+
+
+
+ Get the value of the cell as a number. For strings we throw an exception.
+ For blank cells we return a 0.
+
+ The numeric cell value.
+
+
+
+ Used to help format error messages
+
+ The cell type code.
+
+
+
+
+ Types the mismatch.
+
+ The expected type code.
+ The actual type code.
+ if set to true [is formula cell].
+
+
+
+
+ Checks the type of the formula cached value.
+
+ The expected type code.
+ The fr.
+
+
+
+ Get the value of the cell as a date. For strings we throw an exception.
+ For non-Numeric cells including blank cell we return a null.
+
+ The date cell value.
+
+
+
+ Get the value of the cell as a string - for numeric cells we throw an exception.
+ For blank cells we return an empty string.
+ For formulaCells that are not string Formulas, we return empty String
+
+ The string cell value.
+
+
+
+ Get the value of the cell as a string - for numeric cells we throw an exception.
+ For blank cells we return an empty string.
+ For formulaCells that are not string Formulas, we return empty String
+
+ The rich string cell value.
+
+
+
+ Set a bool value for the cell
+
+ the bool value to Set this cell to. For formulas we'll Set the
+ precalculated value, for bools we'll Set its value. For other types we
+ will Change the cell to a bool cell and Set its value.
+
+
+
+ Chooses a new bool value for the cell when its type is changing.
+ Usually the caller is calling SetCellType() with the intention of calling
+ SetCellValue(bool) straight afterwards. This method only exists to give
+ the cell a somewhat reasonable value until the SetCellValue() call (if at all).
+ TODO - perhaps a method like SetCellTypeAndValue(int, Object) should be introduced to avoid this
+
+
+
+
+
+ Get the value of the cell as a bool. For strings, numbers, and errors, we throw an exception.
+ For blank cells we return a false.
+
+ true if [boolean cell value]; otherwise, false.
+
+
+
+ Get the value of the cell as an error code. For strings, numbers, and bools, we throw an exception.
+ For blank cells we return a 0.
+
+ The error cell value.
+
+
+
+ Get the style for the cell. This is a reference to a cell style contained in the workbook
+ object.
+
+ The cell style.
+
+
+ Applying a user-defined style (UDS) is special. Excel does not directly reference user-defined styles, but
+ instead create a 'proxy' ExtendedFormatRecord referencing the UDS as parent.
+
+ The proceudre to apply a UDS is as follows:
+
+ 1. search for a ExtendedFormatRecord with parentIndex == style.getIndex()
+ and xfType == ExtendedFormatRecord.XF_CELL.
+ 2. if not found then create a new ExtendedFormatRecord and copy all attributes from the user-defined style
+ and set the parentIndex to be style.getIndex()
+ 3. return the index of the ExtendedFormatRecord, this will be assigned to the parent cell record
+
+ @param style the user style to apply
+
+ @return the index of a ExtendedFormatRecord record that will be referenced by the cell
+
+
+
+ Should only be used by HSSFSheet and friends. Returns the low level CellValueRecordInterface record
+
+ the cell via the low level api.
+
+
+
+ Checks the bounds.
+
+ The cell num.
+ if the bounds are exceeded.
+
+
+
+ Sets this cell as the active cell for the worksheet
+
+
+
+
+ Returns a string representation of the cell
+ This method returns a simple representation,
+ anthing more complex should be in user code, with
+ knowledge of the semantics of the sheet being Processed.
+ Formula cells return the formula string,
+ rather than the formula result.
+ Dates are Displayed in dd-MMM-yyyy format
+ Errors are Displayed as #ERR<errIdx>
+
+
+
+
+ Returns comment associated with this cell
+
+ The cell comment associated with this cell.
+
+
+
+ Removes the comment for this cell, if
+ there is one.
+
+ WARNING - some versions of excel will loose
+ all comments after performing this action!
+
+
+
+ Gets the index of the column.
+
+ The index of the column.
+
+
+ Updates the cell record's idea of what
+ column it belongs in (0 based)
+ @param num the new cell number
+
+
+
+ Gets the (zero based) index of the row containing this cell
+
+ The index of the row.
+
+
+
+ Get or set hyperlink associated with this cell
+ If the supplied hyperlink is null on setting, the hyperlink for this cell will be removed.
+
+ The hyperlink associated with this cell or null if not found
+
+
+
+ Removes the hyperlink for this cell, if there is one.
+
+
+
+
+ Only valid for formula cells
+
+ one of (CellType.Numeric,CellType.String, CellType.Boolean, CellType.Error) depending
+ on the cached value of the formula
+
+
+
+ The purpose of this method is to validate the cell state prior to modification
+
+
+
+
+
+ Called when this cell is modified.
+ The purpose of this method is to validate the cell state prior to modification.
+
+
+
+
+ High level representation of the style of a cell in a sheet of a workbook.
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+
+
+ Initializes a new instance of the class.
+
+ The index.
+ The record.
+ The workbook.
+
+
+
+ Initializes a new instance of the class.
+
+ The index.
+ The record.
+ The workbook.
+
+
+
+ Get the index within the HSSFWorkbook (sequence within the collection of ExtnededFormat objects)
+
+ Unique index number of the Underlying record this style represents (probably you don't care
+ Unless you're comparing which one is which)
+
+
+
+ Gets the parent style.
+
+ the parent style for this cell style.
+ In most cases this will be null, but in a few
+ cases there'll be a fully defined parent.
+
+
+
+ Get the index of the format
+
+ The data format.
+
+
+
+ Get the contents of the format string, by looking up
+ the DataFormat against the bound workbook
+
+
+
+
+
+ Get the contents of the format string, by looking up the DataFormat against the supplied workbook
+
+ The workbook
+ the format string or "General" if not found
+
+
+
+ Get the contents of the format string, by looking up
+ the DataFormat against the supplied workbook
+
+ The internal workbook.
+
+
+
+
+ Set the font for this style
+
+ a font object Created or retreived from the HSSFWorkbook object
+
+
+
+ Gets the index of the font for this style.
+
+ The index of the font.
+
+
+
+ Gets the font for this style
+
+ The parent workbook that this style belongs to.
+
+
+
+
+ Get whether the cell's using this style are to be hidden
+
+ whether the cell using this style should be hidden
+
+
+
+ Get whether the cell's using this style are to be locked
+
+ whether the cell using this style should be locked
+
+
+
+ Turn on or off "Quote Prefix" or "123 Prefix" for the style,
+ which is used to tell Excel that the thing which looks like
+ a number or a formula shouldn't be treated as on.
+
+ Is "Quote Prefix" or "123 Prefix" enabled for the cell?
+
+
+
+ Get the type of horizontal alignment for the cell
+
+ the type of alignment
+
+
+
+ Gets or sets a value indicating whether the text should be wrapped
+
+ true if [wrap text]; otherwise, false.
+
+
+
+ Gets or sets the vertical alignment for the cell.
+
+ the type of alignment
+
+
+
+ Gets or sets the degree of rotation for the text in the cell
+
+ Note: HSSF uses values from -90 to 90 degrees, whereas XSSF
+ uses values from 0 to 180 degrees.The implementations of this method will map between these two value-ranges
+ accordingly, however the corresponding getter is returning values in the range mandated by the current type
+ of Excel file-format that this CellStyle is applied to.
+
+ The rotation degrees (between -90 and 90 degrees).
+
+
+
+ Verifies that this style belongs to the supplied Workbook.
+ Will throw an exception if it belongs to a different one.
+ This is normally called when trying to assign a style to a
+ cell, to ensure the cell and the style are from the same
+ workbook (if they're not, it won't work)
+
+ The workbook.
+
+
+
+ Gets or sets the number of spaces to indent the text in the cell
+
+ number of spaces
+
+
+
+ Gets or sets the type of border to use for the left border of the cell
+
+ The border type.
+
+
+
+ Gets or sets the type of border to use for the right border of the cell
+
+ The border type.
+
+
+
+ Gets or sets the type of border to use for the top border of the cell
+
+ The border type.
+
+
+
+ Gets or sets the type of border to use for the bottom border of the cell
+
+ The border type.
+
+
+
+ Gets or sets the color to use for the left border
+
+ The index of the color definition
+
+
+
+ Gets or sets the color to use for the left border.
+
+ The index of the color definition
+
+
+
+ Gets or sets the color to use for the top border
+
+ The index of the color definition.
+
+
+
+ Gets or sets the color to use for the left border
+
+ The index of the color definition.
+
+
+
+ Gets or sets the color to use for the diagional border
+
+ The index of the color definition.
+
+
+
+ Gets or sets the line type to use for the diagional border
+
+ The line type.
+
+
+
+ Gets or sets the type of diagional border
+ .
+ The border diagional type.
+
+
+
+ Gets or sets whether the cell is shrink-to-fit
+
+
+
+ Get or set the reading order, for RTL/LTR ordering of
+ the text.
+ 0 means Context (Default), 1 means Left To Right,
+ and 2 means Right to Left
+
+ @return order - the reading order (0,1,2)
+
+
+
+ Gets or sets the fill pattern. - Set to 1 to Fill with foreground color
+
+ The fill pattern.
+
+
+
+ Checks if the background and foreground Fills are Set correctly when one
+ or the other is Set to the default color.
+ Works like the logic table below:
+ BACKGROUND FOREGROUND
+ NONE AUTOMATIC
+ 0x41 0x40
+ NONE RED/ANYTHING
+ 0x40 0xSOMETHING
+
+
+
+ Clones all the style information from another
+ HSSFCellStyle, onto this one. This
+ HSSFCellStyle will then have all the same
+ properties as the source, but the two may
+ be edited independently.
+ Any stylings on this HSSFCellStyle will be lost!
+
+ The source HSSFCellStyle could be from another
+ HSSFWorkbook if you like. This allows you to
+ copy styles from one HSSFWorkbook to another.
+
+
+
+ Clones all the style information from another
+ HSSFCellStyle, onto this one. This
+ HSSFCellStyle will then have all the same
+ properties as the source, but the two may
+ be edited independently.
+ Any stylings on this HSSFCellStyle will be lost!
+ The source HSSFCellStyle could be from another
+ HSSFWorkbook if you like. This allows you to
+ copy styles from one HSSFWorkbook to another.
+
+ The source.
+
+
+
+ Gets or sets the color of the fill background.
+
+ The color of the fill background.
+ Set the background Fill color.
+
+ cs.SetFillPattern(HSSFCellStyle.FINE_DOTS );
+ cs.SetFillBackgroundColor(new HSSFColor.RED().Index);
+ optionally a Foreground and background Fill can be applied:
+ Note: Ensure Foreground color is Set prior to background
+ cs.SetFillPattern(HSSFCellStyle.FINE_DOTS );
+ cs.SetFillForegroundColor(new HSSFColor.BLUE().Index);
+ cs.SetFillBackgroundColor(new HSSFColor.RED().Index);
+ or, for the special case of SOLID_Fill:
+ cs.SetFillPattern(HSSFCellStyle.SOLID_FOREGROUND );
+ cs.SetFillForegroundColor(new HSSFColor.RED().Index);
+ It is necessary to Set the Fill style in order
+ for the color to be shown in the cell.
+
+
+
+
+ Gets or sets the foreground Fill color
+
+ Fill color.
+ @see org.apache.poi.hssf.usermodel.HSSFPalette#GetColor(short)
+
+
+ Gets the name of the user defined style.
+ Returns null for built in styles, and
+ styles where no name has been defined
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+
+ true if the specified is equal to the current ; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+ Has methods for construction of a chart object.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Creates a bar chart. API needs some work. :)
+
+ NOTE: Does not yet work... checking it in just so others
+ can take a look.
+
+
+ Returns all the charts for the given sheet.
+
+ NOTE: You won't be able to do very much with
+ these charts yet, as this is very limited support
+
+
+ Get the X offset of the chart
+
+
+ Get the Y offset of the chart
+
+
+ Get the width of the chart. {@link ChartRecord}
+
+
+ Get the height of the chart. {@link ChartRecord}
+
+
+ Returns the series of the chart
+
+
+ Returns the chart's title, if there is one,
+ or null if not
+
+
+ Set value range (basic Axis Options)
+ @param axisIndex 0 - primary axis, 1 - secondary axis
+ @param minimum minimum value; Double.NaN - automatic; null - no change
+ @param maximum maximum value; Double.NaN - automatic; null - no change
+ @param majorUnit major unit value; Double.NaN - automatic; null - no change
+ @param minorUnit minor unit value; Double.NaN - automatic; null - no change
+
+
+ A series in a chart
+
+
+ See {@link SeriesRecord}
+
+
+ Returns the series' title, if there is one,
+ or null if not
+
+
+ @return record with data names
+
+
+ @return record with data values
+
+
+ @return record with data category labels
+
+
+ @return record with data secondary category labels
+
+
+ @return record with series
+
+
+ create anchor from existing file
+ @param escherChildAnchorRecord
+
+
+ create anchor from scratch
+ @param dx1 x coordinate of the left up corner
+ @param dy1 y coordinate of the left up corner
+ @param dx2 x coordinate of the right down corner
+ @param dy2 y coordinate of the right down corner
+
+
+ @param dx1 x coordinate of the left up corner
+ @param dy1 y coordinate of the left up corner
+ @param dx2 x coordinate of the right down corner
+ @param dy2 y coordinate of the right down corner
+
+
+
+ A client anchor Is attached to an excel worksheet. It anchors against a
+ top-left and buttom-right cell.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Creates a new client anchor and defaults all the anchor positions to 0.
+
+
+
+
+ Creates a new client anchor and Sets the top-left and bottom-right
+ coordinates of the anchor.
+
+ Note: Microsoft Excel seems to sometimes disallow
+ higher y1 than y2 or higher x1 than x2 in the anchor, you might need to
+ reverse them and draw shapes vertically or horizontally flipped!
+
+ the x coordinate within the first cell.
+ the y coordinate within the first cell.
+ the x coordinate within the second cell.
+ the y coordinate within the second cell.
+ the column (0 based) of the first cell.
+ the row (0 based) of the first cell.
+ the column (0 based) of the second cell.
+ the row (0 based) of the second cell.
+
+
+
+ Calculates the height of a client anchor in points.
+
+ the sheet the anchor will be attached to
+ the shape height.
+
+
+
+ Gets the row height in points.
+
+ The sheet.
+ The row num.
+
+
+
+
+ Gets or sets the col1.
+
+ The col1.
+
+
+
+ Gets or sets the col2.
+
+ The col2.
+
+
+
+ Gets or sets the row1.
+
+ The row1.
+
+
+
+ Gets or sets the row2.
+
+ The row2.
+
+
+
+ Sets the top-left and bottom-right
+ coordinates of the anchor
+
+ Note: Microsoft Excel seems to sometimes disallow
+ higher y1 than y2 or higher x1 than x2 in the anchor, you might need to
+ reverse them and draw shapes vertically or horizontally flipped!
+
+ the column (0 based) of the first cell.
+ the row (0 based) of the first cell.
+ the x coordinate within the first cell.
+ the y coordinate within the first cell.
+ the column (0 based) of the second cell.
+ the row (0 based) of the second cell.
+ the x coordinate within the second cell.
+ the y coordinate within the second cell.
+
+
+
+ Gets a value indicating whether this instance is horizontally flipped.
+
+
+ true if the anchor goes from right to left; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is vertically flipped.
+
+
+ true if the anchor goes from bottom to top.; otherwise, false.
+
+
+
+
+ Gets the anchor type
+ 0 = Move and size with Cells, 2 = Move but don't size with cells, 3 = Don't move or size with cells.
+
+ The type of the anchor.
+
+
+
+ Checks the range.
+
+ The value.
+ The min range.
+ The max range.
+ Name of the variable.
+
+
+ Given a 16-bit unsigned integer stored in a short, return the unsigned value.
+
+ @param s A 16-bit value intended to be interpreted as an unsigned integer.
+ @return The value represented by s.
+
+
+ High level representation for Color Scale / Color Gradient
+ Formatting component of Conditional Formatting Settings
+
+
+
+ Represents a cell comment - a sticky note associated with a cell.
+ @author Yegor Kozlov
+
+
+
+
+ Construct a new comment with the given parent and anchor.
+
+
+ defines position of this anchor in the sheet
+
+
+
+ Initializes a new instance of the class.
+
+ The note.
+ The txo.
+
+
+
+ Gets or sets a value indicating whether this is visible.
+
+ true if visible; otherwise, false.
+ Sets whether this comment Is visible.
+ @return
+ true
+ if the comment Is visible,
+ false
+ otherwise
+
+
+
+ Gets or sets the row of the cell that Contains the comment
+
+ the 0-based row of the cell that Contains the comment
+
+
+
+ Gets or sets the column of the cell that Contains the comment
+
+ the 0-based column of the cell that Contains the comment
+
+
+
+ Gets or sets the name of the original comment author
+
+ the name of the original author of the comment
+
+
+
+ Gets the note record.
+
+ the underlying Note record.
+
+
+ Do we know which cell this comment belongs to?
+
+
+
+ HSSFConditionalFormatting class encapsulates all Settings of Conditional Formatting.
+ The class can be used to make a copy HSSFConditionalFormatting Settings
+
+
+ HSSFConditionalFormatting cf = sheet.GetConditionalFormattingAt(index);
+ newSheet.AddConditionalFormatting(cf);
+ or to modify existing Conditional Formatting Settings (formatting regions and/or rules).
+ Use {@link HSSFSheet#GetConditionalFormattingAt(int)} to Get access to an instance of this class.
+ To Create a new Conditional Formatting Set use the following approach:
+
+ // Define a Conditional Formatting rule, which triggers formatting
+ // when cell's value Is greater or equal than 100.0 and
+ // applies patternFormatting defined below.
+ HSSFConditionalFormattingRule rule = sheet.CreateConditionalFormattingRule(
+ ComparisonOperator.GE,
+ "100.0", // 1st formula
+ null // 2nd formula Is not used for comparison operator GE
+ );
+ // Create pattern with red background
+ HSSFPatternFormatting patternFmt = rule.cretePatternFormatting();
+ patternFormatting.SetFillBackgroundColor(HSSFColor.RED.index);
+ // Define a region containing first column
+ Region [] regions =
+ {
+ new Region(1,(short)1,-1,(short)1)
+ };
+ // Apply Conditional Formatting rule defined above to the regions
+ sheet.AddConditionalFormatting(regions, rule);
+
+ @author Dmitriy Kumshayev
+
+
+
+ Initializes a new instance of the class.
+
+ The workbook.
+ The cf aggregate.
+
+
+
+ Gets the CF records aggregate.
+
+
+
+
+
+ Gets array of CellRangeAddresses
+
+
+
+
+
+ Replaces an existing Conditional Formatting rule at position idx.
+ Excel allows to Create up to 3 Conditional Formatting rules.
+ This method can be useful to modify existing Conditional Formatting rules.
+
+ position of the rule. Should be between 0 and 2.
+ Conditional Formatting rule
+
+
+
+ Add a Conditional Formatting rule.
+ Excel allows to Create up to 3 Conditional Formatting rules.
+
+ Conditional Formatting rule
+
+
+
+ Gets the Conditional Formatting rule at position idx
+
+ The index.
+
+
+
+
+ Gets the number of Conditional Formatting rules.
+
+ The number of rules.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ High level representation of Conditional Formatting Rule.
+ It allows to specify formula based conditions for the Conditional Formatting
+ and the formatting Settings such as font, border and pattern.
+
+ @author Dmitriy Kumshayev
+
+
+ @return - font formatting object if defined, null otherwise
+
+
+ Create a new font formatting structure if it does not exist,
+ otherwise just return existing object.
+ @return - font formatting object, never returns null.
+
+
+ @return - border formatting object if defined, null otherwise
+
+
+ Create a new border formatting structure if it does not exist,
+ otherwise just return existing object.
+ @return - border formatting object, never returns null.
+
+
+ @return - pattern formatting object if defined, null otherwise
+
+
+ Create a new pattern formatting structure if it does not exist,
+ otherwise just return existing object.
+ @return - pattern formatting object, never returns null.
+
+
+ @return databar / data-bar formatting object if defined, null otherwise
+
+
+ create a new databar / data-bar formatting object if it does not exist,
+ otherwise just return the existing object.
+
+
+ @return icon / multi-state formatting object if defined, null otherwise
+
+
+ create a new icon / multi-state formatting object if it does not exist,
+ otherwise just return the existing object.
+
+
+ @return color scale / gradient formatting object if defined, null otherwise
+
+
+ create a new color scale / gradient formatting object if it does not exist,
+ otherwise just return the existing object.
+
+
+ @return - the conditiontype for the cfrule
+
+
+ @return - the comparisionoperatation for the cfrule
+
+
+ High level representation for Icon / Multi-State / Databar /
+ Colour Scale change thresholds
+
+
+ Creates a HSSFFormulaEvaluator, the object that Evaluates formula cells.
+
+ @return a HSSFFormulaEvaluator instance
+
+
+ Creates a HSSFClientAnchor. Use this object to position drawing object in a sheet
+
+ @return a HSSFClientAnchor instance
+ @see NPOI.SS.usermodel.Drawing
+
+
+ High level representation for DataBar / Data-Bar Formatting
+ component of Conditional Formatting Settings
+
+
+
+
+ Identifies both built-in and user defined formats within a workbook.
+
+
+ See for a list of supported built-in formats.
+
+
+ International Formats
+ Since version 2003 Excel has supported international formats. These are denoted
+ with a prefix "[$-xxx]" (where xxx is a 1-7 digit hexadecimal number).
+ See the Microsoft article
+
+ Creating international number formats
+ for more details on these codes.
+
+
+
+
+
+ Construncts a new data formatter. It takes a workbook to have
+ access to the workbooks format records.
+
+ the workbook the formats are tied to.
+
+
+
+ Get the format index that matches the given format string
+ Automatically Converts "text" to excel's format string to represent text.
+
+ The format string matching a built in format.
+ index of format or -1 if Undefined.
+
+
+
+ Get the format index that matches the given format
+ string, creating a new format entry if required.
+ Aliases text to the proper format as required.
+
+ The format string matching a built in format.
+ index of format.
+
+
+
+ Get the format string that matches the given format index
+
+ The index of a format.
+ string represented at index of format or null if there Is not a format at that index
+
+
+
+ Get the format string that matches the given format index
+
+ The index of a built in format.
+ string represented at index of format or null if there Is not a builtin format at that index
+
+
+
+ Get the number of builtin and reserved builtinFormats
+
+ number of builtin and reserved builtinFormats
+
+
+
+ Ensures that the formats list can hold entries
+ up to and including the entry with this index
+
+
+
+
+ HSSFDataFormatter contains methods for formatting the value stored in an
+ HSSFCell. This can be useful for reports and GUI presentations when you
+ need to display data exactly as it appears in Excel. Supported formats
+ include currency, SSN, percentages, decimals, dates, phone numbers, zip
+ codes, etc.
+
+ Internally, formats will be implemented using subclasses of
+ such as and . Therefore the
+ formats used by this class must obey the same pattern rules as these Format
+ subclasses. This means that only legal number pattern characters ("0", "#",
+ ".", "," etc.) may appear in number formats. Other characters can be
+ inserted before or after the number pattern to form a
+ prefix or suffix.
+
+ For example the Excel pattern "$#,##0.00 "USD"_);($#,##0.00 "USD")"
+ will be correctly formatted as "$1,000.00 USD" or "($1,000.00 USD)".
+ However the pattern "00-00-00" is incorrectly formatted by
+ DecimalFormat as "000000--". For Excel formats that are not compatible with
+ DecimalFormat, you can provide your own custom {@link Format} implementation
+ via HSSFDataFormatter.AddFormat(String,Format). The following
+ custom formats are already provided by this class:
+
+
+
- SSN "000-00-0000"
+ - Phone Number "(###) ###-####"
+ - Zip plus 4 "00000-0000"
+
+
+
+ If the Excel format pattern cannot be parsed successfully, then a default
+ format will be used. The default number format will mimic the Excel General
+ format: "#" for whole numbers and "#.##########" for decimal numbers. You
+ can override the default format pattern with
+ HSSFDataFormatter.DefaultNumberFormat=(Format). Note: the
+ default format will only be used when a Format cannot be created from the
+ cell's data format string.
+
+ @author James May (james dot may at fmr dot com)
+
+
+ Creates a formatter using the given locale.
+
+
+ Creates a formatter using the {@link Locale#getDefault() default locale}.
+
+
+ Utility class for creating data validation cells
+
+ @author Dragos Buleandra (dragos.buleandra@trade2b.ro)
+
+
+ Constructor which Initializes the cell range on which this object will be
+ applied
+
+ @param regions A list of regions where the constraint is validated.
+ @param constraint The constraints to apply for this validation.
+
+
+ @author Radhakrishnan J
+
+
+
+ Contains methods for dealing with Excel dates.
+
+ @author Michael Harhen
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Dan Sherman (dsherman at isisph.com)
+ @author Hack Kampbjorn (hak at 2mba.dk)
+ @author Alex Jacoby (ajacoby at gmail.com)
+ @author Pavel Krupets (pkrupets at palmtreebusiness dot com)
+
+
+
+ HSSF wrapper for a cell under evaluation
+ @author Josh Micich
+
+
+
+ HSSF wrapper for a sheet under evaluation
+
+ @author Josh Micich
+
+
+ Internal POI use only
+
+ @author Josh Micich
+
+
+
+ Return an external name (named range, function, user-defined function) Ptg
+
+
+
+
+
+
+ The HSSF file format normally stores Color information in the
+ Palette (see PaletteRecord), but for a few cases (eg Conditional
+ Formatting, Sheet Extensions), this XSSF-style color record
+ can be used.
+
+
+
+ Represents a Font used in a workbook.
+ @version 1.0-pre
+ @author Andrew C. Oliver
+
+
+
+
+ Initializes a new instance of the class.
+
+ The index.
+ The record.
+
+
+
+ Get the name for the font (i.e. Arial)
+
+ the name of the font to use
+
+
+
+ Get the index within the HSSFWorkbook (sequence within the collection of Font objects)
+
+ Unique index number of the Underlying record this Font represents (probably you don't care
+ Unless you're comparing which one is which)
+
+
+
+ Get or sets the font height in Unit's of 1/20th of a point. Maybe you might want to
+ use the GetFontHeightInPoints which matches to the familiar 10, 12, 14 etc..
+
+ height in 1/20ths of a point.
+
+
+
+ Gets or sets the font height in points.
+
+ height in the familiar Unit of measure - points.
+
+
+
+ Gets or sets whether to use italics or not
+
+ true if this instance is italic; otherwise, false.
+
+
+
+ Get whether to use a strikeout horizontal line through the text or not
+
+
+ strikeout or not
+
+
+
+
+ Gets or sets the color for the font.
+
+ The color to use.
+
+
+
+ get the color value for the font
+
+ HSSFWorkbook
+
+
+
+
+ Gets or sets the boldness to use
+
+ The boldweight.
+
+
+ get or set if the font bold style
+
+
+
+ Gets or sets normal,base or subscript.
+
+ offset type to use (none,base,sub)
+
+
+
+ Gets or sets the type of text Underlining to use
+
+ The Underlining type.
+
+
+
+ Gets or sets the char set to use.
+
+ The char set.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+
+ true if the specified is equal to the current ; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+ High level representation for Font Formatting component
+ of Conditional Formatting Settings
+
+ @author Dmitriy Kumshayev
+
+
+
+ Get the type of base or subscript for the font
+
+ @return base or subscript option
+
+
+ @return font color index
+
+
+ Gets the height of the font in 1/20th point Units
+
+ @return fontheight (in points/20); or -1 if not modified
+
+
+ Get the font weight for this font (100-1000dec or 0x64-0x3e8). Default Is
+ 0x190 for normal and 0x2bc for bold
+
+ @return bw - a number between 100-1000 for the fonts "boldness"
+
+
+ @return
+ @see org.apache.poi.hssf.record.cf.FontFormatting#GetRawRecord()
+
+
+ Get the type of Underlining for the font
+
+ @return font Underlining type
+
+ @see #U_NONE
+ @see #U_SINGLE
+ @see #U_DOUBLE
+ @see #U_SINGLE_ACCOUNTING
+ @see #U_DOUBLE_ACCOUNTING
+
+
+ Get whether the font weight Is Set to bold or not
+
+ @return bold - whether the font Is bold or not
+
+
+ @return true if escapement type was modified from default
+
+
+ @return true if font cancellation was modified from default
+
+
+ @return true if font outline type was modified from default
+
+
+ @return true if font shadow type was modified from default
+
+
+ @return true if font style was modified from default
+
+
+ @return true if font style was Set to italic
+
+
+ @return true if font outline Is on
+
+
+ @return true if font shadow Is on
+
+
+ @return true if font strikeout Is on
+
+
+ @return true if font Underline type was modified from default
+
+
+ @return true if font weight was modified from default
+
+
+ Set font style options.
+
+ @param italic - if true, Set posture style to italic, otherwise to normal
+ @param bold- if true, Set font weight to bold, otherwise to normal
+
+
+ Set font style options to default values (non-italic, non-bold)
+
+
+
+ Class to Read and manipulate the footer.
+ The footer works by having a left, center, and right side. The total cannot
+ be more that 255 bytes long. One uses this class by Getting the HSSFFooter
+ from HSSFSheet and then Getting or Setting the left, center, and right side.
+ For special things (such as page numbers and date), one can use a the methods
+ that return the Chars used to represent these. One can also Change the
+ fonts by using similar methods.
+ @author Shawn Laubach (slaubach at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ Footer record to create the footer with
+
+
+
+ Gets the raw footer.
+
+ The raw footer.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @param stabilityClassifier used to optimise caching performance. Pass null
+ for the (conservative) assumption that any cell may have its definition changed after
+ evaluation begins.
+
+
+ @param udfFinder pass null for default (AnalysisToolPak only)
+
+
+ @param stabilityClassifier used to optimise caching performance. Pass null
+ for the (conservative) assumption that any cell may have its definition changed after
+ evaluation begins.
+ @param udfFinder pass null for default (AnalysisToolPak only)
+
+
+ Coordinates several formula evaluators together so that formulas that involve external
+ references can be evaluated.
+ @param workbookNames the simple file names used to identify the workbooks in formulas
+ with external links (for example "MyData.xls" as used in a formula "[MyData.xls]Sheet1!A1")
+ @param evaluators all evaluators for the full set of workbooks required by the formulas.
+
+
+ Should be called to tell the cell value cache that the specified (value or formula) cell
+ has changed.
+ Failure to call this method after changing cell values will cause incorrect behaviour
+ of the evaluate~ methods of this class
+
+
+ Should be called to tell the cell value cache that the specified cell has just been
+ deleted.
+ Failure to call this method after changing cell values will cause incorrect behaviour
+ of the evaluate~ methods of this class
+
+
+ Should be called to tell the cell value cache that the specified (value or formula) cell
+ has changed.
+ Failure to call this method after changing cell values will cause incorrect behaviour
+ of the evaluate~ methods of this class
+
+
+ Returns a CellValue wrapper around the supplied ValueEval instance.
+ @param cell
+
+
+ If cell Contains formula, it Evaluates the formula, and
+ puts the formula result back into the cell, in place
+ of the old formula.
+ Else if cell does not contain formula, this method leaves
+ the cell UnChanged.
+ Note that the same instance of Cell is returned to
+ allow chained calls like:
+
+ int EvaluatedCellType = evaluator.EvaluateInCell(cell).CellType;
+
+ Be aware that your cell value will be Changed to hold the
+ result of the formula. If you simply want the formula
+ value computed for you, use {@link #EvaluateFormulaCell(HSSFCell)}
+ @param cell
+
+
+ Loops over all cells in all sheets of the supplied
+ workbook.
+ For cells that contain formulas, their formulas are
+ Evaluated, and the results are saved. These cells
+ remain as formula cells.
+ For cells that do not contain formulas, no Changes
+ are made.
+ This is a helpful wrapper around looping over all
+ cells, and calling EvaluateFormulaCell on each one.
+
+
+ Loops over all cells in all sheets of the supplied
+ workbook.
+ For cells that contain formulas, their formulas are
+ evaluated, and the results are saved. These cells
+ remain as formula cells.
+ For cells that do not contain formulas, no changes
+ are made.
+ This is a helpful wrapper around looping over all
+ cells, and calling evaluateFormulaCell on each one.
+
+
+
+ Class to Read and manipulate the header.
+ The header works by having a left, center, and right side. The total cannot
+ be more that 255 bytes long. One uses this class by Getting the HSSFHeader
+ from HSSFSheet and then Getting or Setting the left, center, and right side.
+ For special things (such as page numbers and date), one can use a the methods
+ that return the Chars used to represent these. One can also Change the
+ fonts by using similar methods.
+ @author Shawn Laubach (slaubach at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ Footer record to Create the footer with
+
+
+
+ Gets the raw footer.
+
+ The raw footer.
+
+
+
+ Represents an Excel hyperlink.
+
+ @author Yegor Kozlov (yegor at apache dot org)
+
+
+ Low-level record object that stores the actual hyperlink data
+
+
+ If we Create a new hypelrink remember its type
+
+
+
+ Initializes a new instance of the class.
+
+ The type of hyperlink to Create.
+
+
+
+ Initializes a new instance of the class.
+
+ The record.
+
+
+
+ Gets or sets the row of the first cell that Contains the hyperlink
+
+ the 0-based row of the cell that Contains the hyperlink.
+
+
+
+ Gets or sets the row of the last cell that Contains the hyperlink
+
+ the 0-based row of the last cell that Contains the hyperlink
+
+
+
+ Gets or sets the column of the first cell that Contains the hyperlink
+
+ the 0-based column of the first cell that Contains the hyperlink
+
+
+
+ Gets or sets the column of the last cell that Contains the hyperlink
+
+ the 0-based column of the last cell that Contains the hyperlink
+
+
+
+ Gets or sets Hypelink Address. Depending on the hyperlink type it can be URL, e-mail, patrh to a file, etc.
+
+ the Address of this hyperlink
+
+
+
+ Gets or sets the text mark.
+
+ The text mark.
+
+
+
+ Gets or sets the short filename.
+
+ The short filename.
+
+
+
+ Gets or sets the text label for this hyperlink
+
+ text to Display
+
+
+
+ Gets the type of this hyperlink
+
+ the type of this hyperlink
+
+
+ @return whether the objects have the same HyperlinkRecord
+
+
+ High level representation for Icon / Multi-State Formatting
+ component of Conditional Formatting Settings
+
+
+
+ High Level Represantion of Named Range
+
+ @author Libin Roman (Vista Portal LDT. Developer)
+
+
+
+ Creates new HSSFName - called by HSSFWorkbook to Create a sheet from
+ scratch.
+
+ lowlevel Workbook object associated with the sheet.
+ the Name Record
+
+
+
+
+ Gets or sets the sheets name which this named range is referenced to
+
+ sheet name, which this named range refered to
+
+
+
+ Gets or sets the name of the named range
+
+ named range name
+
+
+ https://support.office.com/en-us/article/Define-and-use-names-in-formulas-4D0F13AC-53B7-422E-AFD2-ABD7FF379C64#bmsyntax_rules_for_names
+
+ Valid characters:
+ First character: { letter | underscore | backslash }
+ Remaining characters: { letter | number | period | underscore }
+
+ Cell shorthand: cannot be { "C" | "c" | "R" | "r" }
+
+ Cell references disallowed: cannot be a cell reference $A$1 or R1C1
+
+ Spaces are not valid (follows from valid characters above)
+
+ Name length: (XSSF-specific?) 255 characters maximum
+
+ Case sensitivity: all names are case-insensitive
+
+ Uniqueness: must be unique (for names with the same scope)
+
+ @param name
+
+
+ Returns the sheet index this name applies to.
+
+ @return the sheet index this name applies to, -1 if this name applies to the entire workbook
+
+
+
+ Sets the NameParsedFormula structure that specifies the formula for the defined name.
+
+ the sequence of {@link Ptg}s for the formula.
+
+
+
+ Tests if this name points to a cell that no longer exists
+
+
+ true if the name refers to a deleted cell; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this instance is function name.
+
+
+ true if this instance is function name; otherwise, false.
+
+
+
+ Indicates that the defined name refers to a user-defined function.
+ This attribute is used when there is an add-in or other code project associated with the file.
+
+ @param value true indicates the name refers to a function.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+ Represents binary object (i.e. OLE) data stored in the file. Eg. A GIF, JPEG etc...
+
+ @author Daniel Noll
+
+
+ Reference to the filesystem root, required for retrieving the object data.
+
+
+ Returns the OLE2 Class Name of the object
+
+
+ Gets the object data. Only call for ones that have
+ data though. See {@link #hasDirectoryEntry()}
+
+ @return the object data as an OLE2 directory.
+ @ if there was an error Reading the data.
+
+
+ Returns the data portion, for an ObjectData
+ that doesn't have an associated POIFS Directory
+ Entry
+
+
+ Does this ObjectData have an associated POIFS
+ Directory Entry?
+ (Not all do, those that don't have a data portion)
+
+
+ Finds the EmbeddedObjectRefSubRecord, or throws an
+ Exception if there wasn't one
+
+
+
+ Excel can Get cranky if you give it files containing too
+ many (especially duplicate) objects, and this class can
+ help to avoid those.
+ In general, it's much better to make sure you don't
+ duplicate the objects in your code, as this is likely
+ to be much faster than creating lots and lots of
+ excel objects+records, only to optimise them down to
+ many fewer at a later stage.
+ However, sometimes this is too hard / tricky to do, which
+ is where the use of this class comes in.
+
+
+
+
+ Goes through the Workbook, optimising the fonts by
+ removing duplicate ones.
+ For now, only works on fonts used in HSSFCellStyle
+ and HSSFRichTextString. Any other font uses
+ (eg charts, pictures) may well end up broken!
+ This can be a slow operation, especially if you have
+ lots of cells, cell styles or rich text strings
+
+ The workbook in which to optimise the fonts
+
+
+
+ Goes through the Wokrbook, optimising the cell styles
+ by removing duplicate ones and ones that aren't used.
+ For best results, optimise the fonts via a call to
+ OptimiseFonts(HSSFWorkbook) first
+
+ The workbook in which to optimise the cell styles
+
+
+
+ Represents a workbook color palette.
+ Internally, the XLS format refers to colors using an offset into the palette
+ record. Thus, the first color in the palette has the index 0x8, the second
+ has the index 0x9, etc. through 0x40
+ @author Brian Sanders (bsanders at risklabs dot com)
+
+
+
+
+ Retrieves the color at a given index
+
+ the palette index, between 0x8 to 0x40 inclusive.
+ the color, or null if the index Is not populated
+
+
+
+ Finds the first occurance of a given color
+
+ the RGB red component, between 0 and 255 inclusive
+ the RGB green component, between 0 and 255 inclusive
+ the RGB blue component, between 0 and 255 inclusive
+ the color, or null if the color does not exist in this palette
+
+
+
+ Finds the closest matching color in the custom palette. The
+ method for Finding the distance between the colors Is fairly
+ primative.
+
+ The red component of the color to match.
+ The green component of the color to match.
+ The blue component of the color to match.
+ The closest color or null if there are no custom
+ colors currently defined.
+
+
+
+ Sets the color at the given offset
+
+ the palette index, between 0x8 to 0x40 inclusive
+ the RGB red component, between 0 and 255 inclusive
+ the RGB green component, between 0 and 255 inclusive
+ the RGB blue component, between 0 and 255 inclusive
+
+
+
+ Adds a new color into an empty color slot.
+
+ The red component
+ The green component
+ The blue component
+ The new custom color.
+
+
+
+ user custom color
+
+
+
+
+ Initializes a new instance of the class.
+
+ The byte offset.
+ The colors.
+
+
+
+ Initializes a new instance of the class.
+
+ The byte offset.
+ The red.
+ The green.
+ The blue.
+
+
+
+ Gets index to the standard palette
+
+
+
+
+
+ Gets triplet representation like that in Excel
+
+
+
+
+
+ Gets a hex string exactly like a gnumeric triplet
+
+
+
+
+
+ Gets the gnumeric part.
+
+ The color.
+
+
+
+
+ The patriarch is the toplevel container for shapes in a sheet. It does
+ little other than act as a container for other shapes and Groups.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+ The EscherAggregate we have been bound to.
+ (This will handle writing us out into records,
+ and building up our shapes from the records)
+
+
+
+ Creates the patriarch.
+
+ the sheet this patriarch is stored in.
+ The bound aggregate.
+
+
+ check if any shapes contain wrong data
+ At now(13.08.2010) check if patriarch contains 2 or more comments with same coordinates
+
+
+ @param shape to be removed
+ @return true of shape is removed
+
+
+
+ Creates a new Group record stored Under this patriarch.
+
+ the client anchor describes how this Group is attached
+ to the sheet.
+ the newly created Group.
+
+
+
+ Creates a simple shape. This includes such shapes as lines, rectangles,
+ and ovals.
+ Note: Microsoft Excel seems to sometimes disallow
+ higher y1 than y2 or higher x1 than x2 in the anchor, you might need to
+ reverse them and draw shapes vertically or horizontally flipped!
+
+ the client anchor describes how this Group is attached
+ to the sheet.
+ the newly created shape.
+
+
+
+ Creates a picture.
+
+ the client anchor describes how this Group is attached
+ to the sheet.
+ Index of the picture.
+ the newly created shape.
+
+
+
+ CreatePicture
+
+ the client anchor describes how this picture is attached to the sheet.
+ the index of the picture in the workbook collection of pictures.
+ return newly created shape
+
+
+ Adds a new OLE Package Shape
+
+ @param anchor the client anchor describes how this picture is
+ attached to the sheet.
+ @param storageId the storageId returned by {@Link HSSFWorkbook.AddOlePackage}
+ @param pictureIndex the index of the picture (used as preview image) in the
+ workbook collection of pictures.
+
+ @return newly Created shape
+
+
+
+ Creates a polygon
+
+ the client anchor describes how this Group is attached
+ to the sheet.
+ the newly Created shape.
+
+
+
+ Constructs a textbox Under the patriarch.
+
+ the client anchor describes how this Group is attached
+ to the sheet.
+ the newly Created textbox.
+
+
+ Constructs a cell comment.
+
+ @param anchor the client anchor describes how this comment is attached
+ to the sheet.
+ @return the newly created comment.
+
+
+ YK: used to create autofilters
+
+ @see org.apache.poi.hssf.usermodel.HSSFSheet#setAutoFilter(int, int, int, int)
+
+
+
+ Constructs a cell comment.
+
+ the client anchor describes how this comment is attached
+ to the sheet.
+ the newly created comment.
+
+
+
+ Returns a list of all shapes contained by the patriarch.
+
+ The children.
+
+
+ add a shape to this drawing
+
+
+
+ Total count of all children and their children's children.
+
+ The count of all children.
+
+
+
+ Sets the coordinate space of this Group. All children are contrained
+ to these coordinates.
+
+ The x1.
+ The y1.
+ The x2.
+ The y2.
+
+
+
+ Does this HSSFPatriarch contain a chart?
+ (Technically a reference to a chart, since they
+ Get stored in a different block of records)
+ FIXME - detect chart in all cases (only seems
+ to work on some charts so far)
+
+
+ true if this instance contains chart; otherwise, false.
+
+
+
+
+ The top left x coordinate of this Group.
+
+ The x1.
+
+
+
+ The top left y coordinate of this Group.
+
+ The y1.
+
+
+
+ The bottom right x coordinate of this Group.
+
+ The x2.
+
+
+
+ The bottom right y coordinate of this Group.
+
+ The y2.
+
+
+
+ Returns the aggregate escher record we're bound to
+
+
+
+
+ Creates a new client anchor and sets the top-left and bottom-right
+ coordinates of the anchor.
+
+ @param dx1 the x coordinate in EMU within the first cell.
+ @param dy1 the y coordinate in EMU within the first cell.
+ @param dx2 the x coordinate in EMU within the second cell.
+ @param dy2 the y coordinate in EMU within the second cell.
+ @param col1 the column (0 based) of the first cell.
+ @param row1 the row (0 based) of the first cell.
+ @param col2 the column (0 based) of the second cell.
+ @param row2 the row (0 based) of the second cell.
+ @return the newly created client anchor
+
+
+ create shape tree from existing escher records tree
+
+
+
+ High level representation for Conditional Formatting Settings
+ @author Dmitriy Kumshayev
+
+
+
+
+ Initializes a new instance of the class.
+
+ The cf rule record.
+
+
+
+ Gets the pattern formatting block.
+
+ The pattern formatting block.
+
+
+
+ Gets or sets the color of the fill background.
+
+ The color of the fill background.
+
+
+
+ Gets or sets the color of the fill foreground.
+
+ The color of the fill foreground.
+
+
+
+ Gets or sets the fill pattern.
+
+ The fill pattern.
+
+
+
+ Represents a escher picture. Eg. A GIF, JPEG etc...
+ @author Glen Stampoultzis
+ @author Yegor Kozlov (yegor at apache.org)
+
+
+
+
+ Constructs a picture object.
+
+ The parent.
+ The anchor.
+
+
+
+ Reset the image to the dimension of the embedded image
+
+
+ Please note, that this method works correctly only for workbooks
+ with default font size (Arial 10pt for .xls).
+ If the default font is changed the resized image can be streched vertically or horizontally.
+
+
+
+
+ Resize the image proportionally.
+
+ scale
+
+
+
+ Resize the image
+
+ Please note, that this method works correctly only for workbooks
+ with default font size (Arial 10pt for .xls).
+ If the default font is changed the resized image can be streched vertically or horizontally.
+
+
+ resize(1.0,1.0) keeps the original size,
+ resize(0.5,0.5) resize to 50% of the original,
+ resize(2.0,2.0) resizes to 200% of the original.
+ resize({@link Double#MAX_VALUE},{@link Double#MAX_VALUE}) resizes to the dimension of the embedded image.
+
+
+ @param scaleX the amount by which the image width is multiplied relative to the original width.
+ @param scaleY the amount by which the image height is multiplied relative to the original height.
+
+
+
+ Gets or sets the index of the picture.
+
+ The index of the picture.
+
+
+ Calculate the preferred size for this picture.
+
+ @param scale the amount by which image dimensions are multiplied relative to the original size.
+ @return HSSFClientAnchor with the preferred size for this image
+ @since POI 3.0.2
+
+
+
+ Calculate the preferred size for this picture.
+
+ the amount by which image width is multiplied relative to the original width.
+ the amount by which image height is multiplied relative to the original height.
+ HSSFClientAnchor with the preferred size for this image
+
+
+
+ Calculate the preferred size for this picture.
+
+ HSSFClientAnchor with the preferred size for this image
+
+
+
+ The metadata of PNG and JPEG can contain the width of a pixel in millimeters.
+ Return the the "effective" dpi calculated as
+ 25.4/HorizontalPixelSize
+ and
+ 25.4/VerticalPixelSize
+ . Where 25.4 is the number of mm in inch.
+
+ The image.
+ the resolution
+
+
+
+ Return the dimension of the embedded image in pixel
+
+ image dimension
+
+
+ Return picture data for this shape
+
+ @return picture data for this shape
+
+
+ The color applied to the lines of this shape.
+
+
+ @return the anchor that is used by this picture.
+
+
+ @return the sheet which contains the picture shape
+
+
+
+ Represents binary data stored in the file. Eg. A GIF, JPEG etc...
+ @author Daniel Noll
+
+
+
+ Underlying escher blip record containing the bitmap data.
+
+
+
+ Constructs a picture object.
+
+ the underlying blip record containing the bitmap data.
+
+
+
+ Gets the picture data.
+
+ the picture data.
+
+
+
+ gets format of the picture.
+
+ The format.
+
+
+
+ Suggests a file extension for this image.
+
+ the file extension.
+
+
+ Returns the mime type for the image
+
+
+ @return the POI internal image type, -1 if not unknown image type
+
+ @see Workbook#PICTURE_TYPE_DIB
+ @see Workbook#PICTURE_TYPE_EMF
+ @see Workbook#PICTURE_TYPE_JPEG
+ @see Workbook#PICTURE_TYPE_PICT
+ @see Workbook#PICTURE_TYPE_PNG
+ @see Workbook#PICTURE_TYPE_WMF
+
+
+
+ @author Glen Stampoultzis (glens at baselinksoftware.com)
+
+
+
+ Generates the shape records for this shape.
+
+
+ Creates the low level OBJ record for this shape.
+
+
+ @return array of x coordinates
+
+
+ @return array of y coordinates
+
+
+ @param xPoints - array of x coordinates
+ @param yPoints - array of y coordinates
+
+
+ Defines the width and height of the points in the polygon
+ @param width
+ @param height
+
+
+ @return shape width
+
+
+ @return shape height
+
+
+
+ Used to modify the print Setup.
+ @author Shawn Laubach (slaubach at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ Takes the low level print Setup record.
+
+
+
+ Gets or sets the size of the paper.
+
+ The size of the paper.
+
+
+
+ Gets or sets the scale.
+
+ The scale.
+
+
+
+ Gets or sets the page start.
+
+ The page start.
+
+
+
+ Gets or sets the number of pages wide to fit sheet in.
+
+ the number of pages wide to fit sheet in
+
+
+
+ Gets or sets number of pages high to fit the sheet in
+
+ number of pages high to fit the sheet in.
+
+
+
+ Gets or sets the bit flags for the options.
+
+ the bit flags for the options.
+
+
+
+ Gets or sets the left to right print order.
+
+ the left to right print order.
+
+
+
+ Gets or sets the landscape mode.
+
+ the landscape mode.
+
+
+
+ Gets or sets the valid Settings.
+
+ the valid Settings.
+
+
+
+ Gets or sets the black and white Setting.
+
+ black and white Setting
+
+
+
+ Gets or sets the draft mode.
+
+ the draft mode.
+
+
+
+ Gets or sets the print notes.
+
+ the print notes.
+
+
+
+ Gets or sets a value indicating whether [no orientation].
+
+ true if [no orientation]; otherwise, false.
+
+
+
+ Gets or sets the use page numbers.
+
+ use page numbers.
+
+
+
+ Gets or sets the horizontal resolution.
+
+ the horizontal resolution.
+
+
+
+ Gets or sets the vertical resolution.
+
+ the vertical resolution.
+
+
+
+ Gets or sets the header margin.
+
+ The header margin.
+
+
+
+ Gets or sets the footer margin.
+
+ The footer margin.
+
+
+
+ Gets or sets the number of copies.
+
+ the number of copies.
+
+
+
+ Rich text Unicode string. These strings can have fonts applied to
+ arbitary parts of the string.
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Jason Height (jheight at apache.org)
+
+
+
+ Place holder for indicating that NO_FONT has been applied here
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The string.
+
+
+
+ Initializes a new instance of the class.
+
+ The workbook.
+ The record.
+
+
+
+ This must be called to Setup the internal work book references whenever
+ a RichTextString Is Added to a cell
+
+ The workbook.
+ The record.
+
+
+
+ Called whenever the Unicode string Is modified. When it Is modified
+ we need to Create a new SST index, so that other LabelSSTRecords will not
+ be affected by Changes tat we make to this string.
+
+
+
+
+
+ Adds to SST if required.
+
+
+
+
+ Applies a font to the specified Chars of a string.
+
+ The start index to apply the font to (inclusive).
+ The end index to apply the font to (exclusive).
+ The font to use.
+
+
+
+ Applies a font to the specified Chars of a string.
+
+ The start index to apply the font to (inclusive).
+ The end index to apply to font to (exclusive).
+ The index of the font to use.
+
+
+
+ Sets the font of the entire string.
+
+ The font to use.
+
+
+
+ Removes any formatting that may have been applied to the string.
+
+
+
+
+ Returns the plain string representation.
+
+ The string.
+
+
+
+ Returns the raw, probably shared Unicode String.
+ Used when tweaking the styles, eg updating font
+ positions.
+ Changes to this string may well effect
+ other RichTextStrings too!
+
+ The raw unicode string.
+
+
+
+ Gets or sets the unicode string.
+
+ The unicode string.
+
+
+
+ Gets the number of Chars in the font..
+
+ The length.
+
+
+
+ Returns the font in use at a particular index.
+
+ The index.
+ The font that's currently being applied at that
+ index or null if no font Is being applied or the
+ index Is out of range.
+
+
+
+ Gets the number of formatting runs used. There will always be at
+ least one of font NO_FONT.
+
+ The num formatting runs.
+
+
+
+ The index within the string to which the specified formatting run applies.
+
+ the index of the formatting run
+ the index within the string.
+
+
+
+ Gets the font used in a particular formatting run.
+
+ the index of the formatting run.
+ the font number used.
+
+
+
+ Compares one rich text string to another.
+
+ The other rich text string.
+
+
+
+
+ Equalses the specified o.
+
+ The o.
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Applies the specified font to the entire string.
+
+ Index of the font to apply.
+
+
+
+ High level representation of a row of a spReadsheet.
+ Only rows that have cells should be Added to a Sheet.
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ used for collections
+
+
+
+ reference to low level representation
+
+
+ reference to containing low level Workbook
+
+
+ reference to containing Sheet
+
+
+
+ Creates new HSSFRow from scratch. Only HSSFSheet should do this.
+
+ low-level Workbook object containing the sheet that Contains this row
+ low-level Sheet object that Contains this Row
+ the row number of this row (0 based)
+
+
+
+
+ Creates an HSSFRow from a low level RowRecord object. Only HSSFSheet should do
+ this. HSSFSheet uses this when an existing file is Read in.
+
+ low-level Workbook object containing the sheet that Contains this row
+ low-level Sheet object that Contains this Row
+ the low level api object this row should represent
+
+
+
+
+ Use this to create new cells within the row and return it.
+ The cell that is returned is a CELL_TYPE_BLANK (/).
+ The type can be changed either through calling SetCellValue or SetCellType.
+
+ the column number this cell represents
+ a high level representation of the created cell.
+
+
+
+ Use this to create new cells within the row and return it.
+ The cell that is returned is a CELL_TYPE_BLANK. The type can be changed
+ either through calling setCellValue or setCellType.
+
+ the column number this cell represents
+ a high level representation of the created cell.
+
+
+
+
+ Remove the Cell from this row.
+
+ The cell to Remove.
+
+
+
+ Removes the cell.
+
+ The cell.
+ if set to true [also remove records].
+
+
+ used internally to refresh the "last cell plus one" when the last cell is removed.
+ @return 0 when row contains no cells
+
+
+ used internally to refresh the "first cell" when the first cell is removed.
+ @return 0 when row contains no cells (also when first cell is occupied)
+
+
+
+ Create a high level Cell object from an existing low level record. Should
+ only be called from HSSFSheet or HSSFRow itself.
+
+ The low level cell to Create the high level representation from
+ the low level record passed in
+
+
+
+ true, when the row is invisible. This is the case when the height is zero.
+
+
+
+
+ Removes all the cells from the row, and their
+ records too.
+
+
+
+
+ Get row number this row represents
+
+ the row number (0 based)
+
+
+
+ Returns the rows outline level. Increased as you
+ put it into more Groups (outlines), reduced as
+ you take it out of them.
+
+ The outline level.
+
+
+
+ Moves the supplied cell to a new column, which
+ must not already have a cell there!
+
+ The cell to move
+ The new column number (0 based)
+
+
+ Returns the HSSFSheet this row belongs to
+
+ @return the HSSFSheet that owns this row
+
+
+
+ used internally to Add a cell.
+
+ The cell.
+
+
+
+ Get the hssfcell representing a given column (logical cell)
+ 0-based. If you ask for a cell that is not defined, then
+ you Get a null.
+ This is the basic call, with no policies applied
+
+ 0 based column number
+ Cell representing that column or null if Undefined.
+
+
+
+ Get the hssfcell representing a given column (logical cell)
+ 0-based. If you ask for a cell that is not defined then
+ you get a null, unless you have set a different
+ MissingCellPolicy on the base workbook.
+
+ 0 based column number
+ Cell representing that column or null if undefined.
+
+
+
+ Get the hssfcell representing a given column (logical cell)
+ 0-based. If you ask for a cell that is not defined, then
+ your supplied policy says what to do
+
+ 0 based column number
+ Policy on blank / missing cells
+ that column or null if Undefined + policy allows.
+
+
+
+ Get the number of the first cell contained in this row.
+
+ the first logical cell in the row, or -1 if the row does not contain any cells.
+
+
+
+ Gets the index of the last cell contained in this row PLUS ONE
+ . The result also happens to be the 1-based column number of the last cell. This value can be used as a
+ standard upper bound when iterating over cells:
+
+
+ short representing the last logical cell in the row PLUS ONE, or -1 if the
+ row does not contain any cells.
+
+
+ short minColIx = row.GetFirstCellNum();
+ short maxColIx = row.GetLastCellNum();
+ for(short colIx=minColIx; colIx<maxColIx; colIx++) {
+ Cell cell = row.GetCell(colIx);
+ if(cell == null) {
+ continue;
+ }
+ //... do something with cell
+ }
+
+
+
+
+ Gets the number of defined cells (NOT number of cells in the actual row!).
+ That is to say if only columns 0,4,5 have values then there would be 3.
+
+ the number of defined cells in the row.
+
+
+
+ Gets or sets whether or not to Display this row with 0 height
+
+ height is zero or not.
+
+
+
+ Get or sets the row's height or ff (-1) for undefined/default-height in twips (1/20th of a point)
+
+ rowheight or 0xff for Undefined (use sheet default)
+
+
+
+ is this row formatted? Most aren't, but some rows
+ do have whole-row styles. For those that do, you
+ can get the formatting from {@link #getRowStyle()}
+
+
+ true if this instance is formatted; otherwise, false.
+
+
+
+
+ Returns the whole-row cell styles. Most rows won't
+ have one of these, so will return null. Call IsFormmated to check first
+
+ The row style.
+
+
+
+ Get the row's height or ff (-1) for Undefined/default-height in points (20*Height)
+
+ row height or 0xff for Undefined (use sheet default).
+
+
+
+ Get the lowlevel RowRecord represented by this object - should only be called
+ by other parts of the high level API
+
+ RowRecord this row represents
+
+
+
+ used internally to refresh the "first cell" when the first cell is Removed.
+
+ The first cell index.
+
+
+
+
+ Get cells in the row (existing cells only, no blanks)
+
+
+
+
+ Gets the cell enumerator of the physically defined cells.
+
+
+ Note that the 4th element might well not be cell 4, as the iterator
+ will not return Un-defined (null) cells.
+ Call CellNum on the returned cells to know which cell they are.
+
+
+
+
+ Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
+
+ An object to compare with this instance.
+
+ A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:
+ Value
+ Meaning
+ Less than zero
+ This instance is less than .
+ Zero
+ This instance is equal to .
+ Greater than zero
+ This instance is greater than .
+
+
+ is not the same type as this instance.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+
+ true if the specified is equal to the current ; otherwise, false.
+
+
+ The parameter is null.
+
+
+
+
+ Returns a hash code. In this case it is the number of the row.
+
+
+
+
+ An abstract shape.
+
+ Note: Microsoft Excel seems to sometimes disallow
+ higher y1 than y2 or higher x1 than x2 in the anchor, you might need to
+ reverse them and draw shapes vertically or horizontally flipped!
+
+
+
+ creates shapes from existing file
+ @param spContainer
+ @param objRecord
+
+
+
+ Create a new shape with the specified parent and anchor.
+
+ The parent.
+ The anchor.
+
+
+
+ Gets the parent shape.
+
+ The parent.
+
+
+
+ Gets or sets the anchor that is used by this shape.
+
+ The anchor.
+
+
+
+ The color applied to the lines of this shape.
+
+ The color of the line style.
+
+
+
+ Sets the color applied to the lines of this shape
+
+ The red.
+ The green.
+ The blue.
+
+
+
+ Gets or sets the color used to fill this shape.
+
+ The color of the fill.
+
+
+
+ Sets the color used to fill this shape.
+
+ The red.
+ The green.
+ The blue.
+
+
+
+ Gets or sets with width of the line in EMUs. 12700 = 1 pt.
+
+ The width of the line.
+
+
+
+ Gets or sets One of the constants in LINESTYLE_*
+
+ The line style.
+
+
+
+ Gets or sets a value indicating whether this instance is no fill.
+
+
+ true if this shape Is not filled with a color; otherwise, false.
+
+
+
+
+ whether this shape is vertically flipped.
+
+
+
+
+ whether this shape is horizontally flipped.
+
+
+
+
+ get or set the rotation, in degrees, that is applied to a shape.
+ Negative values specify rotation in the counterclockwise direction.
+ Rotation occurs around the center of the shape.
+ The default value for this property is 0x00000000
+
+
+
+
+ Count of all children and their childrens children.
+
+ The count of all children.
+
+
+ @return the name of this shape
+
+
+
+ An interface that indicates whether a class can contain children.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Gets Any children contained by this shape.
+
+ The children.
+
+
+
+ dd shape to the list of child records
+
+ shape
+
+
+
+ set coordinates of this group relative to the parent
+
+ x1
+ y1
+ x2
+ y2
+
+
+
+ Get the top left x coordinate of this group.
+
+
+
+
+ Get the top left y coordinate of this group.
+
+
+
+
+ Get the bottom right x coordinate of this group.
+
+
+
+
+ Get the bottom right y coordinate of this group.
+
+
+
+ remove first level shapes
+ @param shape to be removed
+ @return true if shape is removed else return false
+
+
+ @author Evgeniy Berlog
+ date: 05.06.12
+
+
+ build shape tree from escher container
+ @param container root escher container from which escher records must be taken
+ @param agg - EscherAggregate
+ @param out - shape container to which shapes must be added
+ @param root - node to create HSSFObjectData shapes
+
+
+
+ A shape Group may contain other shapes. It was no actual form on the
+ sheet.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Create another Group Under this Group.
+
+ the position of the new Group.
+ the Group
+
+
+
+ Create a new simple shape Under this Group.
+
+ the position of the shape.
+ the shape
+
+
+
+ Create a new textbox Under this Group.
+
+ the position of the shape.
+ the textbox
+
+
+
+ Creates a polygon
+
+ the client anchor describes how this Group Is attached
+ to the sheet.
+ the newly Created shape.
+
+
+
+ Creates a picture.
+
+ the client anchor describes how this Group Is attached
+ to the sheet.
+ Index of the picture.
+ the newly Created shape.
+
+
+
+ Return all children contained by this shape.
+
+
+
+
+
+ Sets the coordinate space of this Group. All children are constrained
+ to these coordinates.
+
+ The x1.
+ The y1.
+ The x2.
+ The y2.
+
+
+
+ Gets The top left x coordinate of this Group.
+
+ The x1.
+
+
+
+ Gets The top left y coordinate of this Group.
+
+ The y1.
+
+
+
+ Gets The bottom right x coordinate of this Group.
+
+ The x2.
+
+
+
+ Gets the bottom right y coordinate of this Group.
+
+ The y2.
+
+
+
+ Count of all children and their childrens children.
+
+
+
+
+
+ High level representation of a worksheet.
+
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Libin Roman (romal at vistaportal.com)
+ @author Shawn Laubach (slaubach at apache dot org) (Just a little)
+ @author Jean-Pierre Paris (jean-pierre.paris at m4x dot org) (Just a little, too)
+ @author Yegor Kozlov (yegor at apache.org) (Autosizing columns)
+
+
+
+ width of 1px in columns with default width in units of 1/256 of a character width
+
+
+ width of 1px in columns with overridden width in units of 1/256 of a character width
+
+
+ Used for compile-time optimization. This is the initial size for the collection of
+ rows. It is currently Set to 20. If you generate larger sheets you may benefit
+ by Setting this to a higher number and recompiling a custom edition of HSSFSheet.
+
+
+ reference to the low level Sheet object
+
+
+
+ Creates new HSSFSheet - called by HSSFWorkbook to create a _sheet from
+ scratch. You should not be calling this from application code (its protected anyhow).
+
+ The HSSF Workbook object associated with the _sheet.
+
+
+
+
+ Creates an HSSFSheet representing the given Sheet object. Should only be
+ called by HSSFWorkbook when reading in an exisiting file.
+
+ The HSSF Workbook object associated with the _sheet.
+ lowlevel Sheet object this _sheet will represent
+
+
+
+
+ Clones the _sheet.
+
+ The _workbook.
+ the cloned sheet
+
+
+
+ Copy one row to the target row
+
+ index of the source row
+ index of the target row
+
+
+
+ Copies comment from one cell to another
+
+ Cell with a comment to copy
+ Cell to paste the comment to
+ Copied comment
+
+
+
+ used internally to Set the properties given a Sheet object
+
+ The _sheet.
+
+
+ Gets the flag indicating whether the window should show 0 (zero) in cells containing zero value.
+ When false, cells with zero value appear blank instead of showing the number zero.
+ In Excel 2003 this option can be changed in the Options dialog on the View tab.
+ @return whether all zero values on the worksheet are displayed
+
+
+
+ Create a new row within the _sheet and return the high level representation
+
+ The row number.
+
+ @see org.apache.poi.hssf.usermodel.HSSFRow
+ @see #RemoveRow(HSSFRow)
+
+
+
+ Used internally to Create a high level Row object from a low level row object.
+ USed when Reading an existing file
+
+ low level record to represent as a high level Row and Add to _sheet.
+ HSSFRow high level representation
+
+
+
+ Remove a row from this _sheet. All cells contained in the row are Removed as well
+
+ the row to Remove.
+
+
+
+ used internally to refresh the "last row" when the last row is Removed.
+
+ The last row.
+
+
+
+
+ used internally to refresh the "first row" when the first row is Removed.
+
+ The first row.
+
+
+
+ Add a row to the _sheet
+
+ @param AddLow whether to Add the row to the low level model - false if its already there
+
+
+
+ Returns the HSSFCellStyle that applies to the given
+ (0 based) column, or null if no style has been
+ set for that column
+
+ The column.
+
+
+
+
+ Returns the logical row (not physical) 0-based. If you ask for a row that is not
+ defined you get a null. This is to say row 4 represents the fifth row on a _sheet.
+
+ Index of the row to get.
+ the row number or null if its not defined on the _sheet
+
+
+
+ Returns the number of phsyically defined rows (NOT the number of rows in the _sheet)
+
+ The physical number of rows.
+
+
+
+ Gets the first row on the _sheet
+
+ the number of the first logical row on the _sheet
+
+
+
+ Gets the last row on the _sheet
+
+ last row contained n this _sheet.
+
+
+
+ Creates a data validation object
+
+ The data validation object settings
+
+
+
+ Get the visibility state for a given column.F:\Gloria\�о�\�ļ���ʽ\NPOI\src\NPOI\HSSF\Util\HSSFDataValidation.cs
+
+ the column to Get (0-based).
+ the visiblity state of the column.
+
+
+
+ Get the hidden state for a given column.
+
+ the column to Set (0-based)
+ the visiblity state of the column;
+
+
+
+
+ Set the width (in Units of 1/256th of a Char width)
+
+ the column to Set (0-based)
+ the width in Units of 1/256th of a Char width
+
+
+
+ Get the width (in Units of 1/256th of a Char width )
+
+ the column to Set (0-based)
+ the width in Units of 1/256th of a Char width
+
+
+
+ Gets or sets the default width of the column.
+
+ The default width of the column.
+
+
+
+ Get the default row height for the _sheet (if the rows do not define their own height) in
+ twips (1/20 of a point)
+
+ The default height of the row.
+
+
+
+ Get the default row height for the _sheet (if the rows do not define their own height) in
+ points.
+
+ The default row height in points.
+
+
+
+ Get whether gridlines are printed.
+
+
+ true if printed; otherwise, false.
+
+
+
+
+ Adds a merged region of cells on a sheet.
+
+ region to merge
+ index of this region
+ if region contains fewer than 2 cells
+ if region intersects with an existing merged region
+ or multi-cell array formula on this sheet
+
+
+
+ Adds a merged region of cells (hence those cells form one).
+ Skips validation. It is possible to create overlapping merged regions
+ or create a merged region that intersects a multi-cell array formula
+ with this formula, which may result in a corrupt workbook.
+
+ To check for merged regions overlapping array formulas or other merged regions
+ after addMergedRegionUnsafe has been called, call {@link #validateMergedRegions()}, which runs in O(n^2) time.
+
+ region to merge
+ index of this region
+ if region contains fewer than 2 cells
+
+
+
+ Verify that merged regions do not intersect multi-cell array formulas and
+ no merged regions intersect another merged region in this sheet.
+
+ if region intersects with an existing merged region
+ or multi-cell array formula on this sheet
+
+
+
+ adds a merged region of cells (hence those cells form one)
+
+ region (rowfrom/colfrom-rowto/colto) to merge
+ whether to validate merged region
+ index of this region
+ if region contains fewer than 2 cells
+ if region intersects with an existing merged region
+ or multi-cell array formula on this sheet
+
+
+
+ Verify that none of the merged regions intersect a multi-cell array formula in this sheet
+
+ if candidate region intersects an existing array formula in this sheet
+
+
+
+ Verify that no merged regions intersect another merged region in this sheet.
+
+ if at least one region intersects with another merged region in this sheet
+
+
+
+ Whether a record must be Inserted or not at generation to indicate that
+ formula must be recalculated when _workbook is opened.
+
+
+ true if [force formula recalculation]; otherwise, false.
+
+ @return true if an Uncalced record must be Inserted or not at generation
+
+
+
+ Determine whether printed output for this _sheet will be vertically centered.
+
+ true if [vertically center]; otherwise, false.
+
+
+
+ Determine whether printed output for this _sheet will be horizontally centered.
+
+ true if [horizontally center]; otherwise, false.
+
+
+
+ Removes a merged region of cells (hence letting them free)
+
+ index of the region to Unmerge
+
+
+
+ Removes a number of merged regions of cells (hence letting them free)
+
+ A set of the regions to unmerge
+
+
+
+ returns the number of merged regions
+
+ The number of merged regions
+
+
+
+ Gets the row enumerator.
+
+
+ an iterator of the PHYSICAL rows. Meaning the 3rd element may not
+ be the third row if say for instance the second row is undefined.
+ Call on each row
+ if you care which one it is.
+
+
+
+
+ Alias for GetRowEnumerator() to allow foreach loops.
+
+
+ an iterator of the PHYSICAL rows. Meaning the 3rd element may not
+ be the third row if say for instance the second row is undefined.
+ Call on each row
+ if you care which one it is.
+
+
+
+
+ used internally in the API to Get the low level Sheet record represented by this
+ Object.
+
+ low level representation of this HSSFSheet.
+
+
+
+ Sets the active cell.
+
+ The row.
+ The column.
+
+
+
+ Sets the active cell range.
+
+ The first row.
+ The last row.
+ The first column.
+ The last column.
+
+
+
+ Sets the active cell range.
+
+ The cellranges.
+ The index of the active range.
+ The active row in the active range
+ The active column in the active range
+
+
+
+ Gets or sets whether alternate expression evaluation is on
+
+
+ true if [alternative expression]; otherwise, false.
+
+
+
+
+ whether alternative formula entry is on
+
+ true alternative formulas or not; otherwise, false.
+
+
+
+ show automatic page breaks or not
+
+ whether to show auto page breaks
+
+
+
+ Gets or sets a value indicating whether _sheet is a dialog _sheet
+
+ true if is dialog; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether to Display the guts or not.
+
+ true if guts or no guts (or glory); otherwise, false.
+
+
+
+ Gets or sets a value indicating whether fit to page option is on
+
+ true if [fit to page]; otherwise, false.
+
+
+
+ Get if row summaries appear below detail in the outline
+
+ true if below or not; otherwise, false.
+
+
+
+ Get if col summaries appear right of the detail in the outline
+
+ true right or not; otherwise, false.
+
+
+
+ Gets or sets whether gridlines are printed.
+
+
+ true Gridlines are printed; otherwise, false.
+
+
+
+
+ get or set whether row and column headings are printed.
+
+ row and column headings are printed
+
+
+
+ Gets the print setup object.
+
+ The user model for the print setup object.
+
+
+
+ Gets the user model for the document header.
+
+ The Document header.
+
+
+
+ Gets the user model for the document footer.
+
+ The Document footer.
+
+
+
+ Gets or sets whether the worksheet is displayed from right to left instead of from left to right.
+
+ true for right to left, false otherwise
+ poi bug 47970
+
+
+
+ Note - this is not the same as whether the _sheet is focused (isActive)
+
+
+ true if this _sheet is currently selected; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating if this _sheet is currently focused.
+
+ true if this _sheet is currently focused; otherwise, false.
+
+
+
+ Sets whether sheet is selected.
+
+ Whether to select the sheet or deselect the sheet.
+
+
+
+ Answer whether protection is enabled or disabled
+
+ true if protection enabled; otherwise, false.
+
+
+
+ Gets the hashed password
+
+ The password.
+
+
+
+ Answer whether object protection is enabled or disabled
+
+ true if protection enabled; otherwise, false.
+
+
+
+ Answer whether scenario protection is enabled or disabled
+
+ true if protection enabled; otherwise, false.
+
+
+
+ Sets the protection enabled as well as the password
+
+ password to set for protection, pass null to remove protection
+
+
+
+ Sets the zoom magnication for the _sheet. The zoom is expressed as a
+ fraction. For example to express a zoom of 75% use 3 for the numerator
+ and 4 for the denominator.
+
+ The numerator for the zoom magnification.
+ The denominator for the zoom magnification.
+
+
+ Window zoom magnification for current view representing percent values.
+ Valid values range from 10 to 400. Horizontal & Vertical scale together.
+
+ For example:
+
+ 10 - 10%
+ 20 - 20%
+ ...
+ 100 - 100%
+ ...
+ 400 - 400%
+
+
+ @param scale window zoom magnification
+ @throws IllegalArgumentException if scale is invalid
+
+
+
+ Sets the enclosed border of region.
+
+ The region.
+ Type of the border.
+ The color.
+
+
+
+ Sets the right border of region.
+
+ The region.
+ Type of the border.
+ The color.
+
+
+
+ Sets the left border of region.
+
+ The region.
+ Type of the border.
+ The color.
+
+
+
+ Sets the top border of region.
+
+ The region.
+ Type of the border.
+ The color.
+
+
+
+ Sets the bottom border of region.
+
+ The region.
+ Type of the border.
+ The color.
+
+
+
+ The top row in the visible view when the _sheet is
+ first viewed after opening it in a viewer
+
+ the rownum (0 based) of the top row
+
+
+
+ The left col in the visible view when the _sheet Is
+ first viewed after opening it in a viewer
+
+ the rownum (0 based) of the top row
+
+
+ Sets desktop window pane display area, when the
+ file is first opened in a viewer.
+
+ @param toprow the top row to show in desktop window pane
+ @param leftcol the left column to show in desktop window pane
+
+
+
+ Sets desktop window pane display area, when the
+ file is first opened in a viewer.
+
+ the top row to show in desktop window pane
+ the left column to show in desktop window pane
+
+
+
+ Shifts the merged regions left or right depending on mode
+ TODO: MODE , this is only row specific
+
+ The start row.
+ The end row.
+ The n.
+ if set to true [is row].
+
+
+
+ Shifts rows between startRow and endRow n number of rows.
+ If you use a negative number, it will Shift rows up.
+ Code Ensures that rows don't wrap around.
+ Calls ShiftRows(startRow, endRow, n, false, false);
+ Additionally Shifts merged regions that are completely defined in these
+ rows (ie. merged 2 cells on a row to be Shifted).
+
+ the row to start Shifting
+ the row to end Shifting
+ the number of rows to Shift
+
+
+
+ Shifts rows between startRow and endRow n number of rows.
+ If you use a negative number, it will shift rows up.
+ Code ensures that rows don't wrap around
+ Additionally shifts merged regions that are completely defined in these
+ rows (ie. merged 2 cells on a row to be shifted).
+ TODO Might want to add bounds checking here
+
+ the row to start shifting
+ the row to end shifting
+ the number of rows to shift
+ whether to copy the row height during the shift
+ whether to set the original row's height to the default
+
+
+
+ Shifts rows between startRow and endRow n number of rows.
+ If you use a negative number, it will Shift rows up.
+ Code Ensures that rows don't wrap around
+ Additionally Shifts merged regions that are completely defined in these
+ rows (ie. merged 2 cells on a row to be Shifted).
+ TODO Might want to Add bounds Checking here
+
+ the row to start Shifting
+ the row to end Shifting
+ the number of rows to Shift
+ whether to copy the row height during the Shift
+ whether to Set the original row's height to the default
+ if set to true [move comments].
+
+
+
+ Inserts the chart records.
+
+ The records.
+
+
+
+ Creates a split (freezepane). Any existing freezepane or split pane is overwritten.
+
+ Horizonatal position of split.
+ Vertical position of split.
+ Top row visible in bottom pane
+ Left column visible in right pane.
+
+
+
+ Creates a split (freezepane). Any existing freezepane or split pane is overwritten.
+
+ Horizonatal position of split.
+ Vertical position of split.
+
+
+
+ Creates a split pane. Any existing freezepane or split pane is overwritten.
+
+ Horizonatal position of split (in 1/20th of a point).
+ Vertical position of split (in 1/20th of a point).
+ Left column visible in right pane.
+ Top row visible in bottom pane.
+ Active pane. One of: PANE_LOWER_RIGHT,PANE_UPPER_RIGHT, PANE_LOWER_LEFT, PANE_UPPER_LEFT
+
+
+
+ Returns the information regarding the currently configured pane (split or freeze).
+
+ null if no pane configured, or the pane information.
+
+
+
+ Gets or sets if gridlines are Displayed.
+
+ whether gridlines are Displayed
+
+
+
+ Gets or sets a value indicating whether formulas are displayed.
+
+ whether formulas are Displayed
+
+
+
+ Gets or sets a value indicating whether RowColHeadings are displayed.
+
+
+ whether RowColHeadings are displayed
+
+
+
+
+ Gets the size of the margin in inches.
+
+ which margin to get.
+ the size of the margin
+
+
+
+ Sets the size of the margin in inches.
+
+ which margin to get.
+ the size of the margin
+
+
+
+ Sets a page break at the indicated row
+
+ The row.
+
+
+
+ Determines if there is a page break at the indicated row
+
+ The row.
+
+ true if [is row broken] [the specified row]; otherwise, false.
+
+
+
+
+ Removes the page break at the indicated row
+
+ The row.
+
+
+
+ Retrieves all the horizontal page breaks
+
+ all the horizontal page breaks, or null if there are no row page breaks
+
+
+
+ Retrieves all the vertical page breaks
+
+ all the vertical page breaks, or null if there are no column page breaks
+
+
+
+ Sets a page break at the indicated column
+
+ The column.
+
+
+
+ Determines if there is a page break at the indicated column
+
+ The column.
+
+ true if [is column broken] [the specified column]; otherwise, false.
+
+
+
+
+ Removes a page break at the indicated column
+
+ The column.
+
+
+
+ Runs a bounds Check for row numbers
+
+ The row.
+
+
+
+ Runs a bounds Check for column numbers
+
+ The column.
+
+
+
+ Aggregates the drawing records and dumps the escher record hierarchy
+ to the standard output.
+
+ if set to true [fat].
+
+
+
+ Returns the agregate escher records for this _sheet,
+ it there is one.
+ WARNING - calling this will trigger a parsing of the
+ associated escher records. Any that aren't supported
+ (such as charts and complex drawing types) will almost
+ certainly be lost or corrupted when written out.
+
+ The drawing escher aggregate.
+
+
+ This will hold any graphics or charts for the sheet.
+
+ @return the top-level drawing patriarch, if there is one, else returns null
+
+
+ Creates the top-level drawing patriarch. This will have
+ the effect of removing any existing drawings on this
+ sheet.
+ This may then be used to add graphics or charts
+
+ @return The new patriarch.
+
+
+
+ Gets or sets the tab color of the _sheet
+
+
+
+
+ Gets or sets whether the tab color of _sheet is automatic
+
+
+
+
+ Expands or collapses a column Group.
+
+ One of the columns in the Group.
+ true = collapse Group, false = expand Group.
+
+
+
+ Create an outline for the provided column range.
+
+ beginning of the column range.
+ end of the column range.
+
+
+
+ Ungroups the column.
+
+ From column.
+ To column.
+
+
+
+ Groups the row.
+
+ From row.
+ To row.
+
+
+
+ Remove a Array Formula from this sheet. All cells contained in the Array Formula range are removed as well
+
+ any cell within Array Formula range
+ the of cells affected by this change
+
+
+
+ Also creates cells if they don't exist.
+
+
+
+
+ Sets array formula to specified region for result.
+
+ text representation of the formula
+ Region of array formula for result
+ the of cells affected by this change
+
+
+
+ Ungroups the row.
+
+ From row.
+ To row.
+
+
+
+ Sets the row group collapsed.
+
+ The row.
+ if set to true [collapse].
+
+
+
+ Sets the default column style for a given column. POI will only apply this style to new cells Added to the _sheet.
+
+ the column index
+ the style to set
+
+
+
+ Adjusts the column width to fit the contents.
+ This Process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ Processing.
+
+ the column index.
+
+
+
+ Adjusts the column width to fit the contents.
+ This Process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ Processing.
+ You can specify whether the content of merged cells should be considered or ignored.
+ Default is to ignore merged cells.
+
+ the column index
+ whether to use the contents of merged cells when calculating the width of the column
+
+
+
+ Adjusts the column width to fit the contents.
+ This Process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ Processing.
+ You can specify whether the content of merged cells should be considered or ignored.
+ Default is to ignore merged cells.
+
+ the column index
+ whether to use the contents of merged cells when calculating the width of the column
+ limit the scope to maxRows rows to speed up the function, or leave 0 (optional)
+
+
+ Adjusts the row height to fit the contents.
+
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per row, at the end of your
+ Processing.
+
+ @param row the row index
+
+
+ Adjusts the row height to fit the contents.
+
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per row, at the end of your
+ Processing.
+
+ You can specify whether the content of merged cells should be considered or ignored.
+ Default is to ignore merged cells.
+
+ @param row the row index
+ @param useMergedCells whether to use the contents of merged cells when calculating the height of the row
+
+
+
+ Checks if the provided region is part of the merged regions.
+
+ Region searched in the merged regions
+ true, when the region is contained in at least one of the merged regions
+
+
+
+ Gets the merged region at the specified index
+
+ The index.
+
+
+
+
+ get the list of merged regions
+
+ return the list of merged regions
+
+
+
+ Convert HSSFFont to Font.
+
+ The font.
+
+
+
+
+ Returns cell comment for the specified row and column
+
+ The row.
+ The column.
+ cell comment or null if not found
+
+
+
+ Returns cell comment for the specified row and column
+
+ cell location
+ return cell comment or null if not found
+
+
+
+ Get a Hyperlink in this sheet anchored at row, column
+
+ The index of the row of the hyperlink, zero-based
+ the index of the column of the hyperlink, zero-based
+ return hyperlink if there is a hyperlink anchored at row, column; otherwise returns null
+
+
+
+ Get a Hyperlink in this sheet located in a cell specified by {code addr}
+
+ The address of the cell containing the hyperlink
+ return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null}
+
+
+ Get a list of Hyperlinks in this sheet
+
+ @return Hyperlinks for the sheet
+
+
+ Remove the underlying HyperlinkRecord from this sheet.
+ If multiple HSSFHyperlinks refer to the same HyperlinkRecord, all HSSFHyperlinks will be removed.
+
+ @param link the HSSFHyperlink wrapper around the HyperlinkRecord to remove
+
+
+ Remove the underlying HyperlinkRecord from this sheet
+
+ @param link the underlying HyperlinkRecord to remove from this sheet
+
+
+
+ Gets the sheet conditional formatting.
+
+ The sheet conditional formatting.
+
+
+
+ Get the DVRecords objects that are associated to this _sheet
+
+ a list of DVRecord instances
+
+
+
+ Provide a reference to the parent workbook.
+
+
+
+
+ Returns the name of this _sheet
+
+
+
+
+ Create an instance of a DataValidationHelper.
+
+ Instance of a DataValidationHelper
+
+
+
+ Enable filtering for a range of cells
+
+ the range of cells to filter
+
+
+
+ Returns all cell comments on this sheet.
+
+ return A Dictionary of each Comment in the sheet, keyed on the cell address where the comment is located.
+
+
+ Finds all cell comments in this sheet and adds them to the specified locations map
+
+ @param container a container that may contain HSSFComments
+ @param locations the map to store the HSSFComments in
+
+
+
+ Returns the column outline level. Increased as you
+ put it into more groups (outlines), reduced as
+ you take it out of them.
+
+
+
+
+
+
+ The Conditional Formatting facet of HSSFSheet
+ @author Dmitriy Kumshayev
+
+
+
+
+ A factory method allowing to Create a conditional formatting rule
+ with a cell comparison operator
+ TODO - formulas containing cell references are currently not Parsed properly
+
+ a constant value from HSSFConditionalFormattingRule.ComparisonOperator
+ formula for the valued, Compared with the cell
+ second formula (only used with HSSFConditionalFormattingRule#COMPARISON_OPERATOR_BETWEEN
+ and HSSFConditionalFormattingRule#COMPARISON_OPERATOR_NOT_BETWEEN operations)
+
+
+
+
+ A factory method allowing to Create a conditional formatting rule with a formula.
+ The formatting rules are applied by Excel when the value of the formula not equal to 0.
+ TODO - formulas containing cell references are currently not Parsed properly
+
+ formula for the valued, Compared with the cell
+
+
+
+ A factory method allowing the creation of conditional formatting
+ rules using an Icon Set / Multi-State formatting.
+ The thresholds for it will be created, but will be empty
+ and require configuring with
+ {@link HSSFConditionalFormattingRule#getMultiStateFormatting()}
+ then
+ {@link HSSFIconMultiStateFormatting#getThresholds()}
+
+
+
+
+
+ Adds a copy of HSSFConditionalFormatting object to the sheet
+ This method could be used to copy HSSFConditionalFormatting object
+ from one sheet to another.
+
+ HSSFConditionalFormatting object
+ index of the new Conditional Formatting object
+
+ HSSFConditionalFormatting cf = sheet.GetConditionalFormattingAt(index);
+ newSheet.AddConditionalFormatting(cf);
+
+
+
+
+ Allows to Add a new Conditional Formatting Set to the sheet.
+
+ list of rectangular regions to apply conditional formatting rules
+ Set of up to three conditional formatting rules
+ index of the newly Created Conditional Formatting object
+
+
+
+ Adds the conditional formatting.
+
+ The regions.
+ The rule1.
+
+
+
+
+ Adds the conditional formatting.
+
+ The regions.
+ The rule1.
+ The rule2.
+
+
+
+
+ Gets Conditional Formatting object at a particular index
+ @param index
+ of the Conditional Formatting object to fetch
+
+ Conditional Formatting object
+
+
+
+
+ the number of Conditional Formatting objects of the sheet
+
+ The num conditional formattings.
+
+
+
+ Removes a Conditional Formatting object by index
+
+ index of a Conditional Formatting object to Remove
+
+
+
+ Represents a simple shape such as a line, rectangle or oval.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ The parent.
+ The anchor.
+
+
+
+ Gets the shape type.
+
+ One of the OBJECT_TYPE_* constants.
+ @see #OBJECT_TYPE_LINE
+ @see #OBJECT_TYPE_OVAL
+ @see #OBJECT_TYPE_RECTANGLE
+ @see #OBJECT_TYPE_PICTURE
+ @see #OBJECT_TYPE_COMMENT
+
+
+
+ Get or set the rich text string used by this object.
+
+
+
+
+ A textbox Is a shape that may hold a rich text string.
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+
+ Construct a new textbox with the given parent and anchor.
+
+ The parent.
+ One of HSSFClientAnchor or HSSFChildAnchor
+
+
+
+ Gets or sets the left margin within the textbox.
+
+ The margin left.
+
+
+
+ Gets or sets the right margin within the textbox.
+
+ The margin right.
+
+
+
+ Gets or sets the top margin within the textbox
+
+ The top margin.
+
+
+
+ Gets or sets the bottom margin within the textbox.
+
+ The margin bottom.
+
+
+
+ Gets or sets the horizontal alignment.
+
+ The horizontal alignment.
+
+
+
+ Gets or sets the vertical alignment.
+
+ The vertical alignment.
+
+
+
+ High level representation of a workbook. This is the first object most users
+ will construct whether they are reading or writing a workbook. It is also the
+ top level object for creating new sheets/etc.
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Shawn Laubach (slaubach at apache dot org)
+
+
+ The maximum number of cell styles in a .xls workbook.
+ The 'official' limit is 4,000, but POI allows a slightly larger number.
+ This extra delta takes into account built-in styles that are automatically
+ created for new workbooks
+
+ See http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP005199291.aspx
+
+
+ used for compile-time performance/memory optimization. This determines the
+ initial capacity for the sheet collection. Its currently Set to 3.
+ Changing it in this release will decrease performance
+ since you're never allowed to have more or less than three sheets!
+
+
+ this Is the reference to the low level Workbook object
+
+
+ this holds the HSSFSheet objects attached to this workbook
+
+
+ this holds the HSSFName objects attached to this workbook
+
+
+ holds whether or not to preserve other nodes in the POIFS. Used
+ for macros and embedded objects.
+
+
+ Used to keep track of the data formatter so that all
+ CreateDataFormatter calls return the same one for a given
+ book. This Ensures that updates from one places Is visible
+ someplace else.
+
+
+ this holds the HSSFFont objects attached to this workbook.
+ We only create these from the low level records as required.
+
+
+
+ Totals the sizes of all sheet records and eventually serializes them
+
+
+
+
+ Creates new HSSFWorkbook from scratch (start here!)
+
+
+
+ Companion to HSSFWorkbook(POIFSFileSystem), this constructs the
+ POI filesystem around your inputstream, including all nodes.
+ This calls {@link #HSSFWorkbook(InputStream, boolean)} with
+ preserve nodes set to true.
+
+ @see #HSSFWorkbook(InputStream, boolean)
+ @see #HSSFWorkbook(POIFSFileSystem)
+ @see org.apache.poi.poifs.filesystem.POIFSFileSystem
+ @exception IOException if the stream cannot be read
+
+
+ Given a POI POIFSFileSystem object, read in its Workbook along
+ with all related nodes, and populate the high and low level models.
+ This calls {@link #HSSFWorkbook(POIFSFileSystem, boolean)} with
+ preserve nodes set to true.
+
+ @see #HSSFWorkbook(POIFSFileSystem, boolean)
+ @see org.apache.poi.poifs.filesystem.POIFSFileSystem
+ @exception IOException if the stream cannot be read
+
+
+
+ given a POI POIFSFileSystem object, Read in its Workbook and populate the high and
+ low level models. If you're Reading in a workbook...start here.
+
+ the POI filesystem that Contains the Workbook stream.
+ whether to preseve other nodes, such as
+ macros. This takes more memory, so only say yes if you
+ need to. If Set, will store all of the POIFSFileSystem
+ in memory
+
+
+
+ given a POI POIFSFileSystem object, and a specific directory
+ within it, Read in its Workbook and populate the high and
+ low level models. If you're Reading in a workbook...start here.
+
+ the POI filesystem directory to Process from
+ the POI filesystem that Contains the Workbook stream.
+ whether to preseve other nodes, such as
+ macros. This takes more memory, so only say yes if you
+ need to. If Set, will store all of the POIFSFileSystem
+ in memory
+
+
+ given a POI POIFSFileSystem object, and a specific directory
+ within it, read in its Workbook and populate the high and
+ low level models. If you're reading in a workbook...start here.
+
+ @param directory the POI filesystem directory to process from
+ @param preserveNodes whether to preseve other nodes, such as
+ macros. This takes more memory, so only say yes if you
+ need to. If set, will store all of the POIFSFileSystem
+ in memory
+ @see org.apache.poi.poifs.filesystem.POIFSFileSystem
+ @exception IOException if the stream cannot be read
+
+
+ Companion to HSSFWorkbook(POIFSFileSystem), this constructs the POI filesystem around your
+ inputstream.
+
+ @param s the POI filesystem that Contains the Workbook stream.
+ @param preserveNodes whether to preseve other nodes, such as
+ macros. This takes more memory, so only say yes if you
+ need to.
+ @see org.apache.poi.poifs.filesystem.POIFSFileSystem
+ @see #HSSFWorkbook(POIFSFileSystem)
+ @exception IOException if the stream cannot be Read
+
+
+ used internally to Set the workbook properties.
+
+
+
+ This is basically a kludge to deal with the now obsolete Label records. If
+ you have to read in a sheet that contains Label records, be aware that the rest
+ of the API doesn't deal with them, the low level structure only provides Read-only
+ semi-immutable structures (the Sets are there for interface conformance with NO
+ impelmentation). In short, you need to call this function passing it a reference
+ to the Workbook object. All labels will be converted to LabelSST records and their
+ contained strings will be written to the Shared String tabel (SSTRecord) within
+ the Workbook.
+
+ The records.
+ The offset.
+
+
+
+ Retrieves the current policy on what to do when
+ getting missing or blank cells from a row.
+ The default is to return blank and null cells.
+
+ The missing cell policy.
+
+
+
+ Sets the order of appearance for a given sheet.
+
+ the name of the sheet to reorder
+ the position that we want to Insert the sheet into (0 based)
+
+
+
+
+ Validates the index of the sheet.
+
+ The index.
+
+
+ Test only. Do not use
+
+
+
+ Selects a single sheet. This may be different to
+ the 'active' sheet (which Is the sheet with focus).
+
+ The index.
+
+
+
+ Sets the selected tabs.
+
+ The indexes.
+
+
+ Selects multiple sheets as a group. This is distinct from
+ the 'active' sheet (which is the sheet with focus).
+ Unselects sheets that are not in indexes.
+
+ @param indexes
+
+
+ Gets the selected sheets (if more than one, Excel calls these a [Group]).
+
+ @return indices of selected sheets
+
+
+
+ Gets the tab whose data is actually seen when the sheet is opened.
+ This may be different from the "selected sheet" since excel seems to
+ allow you to show the data of one sheet when another Is seen "selected"
+ in the tabs (at the bottom).
+
+
+
+
+ Sets the tab whose data is actually seen when the sheet is opened.
+ This may be different from the "selected sheet" since excel seems to
+ allow you to show the data of one sheet when another Is seen "selected"
+ in the tabs (at the bottom).
+ The sheet number(0 based).
+
+
+
+
+ Gets or sets the first tab that is displayed in the list of tabs
+ in excel. This method does not hide, select or focus sheets.
+ It just sets the scroll position in the tab-bar.
+
+ @param index the sheet index of the tab that will become the first in the tab-bar
+
+
+
+ @deprecated POI will now properly handle Unicode strings without
+ forceing an encoding
+
+
+ @deprecated POI will now properly handle Unicode strings without
+ forceing an encoding
+
+
+
+ Set the sheet name.
+
+ The sheet number(0 based).
+ The name.
+
+
+
+ Get the sheet name
+
+ The sheet index.
+ Sheet name
+
+
+
+ Check whether a sheet is hidden
+
+ The sheet index.
+
+ true if sheet is hidden; otherwise, false.
+
+
+
+
+ Check whether a sheet is very hidden.
+ This is different from the normal
+ hidden status
+
+ The sheet index.
+
+ true if sheet is very hidden; otherwise, false.
+
+
+
+
+ Hide or Unhide a sheet
+
+ The sheet index
+ True to mark the sheet as hidden, false otherwise
+
+
+
+ Hide or unhide a sheet.
+
+ The sheet number
+ 0 for not hidden, 1 for hidden, 2 for very hidden
+
+
+
+ Returns the index of the sheet by his name
+
+ the sheet name
+ index of the sheet (0 based)
+
+
+
+ Returns the index of the given sheet
+
+ the sheet to look up
+ index of the sheet (0 based).-1
+ if not found
+
+
+
+ Create an HSSFSheet for this HSSFWorkbook, Adds it to the sheets and returns
+ the high level representation. Use this to Create new sheets.
+
+ HSSFSheet representing the new sheet.
+
+
+
+ Create an HSSFSheet from an existing sheet in the HSSFWorkbook.
+
+ the sheet index
+ HSSFSheet representing the Cloned sheet.
+
+
+
+ Gets the name of the unique sheet.
+
+ Name of the SRC.
+
+
+
+
+ Create an HSSFSheet for this HSSFWorkbook, Adds it to the sheets and
+ returns the high level representation. Use this to Create new sheets.
+
+ sheetname to set for the sheet.
+ HSSFSheet representing the new sheet.
+
+
+
+ Get the number of spreadsheets in the workbook (this will be three after serialization)
+
+ The number of sheets.
+
+
+
+ Gets the sheets.
+
+
+
+
+
+ Get the HSSFSheet object at the given index.
+
+ index of the sheet number (0-based)
+ HSSFSheet at the provided index
+
+
+
+ Get sheet with the given name (case insensitive match)
+
+ name of the sheet
+ HSSFSheet with the name provided or null if it does not exist
+
+
+
+ Removes sheet at the given index.
+
+ index of the sheet (0-based)
+
+ Care must be taken if the Removed sheet Is the currently active or only selected sheet in
+ the workbook. There are a few situations when Excel must have a selection and/or active
+ sheet. (For example when printing - see Bug 40414).
+ This method makes sure that if the Removed sheet was active, another sheet will become
+ active in its place. Furthermore, if the Removed sheet was the only selected sheet, another
+ sheet will become selected. The newly active/selected sheet will have the same index, or
+ one less if the Removed sheet was the last in the workbook.
+
+
+
+
+ determine whether the Excel GUI will backup the workbook when saving.
+
+ the current Setting for backups.
+
+
+
+ Create a new Font and Add it to the workbook's font table
+
+ new font object
+
+
+
+ Finds a font that matches the one with the supplied attributes
+
+ The bold weight.
+ The color.
+ Height of the font.
+ The name.
+ if set to true [italic].
+ if set to true [strikeout].
+ The type offset.
+ The underline.
+
+
+
+
+ Finds a font that matches the one with the supplied attributes
+
+ The bold weight.
+ The color.
+ Height of the font.
+ The name.
+ if set to true [italic].
+ if set to true [strikeout].
+ The type offset.
+ The underline.
+
+
+
+
+ Get the number of fonts in the font table
+
+ The number of fonts.
+
+
+
+ Get the font at the given index number
+
+ The index number
+ HSSFFont at the index
+
+
+
+ Reset the fonts cache, causing all new calls
+ to getFontAt() to create new objects.
+ Should only be called after deleting fonts,
+ and that's not something you should normally do
+
+
+
+
+ Create a new Cell style and Add it to the workbook's style table
+
+ the new Cell Style object
+
+
+
+ Get the number of styles the workbook Contains
+
+ count of cell styles
+
+
+
+ Get the cell style object at the given index
+
+ index within the Set of styles
+ HSSFCellStyle object at the index
+
+
+ Closes the underlying {@link NPOIFSFileSystem} from which
+ the Workbook was read, if any. Has no effect on Workbooks
+ opened from an InputStream, or newly created ones.
+ Once {@link #close()} has been called, no further
+ operations, updates or reads should be performed on the
+ Workbook.
+
+
+ Write out this workbook to the currently open {@link File} via the
+ writeable {@link POIFSFileSystem} it was opened as.
+
+ This will fail (with an {@link InvalidOperationException} if the
+ Workbook was opened read-only, opened from an {@link InputStream}
+ instead of a File, or if this is not the root document. For those cases,
+ you must use {@link #write(OutputStream)} or {@link #write(File)} to
+ write to a brand new document.
+
+
+ Method write - write out this workbook to a new {@link File}. Constructs
+ a new POI POIFSFileSystem, passes in the workbook binary representation and
+ writes it out. If the file exists, it will be replaced, otherwise a new one
+ will be created.
+
+ Note that you cannot write to the currently open File using this method.
+ If you opened your Workbook from a File, you must use the {@link #write()}
+ method instead!
+
+ @param newFile - the new File you wish to write the XLS to
+
+ @exception IOException if anything can't be written.
+ @see org.apache.poi.poifs.filesystem.POIFSFileSystem
+
+
+
+ Write out this workbook to an Outputstream. Constructs
+ a new POI POIFSFileSystem, passes in the workbook binary representation and
+ Writes it out.
+
+ the stream you wish to write the XLS to
+ leave stream open or not
+
+
+ Writes the workbook out to a brand new, empty POIFS
+
+
+
+ Get the bytes of just the HSSF portions of the XLS file.
+ Use this to construct a POI POIFSFileSystem yourself.
+
+ byte[] array containing the binary representation of this workbook and all contained
+ sheets, rows, cells, etc.
+
+
+ The locator of user-defined functions.
+ By default includes functions from the Excel Analysis Toolpack
+
+
+ Register a new toolpack in this workbook.
+
+ @param toopack the toolpack to register
+
+
+
+ Gets the workbook.
+
+ The workbook.
+
+
+
+ Gets the total number of named ranges in the workboko
+
+ The number of named ranges
+
+
+
+ Gets the Named range
+
+ position of the named range
+ named range high level
+
+
+
+ Gets the named range name
+
+ the named range index (0 based)
+ named range name
+
+
+
+ Sets the printarea for the sheet provided
+ i.e. Reference = $A$1:$B$2
+
+ Zero-based sheet index (0 Represents the first sheet to keep consistent with java)
+ Valid name Reference for the Print Area
+
+
+
+ Sets the print area.
+
+ Zero-based sheet index (0 = First Sheet)
+ Column to begin printarea
+ Column to end the printarea
+ Row to begin the printarea
+ Row to end the printarea
+
+
+
+ Retrieves the reference for the printarea of the specified sheet, the sheet name Is Appended to the reference even if it was not specified.
+
+ Zero-based sheet index (0 Represents the first sheet to keep consistent with java)
+ String Null if no print area has been defined
+
+
+
+ Delete the printarea for the sheet specified
+
+ Zero-based sheet index (0 = First Sheet)
+
+
+
+ Creates a new named range and Add it to the model
+
+ named range high level
+
+
+
+ Gets the named range index by his name
+ Note:
+ Excel named ranges are case-insensitive and
+ this method performs a case-insensitive search.
+
+ named range name
+ named range index
+
+
+
+ As GetNameIndex(String) is not necessarily unique
+ (name + sheet index is unique), this method is more accurate.
+
+ the name whose index in the list of names of this workbook should be looked up.
+ an index value >= 0 if the name was found; -1, if the name was not found
+
+
+
+ Remove the named range by his index
+
+ The named range index (0 based)
+
+
+
+ Creates the instance of HSSFDataFormat for this workbook.
+
+ the HSSFDataFormat object
+
+
+
+ Remove the named range by his name
+
+ named range name
+
+
+
+ As #removeName(String) is not necessarily unique (name + sheet index is unique),
+ this method is more accurate.
+
+ the name to remove.
+
+
+
+ Spits out a list of all the drawing records in the workbook.
+
+ if set to true [fat].
+
+
+
+ Adds a picture to the workbook.
+
+ The bytes of the picture
+ The format of the picture. One of
+ PictureType.
+ the index to this picture (1 based).
+
+
+
+ Gets all pictures from the Workbook.
+
+ the list of pictures (a list of HSSFPictureData objects.)
+
+
+
+ Performs a recursive search for pictures in the given list of escher records.
+
+ the escher records.
+ the list to populate with the pictures.
+
+
+
+ Adds the LinkTable records required to allow formulas referencing
+ the specified external workbook to be added to this one. Allows
+ formulas such as "[MyOtherWorkbook]Sheet3!$A$5" to be added to the
+ file, for workbooks not already referenced.
+
+ The name the workbook will be referenced as in formulas
+ The open workbook to fetch the link required information from
+
+
+
+
+ Is the workbook protected with a password (not encrypted)?
+
+
+ true if this instance is write protected; otherwise, false.
+
+
+
+
+ protect a workbook with a password (not encypted, just Sets Writeprotect
+ flags and the password.
+
+ password to set
+ The username.
+
+
+
+ Removes the Write protect flag
+
+
+
+
+ Gets all embedded OLE2 objects from the Workbook.
+
+ the list of embedded objects (a list of HSSFObjectData objects.)
+
+
+
+ Gets all embedded OLE2 objects from the Workbook.
+
+ the list of records to search.
+ the list of embedded objects to populate.
+
+
+
+ Recursively iterates a shape container to get all embedded objects.
+
+ the parent.
+ the list of embedded objects to populate.
+
+
+
+ Gets the new UID.
+
+ The new UID.
+
+
+
+ Support foreach ISheet, e.g.
+ HSSFWorkbook workbook = new HSSFWorkbook();
+ foreach(ISheet sheet in workbook) ...
+
+ Enumeration of all the sheets of this workbook
+
+
+
+ Whether the application shall perform a full recalculation when the workbook is opened.
+
+ Typically you want to force formula recalculation when you modify cell formulas or values
+ of a workbook previously created by Excel. When set to true, this flag will tell Excel
+ that it needs to recalculate all formulas in the workbook the next time the file is opened.
+
+ Note, that recalculation updates cached formula results and, thus, modifies the workbook.
+ Depending on the version, Excel may prompt you with "Do you want to save the changes in filename?"
+ on close.
+
+ Value is true if the application will perform a full recalculation of
+ workbook values when the workbook is opened.
+
+ since 3.8
+
+
+
+
+ Returns the spreadsheet version (EXCLE97) of this workbook
+
+
+
+ Changes an external referenced file to another file.
+ A formular in Excel which refers a cell in another file is saved in two parts:
+ The referenced file is stored in an reference table. the row/cell information is saved separate.
+ This method invokation will only change the reference in the lookup-table itself.
+ @param oldUrl The old URL to search for and which is to be replaced
+ @param newUrl The URL replacement
+ @return true if the oldUrl was found and replaced with newUrl. Otherwise false
+
+
+
+ Gets a bool value that indicates whether the date systems used in the workbook starts in 1904.
+ The default value is false, meaning that the workbook uses the 1900 date system,
+ where 1/1/1900 is the first day in the system.
+
+ True if the date systems used in the workbook starts in 1904
+
+
+ This class Creates OperationEval instances to help evaluate OperationPtg
+ formula tokens.
+
+ @author Josh Micich
+
+
+ returns the OperationEval concrete impl instance corresponding
+ to the supplied operationPtg
+
+
+ Allows the user to lookup the font metrics for a particular font without
+ actually having the font on the system. The font details are Loaded
+ as a resource from the POI jar file (or classpath) and should be contained
+ in path "/font_metrics.properties". The font widths are for a 10 point
+ version of the font. Use a multiplier for other sizes.
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ The font metrics property file we're using
+
+
+ Our cache of font details we've alReady looked up
+
+
+ 4 bytes - little endian
+
+
+ 2 bytes - little endian
+
+
+ 2 bytes - little endian
+
+
+ 8 bytes - serialized as big endian, stored with inverted endianness here
+
+
+ Read a GUID in standard text form e.g.
+ 13579BDF-0246-8ACE-0123-456789ABCDEF
+
->
+ 0x13579BDF, 0x0246, 0x8ACE 0x0123456789ABCDEF
+
+
+ Title: HSSFCellRangeAddress
+ Description:
+ Implementation of the cell range Address lists,like Is described in
+ OpenOffice.org's Excel Documentation .
+ In BIFF8 there Is a common way to store absolute cell range Address
+ lists in several records (not formulas). A cell range Address list
+ consists of a field with the number of ranges and the list of the range
+ Addresses. Each cell range Address (called an AddR structure) Contains
+ 4 16-bit-values.
+ Copyright: Copyright (c) 2004
+ Company:
+ @author Dragos Buleandra (dragos.buleandra@trade2b.ro)
+ @version 2.0-pre
+
+
+ Number of following AddR structures
+
+
+ List of AddR structures. Each structure represents a cell range
+
+
+ Construct a new HSSFCellRangeAddress object and Sets its fields appropriately .
+ Even this Isn't an Excel record , I kept the same behavior for reading/writing
+ the object's data as for a regular record .
+
+ @param in the RecordInputstream to read the record from
+
+
+ Get the number of following AddR structures.
+ The number of this structures Is automatically Set when reading an Excel file
+ and/or increased when you manually Add a new AddR structure .
+ This Is the reason there Isn't a Set method for this field .
+ @return number of AddR structures
+
+
+ Add an AddR structure .
+ @param first_row - the upper left hand corner's row
+ @param first_col - the upper left hand corner's col
+ @param last_row - the lower right hand corner's row
+ @param last_col - the lower right hand corner's col
+ @return the index of this AddR structure
+
+
+ Remove the AddR structure stored at the passed in index
+ @param index The AddR structure's index
+
+
+ return the AddR structure at the given index.
+ @return AddrStructure representing
+
+
+ Get the upper left hand corner column number
+ @return column number for the upper left hand corner
+
+
+ Get the upper left hand corner row number
+ @return row number for the upper left hand corner
+
+
+ Get the lower right hand corner column number
+ @return column number for the lower right hand corner
+
+
+ Get the lower right hand corner row number
+ @return row number for the lower right hand corner
+
+
+
+ Various utility functions that make working with a cells and rows easier. The various
+ methods that deal with style's allow you to Create your HSSFCellStyles as you need them.
+ When you apply a style change to a cell, the code will attempt to see if a style already
+ exists that meets your needs. If not, then it will Create a new style. This is to prevent
+ creating too many styles. there is an upper limit in Excel on the number of styles that
+ can be supported.
+ @author Eric Pugh epugh@upstate.com
+
+
+
+
+ Get a row from the spreadsheet, and Create it if it doesn't exist.
+
+ The 0 based row number
+ The sheet that the row is part of.
+ The row indicated by the rowCounter
+
+
+
+ Get a specific cell from a row. If the cell doesn't exist,
+
+ The row that the cell is part of
+ The column index that the cell is in.
+ The cell indicated by the column.
+
+
+
+ Creates a cell, gives it a value, and applies a style if provided
+
+ the row to Create the cell in
+ the column index to Create the cell in
+ The value of the cell
+ If the style is not null, then Set
+ A new HSSFCell
+
+
+
+ Create a cell, and give it a value.
+
+ the row to Create the cell in
+ the column index to Create the cell in
+ The value of the cell
+ A new HSSFCell.
+
+
+
+ Take a cell, and align it.
+
+ the cell to Set the alignment for
+ The workbook that is being worked with.
+ the column alignment to use.
+
+
+
+ Take a cell, and apply a font to it
+
+ the cell to Set the alignment for
+ The workbook that is being worked with.
+ The HSSFFont that you want to Set...
+
+
+ This method attempt to find an already existing HSSFCellStyle that matches
+ what you want the style to be. If it does not find the style, then it
+ Creates a new one. If it does Create a new one, then it applies the
+ propertyName and propertyValue to the style. This is necessary because
+ Excel has an upper limit on the number of Styles that it supports.
+
+ @param workbook The workbook that is being worked with.
+ @param propertyName The name of the property that is to be
+ changed.
+ @param propertyValue The value of the property that is to be
+ changed.
+ @param cell The cell that needs it's style changes
+ @exception NestableException Thrown if an error happens.
+
+
+
+ Looks for text in the cell that should be unicode, like alpha; and provides the
+ unicode version of it.
+
+ The cell to check for unicode values
+ transalted to unicode
+
+
+
+ Translate color palette entries from the source to the destination sheet
+
+
+
+ Intends to provide support for the very evil index to triplet Issue and
+ will likely replace the color constants interface for HSSF 2.0.
+ This class Contains static inner class members for representing colors.
+ Each color has an index (for the standard palette in Excel (tm) ),
+ native (RGB) triplet and string triplet. The string triplet Is as the
+ color would be represented by Gnumeric. Having (string) this here Is a bit of a
+ collusion of function between HSSF and the HSSFSerializer but I think its
+ a reasonable one in this case.
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Brian Sanders (bsanders at risklabs dot com) - full default color palette
+
+
+ Creates a new instance of HSSFColor
+
+
+ this function returns all colors in a hastable. Its not implemented as a
+ static member/staticly initialized because that would be dirty in a
+ server environment as it Is intended. This means you'll eat the time
+ it takes to Create it once per request but you will not hold onto it
+ if you have none of those requests.
+
+ @return a hashtable containing all colors keyed by int excel-style palette indexes
+
+
+ This function returns all the Colours, stored in a Hashtable that
+ can be edited. No caching is performed. If you don't need to edit
+ the table, then call {@link #getIndexHash()} which returns a
+ statically cached imuatable map of colours.
+
+
+
+ this function returns all colors in a hastable. Its not implemented as a
+ static member/staticly initialized because that would be dirty in a
+ server environment as it Is intended. This means you'll eat the time
+ it takes to Create it once per request but you will not hold onto it
+ if you have none of those requests.
+
+ a hashtable containing all colors keyed by String gnumeric-like triplets
+
+
+ @return index to the standard palette
+
+
+ @return triplet representation like that in Excel
+
+
+ @return a hex string exactly like a gnumeric triplet
+
+
+ Class BLACK
+
+
+
+ Class BROWN
+
+
+
+ Class OLIVE_GREEN
+
+
+
+ Class DARK_GREEN
+
+
+
+ Class DARK_TEAL
+
+
+
+ Class DARK_BLUE
+
+
+
+ Class INDIGO
+
+
+
+ Class GREY_80_PERCENT
+
+
+
+ Class DARK_RED
+
+
+
+ Class ORANGE
+
+
+
+ Class DARK_YELLOW
+
+
+
+ Class GREEN
+
+
+
+ Class TEAL
+
+
+
+ Class BLUE
+
+
+
+ Class BLUE_GREY
+
+
+
+ Class GREY_50_PERCENT
+
+
+
+ Class RED
+
+
+
+ Class LIGHT_ORANGE
+
+
+
+ Class LIME
+
+
+
+ Class SEA_GREEN
+
+
+
+ Class AQUA
+
+
+
+ Class GREY_40_PERCENT
+
+
+
+ Class TURQUOISE
+
+
+
+ Class SKY_BLUE
+
+
+
+ Class PLUM
+
+
+
+ Class GREY_25_PERCENT
+
+
+
+ Class ROSE
+
+
+
+ Class TAN
+
+
+
+ Class LIGHT_YELLOW
+
+
+
+ Class LIGHT_GREEN
+
+
+
+ Class LIGHT_TURQUOISE
+
+
+
+ Class PALE_BLUE
+
+
+
+ Class LAVENDER
+
+
+
+ Class WHITE
+
+
+
+ Class CORNFLOWER_BLUE
+
+
+ Class LEMON_CHIFFON
+
+
+ Class MAROON
+
+
+ Class ORCHID
+
+
+ Class CORAL
+
+
+ Class ROYAL_BLUE
+
+
+ Class LIGHT_CORNFLOWER_BLUE
+
+
+ Special Default/Normal/Automatic color.
+ Note: This class Is NOT in the default HashTables returned by HSSFColor.
+ The index Is a special case which Is interpreted in the various SetXXXColor calls.
+
+ @author Jason
+
+
+
+
+ Various utility functions that make working with a region of cells easier.
+ @author Eric Pugh epugh@upstate.com
+
+
+
+
+ For setting the same property on many cells to the same value
+
+
+
+
+ Sets the left border for a region of cells by manipulating the cell style
+ of the individual cells on the left
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+ The workbook that the region is on.
+
+
+
+ Sets the leftBorderColor attribute of the HSSFRegionUtil object
+
+ The color of the border
+ The region that should have the border
+ The sheet that the region is on.
+ The workbook that the region is on.
+
+
+
+ Sets the borderRight attribute of the HSSFRegionUtil object
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+ The workbook that the region is on.
+
+
+
+ Sets the rightBorderColor attribute of the HSSFRegionUtil object
+
+ The color of the border
+ The region that should have the border
+ The workbook that the region is on.
+ The sheet that the region is on.
+
+
+
+ Sets the borderBottom attribute of the HSSFRegionUtil object
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+ The workbook that the region is on.
+
+
+
+ Sets the bottomBorderColor attribute of the HSSFRegionUtil object
+
+ The color of the border
+ The region that should have the border
+ The sheet that the region is on.
+ The workbook that the region is on.
+
+
+
+ Sets the borderBottom attribute of the HSSFRegionUtil object
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+ The workbook that the region is on.
+
+
+
+ Sets the topBorderColor attribute of the HSSFRegionUtil object
+
+ The color of the border
+ The region that should have the border
+ The sheet that the region is on.
+ The workbook that the region is on.
+
+
+ Utility for delaying the concatenation of multiple byte arrays. Doing this up-front
+ causes significantly more copying, which for a large number of byte arrays can cost
+ a large amount of time.
+
+
+ Clears the array (sets the concatenated length back to zero.
+
+
+ Concatenates an array onto the end of our array.
+ This is a relatively fast operation.
+
+ @param array the array to concatenate.
+ @throws ArgumentException if {@code array} is {@code null}.
+
+
+ Gets the concatenated contents as a single byte array.
+
+ This is a slower operation, but the concatenated array is stored off as a single
+ array again so that subsequent calls will not perform Additional copying.
+
+ @return the byte array. Returns {@code null} if no data has been placed into it.
+
+
+ * Title: Range Address
+ * Description: provides connectivity utilities for ranges
+ *
+ *
+ * REFERENCE:
+ * @author IgOr KaTz & EuGeNe BuMaGiN (Tal Moshaiov) (VistaPortal LDT.)
+ @version 1.0
+
+
+ Accepts an external reference from excel.
+
+ i.e. Sheet1!$A$4:$B$9
+ @param _url
+
+
+
+ @return String note: All absolute references are Removed
+
+
+ Utility class for helping convert RK numbers.
+
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Rolf-Jürgen Moll
+
+ @see org.apache.poi.hssf.record.MulRKRecord
+ @see org.apache.poi.hssf.record.RKRecord
+
+
+ Do the dirty work of decoding; made a private static method to
+ facilitate testing the algorithm
+
+
+
+ This holds the common functionality for all POI
+ Document classes.
+ Currently, this relates to Document Information Properties
+
+ @author Nick Burch
+
+
+ Holds metadata on our document
+
+
+ Holds further metadata on our document
+
+
+ The directory that our document lives in
+
+
+
+ just for test case TestPOIDocumentMain.TestWriteReadProperties
+
+
+
+ For our own logging use
+
+
+ Constructs from an old-style OPOIFS
+
+
+
+ Initializes a new instance of the class.
+
+ The fs.
+
+
+ Constructs from the default POIFS
+
+
+ Will create whichever of SummaryInformation
+ and DocumentSummaryInformation (HPSF) properties
+ are not already part of your document.
+ This is normally useful when creating a new
+ document from scratch.
+ If the information properties are already there,
+ then nothing will happen.
+
+
+
+ Fetch the Document Summary Information of the document
+
+ The document summary information.
+
+
+
+ Fetch the Summary Information of the document
+
+ The summary information.
+
+
+
+ Find, and Create objects for, the standard
+ Documment Information Properties (HPSF).
+ If a given property Set is missing or corrupt,
+ it will remain null;
+
+
+
+
+ For a given named property entry, either return it or null if
+ if it wasn't found
+
+ The property to read
+ The value of the given property or null if it wasn't found.
+ If retrieving properties fails
+
+
+
+ For a given named property entry, either return it or null if
+ if it wasn't found
+
+ The property to read
+ the encryption descriptor in case of cryptoAPI encryption
+ The value of the given property or null if it wasn't found.
+ If retrieving properties fails
+
+
+ Writes out the updated standard Document Information Properties (HPSF)
+ into the currently open NPOIFSFileSystem
+ TODO Implement in-place update
+
+ @throws IOException if an error when writing to the open
+ {@link NPOIFSFileSystem} occurs
+ TODO throws exception if open from stream not file
+
+
+
+ Writes out the standard Documment Information Properties (HPSF)
+
+ the POIFSFileSystem to Write the properties into
+
+
+
+ Writes out the standard Documment Information Properties (HPSF)
+
+ the POIFSFileSystem to Write the properties into.
+ a list of POIFS entries to Add the property names too.
+
+
+
+ Writes out a given ProperySet
+
+ the (POIFS Level) name of the property to Write.
+ the PropertySet to Write out.
+ the POIFSFileSystem to Write the property into.
+
+
+ Called during a {@link #write()} to ensure that the Document (and
+ associated {@link POIFSFileSystem}) was opened in a way compatible
+ with an in-place write.
+
+ @ if the document was opened suitably
+
+
+
+ Writes the document out to the specified new {@link File}. If the file
+ exists, it will be replaced, otherwise a new one will be created
+
+ @param newFile The new File to write to.
+
+ @ thrown on errors writing to the file
+
+
+ Writes the document out to the specified output stream. The
+ stream is not closed as part of this operation.
+
+ Note - if the Document was opened from a {@link File} rather
+ than an {@link InputStream}, you must write out using
+ {@link #write()} or to a different File. Overwriting the currently
+ open file via an OutputStream isn't possible.
+
+ If {@code stream} is a {@link java.io.FileOutputStream} on a networked drive
+ or has a high cost/latency associated with each written byte,
+ consider wrapping the OutputStream in a {@link java.io.BufferedOutputStream}
+ to improve write performance, or use {@link #write()} / {@link #write(File)}
+ if possible.
+
+ @param out The stream to write to.
+
+ @ thrown on errors writing to the stream
+
+
+ Closes the underlying {@link NPOIFSFileSystem} from which
+ the document was read, if any. Has no effect on documents
+ opened from an InputStream, or newly created ones.
+
+ Once {@link #close()} has been called, no further operations
+ should be called on the document.
+
+
+ Clear/unlink the attached directory entry
+
+
+ check if we were created by POIFS otherwise create a new dummy POIFS
+ for storing the package data
+
+ @return {@code true} if dummy directory was created, {@code false} otherwise
+
+
+ Replaces the attached directory, e.g. if this document is written
+ to a new POIFSFileSystem
+
+ @param newDirectory the new directory
+ @return the old/previous directory
+
+
+ A class describing attributes of the Big Block Size
+
+
+ Returns the value that Gets written into the
+ header.
+ Is the power of two that corresponds to the
+ size of the block, eg 512 => 9
+
+
+
+ A repository for constants shared by POI classes.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+ Most files use 512 bytes as their big block size
+
+
+ Some use 4096 bytes
+
+
+ Most files use 512 bytes as their big block size
+
+
+ Most files use 512 bytes as their big block size
+
+
+ How big a block in the small block stream is. Fixed size
+
+
+ How big a single property is
+
+
+ The minimum size of a document before it's stored using
+ Big Blocks (normal streams). Smaller documents go in the
+ Mini Stream (SBAT / Small Blocks)
+
+
+ The highest sector number you're allowed, 0xFFFFFFFA
+
+
+ Indicates the sector holds a FAT block (0xFFFFFFFD)
+
+
+ Indicates the sector holds a DIFAT block (0xFFFFFFFC)
+
+
+ Indicates the sector is the end of a chain (0xFFFFFFFE)
+
+
+ Indicates the sector is not used (0xFFFFFFFF)
+
+
+ The first 4 bytes of an OOXML file, used in detection
+
+
+ The first 5 bytes of a raw XML file, used in detection
+
+
+
+ Helper method for forbidden available call - we know the size beforehand, so it's ok ...
+
+ the remaining byte until EOF
+
+
+
+ Helper function for overriding the cipher invocation, i.e. XOR doesn't use a cipher and uses its own implementation
+
+ The total bytes.
+ The do final.
+
+
+
+
+ Used when BIFF header fields (sid, size) are being read. The internal instance must step even when unencrypted bytes are read
+
+ The buffet.
+ The offset.
+ The length.
+ buffer underrun
+
+
+
+
+ Some ciphers (actually just XOR) are based on the record size, which needs to be set before decryption
+
+ The size of the next record.
+
+
+
+ Gets the chunk bytes.
+
+ the chunk bytes
+
+
+
+ Gets the plain bytes.
+
+ the plain bytes
+
+
+
+ Gets the position.
+
+ the absolute position in the stream
+
+
+ Initializes a cipher object for a given block index for decryption
+
+ @param cipher may be null, otherwise the given instance is reset to the new block index
+ @param block the block index, e.g. the persist/slide id (hslf)
+ @return a new cipher object, if cipher was null, otherwise the reInitialized cipher
+ @throws GeneralSecurityException
+
+
+ Decrypt the Document-/SummaryInformation and other optionally streams.
+ Opposed to other crypto modes, cryptoapi is record based and can't be used
+ to stream-decrypt a whole file
+
+ @see 2.3.5.4 RC4 CryptoAPI Encrypted Summary Stream
+
+
+ @return the length of the stream returned by {@link #getDataStream(DirectoryNode)}
+
+
+ Initialize the builder from a stream
+
+
+ Initialize the builder from scratch
+
+
+ Initializes a cipher object for a given block index for encryption
+
+ @param cipher may be null, otherwise the given instance is reset to the new block index
+ @param block the block index, e.g. the persist/slide id (hslf)
+ @return a new cipher object, if cipher was null, otherwise the reInitialized cipher
+ @throws GeneralSecurityException
+
+
+ Encrypt the Document-/SummaryInformation and other optionally streams.
+ Opposed to other crypto modes, cryptoapi is record based and can't be used
+ to stream-encrypt a whole file
+
+ @see 2.3.5.4 RC4 CryptoAPI Encrypted Summary Stream
+
+
+ Helper functions used for standard and agile encryption
+
+
+ 2.3.4.7 ECMA-376 Document Encryption Key Generation (Standard Encryption)
+ 2.3.4.11 Encryption Key Generation (Agile Encryption)
+
+ The encryption key for ECMA-376 document encryption [ECMA-376] using agile
+ encryption MUST be generated by using the following method, which is derived from PKCS #5:
+ Password-Based Cryptography Version 2.0 [RFC2898].
+
+ Let H() be a hashing algorithm as determined by the PasswordKeyEncryptor.hashAlgorithm
+ element, H_n be the hash data of the n-th iteration, and a plus sign (+) represent concatenation.
+ The password MUST be provided as an array of Unicode characters. Limitations on the length of the
+ password and the characters used by the password are implementation-dependent.
+ The initial password hash is generated as follows:
+
+
+ H_0 = H(salt + password)
+
+ The salt used MUST be generated randomly. The salt MUST be stored in the
+ PasswordKeyEncryptor.saltValue element contained within the \EncryptionInfo stream as
+ specified in section 2.3.4.10. The hash is then iterated by using the following approach:
+
+ H_n = H(iterator + H_n-1)
+
+ where iterator is an unsigned 32-bit value that is initially set to 0x00000000 and then incremented
+ monotonically on each iteration until PasswordKey.spinCount iterations have been performed.
+ The value of iterator on the last iteration MUST be one less than PasswordKey.spinCount.
+
+ For POI, H_final will be calculated by {@link #generateKey(byte[],HashAlgorithm,byte[],int)}
+
+ @param password
+ @param hashAlgorithm
+ @param salt
+ @param spinCount
+ @return the hashed password
+
+
+ Generalized method for read and write protection hash generation.
+ The difference is, read protection uses the order iterator then hash in the hash loop, whereas write protection
+ uses first the last hash value and then the current iterator value
+
+ @param password
+ @param hashAlgorithm
+ @param salt
+ @param spinCount
+ @param iteratorFirst if true, the iterator is hashed before the n-1 hash value,
+ if false the n-1 hash value is applied first
+ @return the hashed password
+
+
+ 2.3.4.12 Initialization Vector Generation (Agile Encryption)
+
+ Initialization vectors are used in all cases for agile encryption. An initialization vector MUST be
+ generated by using the following method, where H() is a hash function that MUST be the same as
+ specified in section 2.3.4.11 and a plus sign (+) represents concatenation:
+
+ - If a blockKey is provided, let IV be a hash of the KeySalt and the following value:
+ {@code blockKey: IV = H(KeySalt + blockKey)}
+ - If a blockKey is not provided, let IV be equal to the following value:
+ {@code KeySalt:IV = KeySalt}
+ - If the number of bytes in the value of IV is less than the the value of the blockSize attribute
+ corresponding to the cipherAlgorithm attribute, pad the array of bytes by appending 0x36 until
+ the array is blockSize bytes. If the array of bytes is larger than blockSize bytes, truncate the
+ array to blockSize bytes.
+
+
+
+
+ 2.3.4.11 Encryption Key Generation (Agile Encryption)
+
+ The final hash data that is used for an encryption key is then generated by using the following
+ method:
+
+ H_final = H(H_n + blockKey)
+
+ where blockKey represents an array of bytes used to prevent two different blocks from encrypting
+ to the same cipher text.
+
+ If the size of the resulting H_final is smaller than that of PasswordKeyEncryptor.keyBits, the key
+ MUST be padded by appending bytes with a value of 0x36. If the hash value is larger in size than
+ PasswordKeyEncryptor.keyBits, the key is obtained by truncating the hash value.
+
+ @param passwordHash
+ @param hashAlgorithm
+ @param blockKey
+ @param keySize
+ @return intermediate key
+
+
+ Initialize a new cipher object with the given cipher properties and no padding
+ If the given algorithm is not implemented in the JCE, it will try to load it from the bouncy castle
+ provider.
+
+ @param key the secrect key
+ @param cipherAlgorithm the cipher algorithm
+ @param chain the chaining mode
+ @param vec the initialization vector (IV), can be null
+ @param cipherMode Cipher.DECRYPT_MODE or Cipher.ENCRYPT_MODE
+ @return the requested cipher
+ @throws GeneralSecurityException
+ @throws EncryptedDocumentException if the initialization failed or if an algorithm was specified,
+ which depends on a missing bouncy castle provider
+
+
+ Initialize a new cipher object with the given cipher properties
+ If the given algorithm is not implemented in the JCE, it will try to load it from the bouncy castle
+ provider.
+
+ @param key the secrect key
+ @param cipherAlgorithm the cipher algorithm
+ @param chain the chaining mode
+ @param vec the Initialization vector (IV), can be null
+ @param cipherMode Cipher.DECRYPT_MODE or Cipher.ENCRYPT_MODE
+ @param padding the padding (null = NOPADDING, ANSIX923Padding, PKCS5Padding, PKCS7Padding, ISO10126Padding, ...)
+ @return the requested cipher
+ @throws GeneralSecurityException
+ @throws EncryptedDocumentException if the Initialization failed or if an algorithm was specified,
+ which depends on a missing bouncy castle provider
+
+
+ Returns a new byte array with a tRuncated to the given size.
+ If the hash has less then size bytes, it will be Filled with 0x36-bytes
+
+ @param hash the to be tRuncated/filled hash byte array
+ @param size the size of the returned byte array
+ @return the pAdded hash
+
+
+ Returns a new byte array with a tRuncated to the given size.
+ If the hash has less then size bytes, it will be Filled with 0-bytes
+
+ @param hash the to be tRuncated/filled hash byte array
+ @param size the size of the returned byte array
+ @return the pAdded hash
+
+
+ Create the verifier for xor obfuscation (method 1)
+
+ @see 2.3.7.1 Binary Document Password Verifier Derivation Method 1
+ @see 2.3.7.4 Binary Document Password Verifier Derivation Method 2
+ @see Part 4 - Markup Language Reference - Ecma International - 3.2.12 fileSharing
+
+ @param password the password
+ @return the verifier (actually a short value)
+
+
+ This method generates the xor verifier for word documents < 2007 (method 2).
+ Its output will be used as password input for the newer word generations which
+ utilize a real hashing algorithm like sha1.
+
+ @param password the password
+ @return the hashed password
+
+ @see 2.3.7.4 Binary Document Password Verifier Derivation Method 2
+ @see How to Set the editing restrictions in Word using Open XML SDK 2.0
+ @see Funny: How the new powerful cryptography implemented in Word 2007 turns it into a perfect tool for document password removal.
+
+
+ This method generates the xored-hashed password for word documents < 2007.
+
+
+ Convenience function which returns the reversed xored-hashed password for further
+ Processing in word documents 2007 and newer, which utilize a real hashing algorithm like sha1.
+
+
+ Create the xor key for xor obfuscation, which is used to create the xor array (method 1)
+
+ @see 2.3.7.2 Binary Document XOR Array Initialization Method 1
+ @see 2.3.7.4 Binary Document Password Verifier Derivation Method 2
+
+ @param password the password
+ @return the xor key
+
+
+ Creates an byte array for xor obfuscation (method 1)
+
+ @see 2.3.7.2 Binary Document XOR Array Initialization Method 1
+ @see Libre Office implementation
+
+ @param password the password
+ @return the byte array for xor obfuscation
+
+
+ The provided Unicode password string is converted to a ANSI string
+
+ @param password the password
+ @return the ansi bytes
+
+ @see Part 4 - Markup Language Reference - Ecma International (3.2.29 workbookProtection)
+
+
+ Return a stream with decrypted data.
+
+ Use {@link #getLength()} to Get the size of that data that can be safely read from the stream.
+ Just Reading to the end of the input stream is not sufficient because there are
+ normally pAdding bytes that must be discarded
+
+
+ @param dir the node to read from
+ @return decrypted stream
+
+
+ Returns the length of the encrypted data that can be safely read with
+ {@link #getDataStream(NPOI.POIFS.FileSystem.DirectoryNode)}.
+ Just Reading to the end of the input stream is not sufficient because there are
+ normally pAdding bytes that must be discarded
+
+
+ The length variable is Initialized in {@link #getDataStream(NPOI.POIFS.FileSystem.DirectoryNode)},
+ an attempt to call GetLength() prior to GetDataStream() will result in InvalidOperationException.
+
+
+ @return length of the encrypted data
+ @throws InvalidOperationException if {@link #getDataStream(NPOI.POIFS.FileSystem.DirectoryNode)}
+ was not called
+
+
+ Reads and Processes OOXML Encryption Headers
+ The constants are largely based on ZIP constants.
+
+
+ @deprecated use GetChainingMode().ecmaId
+
+
+ A flag that specifies whether CryptoAPI RC4 or ECMA-376 encryption
+ ECMA-376 is used. It MUST be 1 unless flagExternal is 1. If flagExternal is 1, it MUST be 0.
+
+
+ A value that MUST be 0 if document properties are encrypted.
+ The encryption of document properties is specified in section 2.3.5.4.
+
+
+ A value that MUST be 1 if extensible encryption is used. If this value is 1,
+ the value of every other field in this structure MUST be 0.
+
+
+ A value that MUST be 1 if the protected content is an ECMA-376 document
+ ECMA-376. If the fAES bit is 1, the fCryptoAPI bit MUST also be 1.
+
+
+ Opens for decryption
+
+
+ Opens for decryption
+
+
+ Opens for decryption
+
+
+ Opens for decryption
+
+
+ @deprecated Use {@link #EncryptionInfo(EncryptionMode)} (fs parameter no longer required)
+
+
+ @deprecated Use {@link #EncryptionInfo(EncryptionMode)} (fs parameter no longer required)
+
+
+ @deprecated Use {@link #EncryptionInfo(EncryptionMode)} (dir parameter no longer required)
+
+
+ @deprecated use {@link #EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode)}
+
+
+ @deprecated use {@link #EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode)}
+
+
+ @deprecated use {@link #EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode)}
+
+
+ Prepares for encryption, using the given Encryption Mode, and
+ all other parameters as default.
+ @see #EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode)
+
+
+ Constructs an EncryptionInfo from scratch
+
+ @param encryptionMode see {@link EncryptionMode} for values, {@link EncryptionMode#cryptoAPI} is for
+ internal use only, as it's record based
+ @param cipherAlgorithm
+ @param hashAlgorithm
+ @param keyBits
+ @param blockSize
+ @param chainingMode
+
+ @throws EncryptedDocumentException if the given parameters mismatch, e.g. only certain combinations
+ of keyBits, blockSize are allowed for a given {@link CipherAlgorithm}
+
+
+ Initialize the builder from a stream
+
+
+ Initialize the builder from scratch
+
+
+ @return the header data
+
+
+ @return the verifier data
+
+
+ @return the decryptor
+
+
+ @return the encryptor
+
+
+ Office supports various encryption modes.
+ The encryption is either based on the whole Container ({@link #agile}, {@link #standard} or {@link #binaryRC4})
+ or record based ({@link #cryptoAPI}). The record based encryption can't be accessed directly, but will be
+ invoked by using the {@link Biff8EncryptionKey#setCurrentUserPassword(String)} before saving the document.
+
+
+ Used when Checking if a key is valid for a document
+
+
+ The method name is misleading - you'll Get the encrypted verifier, not the plain verifier
+ @deprecated use GetEncryptedVerifier()
+
+
+ The method name is misleading - you'll Get the encrypted verifier hash, not the plain verifier hash
+ @deprecated use GetEnryptedVerifierHash
+
+
+ @deprecated use GetCipherAlgorithm().jceId
+
+
+ Return a output stream for encrypted data.
+
+ @param dir the node to write to
+ @return encrypted stream
+
+
+
+
+ @return the length of the stream returned by {@link #getDataStream(DirectoryNode)}
+
+
+ Serializes the header
+
+
+ Initialize the builder from a stream
+
+
+ Initialize the builder from scratch
+
+
+ Used when Checking if a key is valid for a document
+
+
+ Fills the fields of verifier and header with the calculated hashes based
+ on the password and a random salt
+
+ see [MS-OFFCRYPTO] - 2.3.4.7 ECMA-376 Document Encryption Key Generation
+
+
+
+ Interface for a drill-down viewable object. Such an object has
+ content that may or may not be displayed, at the discretion of the
+ viewer. The content is returned to the viewer as an array or as an
+ Iterator, and the object provides a clue as to which technique the
+ viewer should use to get its content.
+
+ A POIFSViewable object is also expected to provide a short
+ description of itself, that can be used by a viewer when the
+ viewable object is collapsed.
+
+
+
+
+ Get an array of objects, some of which may implement
+ POIFSViewable
+
+ an array of Object; may not be null, but may be empty
+
+
+
+ Get an Iterator of objects, some of which may implement POIFSViewable
+
+ an Iterator; may not be null, but may have an empty
+ back end store
+
+
+
+ Give viewers a hint as to whether to call or
+
+
+ if a viewer should call , if
+ a viewer should call
+
+
+
+ Provides a short description of the object, to be used when a
+ POIFSViewable object has not provided its contents.
+
+ short description
+
+
+
+ This class contains methods used to inspect POIFSViewable objects
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Inspect an object that may be viewable, and drill down if told to
+
+ the object to be viewed
+ if true and the object implements POIFSViewable, inspect the objects' contents
+ how far in to indent each string
+ string to use for indenting
+ a List of Strings holding the content
+
+
+
+ Indents the specified indent level.
+
+ how far in to indent each string
+ string to use for indenting
+ The data.
+
+
+
+
+ An event-driven Reader for POIFS file systems. Users of this class
+ first Create an instance of it, then use the RegisterListener
+ methods to Register POIFSReaderListener instances for specific
+ documents. Once all the listeners have been Registered, the Read()
+ method is called, which results in the listeners being notified as
+ their documents are Read.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Read from an InputStream and Process the documents we Get
+
+ the InputStream from which to Read the data
+ POIFSDocument list
+
+
+ Register a POIFSReaderListener for all documents
+
+ @param listener the listener to be registered
+
+ @exception NullPointerException if listener is null
+ @exception InvalidOperationException if read() has already been
+ called
+
+
+ Register a POIFSReaderListener for a document in the root
+ directory
+
+ @param listener the listener to be registered
+ @param name the document name
+
+ @exception NullPointerException if listener is null or name is
+ null or empty
+ @exception InvalidOperationException if read() has already been
+ called
+
+
+ Register a POIFSReaderListener for a document in the specified
+ directory
+
+ @param listener the listener to be registered
+ @param path the document path; if null, the root directory is
+ assumed
+ @param name the document name
+
+ @exception NullPointerException if listener is null or name is
+ null or empty
+ @exception InvalidOperationException if read() has already been
+ called
+
+
+
+ Processes the properties.
+
+ The small_blocks.
+ The big_blocks.
+ The properties.
+ The path.
+
+
+
+ Class POIFSReaderEvent
+
+ @author Marc Johnson (mjohnson at apache dot org)
+ @version %I%, %G%
+
+
+ package scoped constructor
+
+ @param stream the DocumentInputStream, freshly opened
+ @param path the path of the document
+ @param documentName the name of the document
+
+
+ @return the DocumentInputStream, freshly opened
+
+
+ @return the document's path
+
+
+ @return the document's name
+
+
+
+ EventArgs for POIFSReader
+ author: Tony Qu
+
+
+
+ Interface POIFSReaderListener
+
+ @author Marc Johnson (mjohnson at apache dot org)
+ @version %I%, %G%
+
+
+ Process a POIFSReaderEvent that this listener had Registered
+ for
+
+ @param event the POIFSReaderEvent
+
+
+ A registry for POIFSReaderListeners and the DocumentDescriptors of
+ the documents those listeners are interested in
+
+ @author Marc Johnson (mjohnson at apache dot org)
+ @version %I%, %G%
+
+
+ Construct the registry
+
+
+ Register a POIFSReaderListener for a particular document
+
+ @param listener the listener
+ @param path the path of the document of interest
+ @param documentName the name of the document of interest
+
+
+ Register for all documents
+
+ @param listener the listener who wants to Get all documents
+
+
+ Get am iterator of listeners for a particular document
+
+ @param path the document path
+ @param name the name of the document
+
+ @return an Iterator POIFSReaderListeners; may be empty
+
+
+ Class POIFSWriterEvent
+
+ @author Marc Johnson (mjohnson at apache dot org)
+ @version %I%, %G%
+
+
+ namespace scoped constructor
+
+ @param stream the DocumentOutputStream, freshly opened
+ @param path the path of the document
+ @param documentName the name of the document
+ @param limit the limit, in bytes, that can be written to the
+ stream
+
+
+ @return the DocumentOutputStream, freshly opened
+
+
+ @return the document's path
+
+
+ @return the document's name
+
+
+ @return the limit on writing, in bytes
+
+
+
+ EventArgs for POIFSWriter
+ author: Tony Qu
+
+
+
+
+ Initializes a new instance of the class.
+
+ the POIFSDocumentWriter, freshly opened
+ the path of the document
+ the name of the document
+ the limit, in bytes, that can be written to the stream
+
+
+
+ Gets the limit on writing, in bytes
+
+ The limit.
+
+
+
+ Gets the document's name
+
+ The name.
+
+
+
+ Gets the document's path
+
+ The path.
+
+
+
+ the POIFSDocumentWriter, freshly opened
+
+ The stream.
+
+
+ Interface POIFSWriterListener
+
+ @author Marc Johnson (mjohnson at apache dot org)
+ @version %I%, %G%
+
+
+ Process a POIFSWriterEvent that this listener had registered
+ for
+
+ @param event the POIFSWriterEvent
+
+
+
+ This interface defines behaviors for objects managed by the Block
+ Allocation Table (BAT).
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Gets the number of BigBlock's this instance uses
+
+ count of BigBlock instances
+
+
+
+ Sets the start block for this instance
+
+ index into the array of BigBlock instances making up the the filesystem
+
+
+
+ This abstract class describes a way to read, store, chain
+ and free a series of blocks (be they Big or Small ones)
+
+
+
+
+ Returns the size of the blocks managed through the block store.
+
+
+
+
+
+ Load the block at the given offset.
+
+
+
+
+
+
+ Tries to load the block at the given offset.
+
+ An offset in the buffer, 0 or greater.
+ The resulting buffer, if possible.
+ True if it was possible to load the block from the specified offset, false if the offset is beyond the size of the buffer.
+
+
+
+ Extends the file if required to hold blocks up to
+ the specified offset, and return the block from there.
+
+
+
+
+
+
+ Returns the BATBlock that handles the specified offset,
+ and the relative index within it
+
+
+
+
+
+
+ Works out what block follows the specified one.
+
+
+
+
+
+
+ Changes the record of what block follows the specified one.
+
+
+
+
+
+
+ Finds a free block, and returns its offset.
+ This method will extend the file/stream if needed, and if doing
+ so, allocate new FAT blocks to address the extra space.
+
+
+
+
+
+ Creates a Detector for loops in the chain
+
+
+
+
+
+ Used to detect if a chain has a loop in it, so
+ we can bail out with an error rather than
+ spinning away for ever...
+
+
+
+
+ This interface defines methods specific to Directory objects
+ managed by a Filesystem instance.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ get an iterator of the Entry instances contained directly in
+ this instance (in other words, children only; no grandchildren
+ etc.)
+
+ The entries.never null, but hasNext() may return false
+ immediately (i.e., this DirectoryEntry is empty). All
+ objects retrieved by next() are guaranteed to be
+ implementations of Entry.
+
+
+
+ get the names of all the Entries contained directly in this
+ instance (in other words, names of children only; no grandchildren etc).
+
+ the names of all the entries that may be retrieved with
+ getEntry(String), which may be empty (if this DirectoryEntry is empty
+
+
+
+
+ is this DirectoryEntry empty?
+
+ true if this instance contains no Entry instances; otherwise, false.
+
+
+
+ find out how many Entry instances are contained directly within
+ this DirectoryEntry
+
+ number of immediately (no grandchildren etc.) contained
+ Entry instances
+
+
+
+ get a specified Entry by name
+
+ the name of the Entry to obtain.
+ the specified Entry, if it is directly contained in
+ this DirectoryEntry
+
+
+
+ Create a new DocumentEntry
+
+ the name of the new DocumentEntry
+ the Stream from which to Create the new DocumentEntry
+ the new DocumentEntry
+
+
+
+ Create a new DocumentEntry; the data will be provided later
+
+ the name of the new DocumentEntry
+ the size of the new DocumentEntry
+ BeforeWriting event handler
+ the new DocumentEntry
+
+
+
+ Create a new DirectoryEntry
+
+ the name of the new DirectoryEntry
+ the name of the new DirectoryEntry
+
+
+
+ Gets or sets the storage ClassID.
+
+ The storage ClassID.
+
+
+
+ Checks if entry with specified name present
+
+ entry name
+ true if have
+
+
+
+ Simple implementation of DirectoryEntry
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Create a DirectoryNode. This method Is not public by design; it
+ Is intended strictly for the internal use of this package
+
+ the DirectoryProperty for this DirectoryEntry
+ the OPOIFSFileSystem we belong to
+ the parent of this entry
+
+
+
+ Create a DirectoryNode. This method Is not public by design; it
+ Is intended strictly for the internal use of this package
+
+ the DirectoryProperty for this DirectoryEntry
+ the POIFSFileSystem we belong to
+ the parent of this entry
+
+
+
+ open a document in the directory's entry's list of entries
+
+ the name of the document to be opened
+ a newly opened DocumentStream
+
+
+
+ Create a new DocumentEntry; the data will be provided later
+
+ the name of the new documentEntry
+ the new DocumentEntry
+
+
+
+ Change a contained Entry's name
+
+ the original name
+ the new name
+ true if the operation succeeded, else false
+
+
+
+ Deletes the entry.
+
+ the EntryNode to be Deleted
+ true if the entry was Deleted, else false
+
+
+
+ Gets the path.
+
+ this directory's path representation
+
+
+
+ return the filesystem that this belongs to
+ TODO: Temporary workaround during #56791
+
+
+
+
+ If this is OPOIFS based, return the NPOIFSFileSystem
+ that this belong to, otherwise Null if NPOIFS based
+ return the filesystem that this belongs to
+
+
+
+
+ If this is NPOIFS based, return the NPOIFSFileSystem
+ that this belong to, otherwise Null if OPOIFS based.
+ return the filesystem that this belongs to
+
+
+
+
+ get an iterator of the Entry instances contained directly in
+ this instance (in other words, children only; no grandchildren
+ etc.)
+
+
+ The entries.never null, but hasNext() may return false
+ immediately (i.e., this DirectoryEntry is empty). All
+ objects retrieved by next() are guaranteed to be
+ implementations of Entry.
+
+
+
+ get the names of all the Entries contained directly in this
+ instance (in other words, names of children only; no grandchildren
+ etc).
+
+ @return the names of all the entries that may be retrieved with
+ getEntry(String), which may be empty (if this
+ DirectoryEntry is empty)
+
+
+
+ is this DirectoryEntry empty?
+
+
+ true if this instance contains no Entry instances; otherwise, false.
+
+
+
+
+ find out how many Entry instances are contained directly within
+ this DirectoryEntry
+
+
+ number of immediately (no grandchildren etc.) contained
+ Entry instances
+
+
+
+
+ get a specified Entry by name
+
+ the name of the Entry to obtain.
+
+ the specified Entry, if it is directly contained in
+ this DirectoryEntry
+
+
+
+
+ Create a new DirectoryEntry
+
+ the name of the new DirectoryEntry
+ the name of the new DirectoryEntry
+
+
+ Set the contents of a document, creating if needed,
+ otherwise updating. Returns the created / updated DocumentEntry
+
+ @param name the name of the new or existing DocumentEntry
+ @param stream the InputStream from which to populate the DocumentEntry
+
+ @return the new or updated DocumentEntry
+
+ @exception IOException
+
+
+
+ Gets or Sets the storage clsid for the directory entry
+
+ The storage ClassID.
+
+
+
+ Is this a DirectoryEntry?
+
+ true if the Entry Is a DirectoryEntry, else false
+
+
+
+ extensions use this method to verify internal rules regarding
+ deletion of the underlying store.
+
+ true if it's ok to Delete the underlying store, else
+ false
+
+
+
+ Get an array of objects, some of which may implement POIFSViewable
+
+ an array of Object; may not be null, but may be empty
+
+
+
+ Get an Iterator of objects, some of which may implement
+ POIFSViewable
+
+ an Iterator; may not be null, but may have an empty
+ back end store
+
+
+
+ Give viewers a hint as to whether to call GetViewableArray or
+ GetViewableIterator
+
+ true if a viewer should call GetViewableArray; otherwise, falseif
+ a viewer should call GetViewableIterator
+
+
+
+ Provides a short description of the object, to be used when a
+ POIFSViewable object has not provided its contents.
+
+ The short description.
+
+
+
+ Class DocumentDescriptor
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ the Document path
+ the Document name
+
+
+
+ Gets the path.
+
+ The path.
+
+
+
+ Gets the name.
+
+ The name.
+
+
+
+ equality. Two DocumentDescriptor instances are equal if they
+ have equal paths and names
+
+ the object we're checking equality for
+ true if the object is equal to this object
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ hashcode
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ This interface defines methods specific to Document objects
+ managed by a Filesystem instance.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ get the size of the document, in bytes
+
+ size in bytes
+
+
+
+ A small base class for the various factories, e.g. WorkbookFactory, SlideShowFactory to combine common code here.
+
+
+
+
+ Wrap the OLE2 data in the NPOIFSFileSystem into a decrypted stream by using the given password.
+
+ The OLE2 stream for the document
+ The password, null if the default password should be used
+ A stream for reading the decrypted data
+ If an error occurs while decrypting or if the password does not match
+
+
+
+ Checks that the supplied InputStream (which MUST support mark and reset, or be a PushbackInputStream) has a OOXML (zip) header at the start of it.
+ If your InputStream does not support mark / reset, then wrap it in a PushBackInputStream, then be sure to always use that, and not the original!
+
+ An InputStream which supports either mark/reset, or is a PushbackInputStream
+
+
+
+ Detects if a given office document is protected by a password or not.
+ Supported formats: Word, Excel and PowerPoint (both legacy and OpenXml).
+
+ Path to an office document.
+ True if document is protected by a password, false otherwise.
+
+
+
+ Detects if a given office document is protected by a password or not.
+ Supported formats: Word, Excel and PowerPoint (both legacy and OpenXml).
+
+ Office document stream.
+ True if document is protected by a password, false otherwise.
+
+
+
+ Detects if a given office document is protected by a password or not.
+ Supported formats: Word, Excel and PowerPoint (both legacy and OpenXml).
+
+ Office document stream.
+ True if document is protected by a password, false otherwise.
+
+
+
+ returned by read operations if we're at end of document
+
+
+
+ For use by downstream implementations
+
+
+
+
+ Initializes a new instance of the class.
+ Create an from the specified DocumentEntry
+
+ the DocumentEntry to be read
+
+ IOException if the DocumentEntry cannot be opened (like, maybe it has been deleted?)
+
+
+
+
+ Initializes a new instance of the class.
+ Create an from the specified DocumentEntry
+
+ the DocumentEntry to be read
+
+
+
+ Initializes a new instance of the class.
+ Create an from the specified DocumentEntry
+
+ the DocumentEntry to be read
+
+
+
+ Tests if this input stream supports the mark and reset methods.
+
+ true always
+
+
+
+ Repositions this stream to the position at the time the mark() method was
+ last called on this input stream. If mark() has not been called this
+ method repositions the stream to its beginning.
+
+
+
+
+ Simple implementation of DocumentEntry
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+ create a DocumentNode. This method Is not public by design; it
+ Is intended strictly for the internal use of this package
+
+ @param property the DocumentProperty for this DocumentEntry
+ @param parent the parent of this entry
+
+
+ get the POIFSDocument
+
+ @return the internal POIFSDocument
+
+
+ get the zize of the document, in bytes
+
+ @return size in bytes
+
+
+ Is this a DocumentEntry?
+
+ @return true if the Entry Is a DocumentEntry, else false
+
+
+ extensions use this method to verify internal rules regarding
+ deletion of the underlying store.
+
+ @return true if it's ok to delete the underlying store, else
+ false
+
+
+ Get an array of objects, some of which may implement
+ POIFSViewable
+
+ @return an array of Object; may not be null, but may be empty
+
+
+ Get an Iterator of objects, some of which may implement
+ POIFSViewable
+
+ @return an Iterator; may not be null, but may have an empty
+ back end store
+
+
+ Give viewers a hint as to whether to call getViewableArray or
+ getViewableIterator
+
+ @return true if a viewer should call getViewableArray, false if
+ a viewer should call getViewableIterator
+
+
+ Provides a short description of the object, to be used when a
+ POIFSViewable object has not provided its contents.
+
+ @return short description
+
+
+ This class provides a wrapper over an OutputStream so that Document
+ Writers can't accidently go over their size limits
+
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+ Create a DocumentOutputStream
+
+ @param stream the OutputStream to which the data is actually
+ read
+ @param limit the maximum number of bytes that can be written
+
+
+ Writes the specified byte to this output stream. The general
+ contract for write is that one byte is written to the output
+ stream. The byte to be written is the eight low-order bits of
+ the argument b. The 24 high-order bits of b are ignored.
+
+ @param b the byte.
+ @exception IOException if an I/O error occurs. In particular,
+ an IOException may be thrown if the
+ output stream has been closed, or if the
+ Writer tries to write too much data.
+
+
+ Writes b.Length bytes from the specified byte array
+ to this output stream.
+
+ @param b the data.
+ @exception IOException if an I/O error occurs.
+
+
+
+ Writes len bytes from the specified byte array starting at
+ offset off to this output stream. The general contract for
+ Write(b, off, len) is that some of the bytes in the array b are
+ written to the output stream in order; element b[off] is the
+ first byte written and b[off+len-1] is the last byte written by
+ this operation.
+
+ the data.
+ the start offset in the data.
+ the number of bytes to Write.
+
+
+
+ Flushes this output stream and forces any buffered output bytes to be written out
+
+
+
+ Closes this output stream and releases any system resources
+ associated with this stream. The general contract of close is
+ that it closes the output stream. A closed stream cannot
+ perform output operations and cannot be reopened.
+
+ @exception IOException if an I/O error occurs.
+
+
+ write the rest of the document's data (fill in at the end)
+
+ @param totalLimit the actual number of bytes the corresponding
+ document must fill
+ @param fill the byte to fill remaining space with
+
+ @exception IOException on I/O error
+
+
+
+ This interface provides access to an object managed by a Filesystem
+ instance. Entry objects are further divided into DocumentEntry and
+ DirectoryEntry instances.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Get the name of the Entry
+
+ The name.
+
+
+
+ Is this a DirectoryEntry?
+
+
+ true if the Entry Is a DirectoryEntry; otherwise, false.
+
+
+
+
+ Is this a DocumentEntry?
+
+
+ true if the Entry Is a DocumentEntry; otherwise, false.
+
+
+
+
+ Get this Entry's parent (the DirectoryEntry that owns this
+ Entry). All Entry objects, except the root Entry, has a parent.
+
+ this Entry's parent; null iff this Is the root Entry
+ This property is moved to EntryNode
+
+
+
+ Delete this Entry. ThIs operation should succeed, but there are
+ special circumstances when it will not:
+ If this Entry Is the root of the Entry tree, it cannot be
+ deleted, as there Is no way to Create another one.
+ If this Entry Is a directory, it cannot be deleted unless it Is
+ empty.
+
+ true if the Entry was successfully deleted, else false
+
+
+
+ Rename this Entry. ThIs operation will fail if:
+ There Is a sibling Entry (i.e., an Entry whose parent Is the
+ same as this Entry's parent) with the same name.
+ ThIs Entry Is the root of the Entry tree. Its name Is dictated
+ by the Filesystem and many not be Changed.
+
+ the new name for this Entry
+ true if the operation succeeded, else false
+
+
+
+ Abstract implementation of Entry
+ Extending classes should override isDocument() or isDirectory(), as
+ appropriate
+ Extending classes must override isDeleteOK()
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Create a DocumentNode. ThIs method Is not public by design; it
+ Is intended strictly for the internal use of extending classes
+
+ the Property for this Entry
+ the parent of this entry
+
+
+
+ grant access to the property
+
+ the property backing this entry
+
+
+
+ Is this the root of the tree?
+
+ true if this instance is root; otherwise, false.
+
+
+
+ extensions use this method to verify internal rules regarding
+ deletion of the underlying store.
+
+
+ true if it's ok to Delete the underlying store; otherwise, false.
+
+
+
+
+ Get the name of the Entry
+
+ The name.
+ Get the name of the Entry
+ @return name
+
+
+
+ Is this a DirectoryEntry?
+
+
+ true if the Entry Is a DirectoryEntry; otherwise, false.
+
+
+
+
+ Is this a DocumentEntry?
+
+
+ true if the Entry Is a DocumentEntry; otherwise, false.
+
+
+
+
+ Get this Entry's parent (the DocumentEntry that owns this
+ Entry). All Entry objects, except the root Entry, has a parent.
+
+ this Entry's parent; null iff this Is the root Entry
+
+
+
+ Delete this Entry. ThIs operation should succeed, but there are
+ special circumstances when it will not:
+ If this Entry Is the root of the Entry tree, it cannot be
+ deleted, as there Is no way to Create another one.
+ If this Entry Is a directory, it cannot be deleted unless it Is
+ empty.
+
+
+ true if the Entry was successfully deleted, else false
+
+
+
+
+ Rename this Entry. ThIs operation will fail if:
+ There Is a sibling Entry (i.e., an Entry whose parent Is the
+ same as this Entry's parent) with the same name.
+ ThIs Entry Is the root of the Entry tree. Its name Is dictated
+ by the Filesystem and many not be Changed.
+
+ the new name for this Entry
+
+ true if the operation succeeded, else false
+
+
+
+ Copies an Entry into a target POIFS directory, recursively
+
+
+ Copies all the nodes from one POIFS Directory to another
+
+ @param sourceRoot
+ is the source Directory to copy from
+ @param targetRoot
+ is the target Directory to copy to
+
+
+ Copies nodes from one Directory to the other minus the excepts
+
+ @param filteredSource The filtering source Directory to copy from
+ @param filteredTarget The filtering target Directory to copy to
+
+
+ Copies nodes from one Directory to the other minus the excepts
+
+ @param sourceRoot
+ is the source Directory to copy from
+ @param targetRoot
+ is the target Directory to copy to
+ @param excepts
+ is a list of Strings specifying what nodes NOT to copy
+ @deprecated use {@link FilteringDirectoryNode} instead
+
+
+ Copies all nodes from one POIFS to the other
+
+ @param source
+ is the source POIFS to copy from
+ @param target
+ is the target POIFS to copy to
+
+
+ Copies all nodes from one POIFS to the other
+
+ @param source
+ is the source POIFS to copy from
+ @param target
+ is the target POIFS to copy to
+
+
+ Copies nodes from one POIFS to the other, minus the excepts.
+ This delegates the filtering work to {@link FilteringDirectoryNode},
+ so excepts can be of the form "NodeToExclude" or
+ "FilteringDirectory/ExcludedChildNode"
+
+ @param source is the source POIFS to copy from
+ @param target is the target POIFS to copy to
+ @param excepts is a list of Entry Names to be excluded from the copy
+
+
+ Copies nodes from one POIFS to the other, minus the excepts.
+ This delegates the filtering work to {@link FilteringDirectoryNode},
+ so excepts can be of the form "NodeToExclude" or
+ "FilteringDirectory/ExcludedChildNode"
+
+ @param source is the source POIFS to copy from
+ @param target is the target POIFS to copy to
+ @param excepts is a list of Entry Names to be excluded from the copy
+
+
+ Checks to see if the two Directories hold the same contents.
+ For this to be true, they must have entries with the same names,
+ no entries in one but not the other, and the size+contents
+ of each entry must match, and they must share names.
+ To exclude certain parts of the Directory from being checked,
+ use a {@link FilteringDirectoryNode}
+
+
+ Checks to see if two Documents have the same name
+ and the same contents. (Their parent directories are
+ not checked)
+
+
+
+ A DirectoryEntry filter, which exposes another DirectoryEntry less certain parts.
+ This is typically used when copying or comparing Filesystems.
+
+
+
+
+ Creates a filter round the specified directory, which will exclude entries such as
+ "MyNode" and "MyDir/IgnoreNode". The excludes can stretch into children, if they contain a /.
+
+ The Directory to filter
+ The Entries to exclude
+
+
+
+ This class provides methods to read a DocumentEntry managed by a instance
+
+
+
+
+ current offset into the Document
+
+
+ current block count
+
+
+ current marked offset into the Document (used by mark and Reset)
+
+
+ and the block count for it
+
+
+ the Document's size
+
+
+ have we been closed?
+
+
+ the actual Document
+
+
+
+ Initializes a new instance of the class
+ Create an InputStream from the specified DocumentEntry
+
+ the DocumentEntry to be read
+ IOException if the DocumentEntry cannot be opened (like, maybe it has been deleted?)
+
+
+
+ Initializes a new instance of the class from the specified Document
+
+ the Document to be read
+
+
+
+ Repositions this stream to the position at the time the mark() method was
+ last called on this input stream. If mark() has not been called this
+ method repositions the stream to its beginning.
+
+
+
+ This class provides methods to write a DocumentEntry managed by a
+ {@link NPOIFSFileSystem} instance.
+
+
+ the Document's size
+
+
+ have we been closed?
+
+
+ the actual Document
+
+
+ and its Property
+
+
+ our buffer, when null we're into normal blocks
+
+
+ our main block stream, when we're into normal blocks
+
+
+ Create an OutputStream from the specified DocumentEntry.
+ The specified entry will be emptied.
+
+ @param document the DocumentEntry to be written
+
+
+ Create an OutputStream to create the specified new Entry
+
+ @param parent Where to create the Entry
+ @param name Name of the new entry
+
+
+ This exception is thrown when we try to open a file that doesn't
+ seem to actually be an OLE2 file After all
+
+
+ This class manages a document in the NIO POIFS filesystem.
+ This is the {@link NPOIFSFileSystem} version.
+
+
+ Constructor for an existing Document
+
+
+ Constructor for an existing Document
+
+
+ Constructor for a new Document
+
+ @param name the name of the POIFSDocument
+ @param stream the InputStream we read data from
+
+
+ Frees the underlying stream and property
+
+
+ @return size of the document
+
+
+ @return the instance's DocumentProperty
+
+
+ Get an array of objects, some of which may implement POIFSViewable
+
+ @return an array of Object; may not be null, but may be empty
+
+
+ Get an Iterator of objects, some of which may implement POIFSViewable
+
+ @return an Iterator; may not be null, but may have an empty back end
+ store
+
+
+ Provides a short description of the object, to be used when a
+ POIFSViewable object has not provided its contents.
+
+ @return short description
+
+
+ This is the main class of the POIFS system; it manages the entire
+ life cycle of the filesystem.
+ This is the new NIO version
+
+
+ Convenience method for clients that want to avoid the auto-close behaviour of the constructor.
+
+
+ What big block size the file uses. Most files
+ use 512 bytes, but a few use 4096
+
+
+ Constructor, intended for writing
+
+
+ Creates a POIFSFileSystem from a File. This uses less memory than
+ creating from an InputStream. The File will be opened read-only
+
+ Note that with this constructor, you will need to call {@link #close()}
+ when you're done to have the underlying file closed, as the file is
+ kept open during normal operation to read the data out.
+
+ @param file the File from which to read the data
+
+ @exception IOException on errors reading, or on invalid data
+
+
+ Creates a POIFSFileSystem from a File. This uses less memory than
+ creating from an InputStream.
+
+ Note that with this constructor, you will need to call {@link #close()}
+ when you're done to have the underlying file closed, as the file is
+ kept open during normal operation to read the data out.
+
+ @param file the File from which to read or read/write the data
+ @param readOnly whether the POIFileSystem will only be used in read-only mode
+
+ @exception IOException on errors reading, or on invalid data
+
+
+ * Creates a POIFSFileSystem from an open FileChannel. This uses
+ * less memory than creating from an InputStream. The stream will
+ * be used in read-only mode.
+ *
+ * Note that with this constructor, you will need to call {@link #close()}
+ * when you're done to have the underlying Channel closed, as the channel is
+ * kept open during normal operation to read the data out.
+ *
+ * @param channel the FileChannel from which to read the data
+ *
+ * @exception IOException on errors reading, or on invalid data
+
+
+ Creates a POIFSFileSystem from an open FileChannel. This uses
+ less memory than creating from an InputStream.
+
+ Note that with this constructor, you will need to call {@link #close()}
+ when you're done to have the underlying Channel closed, as the channel is
+ kept open during normal operation to read the data out.
+
+ @param channel the FileChannel from which to read or read/write the data
+ @param readOnly whether the POIFileSystem will only be used in read-only mode
+
+ @exception IOException on errors reading, or on invalid data
+
+
+ Create a POIFSFileSystem from an InputStream. Normally the stream is read until
+ EOF. The stream is always closed.
+
+ Some streams are usable After reaching EOF (typically those that return true
+ for markSupported()). In the unlikely case that the caller has such a stream
+ and needs to use it After this constructor completes, a work around is to wrap the
+ stream in order to trap the close() call. A convenience method (
+ CreateNonClosingInputStream()) has been provided for this purpose:
+
+ InputStream wrappedStream = POIFSFileSystem.CreateNonClosingInputStream(is);
+ HSSFWorkbook wb = new HSSFWorkbook(wrappedStream);
+ is.Reset();
+ doSomethingElse(is);
+
+ Note also the special case of MemoryStream for which the close()
+ method does nothing.
+
+ MemoryStream bais = ...
+ HSSFWorkbook wb = new HSSFWorkbook(bais); // calls bais.Close() !
+ bais.Reset(); // no problem
+ doSomethingElse(bais);
+
+
+ @param stream the InputStream from which to read the data
+
+ @exception IOException on errors Reading, or on invalid data
+
+
+ @param stream the stream to be closed
+ @param success false if an exception is currently being thrown in the calling method
+
+
+ Checks that the supplied InputStream (which MUST
+ support mark and reset, or be a PushbackInputStream)
+ has a POIFS (OLE2) header at the start of it.
+ If your InputStream does not support mark / reset,
+ then wrap it in a PushBackInputStream, then be
+ sure to always use that, and not the original!
+ @param inp An InputStream which supports either mark/reset, or is a PushbackInputStream
+
+
+ Checks if the supplied first 8 bytes of a stream / file
+ has a POIFS (OLE2) header.
+
+
+ Read and process the PropertiesTable and the
+ FAT / XFAT blocks, so that we're Ready to
+ work with the file
+
+
+ Load the block at the given offset.
+
+
+ Try to load the block at the given offset, and if the offset is beyond the end of the buffer, return false.
+
+
+ Load the block at the given offset,
+ extending the file if needed
+
+
+ Returns the BATBlock that handles the specified offset,
+ and the relative index within it
+
+
+ Works out what block follows the specified one.
+
+
+ Changes the record of what block follows the specified one.
+
+
+ Finds a free block, and returns its offset.
+ This method will extend the file if needed, and if doing
+ so, allocate new FAT blocks to Address the extra space.
+
+
+ For unit Testing only! Returns the underlying
+ properties table
+
+
+ Returns the MiniStore, which performs a similar low
+ level function to this, except for the small blocks.
+
+
+ add a new POIFSDocument to the FileSytem
+
+ @param document the POIFSDocument being Added
+
+
+ add a new DirectoryProperty to the FileSystem
+
+ @param directory the DirectoryProperty being Added
+
+
+ Create a new document to be Added to the root directory
+
+ @param stream the InputStream from which the document's data
+ will be obtained
+ @param name the name of the new POIFSDocument
+
+ @return the new DocumentEntry
+
+ @exception IOException on error creating the new POIFSDocument
+
+
+ create a new DocumentEntry in the root entry; the data will be
+ provided later
+
+ @param name the name of the new DocumentEntry
+ @param size the size of the new DocumentEntry
+ @param Writer the Writer of the new DocumentEntry
+
+ @return the new DocumentEntry
+
+ @exception IOException
+
+
+ create a new DirectoryEntry in the root directory
+
+ @param name the name of the new DirectoryEntry
+
+ @return the new DirectoryEntry
+
+ @exception IOException on name duplication
+
+
+ Set the contents of a document in1 the root directory,
+ creating if needed, otherwise updating
+
+ @param stream the InputStream from which the document's data
+ will be obtained
+ @param name the name of the new or existing POIFSDocument
+
+ @return the new or updated DocumentEntry
+
+ @exception IOException on error populating the POIFSDocument
+
+
+ Does the filesystem support an in-place write via
+ {@link #writeFilesystem()} ? If false, only writing out to
+ a brand new file via {@link #writeFilesystem(OutputStream)}
+ is supported.
+
+
+ Write the filesystem out to the open file. Will thrown an
+ {@link ArgumentException} if opened from an
+ {@link InputStream}.
+
+ @exception IOException thrown on errors writing to the stream
+
+
+ Write the filesystem out
+
+ @param stream the OutputStream to which the filesystem will be
+ written
+
+ @exception IOException thrown on errors writing to the stream
+
+
+ Has our in-memory objects write their state
+ to their backing blocks
+
+
+ Closes the FileSystem, freeing any underlying files, streams
+ and buffers. After this, you will be unable to read or
+ write from the FileSystem.
+
+
+ Get the root entry
+
+ @return the root entry
+
+
+ open a document in the root entry's list of entries
+
+ @param documentName the name of the document to be opened
+
+ @return a newly opened DocumentInputStream
+
+ @exception IOException if the document does not exist or the
+ name is that of a DirectoryEntry
+
+
+ remove an entry
+
+ @param entry to be Removed
+
+
+ Get an array of objects, some of which may implement
+ POIFSViewable
+
+ @return an array of Object; may not be null, but may be empty
+
+
+ Get an Iterator of objects, some of which may implement
+ POIFSViewable
+
+ @return an Iterator; may not be null, but may have an empty
+ back end store
+
+
+ Provides a short description of the object, to be used when a
+ POIFSViewable object has not provided its contents.
+
+ @return short description
+
+
+ @return The Big Block size, normally 512 bytes, sometimes 4096 bytes
+
+
+ @return The Big Block size, normally 512 bytes, sometimes 4096 bytes
+
+
+ This class handles the MiniStream (small block store)
+ in the NIO case for {@link NPOIFSFileSystem}
+
+
+ Load the block at the given offset, optionally throwing an exception if the offset is beyond the limit of the buffer.
+
+
+ Load the block at the given offset.
+
+
+ Try to load the block at the given offset, and if the offset is beyond the end of the buffer, return false.
+
+
+ Load the block, extending the underlying stream if needed
+
+
+ Returns the BATBlock that handles the specified offset,
+ and the relative index within it
+
+
+ Works out what block follows the specified one.
+
+
+ Changes the record of what block follows the specified one.
+
+
+ Finds a free block, and returns its offset.
+ This method will extend the file if needed, and if doing
+ so, allocate new FAT blocks to Address the extra space.
+
+
+
+ Writes the SBATs to their backing blocks, and updates
+ the mini-stream size in the properties. Stream size is
+ based on full blocks used, not the data within the streams
+
+
+
+ This handles Reading and writing a stream within a
+ {@link NPOIFSFileSystem}. It can supply an iterator
+ to read blocks, and way to write out to existing and
+ new blocks.
+ Most users will want a higher level version of this,
+ which deals with properties to track which stream
+ this is.
+ This only works on big block streams, it doesn't
+ handle small block ones.
+ This uses the new NIO code
+
+ TODO Implement a streaming write method, and append
+
+
+ Constructor for an existing stream. It's up to you
+ to know how to Get the start block (eg from a
+ {@link HeaderBlock} or a {@link Property})
+
+
+ Constructor for a new stream. A start block won't
+ be allocated until you begin writing to it.
+
+
+ What block does this stream start at?
+ Will be {@link POIFSConstants#END_OF_CHAIN} for a
+ new stream that hasn't been written to yet.
+
+
+ Returns an iterator that'll supply one {@link ByteBuffer}
+ per block in the stream.
+
+
+ Updates the contents of the stream to the new
+ Set of bytes.
+ Note - if this is property based, you'll still
+ need to update the size in the property yourself
+
+
+ Frees all blocks in the stream
+
+
+ This class provides methods to read a DocumentEntry managed by a
+ {@link POIFSFileSystem} instance.
+
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+ current offset into the Document
+
+
+ current marked offset into the Document (used by mark and Reset)
+
+
+ the Document's size
+
+
+ have we been closed?
+
+
+ the actual Document
+
+
+ the data block Containing the current stream pointer
+
+
+ Create an InputStream from the specified DocumentEntry
+
+ @param document the DocumentEntry to be read
+
+ @exception IOException if the DocumentEntry cannot be opened (like, maybe it has
+ been deleted?)
+
+
+ Create an InputStream from the specified Document
+
+ @param document the Document to be read
+
+
+ Repositions this stream to the position at the time the mark() method was
+ last called on this input stream. If mark() has not been called this
+ method repositions the stream to its beginning.
+
+
+
+ This exception is thrown when we try to open a file that's actually
+ an Office 2007+ XML file, rather than an OLE2 file (which is what
+ POIFS works with)
+
+
+
+ Represents an Ole10Native record which is wrapped around certain binary
+ files being embedded in OLE2 documents.
+
+ @author Rainer Schwarze
+
+
+ the field encoding mode - merely a try-and-error guess ...
+
+
+
+ the data is stored in parsed format - including label, command, etc.
+
+
+ the data is stored raw after the length field
+
+
+ the data is stored raw after the length field and the flags1 field
+
+
+
+ Creates an instance of this class from an embedded OLE Object. The OLE Object is expected
+ to include a stream "{01}Ole10Native" which Contains the actual
+ data relevant for this class.
+
+ poifs POI Filesystem object
+ Returns an instance of this class
+
+
+
+ Creates an instance of this class from an embedded OLE Object. The OLE Object is expected
+ to include a stream "{01}Ole10Native" which contains the actual
+ data relevant for this class.
+
+ directory POI Filesystem object
+ Returns an instance of this class
+
+
+ Creates an instance and fills the fields based on ... the fields
+
+
+ Creates an instance and Fills the fields based on the data in the given buffer.
+
+ @param data The buffer Containing the Ole10Native record
+ @param offset The start offset of the record in the buffer
+ @throws Ole10NativeException on invalid or unexcepted data format
+
+
+ Returns the value of the totalSize field - the total length of the structure
+ is totalSize + 4 (value of this field + size of this field).
+
+ @return the totalSize
+
+
+ Returns flags1 - currently unknown - usually 0x0002.
+
+ @return the flags1
+
+
+ Returns the label field - usually the name of the file (without directory) but
+ probably may be any name specified during packaging/embedding the data.
+
+ @return the label
+
+
+ Returns the fileName field - usually the name of the file being embedded
+ including the full path.
+
+ @return the fileName
+
+
+ Returns flags2 - currently unknown - mostly 0x0000.
+
+ @return the flags2
+
+
+ Returns unknown1 field - currently unknown.
+
+ @return the unknown1
+
+
+ Returns the command field - usually the name of the file being embedded
+ including the full path, may be a command specified during embedding the file.
+
+ @return the command
+
+
+ Returns the size of the embedded file. If the size is 0 (zero), no data has been
+ embedded. To be sure, that no data has been embedded, check whether
+ {@link #getDataBuffer()} returns null.
+
+ @return the dataSize
+
+
+ Returns the buffer Containing the embedded file's data, or null
+ if no data was embedded. Note that an embedding may provide information about
+ the data, but the actual data is not included. (So label, filename etc. are
+ available, but this method returns null.)
+
+ @return the dataBuffer
+
+
+ Returns the flags3 - currently unknown.
+
+ @return the flags3
+
+
+ Have the contents printer out into an OutputStream, used when writing a
+ file back out to disk (Normally, atom classes will keep their bytes
+ around, but non atom classes will just request the bytes from their
+ children, then chuck on their header and return)
+
+
+
+ This class manages a document in the POIFS filesystem.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ the name of the POIFSDocument
+ the InputStream we read data from
+
+
+
+ Constructor from small blocks
+
+ the name of the POIFSDocument
+ the small blocks making up the POIFSDocument
+ the actual length of the POIFSDocument
+
+
+
+ read data from the internal stores
+
+ the buffer to write to
+ the offset into our storage to read from
+
+
+
+ Writes the blocks.
+
+ The stream.
+
+
+
+ Gets the number of BigBlock's this instance uses
+
+ count of BigBlock instances
+
+
+
+ Gets the document property.
+
+ The document property.
+
+
+
+ Provides a short description of the object to be used when a
+ POIFSViewable object has not provided its contents.
+
+ true if [prefer array]; otherwise, false.
+
+
+
+ Gets the short description.
+
+ The short description.
+
+
+
+ Gets the size.
+
+ The size.
+
+
+
+ Gets the small blocks.
+
+ The small blocks.
+
+
+
+ Sets the start block for this instance
+
+
+ index into the array of BigBlock instances making up the the filesystem
+
+
+
+
+ Get an array of objects, some of which may implement POIFSViewable
+
+ The viewable array.
+
+
+
+ Give viewers a hint as to whether to call ViewableArray or ViewableIterator
+
+ The viewable iterator.
+
+
+
+ This is the main class of the POIFS system; it manages the entire
+ life cycle of the filesystem.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Convenience method for clients that want to avoid the auto-Close behaviour of the constructor.
+
+ The stream.
+
+ A convenience method (
+ CreateNonClosingInputStream()) has been provided for this purpose:
+ StreamwrappedStream = OPOIFSFileSystem.CreateNonClosingInputStream(is);
+ HSSFWorkbook wb = new HSSFWorkbook(wrappedStream);
+ is.reset();
+ doSomethingElse(is);
+
+
+
+
+ What big block size the file uses. Most files
+ use 512 bytes, but a few use 4096
+
+
+
+ Initializes a new instance of the class. intended for writing
+
+
+
+
+ Create a OPOIFSFileSystem from an Stream. Normally the stream is Read until
+ EOF. The stream is always Closed. In the unlikely case that the caller has such a stream and
+ needs to use it after this constructor completes, a work around is to wrap the
+ stream in order to trap the Close() call.
+
+ the Streamfrom which to Read the data
+
+
+ @param stream the stream to be Closed
+ @param success false if an exception is currently being thrown in the calling method
+
+
+
+ Checks that the supplied Stream(which MUST
+ support mark and reset, or be a PushbackInputStream)
+ has a POIFS (OLE2) header at the start of it.
+ If your Streamdoes not support mark / reset,
+ then wrap it in a PushBackInputStream, then be
+ sure to always use that, and not the original!
+
+ An Streamwhich supports either mark/reset, or is a PushbackStream
+
+ true if [has POIFS header] [the specified inp]; otherwise, false.
+
+
+
+ Checks if the supplied first 8 bytes of a stream / file
+ has a POIFS (OLE2) header.
+
+
+
+ Create a new document to be Added to the root directory
+
+ the Streamfrom which the document's data will be obtained
+ the name of the new POIFSDocument
+ the new DocumentEntry
+
+
+
+ Create a new DocumentEntry in the root entry; the data will be
+ provided later
+
+ the name of the new DocumentEntry
+ the size of the new DocumentEntry
+ the Writer of the new DocumentEntry
+ the new DocumentEntry
+
+
+
+ Create a new DirectoryEntry in the root directory
+
+ the name of the new DirectoryEntry
+ the new DirectoryEntry
+
+
+ open a document in the root entry's list of entries
+
+ @param documentName the name of the document to be opened
+
+ @return a newly opened DocumentInputStream
+
+ @exception IOException if the document does not exist or the
+ name is that of a DirectoryEntry
+
+
+
+ Writes the file system.
+
+ the OutputStream to which the filesystem will be
+ written
+
+
+
+ Get the root entry
+
+ The root.
+
+
+
+ Add a new POIFSDocument
+
+ the POIFSDocument being Added
+
+
+
+ Add a new DirectoryProperty
+
+ The directory.
+
+
+
+ Removes the specified entry.
+
+ The entry.
+
+
+
+ Get an array of objects, some of which may implement
+ POIFSViewable
+
+ an array of Object; may not be null, but may be empty
+
+
+
+ Get an Iterator of objects, some of which may implement
+ POIFSViewable
+
+ an Iterator; may not be null, but may have an empty
+ back end store
+
+
+
+ Give viewers a hint as to whether to call GetViewableArray or
+ GetViewableIterator
+
+ true if a viewer should call GetViewableArray, false if
+ a viewer should call GetViewableIterator
+
+
+
+ Provides a short description of the object, to be used when a
+ POIFSViewable object has not provided its contents.
+
+ The short description.
+
+
+
+ Gets The Big Block size, normally 512 bytes, sometimes 4096 bytes
+
+ The size of the big block.
+
+
+
+ Class POIFSDocumentPath
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ simple constructor for the path of a document that is in the
+ root of the POIFSFileSystem. The constructor that takes an
+ array of Strings can also be used to create such a
+ POIFSDocumentPath by passing it a null or empty String array
+
+
+
+
+ constructor for the path of a document that is not in the root
+ of the POIFSFileSystem
+
+ the Strings making up the path to a document.
+ The Strings must be ordered as they appear in
+ the directory hierarchy of the the document
+ -- the first string must be the name of a
+ directory in the root of the POIFSFileSystem,
+ and every Nth (for N > 1) string thereafter
+ must be the name of a directory in the
+ directory identified by the (N-1)th string.
+ If the components parameter is null or has
+ zero length, the POIFSDocumentPath is
+ appropriate for a document that is in the
+ root of a POIFSFileSystem
+
+
+
+ constructor that adds additional subdirectories to an existing
+ path
+
+ the existing path
+ the additional subdirectory names to be added
+
+
+
+ equality. Two POIFSDocumentPath instances are equal if they
+ have the same number of component Strings, and if each
+ component String is equal to its coresponding component String
+
+ the object we're checking equality for
+ true if the object is equal to this object
+
+
+
+ get the specified component
+
+ which component (0 ... length() - 1)
+ the nth component;
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ Gets the length.
+
+ the number of components
+
+
+
+ Returns the path's parent or null if this path
+ is the root path.
+
+ path of parent, or null if this path is the root path
+
+
+ Returns the last name in the document path's name sequence.
+ If the document path's name sequence is empty, then the empty string is returned.
+
+ @since 2016-04-09
+ @return The last name in the document path's name sequence, or empty string if this is the root path
+
+
+
+ This class provides methods to read a DocumentEntry managed by a
+ Filesystem instance.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Create an InputStream from the specified DocumentEntry
+
+ the DocumentEntry to be read
+
+
+
+ Create an InputStream from the specified Document
+
+ the Document to be read
+
+
+
+ at the end Of document.
+
+
+
+
+
+ Returns the number of bytes that can be read (or skipped over)
+ from this input stream without blocking by the next caller of a
+ method for this input stream. The next caller might be the same
+ thread or or another thread.
+
+ the number of bytes that can be read from this input
+ stream without blocking.
+
+
+
+ Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
+
+
+
+
+ Reads some number of bytes from the input stream and stores
+ them into the buffer array b. The number of bytes actually read
+ is returned as an integer. The definition of this method in
+ java.io.InputStream allows this method to block, but it won't.
+ If b is null, a NullPointerException is thrown. If the length
+ of b is zero, then no bytes are read and 0 is returned;
+ otherwise, there is an attempt to read at least one byte. If no
+ byte is available because the stream is at end of file, the
+ value -1 is returned; otherwise, at least one byte is read and
+ stored into b.
+ The first byte read is stored into element b[0], the next one
+ into b[1], and so on. The number of bytes read is, at most,
+ equal to the length of b. Let k be the number of bytes actually
+ read; these bytes will be stored in elements b[0] through
+ b[k-1], leaving elements b[k] through b[b.length-1] unaffected.
+ If the first byte cannot be read for any reason other than end
+ of file, then an IOException is thrown. In particular, an
+ IOException is thrown if the input stream has been closed.
+ The read(b) method for class InputStream has the same effect as:
+
+ the buffer into which the data is read.
+ the total number of bytes read into the buffer, or -1
+ if there is no more data because the end of the stream
+ has been reached.
+
+
+
+ Reads up to len bytes of data from the input stream into an
+ array of bytes. An attempt is made to read as many as len
+ bytes, but a smaller number may be read, possibly zero. The
+ number of bytes actually read is returned as an integer.
+ The definition of this method in java.io.InputStream allows it
+ to block, but it won't.
+ If b is null, a NullPointerException is thrown.
+ If off is negative, or len is negative, or off+len is greater
+ than the length of the array b, then an
+ IndexOutOfBoundsException is thrown.
+ If len is zero, then no bytes are read and 0 is returned;
+ otherwise, there is an attempt to read at least one byte. If no
+ byte is available because the stream is at end of file, the
+ value -1 is returned; otherwise, at least one byte is read and
+ stored into b.
+ The first byte read is stored into element b[off], the next one
+ into b[off+1], and so on. The number of bytes read is, at most,
+ equal to len. Let k be the number of bytes actually read; these
+ bytes will be stored in elements b[off] through b[off+k-1],
+ leaving elements b[off+k] through b[off+len-1] unaffected.
+ In every case, elements b[0] through b[off] and elements
+ b[off+len] through b[b.length-1] are unaffected.
+ If the first byte cannot be read for any reason other than end
+ of file, then an IOException is thrown. In particular, an
+ IOException is thrown if the input stream has been closed.
+
+ the buffer into which the data is read.
+ the start offset in array b at which the data is
+ written.
+ the maximum number of bytes to read.
+ the total number of bytes read into the buffer, or -1
+ if there is no more data because the end of the stream
+ has been reached.
+
+
+
+ Reads the next byte of data from the input stream. The value
+ byte is returned as an int in the range 0 to 255. If no byte is
+ available because the end of the stream has been reached, the
+ value -1 is returned. The definition of this method in
+ java.io.InputStream allows this method to block, but it won't.
+
+ the next byte of data, or -1 if the end of the stream
+ is reached.
+
+
+
+
+ When overridden in a derived class, sets the position within the current stream.
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Skips the specified n.
+
+ The n.
+
+
+
+
+ When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies bytes from to the current stream.
+ The zero-based byte offset in at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+
+ The sum of and is greater than the buffer length.
+
+
+ is null.
+
+
+ or is negative.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support writing.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports reading.
+
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
+
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports writing.
+
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets the length in bytes of the stream.
+
+
+
+ A long value representing the length of the stream in bytes.
+
+
+ A class derived from Stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, gets or sets the position within the current stream.
+
+
+
+ The current position within the stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ This class provides a wrapper over an OutputStream so that Document
+ writers can't accidently go over their size limits
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Create a POIFSDocumentWriter
+
+ the OutputStream to which the data is actually
+ the maximum number of bytes that can be written
+
+
+
+ Closes this output stream and releases any system resources
+ associated with this stream. The general contract of close is
+ that it closes the output stream. A closed stream cannot
+ perform output operations and cannot be reopened.
+
+
+
+
+ Flushes this output stream and forces any buffered output bytes
+ to be written out.
+
+
+
+
+ Writes b.length bytes from the specified byte array
+ to this output stream.
+
+ the data.
+
+
+
+ Writes len bytes from the specified byte array starting at
+ offset off to this output stream. The general contract for
+ write(b, off, len) is that some of the bytes in the array b are
+ written to the output stream in order; element b[off] is the
+ first byte written and b[off+len-1] is the last byte written by
+ this operation.
+ If b is null, a NullPointerException is thrown.
+ If off is negative, or len is negative, or off+len is greater
+ than the length of the array b, then an
+ IndexOutOfBoundsException is thrown.
+
+ the data.
+ the start offset in the data.
+ the number of bytes to write.
+
+
+
+ Writes the specified byte to this output stream. The general
+ contract for write is that one byte is written to the output
+ stream. The byte to be written is the eight low-order bits of
+ the argument b. The 24 high-order bits of b are ignored.
+
+ the byte.
+
+
+
+ write the rest of the document's data (fill in at the end)
+
+ the actual number of bytes the corresponding
+ document must fill
+ the byte to fill remaining space with
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports reading.
+
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
+
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports writing.
+
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets the length in bytes of the stream.
+
+
+
+ A long value representing the length of the stream in bytes.
+
+
+ A class derived from Stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, gets or sets the position within the current stream.
+
+
+
+ The current position within the stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ This is the main class of the POIFS system; it manages the entire
+ life cycle of the filesystem.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Convenience method for clients that want to avoid the auto-Close behaviour of the constructor.
+
+ The stream.
+
+ A convenience method (
+ CreateNonClosingInputStream()) has been provided for this purpose:
+ StreamwrappedStream = POIFSFileSystem.CreateNonClosingInputStream(is);
+ HSSFWorkbook wb = new HSSFWorkbook(wrappedStream);
+ is.reset();
+ doSomethingElse(is);
+
+
+
+
+
+ Initializes a new instance of the class. intended for writing
+
+
+
+
+ Create a POIFSFileSystem from an Stream. Normally the stream is Read until
+ EOF. The stream is always Closed. In the unlikely case that the caller has such a stream and
+ needs to use it after this constructor completes, a work around is to wrap the
+ stream in order to trap the Close() call.
+
+ the Streamfrom which to Read the data
+
+
+ Creates a POIFSFileSystem from a File. This uses less memory than
+ creating from an InputStream.
+
+ Note that with this constructor, you will need to call {@link #close()}
+ when you're done to have the underlying file closed, as the file is
+ kept open during normal operation to read the data out.
+ @param readOnly whether the POIFileSystem will only be used in read-only mode
+
+ @param file the File from which to read the data
+
+ @exception IOException on errors reading, or on invalid data
+
+
+ Creates a POIFSFileSystem from a File. This uses less memory than
+ creating from an InputStream. The File will be opened read-only
+
+ Note that with this constructor, you will need to call {@link #close()}
+ when you're done to have the underlying file closed, as the file is
+ kept open during normal operation to read the data out.
+
+ @param file the File from which to read the data
+
+ @exception IOException on errors reading, or on invalid data
+
+
+
+ Checks that the supplied Stream(which MUST
+ support mark and reset, or be a PushbackInputStream)
+ has a POIFS (OLE2) header at the start of it.
+ If your Streamdoes not support mark / reset,
+ then wrap it in a PushBackInputStream, then be
+ sure to always use that, and not the original!
+
+ An Streamwhich supports either mark/reset, or is a PushbackStream
+
+ true if [has POIFS header] [the specified inp]; otherwise, false.
+
+
+
+ Checks if the supplied first 8 bytes of a stream / file
+ has a POIFS (OLE2) header.
+
+
+ Creates a new {@link POIFSFileSystem} in a new {@link File}.
+ Use {@link #POIFSFileSystem(File)} to open an existing File,
+ this should only be used to create a new empty filesystem.
+
+ @param file The file to create and open
+ @return The created and opened {@link POIFSFileSystem}
+
+
+ This tool extracts out the source of all VBA Modules of an office file,
+ both OOXML (eg XLSM) and OLE2/POIFS (eg DOC), to STDOUT or a directory.
+
+ @since 3.15-beta2
+
+
+ Extracts the VBA modules from a macro-enabled office file and Writes them
+ to files in outputDir.
+
+ Creates the outputDir, directory, including any necessary but
+ nonexistent parent directories, if outputDir does not exist.
+ If outputDir is null, Writes the contents to standard out instead.
+
+ @param input the macro-enabled office file.
+ @param outputDir the directory to write the extracted VBA modules to.
+ @param extension file extension of the extracted VBA modules
+ @since 3.15-beta2
+
+
+ Extracts the VBA modules from a macro-enabled office file and Writes them
+ to .vba files in outputDir.
+
+ Creates the outputDir, directory, including any necessary but
+ nonexistent parent directories, if outputDir does not exist.
+ If outputDir is null, Writes the contents to standard out instead.
+
+ @param input the macro-enabled office file.
+ @param outputDir the directory to write the extracted VBA modules to.
+ @since 3.15-beta2
+
+
+ Finds all VBA Macros in an office file (OLE2/POIFS and OOXML/OPC),
+ and returns them.
+
+ @since 3.15-beta2
+
+
+ Reads all macros from all modules of the opened office file.
+ @return All the macros and their contents
+
+ @since 3.15-beta2
+
+
+ Recursively traverses directory structure rooted at dir.
+ For each macro module that is found, the module's name and code are
+ Added to modules.
+
+ @param dir
+ @param modules
+ @throws IOException
+ @since 3.15-beta2
+
+
+ Read length bytes of MBCS (multi-byte character Set) characters from the stream
+
+ @param stream the inputstream to read from
+ @param length number of bytes to read from stream
+ @param charset the character Set encoding of the bytes in the stream
+ @return a java String in the supplied character Set
+ @throws IOException
+
+
+ Reads module from DIR node in input stream and Adds it to the modules map for decompression later
+ on the second pass through this function, the module will be decompressed
+
+ Side-effects: Adds a new module to the module map or Sets the buf field on the module
+ to the decompressed stream contents (the VBA code for one module)
+
+ @param in the Run-length encoded input stream to read from
+ @param streamName the stream name of the module
+ @param modules a map to store the modules
+ @throws IOException
+
+
+ Skips n bytes in an input stream, throwing IOException if the
+ number of bytes skipped is different than requested.
+ @throws IOException
+
+
+ Reads VBA Project modules from a VBA Project directory located at
+ macroDir into modules.
+
+ @since 3.15-beta2
+
+
+
+ A POIFS backed by a byte array.
+
+
+
+
+ Common definition of how we read and write bytes
+
+
+
+
+ Close the underlying stream
+
+
+
+
+ Copies the contents to the specified Stream
+
+
+
+
+
+ A POIFS DataSource backed by a File
+ TODO - Return the ByteBuffers in such a way that in RW mode,
+ changes to the buffer end up on the disk (will fix the HPSF TestWrite
+ currently failing unit test when done)
+
+
+
+
+ Reads a sequence of bytes from this FileStream starting at the given file position.
+
+
+ The file position at which the transfer is to begin;
+
+
+
+
+ Writes a sequence of bytes to this FileStream from the given Stream,
+ starting at the given file position.
+
+ The Stream from which bytes are to be transferred
+ The file position at which the transfer is to begin;
+ must be non-negative
+
+
+
+ This interface defines methods for finding and setting sibling
+ Property instances
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Gets or sets the previous child.
+
+ The previous child.
+
+
+
+ Gets or sets the next child.
+
+ The next child.
+
+
+
+ Trivial extension of Property for POIFSDocuments
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ the name of the directory
+
+
+
+ Initializes a new instance of the class.
+
+ index number
+ byte data
+ offset into byte data
+
+
+
+ Change a Property's name
+
+ the Property whose name Is being Changed.
+ the new name for the Property
+ true if the name Change could be made, else false
+
+
+
+ Delete a Property
+
+ the Property being Deleted
+ true if the Property could be Deleted, else false
+
+
+
+ Directory Property Comparer
+
+
+
+
+ Object equality, implemented as object identity
+
+ Object we're being Compared to
+ true if identical, else false
+
+
+
+ Compare method. Assumes both parameters are non-null
+ instances of Property. One property is less than another if
+ its name is shorter than the other property's name. If the
+ names are the same length, the property whose name comes
+ before the other property's name, alphabetically, is less
+ than the other property.
+
+ first object to compare, better be a Property
+ second object to compare, better be a Property
+ negative value if o1 smaller than o2,
+ zero if o1 equals o2,
+ positive value if o1 bigger than o2.
+
+
+
+ Gets a value indicating whether this instance is directory.
+
+
+ true if a directory type Property; otherwise, false.
+
+
+
+
+ Perform whatever activities need to be performed prior to
+ writing
+
+
+
+
+ Get an iterator over the children of this Parent; all elements
+ are instances of Property.
+
+ Iterator of children; may refer to an empty collection
+
+
+
+ Add a new child to the collection of children
+
+ the new child to be added; must not be null
+
+
+
+ Trivial extension of Property for POIFSDocuments
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ POIFSDocument name
+ POIFSDocument size
+
+
+
+ Initializes a new instance of the class.
+
+ index number
+ byte data
+ offset into byte data
+
+
+
+ Gets or sets the document.
+
+ the associated POIFSDocument
+
+
+
+ Determines whether this instance is directory.
+
+
+ true if this instance is directory; otherwise, false.
+
+
+
+
+ Perform whatever activities need to be performed prior to
+ writing
+
+
+
+ Update the size of the property's data
+
+
+ Prepare to be written
+
+
+
+ Behavior for parent (directory) properties
+ @author Marc Johnson27591@hotmail.com
+
+
+
+
+ Get an iterator over the children of this Parent
+ all elements are instances of Property.
+
+
+
+
+
+ Add a new child to the collection of children
+
+ the new child to be added; must not be null
+
+
+
+ Sets the previous child.
+
+
+
+
+ Sets the next child.
+
+
+
+
+ This abstract base class is the ancestor of all classes
+ implementing POIFS Property behavior.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Constructor from byte data
+
+ index number
+ byte data
+ offset into byte data
+
+
+
+ Write the raw data to an OutputStream.
+
+ the OutputStream to which the data Should be
+ written.
+
+
+
+ Gets or sets the start block for the document referred to by this
+ Property.
+
+ the start block index
+
+
+
+ Based on the currently defined size, Should this property use
+ small blocks?
+
+ true if the size Is less than _big_block_minimum_bytes
+
+
+
+ does the length indicate a small document?
+
+ length in bytes
+
+ true if the length Is less than
+ _big_block_minimum_bytes; otherwise, false.
+
+
+
+
+ Gets or sets the name of this property
+
+ property name
+
+
+
+ Gets a value indicating whether this instance is directory.
+
+
+ true if a directory type Property; otherwise, false.
+
+
+
+
+ Gets or sets the storage class ID for this property stream. ThIs Is the Class ID
+ of the COM object which can read and write this property stream
+ Storage Class ID
+
+
+
+ Set the property type. Makes no attempt to validate the value.
+
+ the property type (root, file, directory)
+
+
+
+ Sets the color of the node.
+
+ the node color (red or black)
+
+
+
+ Sets the child property.
+
+ the child property's index in the Property Table
+
+
+
+ Get the child property (its index in the Property Table)
+
+ The index of the child.
+
+
+
+ Gets or sets the size of the document associated with this Property
+
+ the size of the document, in bytes
+
+
+
+ Gets or sets the index.
+
+ The index.
+ Get the index for this Property
+ @return the index of this Property within its Property Table
+
+
+
+ Perform whatever activities need to be performed prior to
+ writing
+
+
+
+
+ Gets the index of the next child.
+
+ The index of the next child.
+
+
+
+ Gets the index of the previous child.
+
+ The index of the previous child.
+
+
+
+ Determines whether the specified index Is valid
+
+ value to be checked
+
+ true if the index Is valid; otherwise, false.
+
+
+
+
+ Gets or sets the previous child.
+
+ the new 'previous' child; may be null, which has
+ the effect of saying there Is no 'previous' child
+
+
+
+ Gets or sets the next Child
+
+ the new 'next' child; may be null, which has the
+ effect of saying there Is no 'next' child
+
+
+
+ Get an array of objects, some of which may implement
+ POIFSViewable
+
+ an array of Object; may not be null, but may be empty
+
+
+
+ Get an Iterator of objects, some of which may implement POIFSViewable
+
+ may not be null, but may have an empty
+ back end store
+
+
+
+ Give viewers a hint as to whether to call GetViewableArray or
+ GetViewableIterator
+
+ true if a viewer Should call GetViewableArray; otherwise, false
+ if a viewer Should call GetViewableIterator
+
+
+
+
+ Provides a short description of the object, to be used when a
+ POIFSViewable object has not provided its contents.
+
+ The short description.
+
+
+
+ Constants used by Properties namespace
+
+
+
+
+ Convert raw data blocks to an array of Property's
+
+ The blocks to be converted
+ the converted List of Property objects. May contain
+ nulls, but will not be null
+
+
+ Default constructor
+
+
+ reading constructor (used when we've read in a file and we want
+ to extract the property table from it). Populates the
+ properties thoroughly
+
+ @param startBlock the first block of the property table
+ @param blockList the list of blocks
+
+ @exception IOException if anything goes wrong (which should be
+ a result of the input being NFG)
+
+
+ Prepare to be written Leon
+
+
+ Return the number of BigBlock's this instance uses
+
+ @return count of BigBlock instances
+
+
+ Write the storage to an Stream
+
+ @param stream the Stream to which the stored data should
+ be written
+
+ @exception IOException on problems writing to the specified
+ stream
+
+
+
+ Initializes a new instance of the class.
+
+ index number
+ byte data
+ offset into byte data
+
+
+
+ Gets or sets the size of the document associated with this Property
+
+ the size of the document, in bytes
+
+
+
+ A block of block allocation table entries. BATBlocks are created
+ only through a static factory method: createBATBlocks.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+ For a regular fat block, these are 128 / 1024
+ next sector values.
+ For a XFat (DIFat) block, these are 127 / 1023
+ next sector values, then a chaining value.
+
+
+ Does this BATBlock have any free sectors in it?
+
+
+ Where in the file are we?
+
+
+
+ Create a single instance initialized with default values
+
+
+
+ Create a single instance initialized (perhaps partially) with entries
+
+ @param entries the array of block allocation table entries
+ @param start_index the index of the first entry to be written
+ to the block
+ @param end_index the index, plus one, of the last entry to be
+ written to the block (writing is for all index
+ k, start_index <= k < end_index)
+
+
+ Create a single BATBlock from the byte buffer, which must hold at least
+ one big block of data to be read.
+
+
+ **
+
+
+
+ Create an array of BATBlocks from an array of int block
+ allocation table entries
+
+ the poifs bigBlockSize
+ the array of int entries
+ the newly created array of BATBlocks
+
+
+
+ Create an array of XBATBlocks from an array of int block
+ allocation table entries
+
+
+ the array of int entries
+ the start block of the array of XBAT blocks
+ the newly created array of BATBlocks
+
+
+
+ Calculate how many BATBlocks are needed to hold a specified
+ number of BAT entries.
+
+ the number of entries
+ the number of BATBlocks needed
+
+
+
+ Calculate how many XBATBlocks are needed to hold a specified
+ number of BAT entries.
+
+ the number of entries
+ the number of XBATBlocks needed
+
+
+ Calculates the maximum size of a file which is addressable given the
+ number of FAT (BAT) sectors specified. (We don't care if those BAT
+ blocks come from the 109 in the header, or from header + XBATS, it
+ won't affect the calculation)
+
+ The actual file size will be between [size of fatCount-1 blocks] and
+ [size of fatCount blocks].
+ For 512 byte block sizes, this means we may over-estimate by up to 65kb.
+ For 4096 byte block sizes, this means we may over-estimate by up to 4mb
+
+
+
+ Gets the entries per block.
+
+ The number of entries per block
+
+
+
+ Gets the entries per XBAT block.
+
+ number of entries per XBAT block
+
+
+
+ Gets the XBAT chain offset.
+
+ offset of chain index of XBAT block
+
+
+ Does this BATBlock have any free sectors in it, or
+ is it full?
+
+
+ How many sectors in this block are taken?
+ Note that calling {@link #hasFreeSectors()} is much quicker
+
+
+ Retrieve where in the file we live
+
+
+
+ Create a single instance initialized (perhaps partially) with entries
+
+ the array of block allocation table entries
+ the index of the first entry to be written
+ to the block
+ the index, plus one, of the last entry to be
+ written to the block (writing is for all index
+ k, start_index less than k less than end_index)
+
+
+
+
+ Write the block's data to an Stream
+
+ the Stream to which the stored data should
+ be written
+
+
+
+ Abstract base class of all POIFS block storage classes. All
+ extensions of BigBlock should write 512 bytes of data when
+ requested to write their data.
+ This class has package scope, as there is no reason at this time to
+ make the class public.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Default implementation of write for extending classes that
+ contain their data in a simple array of bytes.
+
+ the OutputStream to which the data should be written.
+ the byte array of to be written.
+
+
+
+ Write the block's data to an OutputStream
+
+ the OutputStream to which the stored data should be written
+
+
+
+ Write the storage to an OutputStream
+
+ the OutputStream to which the stored data should be written
+
+
+
+ This class manages and creates the Block Allocation Table, which is
+ basically a set of linked lists of block indices.
+ Each block of the filesystem has an index. The first block, the
+ header, is skipped; the first block after the header is index 0,
+ the next is index 1, and so on.
+ A block's index is also its index into the Block Allocation
+ Table. The entry that it finds in the Block Allocation Table is the
+ index of the next block in the linked list of blocks making up a
+ file, or it is set to -2: end of list.
+
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ create a BlockAllocationTableReader for an existing filesystem. Side
+ effect: when this method finishes, the BAT blocks will have
+ been Removed from the raw block list, and any blocks labeled as
+ 'unused' in the block allocation table will also have been
+ Removed from the raw block list.
+ the poifs bigBlockSize
+ the number of BAT blocks making up the block allocation table
+ the array of BAT block indices from the
+ filesystem's header
+ the number of XBAT blocks
+ the index of the first XBAT block
+ the list of RawDataBlocks
+
+
+
+ create a BlockAllocationTableReader from an array of raw data blocks
+
+
+ the raw data
+ the list holding the managed blocks
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ walk the entries from a specified point and return the
+ associated blocks. The associated blocks are Removed from the block list
+
+ the first block in the chain
+
+ the raw data block list
+ array of ListManagedBlocks, in their correct order
+
+
+
+ determine whether the block specified by index is used or not
+
+ determine whether the block specified by index is used or not
+
+ true if the specified block is used; otherwise, false.
+
+
+
+
+ return the next block index
+
+ The index of the current block
+ index of the next block (may be
+ POIFSConstants.END_OF_CHAIN, indicating end of chain
+ (duh))
+
+
+
+ Convert an array of blocks into a Set of integer indices
+
+ the array of blocks containing the indices
+ the list of blocks being managed. Unused
+ blocks will be eliminated from the list
+
+
+
+ This class manages and creates the Block Allocation Table, which is
+ basically a set of linked lists of block indices.
+ Each block of the filesystem has an index. The first block, the
+ header, is skipped; the first block after the header is index 0,
+ the next is index 1, and so on.
+ A block's index is also its index into the Block Allocation
+ Table. The entry that it finds in the Block Allocation Table is the
+ index of the next block in the linked list of blocks making up a
+ file, or it is set to -2: end of list.
+ *
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Create the BATBlocks we need
+
+ start block index of BAT blocks
+
+
+
+ Allocate space for a block of indices
+
+ the number of blocks to allocate space for
+ the starting index of the blocks
+
+
+
+ Sets the start block for this instance
+
+
+ index into the array of BigBlock instances making up the the filesystem
+
+
+
+
+ create the BATBlocks
+
+
+
+
+ Write the storage to an OutputStream
+
+ the OutputStream to which the stored data should be written
+
+
+
+ Gets the number of BigBlock's this instance uses
+
+ count of BigBlock instances
+
+
+
+ Interface for lists of blocks that are mapped by block allocation
+ tables
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ remove the specified block from the list
+
+ the index of the specified block; if the index is
+ out of range, that's ok
+
+
+
+ Remove and return the specified block from the list
+
+ the index of the specified block
+ the specified block
+
+
+
+ get the blocks making up a particular stream in the list. The
+ blocks are removed from the list.
+
+ the index of the first block in the stream
+
+ the stream as an array of correctly ordered blocks
+
+
+
+ set the associated BlockAllocationTable
+
+ the associated BlockAllocationTable
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ provide blocks to manage
+
+ blocks to be managed
+
+
+
+ remove the specified block from the list
+
+ the index of the specified block; if the index is
+ out of range, that's ok
+
+
+
+ Remove and return the specified block from the list
+
+ the index of the specified block
+ the specified block
+
+
+
+ get the blocks making up a particular stream in the list. The
+ blocks are removed from the list.
+
+ the index of the first block in the stream
+
+
+ the stream as an array of correctly ordered blocks
+
+
+
+
+ set the associated BlockAllocationTable
+
+ the associated BlockAllocationTable
+
+
+
+ An interface for persisting block storage of POIFS components.
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Writes the blocks.
+
+ The stream.
+
+
+ Wraps a byte array and provides simple data input access.
+ Internally, this class maintains a buffer read index, so that for the most part, primitive
+ data can be read in a data-input-stream-like manner.
+
+ Note - the calling class should call the {@link #available()} method to detect end-of-buffer
+ and Move to the next data block when the current is exhausted.
+ For optimisation reasons, no error handling is performed in this class. Thus, mistakes in
+ calling code ran may raise ugly exceptions here, like {@link ArrayIndexOutOfBoundsException},
+ etc .
+
+ The multi-byte primitive input methods ({@link #readUshortLE()}, {@link #readIntLE()} and
+ {@link #readLongLE()}) have corresponding 'spanning Read' methods which (when required) perform
+ a read across the block boundary. These spanning read methods take the previous
+ {@link DataInputBlock} as a parameter.
+ Reads of larger amounts of data (into byte array buffers) must be managed by the caller
+ since these could conceivably involve more than two blocks.
+
+ @author Josh Micich
+
+
+ Possibly any size (usually 512K or 64K). Assumed to be at least 8 bytes for all blocks
+ before the end of the stream. The last block in the stream can be any size except zero.
+
+
+ Reads a short which was encoded in little endian format.
+
+
+ Reads a short which spans the end of prevBlock and the start of this block.
+
+
+ Reads an int which was encoded in little endian format.
+
+
+ Reads an int which spans the end of prevBlock and the start of this block.
+
+
+ Reads a long which was encoded in little endian format.
+
+
+ Reads a long which spans the end of prevBlock and the start of this block.
+
+
+ Reads a small amount of data from across the boundary between two blocks.
+ The {@link #_readIndex} of this (the second) block is updated accordingly.
+ Note- this method (and other code) assumes that the second {@link DataInputBlock}
+ always is big enough to complete the read without being exhausted.
+
+
+ Reads len bytes from this block into the supplied buffer.
+
+
+
+ create a document block from a raw data block
+
+ The block.
+
+
+
+ Create a single instance initialized with data.
+
+ the InputStream delivering the data.
+ the poifs bigBlockSize
+
+
+
+ Get the number of bytes Read for this block.
+
+ bytes Read into the block
+
+
+
+ Was this a partially Read block?
+
+ true if the block was only partially filled with data
+
+
+
+ Gets the fill byte used
+
+ The fill byte.
+
+
+
+ convert a single long array into an array of DocumentBlock
+ instances
+
+ the poifs bigBlockSize
+ the byte array to be converted
+ the intended size of the array (which may be smaller)
+ an array of DocumentBlock instances, filled from the
+ input array
+
+
+
+ Read data from an array of DocumentBlocks
+
+ the blocks to Read from
+ the buffer to Write the data into
+ the offset into the array of blocks to Read from
+
+
+
+ Write the storage to an OutputStream
+
+ the OutputStream to which the stored data should
+ be written
+
+
+
+ The block containing the archive header
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+ What big block Size the file uses. Most files
+ use 512 bytes, but a few use 4096
+
+
+ Number of small block allocation table blocks (int)
+ (Number of MiniFAT Sectors in Microsoft parlance)
+
+
+
+ create a new HeaderBlockReader from an Stream
+
+ the source Stream
+
+
+
+ Alerts the short read.
+
+ The read.
+ The expected size.
+
+
+
+ Get start of Property Table
+
+ the index of the first block of the Property Table
+
+
+
+ Gets start of small block allocation table
+
+ The SBAT start.
+
+
+
+ Gets number of BAT blocks
+
+ The BAT count.
+
+
+
+ Gets the BAT array.
+
+ The BAT array.
+
+
+
+ Gets the XBAT count.
+
+ The XBAT count.
+ @return XBAT count
+
+
+
+ Gets the index of the XBAT.
+
+ The index of the XBAT.
+
+
+
+ Gets The Big Block Size, normally 512 bytes, sometimes 4096 bytes
+
+ The size of the big block.
+ @return
+
+
+
+ Constants used in reading/writing the Header block
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ The block containing the archive header
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+ What big block Size the file uses. Most files
+ use 512 bytes, but a few use 4096
+
+
+ Number of small block allocation table blocks (int)
+ (Number of MiniFAT Sectors in Microsoft parlance)
+
+
+
+ create a new HeaderBlockReader from an Stream
+
+ the source Stream
+
+
+
+ Alerts the short read.
+
+ The read.
+ expected size to read
+
+
+
+ Get start of Property Table
+
+ the index of the first block of the Property Table
+
+
+
+ Gets start of small block allocation table
+
+ The SBAT start.
+
+
+
+ Gets number of BAT blocks
+
+ The BAT count.
+
+
+
+ Gets the BAT array.
+
+ The BAT array.
+
+
+
+ Gets the XBAT count.
+
+ The XBAT count.
+ @return XBAT count
+
+
+
+ Gets the index of the XBAT.
+
+ The index of the XBAT.
+
+
+
+ Gets The Big Block Size, normally 512 bytes, sometimes 4096 bytes
+
+ The size of the big block.
+ @return
+
+
+
+ The block containing the archive header
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Set BAT block parameters. Assumes that all BAT blocks are
+ contiguous. Will construct XBAT blocks if necessary and return
+ the array of newly constructed XBAT blocks.
+
+ count of BAT blocks
+ index of first BAT block
+ array of XBAT blocks; may be zero Length, will not be
+ null
+
+
+
+ Set start of Property Table
+
+ the index of the first block of the Property
+ Table
+
+
+
+ Set start of small block allocation table
+
+ the index of the first big block of the small
+ block allocation table
+
+
+
+ Set count of SBAT blocks
+
+ the number of SBAT blocks
+
+
+
+ For a given number of BAT blocks, calculate how many XBAT
+ blocks will be needed
+
+
+ number of BAT blocks
+ number of XBAT blocks needed
+
+
+
+ Write the block's data to an Stream
+
+ the Stream to which the stored data should
+ be written
+
+
+
+
+ An interface for blocks managed by a list that works with a
+ BlockAllocationTable to keep block sequences straight
+ @author Marc Johnson (mjohnson at apache dot org
+
+
+
+
+ Get the data from the block
+
+ the block's data as a byte array
+
+
+
+ A block of Property instances
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Create a single instance initialized with default values
+
+
+ the properties to be inserted
+ the offset into the properties array
+
+
+
+ Create an array of PropertyBlocks from an array of Property
+ instances, creating empty Property instances to make up any
+ shortfall
+
+
+ the Property instances to be converted into PropertyBlocks, in a java List
+ the array of newly created PropertyBlock instances
+
+
+
+ Write the block's data to an OutputStream
+
+ the OutputStream to which the stored data should be written
+
+
+
+ A big block created from an InputStream, holding the raw data
+ @author Marc Johnson (mjohnson at apache dot org
+
+
+
+
+ Constructor RawDataBlock
+
+ the Stream from which the data will be read
+
+
+
+ Initializes a new instance of the class.
+
+ the Stream from which the data will be read
+ the size of the POIFS blocks, normally 512 bytes {@link POIFSConstants#BIG_BLOCK_SIZE}
+
+
+
+ When we read the data, did we hit end of file?
+
+ true if the EoF was hit during this block, or; otherwise, falseif not. If you have a dodgy short last block, then
+ it's possible to both have data, and also hit EoF...
+
+
+
+ Did we actually find any data to read? It's possible,
+ in the event of a short last block, to both have hit
+ the EoF, but also to have data
+
+ true if this instance has data; otherwise, false.
+
+
+
+ Get the data from the block
+
+ the block's data as a byte array
+
+
+
+ A list of RawDataBlocks instances, and methods to manage the list
+ @author Marc Johnson (mjohnson at apache dot org
+
+
+
+
+ Initializes a new instance of the class.
+
+ the InputStream from which the data will be read
+ The big block size, either 512 bytes or 4096 bytes
+
+
+
+ This class implements reading the small document block list from an
+ existing file
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ fetch the small document block list from an existing file, normally
+ needed for debugging and low level dumping. You should typically call
+
+ the poifs bigBlockSize
+ the raw data from which the small block table will be extracted
+ the root property (which contains the start block and small block table size)
+ the start block of the SBAT
+ the small document block reader
+
+
+
+ fetch the small document block list from an existing file
+
+ the poifs bigBlockSize
+ the raw data from which the small block table will be extracted
+ the root property (which contains the start block and small block table size)
+ the start block of the SBAT
+ the small document block list
+
+
+
+ This class implements reading the small document block list from an
+ existing file
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ the poifs bigBlockSize
+ a IList of POIFSDocument instances
+ the Filesystem's root property
+
+
+
+ Get the number of SBAT blocks
+
+ number of SBAT big blocks
+
+
+
+ Gets the SBAT.
+
+ the Small Block Allocation Table
+
+
+
+ Return the number of BigBlock's this instance uses
+
+ count of BigBlock instances
+
+
+
+ Sets the start block.
+
+ The start block.
+
+
+
+ Write the storage to an OutputStream
+
+ the OutputStream to which the stored data should be written
+
+
+
+ Storage for documents that are too small to use regular
+ DocumentBlocks for their data
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ convert a single long array into an array of SmallDocumentBlock
+ instances
+
+ the poifs bigBlockSize
+ the byte array to be converted
+ the intended size of the array (which may be smaller)
+ an array of SmallDocumentBlock instances, filled from
+ the array
+
+
+
+ fill out a List of SmallDocumentBlocks so that it fully occupies
+ a Set of big blocks
+
+
+ the List to be filled out.
+ number of big blocks the list encompasses
+
+
+
+ Factory for creating SmallDocumentBlocks from DocumentBlocks
+
+
+ the original DocumentBlocks
+ the total document size
+ an array of new SmallDocumentBlocks instances
+
+
+
+ create a list of SmallDocumentBlock's from raw data
+
+
+ the raw data containing the SmallDocumentBlock
+ a List of SmallDocumentBlock's extracted from the input
+
+
+
+ Read data from an array of SmallDocumentBlocks
+
+ the blocks to Read from.
+ the buffer to Write the data into.
+ the offset into the array of blocks to Read from
+
+
+
+ Calculate the storage size of a Set of SmallDocumentBlocks
+
+ number of SmallDocumentBlocks
+ total size
+
+
+
+ Makes the empty small document block.
+
+
+
+
+
+ Converts to block count.
+
+ The size.
+
+
+
+
+ Write the storage to an OutputStream
+
+ the OutputStream to which the stored data should
+ be written
+
+
+
+ Get the data from the block
+
+ the block's data as a byte array
+
+
+
+ A list of SmallDocumentBlocks instances, and methods to manage the list
+ @author Marc Johnson (mjohnson at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+ a list of SmallDocumentBlock instances
+
+
+
+ Common Parent for OLE2 based Text Extractors
+ of POI Documents, such as .doc, .xls
+ You will typically find the implementation of
+ a given format's text extractor under NPOI.Format.Extractor
+
+
+ @see org.apache.poi.hssf.extractor.ExcelExtractor
+ @see org.apache.poi.hslf.extractor.PowerPointExtractor
+ @see org.apache.poi.hdgf.extractor.VisioTextExtractor
+ @see org.apache.poi.hwpf.extractor.WordExtractor
+
+
+
+ The POIDocument that's open
+
+
+
+ Creates a new text extractor for the given document
+
+
+
+
+
+ Creates a new text extractor, using the same document as another
+ text extractor. Normally only used by properties extractors.
+
+
+
+
+
+ Returns the document information metadata for the document
+
+ The doc summary information.
+
+
+
+ Returns the summary information metadata for the document
+
+ The summary information.
+
+
+
+ Returns an HPSF powered text extractor for the
+ document properties metadata, such as title and author.
+
+
+
+
+ Return the underlying DirectoryEntry of this document.
+
+ @return the DirectoryEntry that is associated with the POIDocument of this extractor.
+
+
+
+ Common Parent for Text Extractors
+ of POI Documents.
+ You will typically find the implementation of
+ a given format's text extractor under
+ org.apache.poi.[format].extractor .
+
+ @see org.apache.poi.hssf.extractor.ExcelExtractor
+ @see org.apache.poi.hslf.extractor.PowerPointExtractor
+ @see org.apache.poi.hdgf.extractor.VisioTextExtractor
+ @see org.apache.poi.hwpf.extractor.WordExtractor
+
+
+
+ Retrieves all the text from the document.
+ How cells, paragraphs etc are separated in the text
+ is implementation specific - see the javadocs for
+ a specific project for details.
+
+ All the text from the document.
+
+
+
+ Returns another text extractor, which is able to
+ output the textual content of the document
+ metadata / properties, such as author and title.
+
+ The metadata text extractor.
+
+
+ Used to ensure file handle cleanup.
+
+ @param fs filesystem to close
+
+
+ Copies an Entry into a target POIFS directory, recursively
+
+
+ Copies nodes from one POIFS to the other minus the excepts
+
+ @param source
+ is the source POIFS to copy from
+ @param target
+ is the target POIFS to copy to
+ @param excepts
+ is a list of Strings specifying what nodes NOT to copy
+
+
+ Copies nodes from one POIFS to the other minus the excepts
+
+ @param source
+ is the source POIFS to copy from
+ @param target
+ is the target POIFS to copy to
+ @param excepts
+ is a list of Strings specifying what nodes NOT to copy
+
+
+
+ Fills the specified array.
+
+ The array.
+ The default value.
+
+
+
+ Assigns the specified byte value to each element of the specified
+ range of the specified array of bytes. The range to be filled
+ extends from index fromIndex, inclusive, to index
+ toIndex, exclusive. (If fromIndex==toIndex, the
+ range to be filled is empty.)
+
+ the array to be filled
+ the index of the first element (inclusive) to be filled with the specified value
+ the index of the last element (exclusive) to be filled with the specified value
+ the value to be stored in all elements of the array
+ if fromIndex > toIndex
+ if fromIndex < 0 or toIndex > a.length
+
+
+
+ Checks that {@code fromIndex} and {@code toIndex} are in
+ the range and throws an appropriate exception, if they aren't.
+
+
+
+
+
+
+
+ Convert Array to ArrayList
+
+ source array
+
+
+
+
+ Fills the specified array.
+
+ The array.
+ The default value.
+
+
+
+ Equals the specified a1.
+
+ The a1.
+ The b1.
+
+
+
+ Returns true if the two specified arrays of Objects are
+ equal to one another. The two arrays are considered equal if
+ both arrays contain the same number of elements, and all corresponding
+ pairs of elements in the two arrays are equal. Two objects e1
+ and e2 are considered equal if (e1==null ? e2==null
+ : e1.equals(e2)). In other words, the two arrays are equal if
+ they contain the same elements in the same order. Also, two array
+ references are considered equal if both are null.
+
+ @param a one array to be tested for equality
+ @param a2 the other array to be tested for equality
+ @return true if the two arrays are equal
+
+
+
+ Moves a number of entries in an array to another point in the array, shifting those inbetween as required.
+
+ The array to alter
+ The (0 based) index of the first entry to move
+ The (0 based) index of the positition to move to
+ The number of entries to move
+
+
+
+ Copies the specified array, truncating or padding with zeros (if
+ necessary) so the copy has the specified length. This method is temporary
+ replace for Arrays.copyOf() until we start to require JDK 1.6.
+
+ the array to be copied
+ the length of the copy to be returned
+ a copy of the original array, truncated or padded with zeros to obtain the specified length
+
+
+ Returns a hash code based on the contents of the specified array.
+ For any two long arrays a and b
+ such that Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is the same value that would be
+ obtained by invoking the {@link List#hashCode() hashCode}
+ method on a {@link List} Containing a sequence of {@link Long}
+ instances representing the elements of a in the same order.
+ If a is null, this method returns 0.
+
+ @param a the array whose hash value to compute
+ @return a content-based hash code for a
+ @since 1.5
+
+
+ Returns a hash code based on the contents of the specified array.
+ For any two non-null int arrays a and b
+ such that Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is the same value that would be
+ obtained by invoking the {@link List#hashCode() hashCode}
+ method on a {@link List} Containing a sequence of {@link int}
+ instances representing the elements of a in the same order.
+ If a is null, this method returns 0.
+
+ @param a the array whose hash value to compute
+ @return a content-based hash code for a
+ @since 1.5
+
+
+ Returns a hash code based on the contents of the specified array.
+ For any two short arrays a and b
+ such that Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is the same value that would be
+ obtained by invoking the {@link List#hashCode() hashCode}
+ method on a {@link List} Containing a sequence of {@link short}
+ instances representing the elements of a in the same order.
+ If a is null, this method returns 0.
+
+ @param a the array whose hash value to compute
+ @return a content-based hash code for a
+ @since 1.5
+
+
+ Returns a hash code based on the contents of the specified array.
+ For any two char arrays a and b
+ such that Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is the same value that would be
+ obtained by invoking the {@link List#hashCode() hashCode}
+ method on a {@link List} Containing a sequence of {@link Character}
+ instances representing the elements of a in the same order.
+ If a is null, this method returns 0.
+
+ @param a the array whose hash value to compute
+ @return a content-based hash code for a
+ @since 1.5
+
+
+ Returns a hash code based on the contents of the specified array.
+ For any two byte arrays a and b
+ such that Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is the same value that would be
+ obtained by invoking the {@link List#hashCode() hashCode}
+ method on a {@link List} Containing a sequence of {@link Byte}
+ instances representing the elements of a in the same order.
+ If a is null, this method returns 0.
+
+ @param a the array whose hash value to compute
+ @return a content-based hash code for a
+ @since 1.5
+
+
+ Returns a hash code based on the contents of the specified array.
+ For any two bool arrays a and b
+ such that Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is the same value that would be
+ obtained by invoking the {@link List#hashCode() hashCode}
+ method on a {@link List} Containing a sequence of {@link Boolean}
+ instances representing the elements of a in the same order.
+ If a is null, this method returns 0.
+
+ @param a the array whose hash value to compute
+ @return a content-based hash code for a
+ @since 1.5
+
+
+ Returns a hash code based on the contents of the specified array.
+ For any two float arrays a and b
+ such that Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is the same value that would be
+ obtained by invoking the {@link List#hashCode() hashCode}
+ method on a {@link List} Containing a sequence of {@link Float}
+ instances representing the elements of a in the same order.
+ If a is null, this method returns 0.
+
+ @param a the array whose hash value to compute
+ @return a content-based hash code for a
+ @since 1.5
+
+
+ Returns a hash code based on the contents of the specified array.
+ For any two double arrays a and b
+ such that Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is the same value that would be
+ obtained by invoking the {@link List#hashCode() hashCode}
+ method on a {@link List} Containing a sequence of {@link Double}
+ instances representing the elements of a in the same order.
+ If a is null, this method returns 0.
+
+ @param a the array whose hash value to compute
+ @return a content-based hash code for a
+ @since 1.5
+
+
+ Returns a hash code based on the contents of the specified array. If
+ the array Contains other arrays as elements, the hash code is based on
+ their identities rather than their contents. It is therefore
+ acceptable to invoke this method on an array that Contains itself as an
+ element, either directly or indirectly through one or more levels of
+ arrays.
+
+ For any two arrays a and b such that
+ Arrays.Equals(a, b), it is also the case that
+ Arrays.HashCode(a) == Arrays.HashCode(b).
+
+ The value returned by this method is equal to the value that would
+ be returned by Arrays.AsList(a).HashCode(), unless a
+ is null, in which case 0 is returned.
+
+ @param a the array whose content-based hash code to compute
+ @return a content-based hash code for a
+ @see #deepHashCode(Object[])
+ @since 1.5
+
+
+ Returns a hash code based on the "deep contents" of the specified
+ array. If the array Contains other arrays as elements, the
+ hash code is based on their contents and so on, ad infInitum.
+ It is therefore unacceptable to invoke this method on an array that
+ Contains itself as an element, either directly or indirectly through
+ one or more levels of arrays. The behavior of such an invocation is
+ undefined.
+
+ For any two arrays a and b such that
+ Arrays.DeepEquals(a, b), it is also the case that
+ Arrays.DeepHashCode(a) == Arrays.DeepHashCode(b).
+
+ The computation of the value returned by this method is similar to
+ that of the value returned by {@link List#hashCode()} on a list
+ Containing the same elements as a in the same order, with one
+ difference: If an element e of a is itself an array,
+ its hash code is computed not by calling e.HashCode(), but as
+ by calling the appropriate overloading of Arrays.HashCode(e)
+ if e is an array of a primitive type, or as by calling
+ Arrays.DeepHashCode(e) recursively if e is an array
+ of a reference type. If a is null, this method
+ returns 0.
+
+ @param a the array whose deep-content-based hash code to compute
+ @return a deep-content-based hash code for a
+ @see #hashCode(Object[])
+ @since 1.5
+
+
+ Returns true if the two specified arrays are deeply
+ Equal to one another. Unlike the {@link #Equals(Object[],Object[])}
+ method, this method is appropriate for use with nested arrays of
+ arbitrary depth.
+
+ Two array references are considered deeply equal if both
+ are null, or if they refer to arrays that contain the same
+ number of elements and all corresponding pairs of elements in the two
+ arrays are deeply Equal.
+
+ Two possibly null elements e1 and e2 are
+ deeply equal if any of the following conditions hold:
+
+ - e1 and e2 are both arrays of object reference
+ types, and Arrays.DeepEquals(e1, e2) would return true
+ - e1 and e2 are arrays of the same primitive
+ type, and the appropriate overloading of
+ Arrays.Equals(e1, e2) would return true.
+ - e1 == e2
+ - e1.Equals(e2) would return true.
+
+ Note that this defInition permits null elements at any depth.
+
+ If either of the specified arrays contain themselves as elements
+ either directly or indirectly through one or more levels of arrays,
+ the behavior of this method is undefined.
+
+ @param a1 one array to be tested for Equality
+ @param a2 the other array to be tested for Equality
+ @return true if the two arrays are equal
+ @see #Equals(Object[],Object[])
+ @see Objects#deepEquals(Object, Object)
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ The string representation consists of a list of the array's elements,
+ enclosed in square brackets ("[]"). Adjacent elements are
+ Separated by the characters ", " (a comma followed by a
+ space). Elements are Converted to strings as by
+ String.ValueOf(long). Returns "null" if a
+ is null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ The string representation consists of a list of the array's elements,
+ enclosed in square brackets ("[]"). Adjacent elements are
+ Separated by the characters ", " (a comma followed by a
+ space). Elements are Converted to strings as by
+ String.ValueOf(int). Returns "null" if a is
+ null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ The string representation consists of a list of the array's elements,
+ enclosed in square brackets ("[]"). Adjacent elements are
+ Separated by the characters ", " (a comma followed by a
+ space). Elements are Converted to strings as by
+ String.ValueOf(short). Returns "null" if a
+ is null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ The string representation consists of a list of the array's elements,
+ enclosed in square brackets ("[]"). Adjacent elements are
+ Separated by the characters ", " (a comma followed by a
+ space). Elements are Converted to strings as by
+ String.ValueOf(char). Returns "null" if a
+ is null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ The string representation consists of a list of the array's elements,
+ enclosed in square brackets ("[]"). Adjacent elements
+ are Separated by the characters ", " (a comma followed
+ by a space). Elements are Converted to strings as by
+ String.ValueOf(byte). Returns "null" if
+ a is null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ The string representation consists of a list of the array's elements,
+ enclosed in square brackets ("[]"). Adjacent elements are
+ Separated by the characters ", " (a comma followed by a
+ space). Elements are Converted to strings as by
+ String.ValueOf(bool). Returns "null" if
+ a is null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ The string representation consists of a list of the array's elements,
+ enclosed in square brackets ("[]"). Adjacent elements are
+ Separated by the characters ", " (a comma followed by a
+ space). Elements are Converted to strings as by
+ String.ValueOf(float). Returns "null" if a
+ is null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ The string representation consists of a list of the array's elements,
+ enclosed in square brackets ("[]"). Adjacent elements are
+ Separated by the characters ", " (a comma followed by a
+ space). Elements are Converted to strings as by
+ String.ValueOf(double). Returns "null" if a
+ is null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @since 1.5
+
+
+ Returns a string representation of the "deep contents" of the specified
+ array. If the array Contains other arrays as elements, the string
+ representation Contains their contents and so on. This method is
+ designed for Converting multidimensional arrays to strings.
+
+ The string representation consists of a list of the array's
+ elements, enclosed in square brackets ("[]"). Adjacent
+ elements are Separated by the characters ", " (a comma
+ followed by a space). Elements are Converted to strings as by
+ String.ValueOf(Object), unless they are themselves
+ arrays.
+
+ If an element e is an array of a primitive type, it is
+ Converted to a string as by invoking the appropriate overloading of
+ Arrays.ToString(e). If an element e is an array of a
+ reference type, it is Converted to a string as by invoking
+ this method recursively.
+
+ To avoid infInite recursion, if the specified array Contains itself
+ as an element, or Contains an indirect reference to itself through one
+ or more levels of arrays, the self-reference is Converted to the string
+ "[...]". For example, an array Containing only a reference
+ to itself would be rendered as "[[...]]".
+
+ This method returns "null" if the specified array
+ is null.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @see #ToString(Object[])
+ @since 1.5
+
+
+ Returns a string representation of the contents of the specified array.
+ If the array contains other arrays as elements, they are converted to
+ strings by the {@link Object#toString} method inherited from
+ Object, which describes their identities rather than
+ their contents.
+
+ The value returned by this method is equal to the value that would
+ be returned by Arrays.asList(a).toString(), unless a
+ is null, in which case "null" is returned.
+
+ @param a the array whose string representation to return
+ @return a string representation of a
+ @see #deepToString(Object[])
+ @since 1.5
+
+
+ The signum of this BigInteger: -1 for negative, 0 for zero, or
+ 1 for positive. Note that the BigInteger zero must have
+ a signum of 0. This is necessary to ensures that there is exactly one
+ representation for each BigInteger value.
+
+ @serial
+
+
+ The magnitude of this BigInteger, in big-endian order: the
+ zeroth element of this array is the most-significant int of the
+ magnitude. The magnitude must be "minimal" in that the most-significant
+ int ({@code mag[0]}) must be non-zero. This is necessary to
+ ensure that there is exactly one representation for each BigInteger
+ value. Note that this implies that the BigInteger zero has a
+ zero-length mag array.
+
+
+ One plus the bitCount of this BigInteger. Zeros means unitialized.
+
+ @serial
+ @see #bitCount
+ @deprecated Deprecated since logical value is offset from stored
+ value and correction factor is applied in accessor method.
+
+
+ One plus the bitLength of this BigInteger. Zeros means unitialized.
+ (either value is acceptable).
+
+ @serial
+ @see #bitLength()
+ @deprecated Deprecated since logical value is offset from stored
+ value and correction factor is applied in accessor method.
+
+
+ Two plus the index of the lowest-order int in the magnitude of this
+ BigInteger that contains a nonzero int, or -2 (either value is acceptable).
+ The least significant int has int-number 0, the next int in order of
+ increasing significance has int-number 1, and so forth.
+ @deprecated Deprecated since logical value is offset from stored
+ value and correction factor is applied in accessor method.
+
+
+ This mask is used to obtain the value of an int as if it were unsigned.
+
+
+ This internal constructor differs from its public cousin
+ with the arguments reversed in two ways: it assumes that its
+ arguments are correct, and it doesn't copy the magnitude array.
+
+
+ Translates a byte array containing the two's-complement binary
+ representation of a BigInteger into a BigInteger. The input array is
+ assumed to be in big-endian byte-order: the most significant
+ byte is in the zeroth element.
+
+ @param val big-endian two's-complement binary representation of
+ BigInteger.
+ @throws NumberFormatException {@code val} is zero bytes long.
+
+
+ This private constructor translates an int array containing the
+ two's-complement binary representation of a BigInteger into a
+ BigInteger. The input array is assumed to be in big-endian
+ int-order: the most significant int is in the zeroth element.
+
+
+ Constructs a BigInteger with the specified value, which may not be zero.
+
+
+ Returns the input array stripped of any leading zero bytes.
+ Since the source is trusted the copying may be skipped.
+
+
+ Returns the String representation of this BigInteger in the
+ given radix. If the radix is outside the range from {@link
+ Character#Min_RADIX} to {@link Character#Max_RADIX} inclusive,
+ it will default to 10 (as is the case for
+ {@code Integer.toString}). The digit-to-character mapping
+ provided by {@code Character.forDigit} is used, and a minus
+ sign is prepended if appropriate. (This representation is
+ compatible with the {@link #BigInteger(String, int) (String,
+ int)} constructor.)
+
+ @param radix radix of the String representation.
+ @return String representation of this BigInteger in the given radix.
+ @see Integer#toString
+ @see Character#forDigit
+ @see #BigInteger(java.lang.String, int)
+
+
+ The BigInteger constant zero.
+
+ @since 1.2
+
+
+ The BigInteger constant one.
+
+ @since 1.2
+
+
+ The BigInteger constant two. (Not exported.)
+
+
+ The BigInteger constant ten.
+
+ @since 1.5
+
+
+ Returns a BigInteger whose value is equal to that of the
+ specified {@code long}. This "static factory method" is
+ provided in preference to a ({@code long}) constructor
+ because it allows for reuse of frequently used BigIntegers.
+
+ @param val value of the BigInteger to return.
+ @return a BigInteger with the specified value.
+
+
+ Returns a BigInteger with the given two's complement representation.
+ Assumes that the input array will not be modified (the returned
+ BigInteger will reference the input array if feasible).
+
+
+ Package private method to return bit length for an integer.
+
+
+ Returns the number of bits in the two's complement representation
+ of this BigInteger that differ from its sign bit. This method is
+ useful when implementing bit-vector style sets atop BigIntegers.
+
+ @return number of bits in the two's complement representation
+ of this BigInteger that differ from its sign bit.
+
+
+ Returns a BigInteger whose value is the absolute value of this
+ BigInteger.
+
+ @return {@code abs(this)}
+
+
+ Returns a BigInteger whose value is {@code (-this)}.
+
+ @return {@code -this}
+
+
+ Returns a BigInteger whose value is (thisexponent).
+ Note that {@code exponent} is an integer rather than a BigInteger.
+
+ @param exponent exponent to which this BigInteger is to be raised.
+ @return thisexponent
+ @throws ArithmeticException {@code exponent} is negative. (This would
+ cause the operation to yield a non-integer value.)
+
+
+ Multiplies int arrays x and y to the specified lengths and places
+ the result into z. There will be no leading zeros in the resultant array.
+
+
+ Multiply an array by one word k and add to result, return the carry
+
+
+ Squares the contents of the int array x. The result is placed into the
+ int array z. The contents of x are not changed.
+
+
+ Add one word to the number a mlen words into a. Return the resulting
+ carry.
+
+
+ Returns the signum function of this BigInteger.
+
+ @return -1, 0 or 1 as the value of this BigInteger is negative, zero or
+ positive.
+
+
+ Returns a byte array containing the two's-complement
+ representation of this BigInteger. The byte array will be in
+ big-endian byte-order: the most significant byte is in
+ the zeroth element. The array will contain the minimum number
+ of bytes required to represent this BigInteger, including at
+ least one sign bit, which is {@code (ceil((this.bitLength() +
+ 1)/8))}. (This representation is compatible with the
+ {@link #BigInteger(byte[]) (byte[])} constructor.)
+
+ @return a byte array containing the two's-complement representation of
+ this BigInteger.
+ @see #BigInteger(byte[])
+
+
+ Returns the length of the two's complement representation in ints,
+ including space for at least one sign bit.
+
+
+ Returns the specified int of the little-endian two's complement
+ representation (int 0 is the least significant). The int number can
+ be arbitrarily high (values are logically preceded by infinitely many
+ sign ints).
+
+
+ Returns the index of the int that contains the first nonzero int in the
+ little-endian binary representation of the magnitude (int 0 is the
+ least significant). If the magnitude is zero, return value is undefined.
+
+
+ Returns a copy of the input array stripped of any leading zero bytes.
+
+
+ Takes an array a representing a negative 2's-complement number and
+ returns the minimal (no leading zero bytes) unsigned whose value is -a.
+
+
+ Takes an array a representing a negative 2's-complement number and
+ returns the minimal (no leading zero ints) unsigned whose value is -a.
+
+
+ Returns the number of zero bits preceding the highest-order
+ ("leftmost") one-bit in the two's complement binary representation
+ of the specified {@code int} value. Returns 32 if the
+ specified value has no one-bits in its two's complement representation,
+ in other words if it is equal to zero.
+
+ Note that this method is closely related to the logarithm base 2.
+ For all positive {@code int} values x:
+
+ - floor(log2(x)) = {@code 31 - numberOfLeadingZeros(x)}
+ - ceil(log2(x)) = {@code 32 - numberOfLeadingZeros(x - 1)}
+
+
+ @return the number of zero bits preceding the highest-order
+ ("leftmost") one-bit in the two's complement binary representation
+ of the specified {@code int} value, or 32 if the value
+ is equal to zero.
+ @since 1.5
+
+
+ Returns the number of zero bits following the lowest-order ("rightmost")
+ one-bit in the two's complement binary representation of the specified
+ {@code int} value. Returns 32 if the specified value has no
+ one-bits in its two's complement representation, in other words if it is
+ equal to zero.
+
+ @return the number of zero bits following the lowest-order ("rightmost")
+ one-bit in the two's complement binary representation of the
+ specified {@code int} value, or 32 if the value is equal
+ to zero.
+ @since 1.5
+
+
+ Returns the number of one-bits in the two's complement binary
+ representation of the specified {@code int} value. This function is
+ sometimes referred to as the population count.
+
+ @return the number of one-bits in the two's complement binary
+ representation of the specified {@code int} value.
+ @since 1.5
+
+
+ Compares the magnitude array of this BigInteger with the specified
+ BigInteger's. This is the version of compareTo ignoring sign.
+
+ @param val BigInteger whose magnitude array to be compared.
+ @return -1, 0 or 1 as this magnitude array is less than, equal to or
+ greater than the magnitude aray for the specified BigInteger's.
+
+
+ Compares this BigInteger with the specified Object for equality.
+
+ @param x Object to which this BigInteger is to be compared.
+ @return {@code true} if and only if the specified Object is a
+ BigInteger whose value is numerically equal to this BigInteger.
+
+
+ Returns the minimum of this BigInteger and {@code val}.
+
+ @param val value with which the minimum is to be computed.
+ @return the BigInteger whose value is the lesser of this BigInteger and
+ {@code val}. If they are equal, either may be returned.
+
+
+ Returns the maximum of this BigInteger and {@code val}.
+
+ @param val value with which the maximum is to be computed.
+ @return the BigInteger whose value is the greater of this and
+ {@code val}. If they are equal, either may be returned.
+
+
+ Returns the hash code for this BigInteger.
+
+ @return hash code for this BigInteger.
+
+
+ Converts this BigInteger to an {@code int}. This
+ conversion is analogous to a
+ narrowing primitive conversion from {@code long} to
+ {@code int} as defined in section 5.1.3 of
+ The Java(TM) Language Specification:
+ if this BigInteger is too big to fit in an
+ {@code int}, only the low-order 32 bits are returned.
+ Note that this conversion can lose information about the
+ overall magnitude of the BigInteger value as well as return a
+ result with the opposite sign.
+
+ @return this BigInteger converted to an {@code int}.
+
+
+ Converts this BigInteger to a {@code long}. This
+ conversion is analogous to a
+ narrowing primitive conversion from {@code long} to
+ {@code int} as defined in section 5.1.3 of
+ The Java(TM) Language Specification:
+ if this BigInteger is too big to fit in a
+ {@code long}, only the low-order 64 bits are returned.
+ Note that this conversion can lose information about the
+ overall magnitude of the BigInteger value as well as return a
+ result with the opposite sign.
+
+ @return this BigInteger converted to a {@code long}.
+
+
+ Returns a BigInteger whose value is {@code (this >> n)}. Sign
+ extension is performed. The shift distance, {@code n}, may be
+ negative, in which case this method performs a left shift.
+ (Computes floor(this / 2n).)
+
+ @param n shift distance, in bits.
+ @return {@code this >> n}
+ @throws ArithmeticException if the shift distance is {@code
+ Integer.Min_VALUE}.
+ @see #shiftLeft
+
+
+ Returns a BigInteger whose value is {@code (~this)}. (This method
+ returns a negative value if and only if this BigInteger is
+ non-negative.)
+
+ @return {@code ~this}
+
+
+ Returns a BigInteger whose value is {@code (this | val)}. (This method
+ returns a negative BigInteger if and only if either this or val is
+ negative.)
+
+ @param val value to be OR'ed with this BigInteger.
+ @return {@code this | val}
+
+
+ Package private methods used by BigDecimal code to multiply a BigInteger
+ with a long. Assumes v is not equal to INFLATED.
+
+
+ Returns a BigInteger whose value is {@code (this * val)}.
+
+ @param val value to be multiplied by this BigInteger.
+ @return {@code this * val}
+
+
+ Returns a BigInteger whose value is {@code (this + val)}.
+
+ @param val value to be added to this BigInteger.
+ @return {@code this + val}
+
+
+ Adds the contents of the int arrays x and y. This method allocates
+ a new int array to hold the answer and returns a reference to that
+ array.
+
+
+ Returns a BigInteger whose value is {@code (this - val)}.
+
+ @param val value to be subtracted from this BigInteger.
+ @return {@code this - val}
+
+
+ Subtracts the contents of the second int arrays (little) from the
+ first (big). The first int array (big) must represent a larger number
+ than the second. This method allocates the space necessary to hold the
+ answer.
+
+
+ Returns a BigInteger whose value is {@code (this / val)}.
+
+ @param val value by which this BigInteger is to be divided.
+ @return {@code this / val}
+ @throws ArithmeticException if {@code val} is zero.
+
+
+ Holds the magnitude of this MutableBigInteger in big endian order.
+ The magnitude may start at an offset into the value array, and it may
+ end before the length of the value array.
+
+
+ The number of ints of the value array that are currently used
+ to hold the magnitude of this MutableBigInteger. The magnitude starts
+ at an offset and offset + intLen may be less than value.Length.
+
+
+ The offset into the value array where the magnitude of this
+ MutableBigInteger begins.
+
+
+ MutableBigInteger with one element value array with the value 1. Used by
+ BigDecimal divideAndRound to increment the quotient. Use this constant
+ only when the method is not going to modify this object.
+
+
+ The default constructor. An empty MutableBigInteger is created with
+ a one word capacity.
+
+
+ Construct a new MutableBigInteger with a magnitude specified by
+ the int val.
+
+
+ Construct a new MutableBigInteger with the specified value array
+ up to the length of the array supplied.
+
+
+ Construct a new MutableBigInteger with a magnitude equal to the
+ specified BigInteger.
+
+
+ Construct a new MutableBigInteger with a magnitude equal to the
+ specified MutableBigInteger.
+
+
+ Internal helper method to return the magnitude array. The caller is not
+ supposed to modify the returned array.
+
+
+ Convert this MutableBigInteger to a long value. The caller has to make
+ sure this MutableBigInteger can be fit into long.
+
+
+ Convert this MutableBigInteger to a BigInteger object.
+
+
+ Clear out a MutableBigInteger for reuse.
+
+
+ Set a MutableBigInteger to zero, removing its offset.
+
+
+ Compare the magnitude of two MutableBigIntegers. Returns -1, 0 or 1
+ as this MutableBigInteger is numerically less than, equal to, or
+ greater than b.
+
+
+ Compare this against half of a MutableBigInteger object (Needed for
+ remainder tests).
+ Assumes no leading unnecessary zeros, which holds for results
+ from divide().
+
+
+ Return the index of the lowest set bit in this MutableBigInteger. If the
+ magnitude of this MutableBigInteger is zero, -1 is returned.
+
+
+ Return the int in use in this MutableBigInteger at the specified
+ index. This method is not used because it is not inlined on all
+ platforms.
+
+
+ Return a long which is equal to the unsigned value of the int in
+ use in this MutableBigInteger at the specified index. This method is
+ not used because it is not inlined on all platforms.
+
+
+ Ensure that the MutableBigInteger is in normal form, specifically
+ making sure that there are no leading zeros, and that if the
+ magnitude is zero, then intLen is zero.
+
+
+ If this MutableBigInteger cannot hold len words, increase the size
+ of the value array to len words.
+
+
+ Convert this MutableBigInteger into an int array with no leading
+ zeros, of a length that is equal to this MutableBigInteger's intLen.
+
+
+ Sets the int at index+offset in this MutableBigInteger to val.
+ This does not get inlined on all platforms so it is not used
+ as often as originally intended.
+
+
+ Sets this MutableBigInteger's value array to the specified array.
+ The intLen is set to the specified length.
+
+
+ Sets this MutableBigInteger's value array to a copy of the specified
+ array. The intLen is set to the length of the new array.
+
+
+ Sets this MutableBigInteger's value array to a copy of the specified
+ array. The intLen is set to the length of the specified array.
+
+
+ Returns true iff this MutableBigInteger has a value of one.
+
+
+ Returns true iff this MutableBigInteger has a value of zero.
+
+
+ Returns true iff this MutableBigInteger is even.
+
+
+ Returns true iff this MutableBigInteger is odd.
+
+
+ Returns true iff this MutableBigInteger is in normal form. A
+ MutableBigInteger is in normal form if it has no leading zeros
+ after the offset, and intLen + offset <= value.Length.
+
+
+ Returns a String representation of this MutableBigInteger in radix 10.
+
+
+ Right shift this MutableBigInteger n bits. The MutableBigInteger is left
+ in normal form.
+
+
+ Left shift this MutableBigInteger n bits.
+
+
+ A primitive used for division. This method adds in one multiple of the
+ divisor a back to the dividend result at a specified offset. It is used
+ when qhat was estimated too large, and must be adjusted.
+
+
+ This method is used for division. It multiplies an n word input a by one
+ word input x, and subtracts the n word product from q. This is needed
+ when subtracting qhat*divisor from dividend.
+
+
+ Right shift this MutableBigInteger n bits, where n is
+ less than 32.
+ Assumes that intLen > 0, n > 0 for speed
+
+
+ Left shift this MutableBigInteger n bits, where n is
+ less than 32.
+ Assumes that intLen > 0, n > 0 for speed
+
+
+ Adds the contents of two MutableBigInteger objects.The result
+ is placed within this MutableBigInteger.
+ The contents of the addend are not changed.
+
+
+ Subtracts the smaller of this and b from the larger and places the
+ result into this MutableBigInteger.
+
+
+ Subtracts the smaller of a and b from the larger and places the result
+ into the larger. Returns 1 if the answer is in a, -1 if in b, 0 if no
+ operation was performed.
+
+
+ Multiply the contents of two MutableBigInteger objects. The result is
+ placed into MutableBigInteger z. The contents of y are not changed.
+
+
+ Multiply the contents of this MutableBigInteger by the word y. The
+ result is placed into z.
+
+
+ This method is used for division of an n word dividend by a one word
+ divisor. The quotient is placed into quotient. The one word divisor is
+ specified by divisor.
+
+ @return the remainder of the division is returned.
+
+
+
+ Calculates the quotient of this div b and places the quotient in the
+ provided MutableBigInteger objects and the remainder object is returned.
+
+ Uses Algorithm D in Knuth section 4.3.1.
+ Many optimizations to that algorithm have been adapted from the Colin
+ Plumb C library.
+ It special cases one word divisors for speed. The content of b is not
+ changed.
+
+
+
+ Internally used to calculate the quotient of this div v and places the
+ quotient in the provided MutableBigInteger object and the remainder is
+ returned.
+
+ @return the remainder of the division will be returned.
+
+
+ Divide this MutableBigInteger by the divisor represented by its magnitude
+ array. The quotient will be placed into the provided quotient object &
+ the remainder object is returned.
+
+
+ Compare two longs as if they were unsigned.
+ Returns true iff one is bigger than two.
+
+
+ This method divides a long quantity by an int to estimate
+ qhat for two multi precision numbers. It is used when
+ the signed value of n is less than zero.
+
+
+ Calculate GCD of this and b. This and b are changed by the computation.
+
+
+ Calculate GCD of this and v.
+ Assumes that this and v are not zero.
+
+
+ Calculate GCD of a and b interpreted as unsigned integers.
+
+
+ Returns the modInverse of this mod p. This and p are not affected by
+ the operation.
+
+
+ Calculate the multiplicative inverse of this mod mod, where mod is odd.
+ This and mod are not changed by the calculation.
+
+ This method implements an algorithm due to Richard Schroeppel, that uses
+ the same intermediate representation as Montgomery Reduction
+ ("Montgomery Form"). The algorithm is described in an unpublished
+ manuscript entitled "Fast Modular Reciprocals."
+
+
+ Uses the extended Euclidean algorithm to compute the modInverse of base
+ mod a modulus that is a power of 2. The modulus is 2^k.
+
+
+
+ Manage operations dealing with bit-mapped fields.
+ @author Marc Johnson (mjohnson at apache dot org)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+
+
+
+
+ Create a instance
+
+
+ the mask specifying which bits apply to this
+ BitField. Bits that are set in this mask are the
+ bits that this BitField operates on
+
+
+
+
+ Create a instance
+
+
+ the mask specifying which bits apply to this
+ BitField. Bits that are set in this mask are the
+ bits that this BitField operates on
+
+
+
+
+ Clear the bits.
+
+ the int data containing the bits we're interested in
+ the value of holder with the specified bits cleared (set to 0)
+
+
+
+ Clear the bits.
+
+ the short data containing the bits we're interested in
+ the value of holder with the specified bits cleared (set to 0)
+
+
+
+ Obtain the value for the specified BitField, appropriately
+ shifted right. Many users of a BitField will want to treat the
+ specified bits as an int value, and will not want to be aware
+ that the value is stored as a BitField (and so shifted left so
+ many bits)
+
+ the int data containing the bits we're interested in
+ the selected bits, shifted right appropriately
+
+
+
+ Obtain the value for the specified BitField, unshifted
+
+ the short data containing the bits we're interested in
+ the selected bits
+
+
+
+ Obtain the value for the specified BitField, appropriately
+ shifted right, as a short. Many users of a BitField will want
+ to treat the specified bits as an int value, and will not want
+ to be aware that the value is stored as a BitField (and so
+ shifted left so many bits)
+
+ the short data containing the bits we're interested in
+ the selected bits, shifted right appropriately
+
+
+
+ Obtain the value for the specified BitField, appropriately
+ shifted right. Many users of a BitField will want to treat the
+ specified bits as an int value, and will not want to be aware
+ that the value is stored as a BitField (and so shifted left so
+ many bits)
+
+ the int data containing the bits we're interested in
+ the selected bits, shifted right appropriately
+
+
+
+ Are all of the bits set or not? This is a stricter test than
+ isSet, in that all of the bits in a multi-bit set must be set
+ for this method to return true
+
+ the int data containing the bits we're interested in
+
+ true if all of the bits are set otherwise, false.
+
+
+
+
+ is the field set or not? This is most commonly used for a
+ single-bit field, which is often used to represent a boolean
+ value; the results of using it for a multi-bit field is to
+ determine whether *any* of its bits are set
+
+ the int data containing the bits we're interested in
+
+ true if any of the bits are set; otherwise, false.
+
+
+
+
+ Set the bits.
+
+ the int data containing the bits we're interested in
+ the value of holder with the specified bits set to 1
+
+
+
+ Set a boolean BitField
+
+ the int data containing the bits we're interested in
+ indicating whether to set or clear the bits
+ the value of holder with the specified bits set or cleared
+
+
+
+ Set the bits.
+
+ the short data containing the bits we're interested in
+ the value of holder with the specified bits set to 1
+
+
+
+ Set a boolean BitField
+
+ the short data containing the bits we're interested in
+ indicating whether to set or clear the bits
+ the value of holder with the specified bits set or cleared
+
+
+
+ Obtain the value for the specified BitField, appropriately
+ shifted right, as a short. Many users of a BitField will want
+ to treat the specified bits as an int value, and will not want
+ to be aware that the value is stored as a BitField (and so
+ shifted left so many bits)
+
+ the short data containing the bits we're interested in
+ the new value for the specified bits
+ the selected bits, shifted right appropriately
+
+
+
+ Sets the value.
+
+ the byte data containing the bits we're interested in
+ The value.
+
+
+
+
+ Set a boolean BitField
+
+ the byte data containing the bits we're interested in
+ indicating whether to set or clear the bits
+ the value of holder with the specified bits set or cleared
+
+
+
+ Clears the bits.
+
+ the byte data containing the bits we're interested in
+ the value of holder with the specified bits cleared
+
+
+
+ Set the bits.
+
+ the byte data containing the bits we're interested in
+ the value of holder with the specified bits set to 1
+
+
+
+ Returns immutable Btfield instances.
+ @author Jason Height (jheight at apache dot org)
+
+
+
+
+ Gets the instance.
+
+ The mask.
+
+
+
+
+ Creates a new BoundedInputStream that wraps the given input
+ stream and limits it to a certain size.
+
+ The wrapped input stream
+ The maximum number of bytes to return
+
+
+
+ Creates a new BoundedInputStream that wraps the given input
+ stream and is unlimited.
+
+ The wrapped input stream
+
+
+
+ Invokes the delegate's read() method if
+ the current position is less than the limit.
+
+ the byte read or -1 if the end of stream
+ or the limit has been reached.
+ if an I/O error occurs
+
+
+
+ Returns the number of elements between the current position and the limit.
+
+ The number of elements remaining in this buffer
+
+
+
+ Tells whether there are any elements between the current position and the limit.
+
+ true if, and only if, there is at least one element remaining in this buffer
+
+
+
+ representation of a byte (8-bit) field at a fixed location within a
+ byte array
+ @author Marc Johnson (mjohnson at apache dot org
+
+
+
+
+ Initializes a new instance of the class.
+
+ The offset.
+
+
+
+ Initializes a new instance of the class.
+
+ The offset.
+ The value.
+
+
+
+ Initializes a new instance of the class.
+
+ The offset.
+ The data.
+
+
+
+ Initializes a new instance of the class.
+
+ The offset.
+ The _value.
+ The data.
+
+
+
+ Gets or sets the value.
+
+ The value.
+
+
+
+ set the value from its offset into an array of bytes
+
+ the byte array from which the value is to be read
+
+
+
+ set the value from an Stream
+
+ the Stream from which the value is to be read
+
+
+
+ set the ByteField's current value and write it to a byte array
+
+ value to be set
+ the byte array to write the value to
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ write the value out to an array of bytes at the appropriate offset
+
+ the array of bytes to which the value is to be written
+
+
+
+ Represents a class ID (16 bytes). Unlike other little-endian
+ type the {@link ClassID} is not just 16 bytes stored in the wrong
+ order. Instead, it is a double word (4 bytes) followed by two
+ words (2 bytes each) followed by 8 bytes.
+ @author Rainer Klute
+ klute@rainer-klute.de
+ @version $Id: ClassID.java 489730 2006-12-22 19:18:16Z bayard $
+ @since 2002-02-09
+
+
+
+ The bytes making out the class ID in correct order,
+ i.e. big-endian.
+
+
+
+ Creates a and Reads its value from a byte array.
+
+ The byte array to Read from.
+ The offset of the first byte to Read.
+
+
+
+ Creates a and initializes its value with 0x00 bytes.
+
+
+
+ Creates a {@link ClassID} from a human-readable representation of the Class ID in standard
+ format "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}".
+
+ @param externalForm representation of the Class ID represented by this object.
+
+
+ The number of bytes occupied by this object in the byte
+ stream.
+
+
+
+ Gets the length.
+
+ The number of bytes occupied by this object in the byte stream.
+
+
+
+ Gets or sets the bytes making out the class ID. They are returned in correct order, i.e. big-endian.
+
+ the bytes making out the class ID..
+
+
+
+ Reads the class ID's value from a byte array by turning little-endian into big-endian.
+
+ The byte array to Read from
+ The offset within the
+ A byte array containing the class ID.
+
+
+
+ Writes the class ID to a byte array in the little-endian format.
+
+ The byte array to Write to.
+ The offset within the
+
+
+
+ Checks whether this ClassID is equal to another
+ object.
+
+ the object to compare this PropertySet with
+ true if the objects are equal, else
+ false
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a human-Readable representation of the Class ID in standard
+ format "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}".
+
+
+ A String representation of the Class ID represented by this object..
+
+
+
+ Utilities for working with Microsoft CodePages.
+
+ Provides constants for understanding numeric codepages,
+ along with utilities to translate these into Java Character Sets.
+
+
+ Codepage 037, a special case
+
+
+ Codepage for SJIS
+
+
+ Codepage for GBK, aka MS936
+
+
+ Codepage for MS949
+
+
+ Codepage for UTF-16
+
+
+ Codepage for UTF-16 big-endian
+
+
+ Codepage for Windows 1250
+
+
+ Codepage for Windows 1251
+
+
+ Codepage for Windows 1252
+
+
+ Codepage for Windows 1253
+
+
+ Codepage for Windows 1254
+
+
+ Codepage for Windows 1255
+
+
+ Codepage for Windows 1256
+
+
+ Codepage for Windows 1257
+
+
+ Codepage for Windows 1258
+
+
+ Codepage for Johab
+
+
+ Codepage for Macintosh Roman (Java: MacRoman)
+
+
+ Codepage for Macintosh Japan (Java: unknown - use SJIS, cp942 or
+ cp943)
+
+
+ Codepage for Macintosh Chinese Traditional (Java: unknown - use Big5,
+ MS950, or cp937)
+
+
+ Codepage for Macintosh Korean (Java: unknown - use EUC_KR or
+ cp949)
+
+
+ Codepage for Macintosh Arabic (Java: MacArabic)
+
+
+ Codepage for Macintosh Hebrew (Java: MacHebrew)
+
+
+ Codepage for Macintosh Greek (Java: MacGreek)
+
+
+ Codepage for Macintosh Cyrillic (Java: MacCyrillic)
+
+
+ Codepage for Macintosh Chinese Simplified (Java: unknown - use
+ EUC_CN, ISO2022_CN_GB, MS936 or cp935)
+
+
+ Codepage for Macintosh Romanian (Java: MacRomania)
+
+
+ Codepage for Macintosh Ukrainian (Java: MacUkraine)
+
+
+ Codepage for Macintosh Thai (Java: MacThai)
+
+
+ Codepage for Macintosh Central Europe (Latin-2)
+ (Java: MacCentralEurope)
+
+
+ Codepage for Macintosh Iceland (Java: MacIceland)
+
+
+ Codepage for Macintosh Turkish (Java: MacTurkish)
+
+
+ Codepage for Macintosh Croatian (Java: MacCroatian)
+
+
+ Codepage for US-ASCII
+
+
+ Codepage for KOI8-R
+
+
+ Codepage for ISO-8859-1
+
+
+ Codepage for ISO-8859-2
+
+
+ Codepage for ISO-8859-3
+
+
+ Codepage for ISO-8859-4
+
+
+ Codepage for ISO-8859-5
+
+
+ Codepage for ISO-8859-6
+
+
+ Codepage for ISO-8859-7
+
+
+ Codepage for ISO-8859-8
+
+
+ Codepage for ISO-8859-9
+
+
+ Codepage for ISO-2022-JP
+
+
+ Another codepage for ISO-2022-JP
+
+
+ Yet another codepage for ISO-2022-JP
+
+
+ Codepage for ISO-2022-KR
+
+
+ Codepage for EUC-JP
+
+
+ Codepage for EUC-KR
+
+
+ Codepage for GB2312
+
+
+ Codepage for GB18030
+
+
+ Another codepage for US-ASCII
+
+
+ Codepage for UTF-8
+
+
+ Codepage for Unicode
+
+
+ Converts a string into bytes, in the equivalent character encoding
+ to the supplied codepage number.
+ @param string The string to convert
+ @param codepage The codepage number
+
+
+ Converts the bytes into a String, based on the equivalent character encoding
+ to the supplied codepage number.
+ @param string The byte of the string to convert
+ @param codepage The codepage number
+
+
+ Converts the bytes into a String, based on the equivalent character encoding
+ to the supplied codepage number.
+ @param string The byte of the string to convert
+ @param codepage The codepage number
+
+
+ Turns a codepage number into the equivalent character encoding's
+ name.
+
+ @param codepage The codepage number
+
+ @return The character encoding's name. If the codepage number is 65001,
+ the encoding name is "UTF-8". All other positive numbers are mapped to
+ "cp" followed by the number, e.g. if the codepage number is 1252 the
+ returned character encoding name will be "cp1252".
+
+ @exception UnsupportedEncodingException if the specified codepage is
+ less than zero.
+
+
+
+ This class comes from Java
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Adds the specified o.
+
+ The o.
+
+
+
+ Determines whether [contains] [the specified o].
+
+ The o.
+
+ true if [contains] [the specified o]; otherwise, false.
+
+
+
+
+ Copies the elements of the to an , starting at a particular index.
+
+ The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+ is null.
+
+
+ is less than zero.
+
+
+ is multidimensional.
+ -or-
+ is equal to or greater than the length of .
+ -or-
+ The number of elements in the source is greater than the available space from to the end of the destination .
+
+
+ The type of the source cannot be cast automatically to the type of the destination .
+
+
+
+
+ Gets the number of elements contained in the .
+
+
+
+ The number of elements contained in the .
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Removes the specified o.
+
+ The o.
+
+
+
+ Removes all of the elements from this set.
+ The set will be empty after this call returns.
+
+
+
+
+ This class comes from Java
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Removes the specified key.
+
+ The key.
+
+
+
+
+ Gets the enumerator.
+
+
+
+
+
+ Determines whether the specified key contains key.
+
+ The key.
+
+ true if the specified key contains key; otherwise, false.
+
+
+
+
+ Adds the specified key.
+
+ The key.
+ The value.
+
+
+
+ Gets the count.
+
+ The count.
+
+
+
+ Gets or sets the with the specified key.
+
+
+
+
+
+ Gets the keys.
+
+ The keys.
+
+
+
+ Clears this instance.
+
+
+
+
+ Loads the specified in stream.
+
+ The in stream.
+
+
+
+ Loads the convert.
+
+ The string.
+
+
+ Converts encoded \uxxxx to unicode chars
+ and changes special saved chars to their original forms
+
+
+
+
+ Continues the line.
+
+ The line.
+
+
+
+
+ x coordinate
+
+
+
+
+ y coordinate
+
+
+
+
+ constructer
+
+
+
+
+ constructor
+
+ x coordinate
+ y coordinate
+
+
+
+ constructor
+
+ coordinate
+
+
+
+ Find the minimum
+
+
+
+
+
+ Find the maximum
+
+
+
+
+
+ addition value
+
+
+
+
+
+ subtraction value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Norm
+
+
+
+ x coordinate
+
+
+
+
+ y coordinate
+
+
+
+
+ constructer
+
+
+
+
+ constructor
+
+ x coordinate
+ y coordinate
+
+
+
+ constructor
+
+ coordinate
+
+
+
+ Find the minimum
+
+
+
+
+
+ Find the maximum
+
+
+
+
+
+ addition value
+
+
+
+
+
+ subtraction value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Norm
+
+
+
+ CRC Verification
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ CRC Bytes.
+
+ The buffer.
+
+
+
+
+ String CRC
+
+ the string
+
+
+
+
+ File CRC
+
+ the input file
+
+
+
+
+ Stream CRC
+
+ the input stream
+
+
+
+
+ Implementors of this interface allow client code to 'delay' writing to a certain section of a
+ data output stream.
+ A typical application is for writing BIFF records when the size is not known until well after
+ the header has been written. The client code can call
+ to reserve two bytes of the output for the 'ushort size' header field. The delayed output can
+ be written at any stage.
+
+ @author Josh Micich
+
+
+
+ Creates an output stream intended for outputting a sequence of size bytes.
+
+
+
+
+
+
+ behavior of a field at a fixed location within a byte array
+ @author Marc Johnson (mjohnson at apache dot org
+
+
+
+
+ set the value from its offset into an array of bytes
+
+ the byte array from which the value is to be read
+
+
+
+ set the value from an Stream
+
+ the Stream from which the value is to be read
+
+
+
+ return the value as a String
+
+
+
+
+
+ write the value out to an array of bytes at the appropriate offset
+
+ the array of bytes to which the value is to be written
+
+
+
+ dump data in hexadecimal format; derived from a HexDump utility I
+ wrote in June 2001.
+ @author Marc Johnson
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+
+ Used to build output as Hex
+
+
+ Used to build output as Hex
+
+
+ dump an array of bytes to a String
+
+ @param data the byte array to be dumped
+ @param offset its offset, whatever that might mean
+ @param index initial index into the byte array
+ @param length number of characters to output
+
+ @exception ArrayIndexOutOfBoundsException if the index is
+ outside the data array's bounds
+ @return output string
+
+
+ Dumps bytesToDump bytes to an output stream.
+
+ @param in The stream to read from
+ @param out The output stream
+ @param start The index to use as the starting position for the left hand side label
+ @param bytesToDump The number of bytes to output. Use -1 to read until the end of file.
+
+
+
+ Shorts to hex.
+
+ The value.
+ char array of 2 (zero padded) uppercase hex chars and prefixed with '0x'
+
+
+
+ Bytes to hex.
+
+ The value.
+ char array of 1 (zero padded) uppercase hex chars and prefixed with '0x'
+
+
+
+ Ints to hex.
+
+ The value.
+ char array of 4 (zero padded) uppercase hex chars and prefixed with '0x'
+
+
+
+ char array of 4 (zero padded) uppercase hex chars and prefixed with '0x'
+
+ The value.
+ char array of 4 (zero padded) uppercase hex chars and prefixed with '0x'
+
+
+
+ Toes the hex chars.
+
+ The p value.
+ The n bytes.
+ char array of uppercase hex chars, zero padded and prefixed with '0x'
+
+
+
+ This method reads hex data from a filename and returns a byte array.
+ The file may contain line comments that are preceeded with a # symbol.
+
+ The filename to read
+ The bytes read from the file.
+ If there was a problem while reading the file.
+
+
+
+ Same as ReadData(String) except that this method allows you to specify sections within
+ a file. Sections are referenced using section headers in the form:
+
+ The stream.
+ The section.
+
+
+
+
+ Reads the data.
+
+ The filename.
+ The section.
+
+
+
+
+ Reads the data.
+
+ The stream.
+ The EOF char.
+
+
+
+
+ Reads from string.
+
+ The data.
+
+
+
+
+ Reads to EOL.
+
+ The stream.
+
+
+
+ This abstract class is the superclass of all classes representing
+ an input stream of bytes.
+ Applications that need to define a subclass of
+ must always provide a method that returns the next byte of input.
+
+
+
+
+
+ Reads the next byte of data from the input stream. The value byte is
+ returned as an int in the range 0 to
+ 255. If no byte is available because the end of the stream
+ has been reached, the value -1 is returned. This method
+ blocks until input data is available, the end of the stream is detected,
+ or an exception is thrown.
+
+ A subclass must provide an implementation of this method.
+
+
+ the next byte of data, or -1 if the end of the
+ stream is reached.
+
+ if an I/O error occurs
+
+
+
+
+ Reads some number of bytes from the input stream and stores them into
+ the buffer array b. The number of bytes actually read is
+ returned as an integer. This method blocks until input data is
+ available, end of file is detected, or an exception is thrown.
+
+
+ If the length of b is zero, then no bytes are read and
+ 0 is returned; otherwise, there is an attempt to read at
+ least one byte. If no byte is available because the stream is at the
+ end of the file, the value 0 is returned; otherwise, at
+ least one byte is read and stored into b.
+
+
+ The first byte read is stored into element b[0], the
+ next one into b[1], and so on. The number of bytes read is,
+ at most, equal to the length of b. Let k be the
+ number of bytes actually read; these bytes will be stored in elements
+ b[0] through b[k-1],
+ leaving elements b[k] through
+ b[b.length-1] unaffected.
+
+
+ The read(b) method for class InputStream
+ has the same effect as:
read(b, 0, b.length)
+
+
+ the buffer into which the data is read.
+
+ the total number of bytes read into the buffer, or
+ 0 if there is no more data because the end of
+ the stream has been reached.
+
+ If the first byte cannot be read for any reason
+ other than the end of the file, if the input stream has been closed, or
+ if some other I/O error occurs.
+ if b is null.
+
+
+
+
+
+ Reads up to len bytes of data from the input stream into
+ an array of bytes. An attempt is made to read as many as
+ len bytes, but a smaller number may be read.
+ The number of bytes actually read is returned as an integer.
+
+
+ This method blocks until input data is available, end of file is
+ detected, or an exception is thrown.
+
+
+ If len is zero, then no bytes are read and
+ 0 is returned; otherwise, there is an attempt to read at
+ least one byte. If no byte is available because the stream is at end of
+ file, the value 0 is returned; otherwise, at least one
+ byte is read and stored into b.
+
+
+ The first byte read is stored into element b[off], the
+ next one into b[off+1], and so on. The number of bytes read
+ is, at most, equal to len. Let k be the number of
+ bytes actually read; these bytes will be stored in elements
+ b[off] through b[off+k-1],
+ leaving elements b[off+k] through
+ b[off+len-1] unaffected.
+
+
+ In every case, elements b[0] through
+ b[off] and elements b[off+len] through
+ b[b.length-1] are unaffected.
+
+
+ The read(b, off, len) method
+ for class InputStream simply calls the method
+ read() repeatedly. If the first such call results in an
+ IOException, that exception is returned from the call to
+ the read(b, off, len) method. If
+ any subsequent call to read() results in a
+ IOException, the exception is caught and treated as if it
+ were end of file; the bytes read up to that point are stored into
+ b and the number of bytes read before the exception
+ occurred is returned. The default implementation of this method blocks
+ until the requested amount of input data len has been read,
+ end of file is detected, or an exception is thrown. Subclasses are encouraged
+ to provide a more efficient implementation of this method.
+
+
+ the buffer into which the data is read.
+ the start offset in array b at which the data is written.
+ the maximum number of bytes to read.
+
+ the total number of bytes read into the buffer, or
+ 0 if there is no more data because the end of
+ the stream has been reached.
+ If the first byte cannot be read for any reason
+ other than end of file, or if the input stream has been closed, or if
+ some other I/O error occurs.
+ If b is null.
+ If off is negative,
+ len is negative, or len is greater than
+ b.length - off
+
+
+
+
+
+ Skips over and discards n bytes of data from this input
+ stream. The skip method may, for a variety of reasons, end
+ up skipping over some smaller number of bytes, possibly 0.
+ This may result from any of a number of conditions; reaching end of file
+ before n bytes have been skipped is only one possibility.
+ The actual number of bytes skipped is returned. If {@code n} is
+ negative, the {@code skip} method for class {@code InputStream} always
+ returns 0, and no bytes are skipped. Subclasses may handle the negative
+ value differently.
+
+
+ The skip method of this class creates a
+ byte array and then repeatedly reads into it until n bytes
+ have been read or the end of the stream has been reached. Subclasses are
+ encouraged to provide a more efficient implementation of this method.
+ For instance, the implementation may depend on the ability to seek.
+
+
+ the number of bytes to be skipped.
+ the actual number of bytes skipped.
+ if the stream does not support seek,
+ or if some other I/O error occurs.
+
+
+
+
+
+ Returns an estimate of the number of bytes that can be read (or
+ skipped over) from this input stream without blocking by the next
+ invocation of a method for this input stream. The next invocation
+ might be the same thread or another thread. A single read or skip of this
+ many bytes will not block, but may read or skip fewer bytes.
+
+
+ Note that while some implementations of will return
+ the total number of bytes in the stream, many will not. It is
+ never correct to use the return value of this method to allocate
+ a buffer intended to hold all data in this stream.
+
+
+ A subclass' implementation of this method may choose to throw an
+ if this input stream has been closed by
+ invoking the method.
+
+
+ The method for class always
+ returns {@code 0}.
+
+ This method should be overridden by subclasses.
+
+ if an I/O error occurs.
+
+
+
+
+ Closes this input stream and releases any system resources associated
+ with the stream.
+
+ The Close method of InputStream does nothing.
+
+ if an I/O error occurs.
+
+
+
+
+ Marks the current position in this input stream. A subsequent call to
+ the reset method repositions this stream at the last marked
+ position so that subsequent reads re-read the same bytes.
+
+
+ The readlimit arguments tells this input stream to
+ allow that many bytes to be read before the mark position gets
+ invalidated.
+
+
+ The general contract of mark is that, if the method
+ markSupported returns true, the stream somehow
+ remembers all the bytes read after the call to mark and
+ stands ready to supply those same bytes again if and whenever the method
+ reset is called. However, the stream is not required to
+ remember any data at all if more than readlimit bytes are
+ read from the stream before reset is called.
+
+ Marking a closed stream should not have any effect on the stream.
+
+ The mark method of InputStream does
+ nothing.
+
+
+ the maximum limit of bytes that can be read before
+ the mark position becomes invalid.
+
+
+
+
+
+
+ Repositions this stream to the position at the time the
+ mark method was last called on this input stream.
+
+ The general contract of reset is:
+
+
+ - If the method markSupported returns
+ true, then:
+
+
- If the method mark has not been called since
+ the stream was created, or the number of bytes read from the stream
+ since mark was last called is larger than the argument
+ to mark at that last call, then an
+ IOException might be thrown.
+
+ - If such an IOException is not thrown, then the
+ stream is reset to a state such that all the bytes read since the
+ most recent call to mark (or since the start of the
+ file, if mark has not been called) will be resupplied
+ to subsequent callers of the read method, followed by
+ any bytes that otherwise would have been the next input data as of
+ the time of the call to reset.
+
+ - If the method markSupported returns
+ false, then:
+
+
- The call to reset may throw an
+ IOException.
+
+ - If an IOException is not thrown, then the stream
+ is reset to a fixed state that depends on the particular type of the
+ input stream and how it was created. The bytes that will be supplied
+ to subsequent callers of the read method depend on the
+ particular type of the input stream.
+
+
+ The method reset for class InputStream
+ does nothing except throw an IOException.
+
+
+
+
+
+ Tests if this input stream supports the mark and
+ reset methods. Whether or not mark and
+ reset are supported is an invariant property of a
+ particular input stream instance. The markSupported method
+ of InputStream returns false.
+
+
+ true if this stream instance supports the mark
+ and reset methods; false otherwise.
+
+
+
+
+
+
+ construct the with its offset into its containing byte array class.
+
+ offset of the field within its byte array.
+
+
+
+ construct the with its offset into its containing
+ byte array and initialize its value
+
+ offset of the field within its byte array
+ the initial value
+
+
+
+ Construct the with its offset into its containing
+ byte array and initialize its value from its byte array
+
+ offset of the field within its byte array
+ the byte array to Read the value from
+
+
+
+ construct the with its offset into its containing
+ byte array, initialize its value, and write the value to a byte
+
+ offset of the field within its byte array
+ the initial value
+ the byte array to write the value to
+
+
+
+ get or Set the IntegerField's current value
+
+ The value.
+
+
+
+
+ Set the IntegerField's current value and write it to a byte array
+
+ value to be Set
+ the byte array to write the value to
+
+
+
+ Set the value from its offset into an array of bytes
+
+ The data.
+
+
+
+ Set the value from an Stream
+
+ the Stream from which the value is to be Read
+
+
+
+ write the value out to an array of bytes at the appropriate offset
+
+ the array of bytes to which the value is to be written
+
+
+
+ Same as using the constructor with the same
+ parameter list. Avoid creation of an useless object.
+
+ offset of the field within its byte array
+ the initial value
+ the byte array to write the value to
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ A List of int's; as full an implementation of the java.Util.List interface as possible, with an eye toward minimal creation of objects
+
+ the mimicry of List is as follows:
+
+ - if possible, operations designated 'optional' in the List
+ interface are attempted
+ - wherever the List interface refers to an Object, substitute
+ int
+ - wherever the List interface refers to a Collection or List,
+ substitute IntList
+
+
+ the mimicry is not perfect, however:
+
+ - operations involving Iterators or ListIterators are not
+ supported
+ - Remove(Object) becomes RemoveValue to distinguish it from
+ Remove(int index)
+ - subList is not supported
+
+ @author Marc Johnson
+
+
+
+
+ create an IntList of default size
+
+
+
+
+ create a copy of an existing IntList
+
+ the existing IntList
+
+
+
+ create an IntList with a predefined Initial size
+
+ the size for the internal array
+
+
+
+
+ add the specfied value at the specified index
+
+ the index where the new value is to be Added
+ the new value
+
+
+
+ Appends the specified element to the end of this list
+
+ element to be Appended to this list.
+ return true (as per the general contract of the Collection.add method
+
+
+
+ Appends all of the elements in the specified collection to the
+ end of this list, in the order that they are returned by the
+ specified collection's iterator. The behavior of this
+ operation is unspecified if the specified collection is
+ modified while the operation is in progress. (Note that this
+ will occur if the specified collection is this list, and it's
+ nonempty.)
+
+ collection whose elements are to be Added to this list.
+ return true if this list Changed as a result of the call.
+
+
+
+ Inserts all of the elements in the specified collection into
+ this list at the specified position. Shifts the element
+ currently at that position (if any) and any subsequent elements
+ to the right (increases their indices). The new elements will
+ appear in this list in the order that they are returned by the
+ specified collection's iterator. The behavior of this
+ operation is unspecified if the specified collection is
+ modified while the operation is in progress. (Note that this
+ will occur if the specified collection is this list, and it's
+ nonempty.)
+
+ index at which to insert first element from the specified collection.
+ elements to be inserted into this list.
+ return true if this list Changed as a result of the call.
+
+
+
+ Removes all of the elements from this list. This list will be
+ empty After this call returns (unless it throws an exception).
+
+
+
+
+ Returns true if this list Contains the specified element. More
+ formally, returns true if and only if this list Contains at
+ least one element e such that o == e
+
+ element whose presence in this list is to be Tested.
+ return true if this list Contains the specified element.
+
+
+
+ Returns true if this list Contains all of the elements of the
+ specified collection.
+
+ collection to be Checked for Containment in this list.
+ return true if this list Contains all of the elements of the specified collection.
+
+
+
+ Compares the specified object with this list for Equality.
+ Returns true if and only if the specified object is also a
+ list, both lists have the same size, and all corresponding
+ pairs of elements in the two lists are Equal. (Two elements e1
+ and e2 are equal if e1 == e2.) In other words, two lists are
+ defined to be equal if they contain the same elements in the
+ same order. This defInition ensures that the Equals method
+ works properly across different implementations of the List
+ interface.
+
+ the object to be Compared for Equality with this list.
+ return true if the specified object is equal to this list.
+
+
+
+ Returns the element at the specified position in this list.
+
+ index of element to return.
+ return the element at the specified position in this list.
+
+
+
+ Returns the hash code value for this list. The hash code of a
+ list is defined to be the result of the following calculation:
+
+
+ hashCode = 1;
+ Iterator i = list.Iterator();
+ while (i.HasNext()) {
+ Object obj = i.Next();
+ hashCode = 31*hashCode + (obj==null ? 0 : obj.HashCode());
+ }
+
+
+ This ensures that list1.Equals(list2) implies that
+ list1.HashCode()==list2.HashCode() for any two lists, list1 and
+ list2, as required by the general contract of Object.HashCode.
+
+
+ return the hash code value for this list.
+
+
+
+ Returns the index in this list of the first occurrence of the
+ specified element, or -1 if this list does not contain this
+ element. More formally, returns the lowest index i such that
+ (o == Get(i)), or -1 if there is no such index.
+
+ element to search for.
+ return the index in this list of the first occurrence of the
+ specified element, or -1 if this list does not contain
+ this element.
+
+
+
+ Returns true if this list Contains no elements.
+
+ return true if this list Contains no elements.
+
+
+
+ Returns the index in this list of the last occurrence of the
+ specified element, or -1 if this list does not contain this
+ element. More formally, returns the highest index i such that
+ (o == Get(i)), or -1 if there is no such index.
+
+ element to search for.
+ the index in this list of the last occurrence of the
+ specified element, or -1 if this list does not contain
+ this element.
+
+
+
+
+ Removes the element at the specified position in this list.
+ Shifts any subsequent elements to the left (subtracts one from
+ their indices). Returns the element that was Removed from the
+ list.
+
+ the index of the element to Removed.
+ return the element previously at the specified position.
+
+
+
+ Removes the first occurrence in this list of the specified
+ element (optional operation). If this list does not contain
+ the element, it is unChanged. More formally, Removes the
+ element with the lowest index i such that (o.Equals(get(i)))
+ (if such an element exists).
+
+ element to be Removed from this list, if present.
+ return true if this list Contained the specified element.
+
+
+
+ Removes from this list all the elements that are Contained in
+ the specified collection
+
+ collection that defines which elements will be Removed from the list.
+ return true if this list Changed as a result of the call.
+
+
+
+ Retains only the elements in this list that are Contained in
+ the specified collection. In other words, Removes from this
+ list all the elements that are not Contained in the specified
+ collection.
+
+ collection that defines which elements this Set will retain.
+ return true if this list Changed as a result of the call.
+
+
+
+ Replaces the element at the specified position in this list with the specified element
+
+ index of element to Replace.
+ element to be stored at the specified position.
+ the element previously at the specified position.
+
+
+
+ Returns the number of elements in this list. If this list
+ Contains more than Int32.MaxValue elements, returns
+ Int32.MaxValue.
+
+ the number of elements in this IntList
+
+
+
+ the number of elements in this IntList
+
+
+
+
+ Returns an array Containing all of the elements in this list in
+ proper sequence. Obeys the general contract of the
+ Collection.ToArray method.
+
+ an array Containing all of the elements in this list in proper sequence.
+
+
+
+ Returns an array Containing all of the elements in this list in
+ proper sequence. Obeys the general contract of the
+ Collection.ToArray(Object[]) method.
+
+ the array into which the elements of this list are to
+ be stored, if it is big enough; otherwise, a new array
+ is allocated for this purpose.
+ return an array Containing the elements of this list.
+
+
+
+ A List of objects that are indexed AND keyed by an int; also allows for Getting
+ the index of a value in the list
+
+ I am happy is someone wants to re-implement this without using the
+ internal list and hashmap. If so could you please make sure that
+ you can add elements half way into the list and have the value-key mappings
+ update
+
+
+ @author Jason Height
+
+
+
+ create an IntMapper of default size
+
+
+
+
+ Appends the specified element to the end of this list
+
+ element to be Appended to this list.
+ return true (as per the general contract of the Collection.add method)
+
+
+
+ Gets the size.
+
+
+
+
+ Gets the T object at the specified index.
+
+
+
+
+
+
+ Gets the index of T object.
+
+ The o.
+
+
+
+
+ Gets the enumerator.
+
+
+
+
+
+ The current set global allocation limit override,
+ -1 means limits are applied per record type.
+ The current set global allocation limit override,
+
+
+
+
+ The max init size of ByteArrayOutputStream.
+ -1 means init size of ByteArrayOutputStream could be up to Integer.MAX_VALUE
+
+
+
+
+ The default size of the bytearray used while reading input streams. This is meant to be pretty small.
+
+
+
+
+ Peeks at the first 8 bytes of the stream. Returns those bytes, but
+ with the stream unaffected. Requires a stream that supports mark/reset,
+ or a PushbackInputStream. If the stream has >0 but <8 bytes,
+ remaining bytes will be zero.
+ @throws EmptyFileException if the stream is empty
+
+
+
+
+ Reads all the data from the input stream, and returns
+ the bytes Read.
+
+ The stream.
+
+ Tony Qu changed the code
+
+
+
+ Reads up to {@code length} bytes from the input stream, and returns the bytes read.
+
+
+
+
+
+
+
+ Reads the fully.
+
+ The stream.
+ The b.
+
+
+
+
+ Same as the normal InputStream#read(byte[], int, int), but tries to ensure
+ that the entire len number of bytes is read
+
+ If the end of file is reached before any bytes are read, returns -1.
+ If the end of the file is reached after some bytes are read, returns the
+ number of bytes read. If the end of the file isn't reached before the
+ buffer has no more remaining capacity, will return len bytes
+
+ the stream from which the data is read.
+ the buffer into which the data is read.
+ the start offset in array b at which the data is written.
+ the maximum number of bytes to read.
+ the number of bytes read or -1 if no bytes were read
+
+
+
+ Copies all the data from the given InputStream to the OutputStream. It
+ leaves both streams open, so you will still need to close them once done.
+
+
+
+
+
+
+ Quietly (no exceptions) close Closable resource. In case of error it will
+ be printed to {@link IOUtils} class logger.
+
+ resource to close
+
+
+
+ a utility class for handling little-endian numbers, which the 80x86 world is
+ replete with. The methods are all static, and input/output is from/to byte
+ arrays, or from InputStreams.
+
+
+ @author Marc Johnson (mjohnson at apache dot org)
+ @author Andrew Oliver (acoliver at apache dot org)
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ get a short value from a byte array
+
+ the byte array
+ a starting offset into the byte array
+ the short (16-bit) value
+
+
+
+ get an unsigned short value from a byte array
+
+ the byte array
+ a starting offset into the byte array
+ the unsigned short (16-bit) value in an integer
+
+
+
+ get a short value from a byte array
+
+ a starting offset into the byte array
+ the short (16-bit) value
+
+
+
+ get a short value from a byte array
+
+ the unsigned short (16-bit) value in an integer
+
+
+
+
+ get an int value from a byte array
+
+ the byte array
+ a starting offset into the byte array
+ the int (32-bit) value
+
+
+
+ get an int value from the beginning of a byte array
+
+ the byte array
+ the int (32-bit) value
+
+
+
+ Gets the U int.
+
+ the byte array
+ a starting offset into the byte array
+ the unsigned int (32-bit) value in a long
+
+
+
+ Gets the U int.
+
+ the byte array
+ the unsigned int (32-bit) value in a long
+
+
+
+ get a long value from a byte array
+
+ the byte array
+ a starting offset into the byte array
+ the long (64-bit) value
+
+
+
+ get a double value from a byte array, reads it in little endian format
+ then converts the resulting revolting IEEE 754 (curse them) floating
+ point number to a c# double
+
+ the byte array
+ a starting offset into the byte array
+ the double (64-bit) value
+
+
+
+ Puts the short.
+
+ the byte array
+ a starting offset into the byte array
+ The value.
+
+
+
+ Added for consistency with other put~() methods
+
+ the byte array
+ a starting offset into the byte array
+ The value.
+
+
+
+ Puts the U short.
+
+ the byte array
+ a starting offset into the byte array
+ The value.
+
+
+ Put signed short into output stream
+
+ @param value
+ the short (16-bit) value
+ @param outputStream
+ output stream
+ @throws IOException
+ if an I/O error occurs
+
+
+
+ put an int value into a byte array
+
+ the byte array
+ a starting offset into the byte array
+ the int (32-bit) value
+
+
+
+ Put int into output stream
+
+ the int (32-bit) value
+ output stream
+
+
+
+ put a long value into a byte array
+
+ the byte array
+ a starting offset into the byte array
+ the long (64-bit) value
+
+
+
+ put a double value into a byte array
+
+ the byte array
+ a starting offset into the byte array
+ the double (64-bit) value
+
+
+
+ Reads the short.
+
+ The stream.
+
+
+
+
+ get an int value from an Stream
+
+ the Stream from which the int is to be read
+ the int (32-bit) value
+ will be propagated back to the caller
+ if the stream cannot provide enough bytes
+
+
+
+ get a long value from a Stream
+
+ the Stream from which the long is to be read
+ the long (64-bit) value
+ will be propagated back to the caller
+ if the stream cannot provide enough bytes
+
+
+
+ Us the byte to int.
+
+ The b.
+
+
+
+
+ Copy a portion of a byte array
+
+ the original byte array
+ Where to start copying from.
+ Number of bytes to copy.
+ The byteArray value
+
+ if copying would cause access ofdata outside array bounds.
+
+
+
+
+ Gets the unsigned byte.
+
+ the byte array
+
+
+
+
+ Gets the unsigned byte.
+
+ the byte array
+ a starting offset into the byte array
+
+
+
+
+ Puts the double.
+
+ the byte array
+ The value.
+
+
+ put a double value into a byte array
+
+ @param value
+ the double (64-bit) value
+ @param outputStream
+ output stream
+ @throws IOException
+ if an I/O error occurs
+
+
+ Put unsigned int into output stream
+
+ @param value
+ the int (32-bit) value
+ @param outputStream
+ output stream
+ @throws IOException
+ if an I/O error occurs
+
+
+
+ Puts the uint.
+
+ the byte array
+ a starting offset into the byte array
+ The value.
+
+
+
+ Puts the long.
+
+ the byte array
+ The value.
+
+
+ Put long into output stream
+
+ @param value
+ the long (64-bit) value
+ @param outputStream
+ output stream
+ @throws IOException
+ if an I/O error occurs
+
+
+
+ Puts the long.
+
+ the byte array
+ The value.
+
+
+
+ Puts the ulong.
+
+ the byte array
+ a starting offset into the byte array
+ The value.
+
+
+
+ Puts the number.
+
+ the byte array
+ a starting offset into the byte array
+ The value.
+ The size.
+
+
+
+ Puts the number.
+
+ the byte array
+ a starting offset into the byte array
+ The value.
+ The size.
+
+
+
+ Puts the short array.
+
+ the byte array
+ a starting offset into the byte array
+ The value.
+
+
+
+ Puts the U short.
+
+ the byte array
+ The value.
+
+
+ Put unsigned short into output stream
+
+ @param value
+ the unsigned short (16-bit) value
+ @param outputStream
+ output stream
+ @throws IOException
+ if an I/O error occurs
+
+
+
+ Reads from stream.
+
+ The stream.
+ The size.
+
+
+
+
+ Reads the long.
+
+ The stream.
+
+
+
+
+ Adapts a plain byte array to
+
+ @author Josh Micich
+
+
+
+ Adapts a plain byte array to
+
+ @author Josh Micich
+
+
+
+ @author Josh Micich
+
+
+
+ Wraps an providing
+
+ This class does not buffer any input, so the stream Read position maintained
+ by this class is consistent with that of the inner stream.
+
+
+
+ @author Josh Micich
+
+
+
+
+
+ Reads up to byte.length bytes of data from this
+ input stream into an array of bytes. This method blocks until some
+ input is available.
+
+ simulate java FilterInputStream
+
+
+
+
+
+
+
+ Reads up to len bytes of data from this input stream
+ into an array of bytes.If len is not zero, the method
+ blocks until some input is available; otherwise, no
+ bytes are read and0 is returned.
+
+ simulate java FilterInputStream
+
+
+
+
+
+
+
+
+ @author Josh Micich
+
+
+
+ Wraps an providing
+
+ @author Josh Micich
+
+
+ This utility class is used to set locale and time zone settings beside
+ of the JDK internal {@link java.util.Locale#setDefault(Locale)} and
+ {@link java.util.TimeZone#setDefault(TimeZone)} methods, because
+ the locale/time zone specific handling of certain office documents -
+ maybe for different time zones / locales ... - shouldn't affect
+ other java components.
+
+
+ Excel doesn't store TimeZone information in the file, so if in doubt,
+ use UTC to perform calculations
+
+
+ Default encoding for unknown byte encodings of native files
+ (at least it's better than to rely on a platform dependent encoding
+ for legacy stuff ...)
+
+
+ As time zone information is not stored in any format, it can be
+ set before any date calculations take place.
+ This setting is specific to the current thread.
+
+ @param timezone the timezone under which date calculations take place
+
+
+ @return the time zone which is used for date calculations, defaults to UTC
+
+
+ Sets default user locale.
+ This setting is specific to the current thread.
+
+
+ @return the default user locale, defaults to {@link Locale#ROOT}
+
+
+ @return a calendar for the user locale and time zone
+
+
+ Convenience method - month is 0-based as in java.util.Calendar
+
+ @param year
+ @param month
+ @param day
+ @return a calendar for the user locale and time zone, and the given date
+
+
+ Convenience method - month is 0-based as in java.util.Calendar
+
+ @param year
+ @param month
+ @param day
+ @param hour
+ @param minute
+ @param second
+ @return a calendar for the user locale and time zone, and the given date
+
+
+ @return a calendar for the user locale and time zone
+
+
+ @return a calendar for the user locale and time zone
+
+
+
+ construct the with its offset into its containing byte array
+
+ The offset.
+
+
+
+ construct the LongField with its offset into its containing
+ byte array and initialize its value
+
+ offset of the field within its byte array
+ the initial value
+
+
+
+ Construct the class with its offset into its containing
+ byte array and initialize its value from its byte array
+
+ The offset of the field within its byte array
+ the byte array to read the value from
+
+
+
+ construct the class with its offset into its containing
+ byte array, initialize its value, and write the value to a byte
+ array
+
+ offset of the field within its byte array
+ the initial value
+ the byte array to write the value to
+
+
+
+ Getg or sets the LongField's current value
+
+ The current value
+
+
+
+ set the LongField's current value and write it to a byte array
+
+ value to be set
+ the byte array to write the value to
+
+
+
+ set the value from its offset into an array of bytes
+
+ the byte array from which the value is to be read
+
+
+
+ set the value from an Stream
+
+ the Stream from which the value is to be
+
+
+
+ write the value out to an array of bytes at the appropriate offset
+
+ the array of bytes to which the value is to be written
+
+
+
+ Same as using the constructor with the same
+ parameter list. Avoid creation of an useless object.
+
+ offset of the field within its byte array
+ the initial value
+ the byte array to write the value to
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+ This class provides common functionality for the
+ various LZW implementations in the different file
+ formats.
+ It's currently used by HDGF and HMEF.
+
+ Two good resources on LZW are:
+ http://en.wikipedia.org/wiki/LZW
+ http://marknelson.us/1989/10/01/lzw-data-compression/
+
+
+ Does the mask bit mean it's compressed or uncompressed?
+
+
+ How much to append to the code length in the stream
+ to Get the real code length? Normally 2 or 3
+
+
+ Does the 12 bits of the position Get stored in
+ Little Endian or Big Endian form?
+ This controls whether a pos+length of 0x12 0x34
+ becomes a position of 0x123 or 0x312
+
+
+ Populates the dictionary, and returns where in it
+ to begin writing new codes.
+ Generally, if the dictionary is pre-populated, then new
+ codes should be placed at the end of that block.
+ Equally, if the dictionary is left with all zeros, then
+ usually the new codes can go in at the start.
+
+
+ Adjusts the position offset if needed when looking
+ something up in the dictionary.
+
+
+ Decompresses the given input stream, returning the array of bytes
+ of the decompressed input.
+
+
+ Perform a streaming decompression of the input.
+ Works by:
+ 1) Reading a flag byte, the 8 bits of which tell you if the
+ following 8 codes are compressed our un-compressed
+ 2) Consider the 8 bits in turn
+ 3) If the bit is Set, the next code is un-compressed, so
+ add it to the dictionary and output it
+ 4) If the bit isn't Set, then read in the length and start
+ position in the dictionary, and output the bytes there
+ 5) Loop until we've done all 8 bits, then read in the next
+ flag byte
+
+
+ Given an integer, turn it into a java byte, handling
+ the wrapping.
+ This is a convenience method
+
+
+ Given a java byte, turn it into an integer between 0
+ and 255 (i.e. handle the unwrapping).
+ This is a convenience method
+
+
+
+ A Logger class that strives to make it as easy as possible for
+ developers to write Log calls, while simultaneously making those
+ calls as cheap as possible by performing lazy evaluation of the Log
+ message.
+ @author Marc Johnson (mjohnson at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Nicola Ken Barozzi (nicolaken at apache.org)
+
+
+
+ Log a message
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 The object to Log.
+
+
+ Check if a Logger is enabled to Log at the specified level
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first object to place in the message
+ @param obj2 second object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+ @param obj5 fifth Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+ @param obj5 fifth Object to place in the message
+ @param obj6 sixth Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+ @param obj5 fifth Object to place in the message
+ @param obj6 sixth Object to place in the message
+ @param obj7 seventh Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+ @param obj5 fifth Object to place in the message
+ @param obj6 sixth Object to place in the message
+ @param obj7 seventh Object to place in the message
+ @param obj8 eighth Object to place in the message
+
+
+ Log a message
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 The object to Log. This is converted to a string.
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param exception An error message to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param obj5 fifth object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param obj5 fifth object to place in the message
+ @param obj6 sixth object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param obj5 fifth object to place in the message
+ @param obj6 sixth object to place in the message
+ @param obj7 seventh object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param obj5 fifth object to place in the message
+ @param obj6 sixth object to place in the message
+ @param obj7 seventh object to place in the message
+ @param obj8 eighth object to place in the message
+ @param exception An exception to be Logged
+
+
+ File header for PNG format.
+
+
+ Checks if the offset matches the PNG header.
+
+ @param data the data to check.
+ @param offset the offset to check at.
+ @return {@code true} if the offset matches.
+
+
+ Map of POILogger instances, with classes as keys
+
+
+ A common instance of NullLogger, as it does nothing
+ we only need the one
+
+
+ The name of the class to use. Initialised the
+ first time we need it
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Get a logger, based on a class name
+
+ the class whose name defines the log
+ a POILogger for the specified class
+
+
+
+ Get a logger, based on a String
+
+ the String that defines the log
+ a POILogger for the specified class
+
+
+ package scope so it cannot be instantiated outside of the util
+ package. You need a POILogger? Go to the POILogFactory for one
+
+
+
+ Log a message
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 The object to Log. This is converted to a string.
+
+
+ Log a message
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 The object to Log. This is converted to a string.
+ @param exception An exception to be Logged
+
+
+ Check if a Logger is enabled to Log at the specified level
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first object to place in the message
+ @param obj2 second object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+ @param obj5 fifth Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+ @param obj5 fifth Object to place in the message
+ @param obj6 sixth Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+ @param obj5 fifth Object to place in the message
+ @param obj6 sixth Object to place in the message
+ @param obj7 seventh Object to place in the message
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third Object to place in the message
+ @param obj4 fourth Object to place in the message
+ @param obj5 fifth Object to place in the message
+ @param obj6 sixth Object to place in the message
+ @param obj7 seventh Object to place in the message
+ @param obj8 eighth Object to place in the message
+
+
+ Log an exception, without a message
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param exception An error message to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param obj5 fifth object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param obj5 fifth object to place in the message
+ @param obj6 sixth object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param obj5 fifth object to place in the message
+ @param obj6 sixth object to place in the message
+ @param obj7 seventh object to place in the message
+ @param exception An exception to be Logged
+
+
+ Log a message. Lazily appends Object parameters together.
+
+ @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+ @param obj1 first Object to place in the message
+ @param obj2 second Object to place in the message
+ @param obj3 third object to place in the message
+ @param obj4 fourth object to place in the message
+ @param obj5 fifth object to place in the message
+ @param obj6 sixth object to place in the message
+ @param obj7 seventh object to place in the message
+ @param obj8 eighth object to place in the message
+ @param exception An exception to be Logged
+
+
+
+ Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.
+
+
+ The unsigned byte cast to an Int32, or -1 if at the end of the stream.
+
+
+ The stream does not support reading.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Unreads the specified b.
+
+ The b.
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports reading.
+
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ Pushes back a portion of an array of bytes by copying it to the front
+ of the pushback buffer.
+
+ the byte array to push back.
+ the start offset of the data.
+ the number of bytes to push back.
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
+
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports writing.
+
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets the length in bytes of the stream.
+
+
+
+ A long value representing the length of the stream in bytes.
+
+
+ A class derived from Stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, gets or sets the position within the current stream.
+
+
+
+ The current position within the stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
+
+
+
+
+ When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+
+ An I/O error occurs.
+
+
+
+
+ When overridden in a derived class, sets the position within the current stream.
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+
+ An I/O error occurs.
+
+
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies bytes from to the current stream.
+ The zero-based byte offset in at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+
+ The sum of and is greater than the buffer length.
+
+
+ is null.
+
+
+ or is negative.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support writing.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Writes a byte to the current position in the stream and advances the position within the stream by one byte.
+
+ The byte to write to the stream.
+
+ An I/O error occurs.
+
+
+ The stream does not support writing, or the stream is already closed.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.
+
+
+ The unsigned byte cast to an Int32, or -1 if at the end of the stream.
+
+
+ The stream does not support reading.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+
+ The sum of and is larger than the buffer length.
+
+
+ is null.
+
+
+ or is negative.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support reading.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Unreads the specified b.
+
+ The b.
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports reading.
+
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
+
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports writing.
+
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets the length in bytes of the stream.
+
+
+
+ A long value representing the length of the stream in bytes.
+
+
+ A class derived from Stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, gets or sets the position within the current stream.
+
+
+
+ The current position within the stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
+
+
+
+
+ When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+
+ An I/O error occurs.
+
+
+
+
+ When overridden in a derived class, sets the position within the current stream.
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+
+ An I/O error occurs.
+
+
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies bytes from to the current stream.
+ The zero-based byte offset in at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+
+ The sum of and is greater than the buffer length.
+
+
+ is null.
+
+
+ or is negative.
+
+
+ An I/O error occurs.
+
+
+ The stream does not support writing.
+
+
+ Methods were called after the stream was closed.
+
+
+
+
+ Writes a byte to the current position in the stream and advances the position within the stream by one byte.
+
+ The byte to write to the stream.
+
+ An I/O error occurs.
+
+
+ The stream does not support writing, or the stream is already closed.
+
+
+ Methods were called after the stream was closed.
+
+
+
+ A common exception thrown by our binary format Parsers
+ (especially HSSF and DDF), when they hit invalid
+ format or data when Processing a record.
+
+
+
+ Wrapper of InputStream which provides Run Length Encoding (RLE)
+ decompression on the fly. Uses MS-OVBA decompression algorithm. See
+ http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/[MS-OVBA].pdf
+
+
+
+
+
+ Bitmasks for performance
+
+
+
+
+ the wrapped inputstream
+
+
+
+
+ a byte buffer with size 4096 for storing a single chunk
+
+
+
+
+ the current position in the byte buffer for Reading
+
+
+
+
+ the number of bytes in the byte buffer
+
+
+
+
+ Creates a new wrapper RLE Decompression InputStream.
+
+ in The stream to wrap with the RLE Decompression
+
+
+
+
+
+ Helper method to determine how many bits in the CopyToken are used for the CopyLength.
+
+
+ returns the number of bits in the copy token (a value between 4 and 12)
+
+
+
+ Convenience method for read a 2-bytes short in little endian encoding.
+
+ short value from the stream, -1 if end of stream is reached
+
+
+
+
+ Convenience method for read a 4-bytes int in little endian encoding.
+
+ integer value from the stream, -1 if end of stream is reached
+
+
+
+
+ construct the ShortField with its offset into its containing
+ byte array
+
+ offset of the field within its byte array
+ if offset is negative
+
+
+
+ construct the ShortField with its offset into its containing byte array and initialize its value
+
+ offset of the field within its byte array
+ the initial value
+ if offset is negative
+
+
+
+ Construct the ShortField with its offset into its containing
+ byte array and initialize its value from its byte array
+
+ offset of the field within its byte array
+ the byte array to read the value from
+ if the offset is not
+ within the range of 0..(data.length - 1)
+
+
+
+ construct the ShortField with its offset into its containing
+ byte array, initialize its value, and write its value to its
+ byte array
+
+ offset of the field within its byte array
+ the initial value
+ the byte array to write the value to
+ if offset is negative
+
+
+
+ Gets or sets the value.
+
+ The value.
+
+
+
+ set the ShortField's current value and write it to a byte array
+
+ value to be set
+ the byte array to write the value to
+ if the offset is out
+ of range
+
+
+
+ set the value from its offset into an array of bytes
+
+ the byte array from which the value is to be read
+ if the offset is out
+ of range
+
+
+
+ set the value from an Stream
+
+ the Stream from which the value is to be
+ read
+ if an IOException is thrown from reading
+ the Stream
+ if there is not enough data
+ available from the Stream
+
+
+
+ write the value out to an array of bytes at the appropriate
+ offset
+
+ the array of bytes to which the value is to be
+ written
+ if the offset is out
+ of range
+
+
+
+ Same as using the constructor with the same
+ parameter list. Avoid creation of an useless object.
+
+ offset of the field within its byte array
+ the initial value
+ the byte array to write the value to
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+ A List of short's; as full an implementation of the java.Util.List
+ interface as possible, with an eye toward minimal creation of
+ objects
+
+ the mimicry of List is as follows:
+
+ - if possible, operations designated 'optional' in the List
+ interface are attempted
+ - wherever the List interface refers to an Object, substitute
+ short
+ - wherever the List interface refers to a Collection or List,
+ substitute shortList
+
+
+ the mimicry is not perfect, however:
+
+ - operations involving Iterators or ListIterators are not
+ supported
+ - Remove(Object) becomes RemoveValue to distinguish it from
+ Remove(short index)
+ - subList is not supported
+
+
+
+
+
+ create an shortList of default size
+
+
+
+
+ create a copy of an existing shortList
+
+ the existing shortList
+
+
+
+ create an shortList with a predefined Initial size
+
+ the size for the internal array
+
+
+
+ add the specfied value at the specified index
+
+ the index where the new value is to be Added
+ the new value
+
+
+
+ Appends the specified element to the end of this list
+
+ element to be Appended to this list.
+ return true (as per the general contract of the Collection.add method).
+
+
+
+ Appends all of the elements in the specified collection to the
+ end of this list, in the order that they are returned by the
+ specified collection's iterator. The behavior of this
+ operation is unspecified if the specified collection is
+ modified while the operation is in progress. (Note that this
+ will occur if the specified collection is this list, and it's
+ nonempty.)
+
+ collection whose elements are to be Added to this list.
+ return true if this list Changed as a result of the call.
+
+
+
+ Inserts all of the elements in the specified collection into
+ this list at the specified position. Shifts the element
+ currently at that position (if any) and any subsequent elements
+ to the right (increases their indices). The new elements will
+ appear in this list in the order that they are returned by the
+ specified collection's iterator. The behavior of this
+ operation is unspecified if the specified collection is
+ modified while the operation is in progress. (Note that this
+ will occur if the specified collection is this list, and it's
+ nonempty.)
+
+ index at which to insert first element from the specified collection.
+ elements to be inserted into this list.
+ return true if this list Changed as a result of the call.
+ if the index is out of range (index < 0 || index > size())
+
+
+
+ Removes all of the elements from this list. This list will be
+ empty After this call returns (unless it throws an exception).
+
+
+
+
+ Returns true if this list Contains the specified element. More
+ formally, returns true if and only if this list Contains at
+ least one element e such that o == e
+
+ element whose presence in this list is to be Tested.
+ return true if this list Contains the specified element.
+
+
+
+ Returns true if this list Contains all of the elements of the specified collection.
+
+ collection to be Checked for Containment in this list.
+ return true if this list Contains all of the elements of the specified collection.
+
+
+
+ Compares the specified object with this list for Equality.
+ Returns true if and only if the specified object is also a
+ list, both lists have the same size, and all corresponding
+ pairs of elements in the two lists are Equal. (Two elements e1
+ and e2 are equal if e1 == e2.) In other words, two lists are
+ defined to be equal if they contain the same elements in the
+ same order. This defInition ensures that the Equals method
+ works properly across different implementations of the List
+ interface.
+
+ the object to be Compared for Equality with this list.
+ return true if the specified object is equal to this list.
+
+
+
+ Returns the element at the specified position in this list.
+
+ index of element to return.
+ return the element at the specified position in this list.
+
+
+
+ Returns the hash code value for this list. The hash code of a
+ list is defined to be the result of the following calculation:
+
+
+ hashCode = 1;
+ Iterator i = list.Iterator();
+ while (i.HasNext()) {
+ Object obj = i.Next();
+ hashCode = 31*hashCode + (obj==null ? 0 : obj.HashCode());
+ }
+
+
+ This ensures that list1.Equals(list2) implies that
+ list1.HashCode()==list2.HashCode() for any two lists, list1 and
+ list2, as required by the general contract of Object.HashCode.
+
+ return the hash code value for this list.
+
+
+
+ Returns the index in this list of the first occurrence of the
+ specified element, or -1 if this list does not contain this
+ element. More formally, returns the lowest index i such that
+ (o == Get(i)), or -1 if there is no such index.
+
+ element to search for.
+ the index in this list of the first occurrence of the
+ specified element, or -1 if this list does not contain
+ this element.
+
+
+
+
+ Returns true if this list Contains no elements.
+
+ return true if this list Contains no elements.
+
+
+
+ Returns the index in this list of the last occurrence of the
+ specified element, or -1 if this list does not contain this
+ element. More formally, returns the highest index i such that
+ (o == Get(i)), or -1 if there is no such index.
+
+ element to search for.
+ return the index in this list of the last occurrence of the
+ specified element, or -1 if this list does not contain this element.
+
+
+
+ Removes the element at the specified position in this list.
+ Shifts any subsequent elements to the left (subtracts one from
+ their indices). Returns the element that was Removed from the
+ list.
+
+ the index of the element to Removed.
+ return the element previously at the specified position.
+
+
+
+ Removes the first occurrence in this list of the specified
+ element (optional operation). If this list does not contain
+ the element, it is unChanged. More formally, Removes the
+ element with the lowest index i such that (o.Equals(get(i)))
+ (if such an element exists).
+
+ element to be Removed from this list, if present.
+ return true if this list Contained the specified element.
+
+
+
+ Removes from this list all the elements that are Contained in the specified collection
+
+ collection that defines which elements will be removed from this list.
+ return true if this list Changed as a result of the call.
+
+
+
+ Retains only the elements in this list that are Contained in
+ the specified collection. In other words, Removes from this
+ list all the elements that are not Contained in the specified
+ collection.
+
+ collection that defines which elements this Set will retain.
+ return true if this list Changed as a result of the call.
+
+
+
+ Replaces the element at the specified position in this list with the specified element
+
+ index of element to Replace.
+ element to be stored at the specified position.
+ return the element previously at the specified position.
+
+
+
+ Returns the number of elements in this list. If this list
+ Contains more than Int32.MaxValue elements, returns
+ Int32.MaxValue.
+
+ return the number of elements in this shortList
+
+
+
+ the number of elements in this shortList
+
+
+
+
+ Returns an array Containing all of the elements in this list in
+ proper sequence. Obeys the general contract of the
+ Collection.ToArray method.
+
+ an array Containing all of the elements in this list in
+ proper sequence.
+
+
+
+ Returns an array Containing all of the elements in this list in
+ proper sequence. Obeys the general contract of the
+ Collection.ToArray(Object[]) method.
+
+ the array into which the elements of this list are to
+ be stored, if it is big enough; otherwise, a new array
+ is allocated for this purpose.
+ return an array Containing the elements of this list.
+
+
+
+ Title: String Utility Description: Collection of string handling utilities
+ @author Andrew C. Oliver
+ @author Sergei Kozello (sergeikozello at mail.ru)
+ @author Toshiaki Kamoshida (kamoshida.toshiaki at future dot co dot jp)
+ @since May 10, 2002
+ @version 1.0
+
+
+
+ Constructor for the StringUtil object
+
+
+
+ Given a byte array of 16-bit unicode characters in Little Endian
+ Format (most important byte last), return a Java String representation
+ of it.
+ { 0x16, 0x00 } -0x16
+
+ the byte array to be converted
+ the initial offset into the
+ byte array. it is assumed that string[ offset ] and string[ offset + 1 ] contain the first 16-bit unicode character
+ the Length of the string
+ the converted string
+
+
+
+ Given a byte array of 16-bit unicode characters in little endian
+ Format (most important byte last), return a Java String representation
+ of it.
+ { 0x16, 0x00 } -0x16
+
+ the byte array to be converted
+ the converted string
+
+
+ Convert String to 16-bit unicode characters in little endian format
+
+ @param string the string
+ @return the byte array of 16-bit unicode characters
+
+
+
+ Given a byte array of 16-bit unicode characters in big endian
+ Format (most important byte first), return a Java String representation
+ of it.
+ { 0x00, 0x16 } -0x16
+
+ the byte array to be converted
+ the initial offset into the
+ byte array. it is assumed that string[ offset ] and string[ offset + 1 ] contain the first 16-bit unicode character
+ the Length of the string
+ the converted string
+
+
+
+ Given a byte array of 16-bit unicode characters in big endian
+ Format (most important byte first), return a Java String representation
+ of it.
+ { 0x00, 0x16 } -0x16
+
+ the byte array to be converted
+ the converted string
+
+
+
+ Read 8 bit data (in IsO-8859-1 codepage) into a (unicode) Java
+ String and return.
+ (In Excel terms, read compressed 8 bit unicode as a string)
+
+ byte array to read
+ offset to read byte array
+ Length to read byte array
+ generated String instance by reading byte array
+
+
+
+ Takes a unicode (java) string, and returns it as 8 bit data (in IsO-8859-1
+ codepage).
+ (In Excel terms, write compressed 8 bit unicode)
+
+ the String containing the data to be written
+ the byte array to which the data Is to be written
+ an offset into the byte arrat at which the data Is start when written
+
+
+
+ Takes a unicode string, and returns it as little endian (most
+ important byte last) bytes in the supplied byte array.
+ (In Excel terms, write uncompressed unicode)
+
+ the String containing the unicode data to be written
+ the byte array to hold the uncompressed unicode, should be twice the Length of the String
+ the offset to start writing into the byte array
+
+
+
+ Takes a unicode string, and returns it as big endian (most
+ important byte first) bytes in the supplied byte array.
+ (In Excel terms, write uncompressed unicode)
+
+ the String containing the unicode data to be written
+ the byte array to hold the uncompressed unicode, should be twice the Length of the String.
+ the offset to start writing into the byte array
+
+
+
+ Gets the preferred encoding.
+
+ the encoding we want to use, currently hardcoded to IsO-8859-1
+
+
+
+ check the parameter Has multibyte character
+
+ string to check
+
+ true if Has at least one multibyte character; otherwise, false.
+
+
+
+ InputStream in is expected to contain:
+
+ - ushort nChars
+ - byte is16BitFlag
+ - byte[]/char[] characterData
+
+ For this encoding, the is16BitFlag is always present even if nChars==0.
+
+
+ InputStream in is expected to contain:
+
+ - byte is16BitFlag
+ - byte[]/char[] characterData
+
+ For this encoding, the is16BitFlag is always present even if nChars==0.
+
+ This method should be used when the nChars field is not stored
+ as a ushort immediately before the is16BitFlag. Otherwise, {@link
+ #readUnicodeString(LittleEndianInput)} can be used.
+
+
+ OutputStream out will get:
+
+ - ushort nChars
+ - byte is16BitFlag
+ - byte[]/char[] characterData
+
+ For this encoding, the is16BitFlag is always present even if nChars==0.
+
+
+ OutputStream out will get:
+
+ - byte is16BitFlag
+ - byte[]/char[] characterData
+
+ For this encoding, the is16BitFlag is always present even if nChars==0.
+
+ This method should be used when the nChars field is not stored
+ as a ushort immediately before the is16BitFlag. Otherwise, {@link
+ #writeUnicodeString(LittleEndianOutput, String)} can be used.
+
+
+
+ Gets the number of bytes that would be written by WriteUnicodeString(LittleEndianOutput, String)
+
+ The value.
+
+
+
+
+ Checks to see if a given String needs to be represented as Unicode
+
+ The value.
+
+ true if string needs Unicode to be represented.; otherwise, false.
+
+ Tony Qu change the logic
+
+
+
+ Encodes non-US-ASCII characters in a string, good for encoding file names for download
+ http://www.acriticsreview.com/List.aspx?listid=42
+
+
+
+
+
+
+ Encodes a non-US-ASCII character.
+
+
+
+
+
+
+ Encodes a non-US-ASCII character.
+
+
+
+
+
+
+ Encodes a non-US-ASCII character.
+
+
+
+
+
+
+ Encodes a non-US-ASCII character.
+
+
+
+
+
+
+ Determines if the character needs to be encoded.
+ http://www.acriticsreview.com/List.aspx?listid=42
+
+
+
+
+
+ Some strings may contain encoded characters of the unicode private use area.
+ Currently the characters of the symbol fonts are mapped to the corresponding
+ characters in the normal unicode range.
+
+ @param string the original string
+ @return the string with mapped characters
+
+ @see Private Use Area (symbol)
+ @see Symbol font - Unicode alternatives for Greek and special characters in HTML
+
+
+ The minimum value of a
+
+ Unicode high-surrogate code unit
+ in the UTF-16 encoding, constant {@code '\u005CuD800'}.
+ A high-surrogate is also known as a leading-surrogate.
+
+ @since 1.5
+
+
+ The maximum value of a
+
+ Unicode high-surrogate code unit
+ in the UTF-16 encoding, constant {@code '\u005CuDBFF'}.
+ A high-surrogate is also known as a leading-surrogate.
+
+ @since 1.5
+
+
+ The minimum value of a
+
+ Unicode low-surrogate code unit
+ in the UTF-16 encoding, constant {@code '\u005CuDC00'}.
+ A low-surrogate is also known as a trailing-surrogate.
+
+ @since 1.5
+
+
+ The maximum value of a
+
+ Unicode low-surrogate code unit
+ in the UTF-16 encoding, constant {@code '\u005CuDFFF'}.
+ A low-surrogate is also known as a trailing-surrogate.
+
+ @since 1.5
+
+
+ Converts the specified surrogate pair to its supplementary code
+ point value. This method does not validate the specified
+ surrogate pair. The caller must validate it using {@link
+ #isSurrogatePair(char, char) isSurrogatePair} if necessary.
+
+ @param high the high-surrogate code unit
+ @param low the low-surrogate code unit
+ @return the supplementary code point composed from the
+ specified surrogate pair.
+ @since 1.5
+
+
+ Determines the number of {@code char} values needed to
+ represent the specified character (Unicode code point). If the
+ specified character is equal to or greater than 0x10000, then
+ the method returns 2. Otherwise, the method returns 1.
+
+ This method doesn't validate the specified character to be a
+ valid Unicode code point. The caller must validate the
+ character value using {@link #isValidCodePoint(int) isValidCodePoint}
+ if necessary.
+
+ @param codePoint the character (Unicode code point) to be tested.
+ @return 2 if the character is a valid supplementary character; 1 otherwise.
+ @see Character#isSupplementaryCodePoint(int)
+ @since 1.5
+
+
+ Count number of occurrences of needle in haystack
+ Has same signature as org.apache.commons.lang3.StringUtils#countMatches
+
+ @param haystack the CharSequence to check, may be null
+ @param needle the character to count the quantity of
+ @return the number of occurrences, 0 if the CharSequence is null
+
+
+
+ A logger class that strives to make it as easy as possible for
+ developers to write log calls, while simultaneously making those
+ calls as cheap as possible by performing lazy Evaluation of the log
+ message.
+
+
+ @author Marc Johnson (mjohnson at apache dot org)
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Nicola Ken Barozzi (nicolaken at apache.org)
+
+
+
+
+ Log a message
+
+ One of DEBUG, INFO, WARN, ERROR, FATAL
+ The object to log.
+
+
+
+ Log a message
+
+ One of DEBUG, INFO, WARN, ERROR, FATAL
+ The object to log. This is Converted to a string.
+ An exception to be logged
+
+
+
+ Check if a logger is enabled to log at the specified level
+
+ One of DEBUG, INFO, WARN, ERROR, FATAL
+
+
+
+ Creates a temporary file. Files are collected into one directory and by default are
+ deleted on exit from the VM. Files can be kept by defining the system property
+ poi.keep.tmp.files.
+
+ Dont forget to close all files or it might not be possible to delete them.
+
+
+
+
+
+
+
+
+ construct the with its offset into its containing byte array
+
+ The offset.
+
+
+
+ construct the LongField with its offset into its containing
+ byte array and initialize its value
+
+ offset of the field within its byte array
+ the initial value
+
+
+
+ Construct the class with its offset into its containing
+ byte array and initialize its value from its byte array
+
+ The offset of the field within its byte array
+ the byte array to read the value from
+
+
+
+ construct the class with its offset into its containing
+ byte array, initialize its value, and write the value to a byte
+ array
+
+ offset of the field within its byte array
+ the initial value
+ the byte array to write the value to
+
+
+
+ Getg or sets the LongField's current value
+
+ The current value
+
+
+
+ set the LongField's current value and write it to a byte array
+
+ value to be set
+ the byte array to write the value to
+
+
+
+ set the value from its offset into an array of bytes
+
+ the byte array from which the value is to be read
+
+
+
+ set the value from an Stream
+
+ the Stream from which the value is to be
+
+
+
+ write the value out to an array of bytes at the appropriate offset
+
+ the array of bytes to which the value is to be written
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+ @author Yegor Kozlov
+
+
+ In Escher absolute distances are specified in
+ English Metric Units (EMUs), occasionally referred to as A units;
+ there are 360000 EMUs per centimeter, 914400 EMUs per inch, 12700 EMUs per point.
+
+
+ Master DPI (576 pixels per inch).
+ Used by the reference coordinate system in PowerPoint (HSLF)
+
+
+ Pixels DPI (96 pixels per inch)
+
+
+ Points DPI (72 pixels per inch)
+
+
+
+ Converts points to EMUs
+
+
+ EMUs
+
+
+ Converts pixels to EMUs
+ @param pixels pixels
+ @return EMUs
+
+
+ Converts a value of type FixedPoint to a decimal number
+
+ @param fixedPoint
+ @return decimal number
+
+ @see [MS-OSHARED] - 2.2.1.6 FixedPoint
+
+
+ Converts a value of type floating point to a FixedPoint
+
+ @param floatPoint
+ @return fixedPoint
+
+ @see [MS-OSHARED] - 2.2.1.6 FixedPoint
+
+
+ Common interface for Excel text extractors, covering
+ HSSF and XSSF
+
+
+ Retreives the text contents of the file
+
+
+ Formats a date value.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+ Creates a new date formatter with the given specification.
+
+ @param format The format.
+
+
+ {@inheritDoc}
+
+
+ {@inheritDoc}
+
+ For a date, this is "mm/d/y".
+
+
+ This class : printing out an elapsed time format.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+ Creates a elapsed time formatter.
+
+ @param pattern The pattern to Parse.
+
+
+ {@inheritDoc}
+
+
+ {@inheritDoc}
+
+ For a date, this is "mm/d/y".
+
+
+
+ Format a value as it would be were no format specified. This is also
+ used when the format specified is General.
+
+
+ Maps a format string to its Parsed version for efficiencies sake.
+
+
+ Returns a {@link CellFormat} that applies the given format. Two calls
+ with the same format may or may not return the same object.
+
+ @param format The format.
+
+ @return A {@link CellFormat} that applies the given format.
+
+
+ Creates a new object.
+
+ @param format The format.
+
+
+ Returns the result of Applying the format to the given value. If the
+ value is a number (a type of {@link Number} object), the correct number
+ format type is chosen; otherwise it is considered a text object.
+
+ @param value The value
+
+ @return The result, in a {@link CellFormatResult}.
+
+
+ Returns the result of applying the format to the given date.
+
+ @param date The date.
+ @param numericValue The numeric value for the date.
+
+ @return The result, in a {@link CellFormatResult}.
+
+
+ Fetches the appropriate value from the cell, and returns the result of
+ Applying it to the appropriate format. For formula cells, the computed
+ value is what is used.
+
+ @param c The cell.
+
+ @return The result, in a {@link CellFormatResult}.
+
+
+ Returns the {@link CellFormatPart} that applies to the value. Result
+ depends on how many parts the cell format has, the cell value and any
+ conditions. The value must be a {@link Number}.
+
+ @param value The value.
+ @return The {@link CellFormatPart} that applies to the value.
+
+
+ Returns the ultimate cell type, following the results of formulas. If
+ the cell is a {@link Cell#CELL_TYPE_FORMULA}, this returns the result of
+ {@link Cell#getCachedFormulaResultType()}. Otherwise this returns the
+ result of {@link Cell#getCellType()}.
+
+ @param cell The cell.
+
+ @return The ultimate type of this cell.
+
+
+ Returns true if the other object is a {@link CellFormat} object
+ with the same format.
+
+ @param obj The other object.
+
+ @return true if the two objects are Equal.
+
+
+ Returns a hash code for the format.
+
+ @return A hash code for the format.
+
+
+ This object represents a condition in a cell format.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+ Returns an instance of a condition object.
+
+ @param opString The operator as a string. One of "<",
+ "<=", ">", ">=",
+ "=", "==", "!=", or
+ "<>".
+ @param constStr The constant (such as "12").
+
+ @return A condition object for the given condition.
+
+
+ Returns true if the given value passes the constraint's test.
+
+ @param value The value to compare against.
+
+ @return true if the given value passes the constraint's test.
+
+
+ Objects of this class represent a single part of a cell format expression.
+ Each cell can have up to four of these for positive, zero, negative, and text
+ values.
+
+ Each format part can contain a color, a condition, and will always contain a
+ format specification. For example "[Red][>=10]#" has a color
+ ([Red]), a condition (>=10) and a format specification
+ (#).
+
+ This class also Contains patterns for matching the subparts of format
+ specification. These are used internally, but are made public in case other
+ code has use for them.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+ Pattern for the color part of a cell format part.
+
+
+ Pattern for the condition part of a cell format part.
+
+
+ Pattern for the format specification part of a cell format part.
+
+
+ Pattern for the currency symbol part of a cell format part
+
+
+ Pattern for an entire cell single part.
+
+
+ Within {@link #FORMAT_PAT}, the group number for the matched color.
+
+
+ Within {@link #FORMAT_PAT}, the group number for the operator in the
+ condition.
+
+
+ Within {@link #FORMAT_PAT}, the group number for the value in the
+ condition.
+
+
+ Within {@link #FORMAT_PAT}, the group number for the format
+ specification.
+
+
+ Create an object to represent a format part.
+
+ @param desc The string to Parse.
+
+
+ Returns true if this format part applies to the given value. If
+ the value is a number and this is part has a condition, returns
+ true only if the number passes the condition. Otherwise, this
+ allways return true.
+
+ @param valueObject The value to Evaluate.
+
+ @return true if this format part applies to the given value.
+
+
+ Returns the number of the first group that is the same as the marker
+ string. Starts from group 1.
+
+ @param pat The pattern to use.
+ @param str The string to match against the pattern.
+ @param marker The marker value to find the group of.
+
+ @return The matching group number.
+
+ @throws ArgumentException No group matches the marker.
+
+
+ Returns the color specification from the matcher, or null if
+ there is none.
+
+ @param m The matcher for the format part.
+
+ @return The color specification or null.
+
+
+ Returns the condition specification from the matcher, or null if
+ there is none.
+
+ @param m The matcher for the format part.
+
+ @return The condition specification or null.
+
+
+ Returns the CellFormatType object implied by the format specification for
+ the format part.
+
+ @param matcher The matcher for the format part.
+
+ @return The CellFormatType.
+
+
+ Returns the formatter object implied by the format specification for the
+ format part.
+
+ @param matcher The matcher for the format part.
+
+ @return The formatter.
+
+
+ Returns the type of format.
+
+ @param fdesc The format specification
+
+ @return The type of format.
+
+
+ Returns a version of the original string that has any special characters
+ quoted (or escaped) as appropriate for the cell format type. The format
+ type object is queried to see what is special.
+
+ @param repl The original string.
+ @param type The format type representation object.
+
+ @return A version of the string with any special characters Replaced.
+
+ @see CellFormatType#isSpecial(char)
+
+
+ Apply this format part to the given value. This returns a {@link
+ CellFormatResult} object with the results.
+
+ @param value The value to apply this format part to.
+
+ @return A {@link CellFormatResult} object Containing the results of
+ Applying the format to the value.
+
+
+ Returns the CellFormatType object implied by the format specification for
+ the format part.
+
+ @return The CellFormatType.
+
+
+ Returns true if this format part has a condition.
+
+ @return true if this format part has a condition.
+
+
+ Expands a character. This is only partly done, because we don't have the
+ correct info. In Excel, this would be expanded to fill the rest of the
+ cell, but we don't know, in general, what the "rest of the cell" is1.
+
+ @param part The character to be repeated is the second character in this
+ string.
+
+ @return The character repeated three times.
+
+
+ Returns the string from the group, or "" if the group is
+ null.
+
+ @param m The matcher.
+ @param g The group number.
+
+ @return The group or "".
+
+
+ This object Contains the result of Applying a cell format or cell format part
+ to a value.
+
+ @author Ken Arnold, Industrious Media LLC
+ @see CellFormatPart#Apply(Object)
+ @see CellFormat#Apply(Object)
+
+
+ This is true if no condition was given that applied to the
+ value, or if the condition is satisfied. If a condition is relevant, and
+ when applied the value fails the test, this is false.
+
+
+ The resulting text. This will never be null.
+
+
+ The color the format Sets, or null if the format Sets no color.
+ This will always be null if {@link #applies} is false.
+
+
+ Creates a new format result object.
+
+ @param applies The value for {@link #applies}.
+ @param text The value for {@link #text}.
+ @param textColor The value for {@link #textColor}.
+
+
+ This is the abstract supertype for the various cell formatters.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+ The original specified format.
+
+
+ This is the locale used to Get a consistent format result from which to
+ work.
+
+
+ Creates a new formatter object, storing the format in {@link #format}.
+
+ @param format The format.
+
+
+ Format a value according the format string.
+
+ @param toAppendTo The buffer to append to.
+ @param value The value to format.
+
+
+ Format a value according to the type, in the most basic way.
+
+ @param toAppendTo The buffer to append to.
+ @param value The value to format.
+
+
+ Formats the value, returning the resulting string.
+
+ @param value The value to format.
+
+ @return The value, formatted.
+
+
+ Formats the value in the most basic way, returning the resulting string.
+
+ @param value The value to format.
+
+ @return The value, formatted.
+
+
+ Returns the input string, surrounded by quotes.
+
+ @param str The string to quote.
+
+ @return The input string, surrounded by quotes.
+
+
+ The different kinds of formats that the formatter understands.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+ The general (default) format; also used for "General".
+
+
+ A numeric format.
+
+
+ A date format.
+
+
+ An elapsed time format.
+
+
+ A text format.
+
+
+ Returns true if the format is special and needs to be quoted.
+
+ @param ch The character to test.
+
+ @return true if the format is special and needs to be quoted.
+
+
+ Returns a new formatter of the appropriate type, for the given pattern.
+ The pattern must be appropriate for the type.
+
+ @param pattern The pattern to use.
+
+ @return A new formatter of the appropriate type, for the given pattern.
+
+
+ A formatter for the default "General" cell format.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+ Creates a new general formatter.
+
+
+ The general style is not quite the same as any other, or any combination
+ of others.
+
+ @param toAppendTo The buffer to append to.
+ @param value The value to format.
+
+
+ Equivalent to {@link #formatValue(StringBuilder,Object)}. {@inheritDoc}.
+
+
+ This class : printing out a value using a number format.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+
+ The CellNumberFormatter.simpleValue() method uses the SIMPLE_NUMBER
+ CellFormatter defined here. The CellFormat.GENERAL_FORMAT CellFormat
+ no longer uses the SIMPLE_NUMBER CellFormatter.
+ Note that the simpleValue()/SIMPLE_NUMBER CellFormatter format
+ ("#" for integer values, and "#.#" for floating-point values) is
+ different from the 'General' format for numbers ("#" for integer
+ values and "#.#########" for floating-point values).
+
+
+
+ This class is used to mark where the special characters in the format
+ are, as opposed to the other characters that are simply printed.
+
+
+ Creates a new cell number formatter.
+
+ @param format The format to Parse.
+
+
+ {@inheritDoc}
+
+
+ {@inheritDoc}
+
+ For a number, this is "#" for integer values, and "#.#"
+ for floating-point values.
+
+
+ Internal helper class for CellNumberFormatter
+
+
+ Internal helper class for CellNumberFormatter
+
+ This class represents a single modification to a result string. The way
+ this works is complicated, but so is numeric formatting. In general, for
+ most formats, we use a DecimalFormat object that will Put the string out
+ in a known format, usually with all possible leading and trailing zeros.
+ We then walk through the result and the original format, and note any
+ modifications that need to be made. Finally, we go through and apply
+ them all, dealing with overlapping modifications.
+
+
+ This class : printing out text.
+
+ @author Ken Arnold, Industrious Media LLC
+
+
+ {@inheritDoc}
+
+
+ {@inheritDoc}
+
+ For text, this is just printing the text.
+
+
+ The denominator.
+
+
+ The numerator.
+
+
+ Create a fraction given a double value and a denominator.
+
+ @param val double value of fraction
+ @param exactDenom the exact denominator
+ @return a SimpleFraction with the given values set.
+
+
+ Create a fraction given the double value and either the maximum error
+ allowed or the maximum number of denominator digits.
+
+ @param value the double value to convert to a fraction.
+ @param maxDenominator maximum denominator value allowed.
+
+ @throws RuntimeException if the continued fraction failed to
+ converge.
+ @throws IllegalArgumentException if value > Integer.MAX_VALUE
+
+
+ Create a fraction given the double value and either the maximum error
+ allowed or the maximum number of denominator digits.
+
+ References:
+
+
+
+ Based on org.apache.commons.math.fraction.Fraction from Apache Commons-Math.
+ YK: The only reason of having this class is to avoid dependency on the Commons-Math jar.
+
+ @param value the double value to convert to a fraction.
+ @param epsilon maximum error allowed. The resulting fraction is within
+ epsilon of value, in absolute terms.
+ @param maxDenominator maximum denominator value allowed.
+ @param maxIterations maximum number of convergents
+ @throws RuntimeException if the continued fraction failed to
+ converge.
+ @throws IllegalArgumentException if value > Integer.MAX_VALUE
+
+
+ Create a fraction given a numerator and denominator.
+ @param numerator
+ @param denominator maxDenominator The maximum allowed value for denominator
+
+
+ Access the denominator.
+ @return the denominator.
+
+
+ Access the numerator.
+ @return the numerator.
+
+
+ Returns a collection of ATP function names implemented by POI.
+
+ @return an array of supported functions
+ @since 3.8 beta6
+
+
+ Returns a collection of ATP function names NOT implemented by POI.
+
+ @return an array of not supported functions
+ @since 3.8 beta6
+
+
+ Register a ATP function in runtime.
+
+ @param name the function name
+ @param func the functoin to register
+ @throws ArgumentException if the function is unknown or already registered.
+ @since 3.8 beta6
+
+
+ Evaluator for formula arguments.
+
+ @author jfaenomoto@gmail.com
+
+
+ Evaluate a generic {@link ValueEval} argument to a double value that represents a date in POI.
+
+ @param arg {@link ValueEval} an argument.
+ @param srcCellRow number cell row.
+ @param srcCellCol number cell column.
+ @return a double representing a date in POI.
+ @throws EvaluationException exception upon argument evaluation.
+
+
+ Evaluate a generic {@link ValueEval} argument to an array of double values that represents dates in POI.
+
+ @param arg {@link ValueEval} an argument.
+ @param srcCellRow number cell row.
+ @param srcCellCol number cell column.
+ @return an array of doubles representing dates in POI.
+ @throws EvaluationException exception upon argument evaluation.
+
+
+ Evaluate a generic {@link ValueEval} argument to a double value.
+
+ @param arg {@link ValueEval} an argument.
+ @param srcCellRow number cell row.
+ @param srcCellCol number cell column.
+ @return a double value.
+ @throws EvaluationException exception upon argument evaluation.
+
+
+ Parser for java dates.
+
+ @author jfaenomoto@gmail.com
+
+
+ Parses a date from a string.
+
+ @param strVal a string with a date pattern.
+ @return a date parsed from argument.
+ @throws EvaluationException exception upon parsing.
+
+
+ @param month 1-based
+
+
+ Implementation for the function MAXIFS
+
+ Syntax: MAXIFS(data_range, criteria_range1, criteria1, [criteria_range2, criteria2])
+
+
+
+ Implementation for the function MINIFS
+
+ Syntax: MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2])
+
+
+
+ Implementation of Excel 'Analysis ToolPak' function MROUND()
+
+ Returns a number rounded to the desired multiple.
+
+ Syntax
+ MROUND(number, multiple)
+
+
+
+ @author Yegor Kozlov
+
+
+ Implementation of Excel 'Analysis ToolPak' function NETWORKDAYS()
+ Returns the number of workdays given a starting and an ending date, considering an interval of holidays. A workday is any non
+ saturday/sunday date.
+
+ Syntax
+ NETWORKDAYS(startDate, endDate, holidays)
+
+
+ @author jfaenomoto@gmail.com
+
+
+ Constructor.
+
+ @param anEvaluator an injected {@link ArgumentsEvaluator}.
+
+
+ Evaluate for NETWORKDAYS. Given two dates and a optional date or interval of holidays, determines how many working days are there
+ between those dates.
+
+ @return {@link ValueEval} for the number of days between two dates.
+
+
+ Implementation of Excel 'Analysis ToolPak' function ISEVEN() ISODD()
+
+ @author Josh Micich
+
+
+ * Implementation of Excel 'Analysis ToolPak' function RANDBETWEEN()
+ *
+ * Returns a random integer number between the numbers you specify.
+ *
+ * Syntax
+ * RANDBETWEEN(bottom, top)
+ *
+ * bottom is the smallest integer RANDBETWEEN will return.
+ * top is the largest integer RANDBETWEEN will return.
+
+ * @author Brendan Nolan
+
+
+ Evaluate for RANDBETWEEN(). Must be given two arguments. Bottom must be greater than top.
+ Bottom is rounded up and top value is rounded down. After rounding top has to be set greater
+ than top.
+
+ @see org.apache.poi.ss.formula.functions.FreeRefFunction#evaluate(org.apache.poi.ss.formula.eval.ValueEval[], org.apache.poi.ss.formula.OperationEvaluationContext)
+
+
+ A calculator for workdays, considering dates as excel representations.
+
+ @author jfaenomoto@gmail.com
+
+
+ Constructor.
+
+
+ Calculate how many workdays are there between a start and an end date, as excel representations, considering a range of holidays.
+
+ @param start start date.
+ @param end end date.
+ @param holidays an array of holidays.
+ @return number of workdays between start and end dates, including both dates.
+
+
+ Calculate the workday past x workdays from a starting date, considering a range of holidays.
+
+ @param start start date.
+ @param workdays number of workdays to be past from starting date.
+ @param holidays an array of holidays.
+ @return date past x workdays.
+
+
+ Calculate the workday past x workdays from a starting date, considering a range of holidays.
+
+ @param start start date.
+ @param workdays number of workdays to be past from starting date.
+ @param weekendType weekend parameter (see https://support.microsoft.com/en-us/office/workday-intl-function-a378391c-9ba7-4678-8a39-39611a9bf81d)
+ @param holidays an array of holidays.
+ @return date past x workdays.
+
+
+ @param aDate a given date.
+ @param holidays an array of holidays.
+ @return true if date is a holiday, false otherwise.
+
+
+ Calculates how many days of week past between a start and an end date.
+
+ @param start start date.
+ @param end end date.
+ @param dayOfWeek a day of week as represented by {@link Calendar} constants.
+ @return how many days of week past in this interval.
+
+
+ Calculates how many holidays in a list are workdays, considering an interval of dates.
+
+ @param start start date.
+ @param end end date.
+ @param holidays an array of holidays.
+ @return number of holidays that occur in workdays, between start and end dates.
+
+
+ @param aDate a given date.
+ @return true if date is weekend, false otherwise.
+
+
+ @param aDate a given date.
+ @param holidays an array of holidays.
+ @return true if date is a holiday, false otherwise.
+
+
+ @param aDate a given date.
+ @param holidays an array of holidays.
+ @return 1 is not a workday, 0 otherwise.
+
+
+ @param start start date.
+ @param end end date.
+ @param aDate a date to be analyzed.
+ @return true if aDate is between start and end dates, false otherwise.
+
+
+ Implementation of Excel 'Analysis ToolPak' function WORKDAY()
+ Returns the date past a number of workdays beginning at a start date, considering an interval of holidays. A workday is any non
+ saturday/sunday date.
+
+ Syntax
+ WORKDAY(startDate, days, holidays)
+
+
+ @author jfaenomoto@gmail.com
+
+
+ Evaluate for WORKDAY. Given a date, a number of days and a optional date or interval of holidays, determines which date it is past
+ number of parametrized workdays.
+
+ @return {@link ValueEval} with date as its value.
+
+
+ Evaluate for WORKDAY. Given a date, a number of days and a optional date or interval of holidays, determines which date it is past
+ number of parametrized workdays.
+
+ @return {@link ValueEval} with date as its value.
+
+
+ Implementation of Excel 'Analysis ToolPak' function YEARFRAC()
+
+ Returns the fraction of the year spanned by two dates.
+
+ Syntax
+ YEARFRAC(startDate, endDate, basis)
+
+ The basis optionally specifies the behaviour of YEARFRAC as follows:
+
+
+ | Value | Days per Month | Days per Year |
+ | 0 (default) | 30 | 360 |
+ | 1 | actual | actual |
+ | 2 | actual | 360 |
+ | 3 | actual | 365 |
+ | 4 | 30 | 360 |
+
+
+
+
+
+ Internal calculation methods for Excel 'Analysis ToolPak' function YEARFRAC()
+ Algorithm inspired by www.dwheeler.com/yearfrac
+ @author Josh Micich
+
+
+ Date Count convention
+ http://en.wikipedia.org/wiki/Day_count_convention
+
+
+ Office Online Help on YEARFRAC
+ http://office.microsoft.com/en-us/excel/HP052093441033.aspx
+
+
+
+ use UTC time-zone to avoid daylight savings issues
+
+
+ the length of normal long months i.e. 31
+
+
+ the length of normal short months i.e. 30
+
+
+
+ Calculates YEARFRAC()
+
+ The start date.
+ The end date.
+ The basis value.
+
+
+
+
+ Basis 0, 30/360 date convention
+
+ The start date value assumed to be less than or equal to endDateVal.
+ The end date value assumed to be greater than or equal to startDateVal.
+
+
+
+
+ Basis 1, Actual/Actual date convention
+
+ The start date value assumed to be less than or equal to endDateVal.
+ The end date value assumed to be greater than or equal to startDateVal.
+
+
+
+
+ Basis 2, Actual/360 date convention
+
+ The start date value assumed to be less than or equal to endDateVal.
+ The end date value assumed to be greater than or equal to startDateVal.
+
+
+
+
+ Basis 3, Actual/365 date convention
+
+ The start date value assumed to be less than or equal to endDateVal.
+ The end date value assumed to be greater than or equal to startDateVal.
+
+
+
+
+ Basis 4, European 30/360 date convention
+
+ The start date value assumed to be less than or equal to endDateVal.
+ The end date value assumed to be greater than or equal to startDateVal.
+
+
+
+
+ Calculates the adjusted.
+
+ The start date.
+ The end date.
+ The date1day.
+ The date2day.
+
+
+
+
+ Determines whether [is last day of month] [the specified date].
+
+ The date.
+
+ true if [is last day of month] [the specified date]; otherwise, false.
+
+
+
+
+ Gets the last day of month.
+
+ The date.
+
+
+
+
+ Assumes dates are no more than 1 year apart.
+
+ The start.
+ The end.
+ true
+ if dates both within a leap year, or span a period including Feb 29
+
+
+
+ return the whole number of days between the two time-stamps. Both time-stamps are
+ assumed to represent 12:00 midnight on the respective day.
+
+ The start date ticks.
+ The end date ticks.
+
+
+
+
+ Averages the length of the year.
+
+ The start year.
+ The end year.
+
+
+
+
+ determine Leap Year
+
+ the year
+
+
+
+
+ Determines whether [is greater than one year] [the specified start].
+
+ The start date.
+ The end date.
+
+ true if [is greater than one year] [the specified start]; otherwise, false.
+
+
+
+
+ Creates the date.
+
+ The day count.
+
+
+
+
+ Simple Date Wrapper
+
+
+
+ 1-based month
+
+
+ day of month
+
+
+ milliseconds since 1970
+
+
+ Common functionality across file formats for Evaluating formula cells.
+
+
+ Coordinates several formula Evaluators together so that formulas that involve external
+ references can be Evaluated.
+ @param workbookNames the simple file names used to identify the workbooks in formulas
+ with external links (for example "MyData.xls" as used in a formula "[MyData.xls]Sheet1!A1")
+ @param Evaluators all Evaluators for the full Set of workbooks required by the formulas.
+
+
+ Should be called whenever there are major Changes (e.g. moving sheets) to input cells
+ in the Evaluated workbook. If performance is not critical, a single call to this method
+ may be used instead of many specific calls to the Notify~ methods.
+
+ Failure to call this method After changing cell values will cause incorrect behaviour
+ of the Evaluate~ methods of this class
+
+
+ If cell Contains a formula, the formula is Evaluated and returned,
+ else the CellValue simply copies the appropriate cell value from
+ the cell and also its cell type. This method should be preferred over
+ EvaluateInCell() when the call should not modify the contents of the
+ original cell.
+
+ @param cell may be null signifying that the cell is not present (or blank)
+ @return null if the supplied cell is null or blank
+
+
+ If cell Contains formula, it Evaluates the formula, and
+ Puts the formula result back into the cell, in place
+ of the old formula.
+ Else if cell does not contain formula, this method leaves
+ the cell unChanged.
+ Note that the same instance of HSSFCell is returned to
+ allow chained calls like:
+
+ int EvaluatedCellType = Evaluator.EvaluateInCell(cell).CellType;
+
+ Be aware that your cell value will be Changed to hold the
+ result of the formula. If you simply want the formula
+ value computed for you, use {@link #EvaluateFormulaCellEnum(Cell)}}
+ @param cell
+ @return the {@code cell} that was passed in, allowing for chained calls
+
+
+ If cell Contains formula, it Evaluates the formula, and saves the result of the formula. The
+ cell remains as a formula cell. If the cell does not contain formula, this method returns -1
+ and leaves the cell unChanged.
+
+ Note that the type of the formula result is returned, so you know what kind of
+ cached formula result is also stored with the formula.
+
+ int EvaluatedCellType = Evaluator.EvaluateFormulaCell(cell);
+
+ Be aware that your cell will hold both the formula, and the result. If you want the cell
+ Replaced with the result of the formula, use {@link #EvaluateInCell(NPOI.SS.UserModel.Cell)}
+ @param cell The cell to Evaluate
+ @return -1 for non-formula cells, or the type of the formula result
+
+
+ If cell Contains formula, it Evaluates the formula,
+ and saves the result of the formula. The cell
+ remains as a formula cell.
+ Else if cell does not contain formula, this method leaves
+ the cell unChanged.
+ Note that the type of the formula result is returned,
+ so you know what kind of value is also stored with
+ the formula.
+
+ ICellType EvaluatedCellType = Evaluator.EvaluateFormulaCellEnum(cell);
+
+ Be aware that your cell will hold both the formula,
+ and the result. If you want the cell Replaced with
+ the result of the formula, use {@link #Evaluate(NPOI.SS.UserModel.Cell)} }
+ @param cell The cell to Evaluate
+ @return The type of the formula result (the cell's type remains as CellType.FORMULA however)
+ If cell is not a formula cell, returns {@link CellType#_NONE} rather than throwing an exception.
+ @since POI 3.15 beta 3
+
+
+ Loops over all cells in all sheets of the supplied
+ workbook.
+ For cells that contain formulas, their formulas are
+ Evaluated, and the results are saved. These cells
+ remain as formula cells.
+ For cells that do not contain formulas, no Changes
+ are made.
+ This is a helpful wrapper around looping over all
+ cells, and calling EvaluateFormulaCell on each one.
+
+
+ {@inheritDoc}
+
+
+ {@inheritDoc}
+
+
+ Stores the parameters that identify the evaluation of one cell.
+
+
+ Calls formulaCell.SetFormulaResult(null, null) recursively all the way up the tree of
+ dependencies. Calls usedCell.ClearConsumingCell(fc) for each child of a cell that Is
+ Cleared along the way.
+ @param formulaCells
+
+
+ Identical To {@link #RecurseClearCachedFormulaResults()} except for the listener call-backs
+
+
+ Stores details about the current evaluation of a cell.
+
+
+ @param inputCell a cell directly used by the formula of this evaluation frame
+
+
+ @return never null, (possibly empty) array of all cells directly used while
+ evaluating the formula of this frame.
+
+
+ Manages a collection of {@link WorkbookEvaluator}s, in order To support evaluation of formulas
+ across spreadsheets.
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+
+
+
+ To support Constant Values (2.5.7) as required by the CRN record.
+ This class is also used for two dimensional arrays which are encoded by
+ EXTERNALNAME (5.39) records and Array tokens.
+
+ @author Josh Micich
+
+
+ @return encoded size without the 'type' code byte
+
+
+
+ Represents a constant error code value as encoded in a constant values array.
+ This class is a type-safe wrapper for a 16-bit int value performing a similar job to
+ ErrorEval
+
+ @author Josh Micich
+
+
+
+ Initializes a new instance of the class.
+
+ The error code.
+
+
+
+ Gets the error code.
+
+ The error code.
+
+
+
+ Gets the text.
+
+ The text.
+
+
+
+ Values the of.
+
+ The error code.
+
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+ * Note that this assumes the cell cached value is up to date and in sync with data edits
+ *
+ * @param cell The {@link Cell} to check.
+ * @param type The {@link CellType} to check for.
+ * @return true if the cell or cached cell formula result type match the given type
+
+
+ Performance optimisation for {@link HSSFFormulaEvaluator}. This class stores previously
+ calculated values of already visited cells, To avoid unnecessary re-calculation when the
+ same cells are referenced multiple times
+
+
+ @author Josh Micich
+
+
+ only used for testing. null otherwise
+
+
+ Should be called whenever there are Changes To input cells in the evaluated workbook.
+
+
+ Abstracts a cell for the purpose of formula evaluation. This interface represents both formula
+ and non-formula cells.
+
+ Implementors of this class must implement {@link #HashCode()} and {@link #Equals(Object)}
+ To provide an identity relationship based on the underlying HSSF or XSSF cell
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ Note: this class has a natural ordering that is inconsistent with equals.
+
+
+ Note: this class has a natural ordering that is inconsistent with equals.
+ @param o
+ @return value comparison
+
+
+ Depending on the rule type, it may want to know about certain values in the region when evaluating {@link #matches(CellReference)},
+ such as top 10, unique, duplicate, average, etc. This collection stores those if needed so they are not repeatedly calculated
+
+
+ Abstracts a name record for formula evaluation.
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ Abstracts a sheet for the purpose of formula evaluation.
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ @return null if there is no cell at the specified coordinates
+
+
+ Propagated from {@link EvaluationWorkbook#clearAllCachedResultValues()} to clear locally cached data.
+
+ @see WorkbookEvaluator#clearAllCachedResultValues()
+ @see EvaluationWorkbook#clearAllCachedResultValues()
+
+
+
+ Instances of this class keep track of multiple dependent cell evaluations due
+ To recursive calls To
+ The main purpose of this class is To detect an attempt To evaluate a cell
+ that is already being evaluated. In other words, it detects circular
+ references in spreadsheet formulas.
+
+
+ @author Josh Micich
+
+
+
+ Notifies this evaluation tracker that evaluation of the specified cell Is
+ about To start.
+
+ In the case of a true return code, the caller should
+ continue evaluation of the specified cell, and also be sure To call
+ endEvaluate() when complete.
+
+ In the case of a null return code, the caller should
+ return an evaluation result of
+ ErrorEval.CIRCULAR_REF_ERROR, and not call endEvaluate().
+
+ @return false if the specified cell is already being evaluated
+
+
+ Notifies this evaluation tracker that the evaluation of the specified cell is complete.
+
+ Every successful call To startEvaluate must be followed by a call To endEvaluate (recommended in a finally block) To enable
+ proper tracking of which cells are being evaluated at any point in time.
+
+ Assuming a well behaved client, parameters To this method would not be
+ required. However, they have been included To assert correct behaviour,
+ and form more meaningful error messages.
+
+
+ Abstracts a workbook for the purpose of formula evaluation.
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ @return -1 if the specified sheet is from a different book
+
+
+ HSSF Only - fetch the external-style sheet details
+ Return will have no workbook set if it's actually in our own workbook
+
+
+ XSSF Only - fetch the external-style sheet details
+ Return will have no workbook set if it's actually in our own workbook
+
+
+ HSSF Only - convert an external sheet index to an internal sheet index,
+ for an external-style reference to one of this workbook's own sheets
+
+
+ HSSF Only - fetch the external-style name details
+
+
+ XSSF Only - fetch the external-style name details
+
+
+ Propagated from {@link WorkbookEvaluator#clearAllCachedResultValues()} to clear locally cached data.
+ Implementations must call the same method on all referenced {@link EvaluationSheet} instances, as well as clearing local caches.
+ @see WorkbookEvaluator#clearAllCachedResultValues()
+
+
+ Evaluation of 2D (Row+Column) and 3D (Sheet+Row+Column) areas
+
+
+ returns the 0-based index of the first row in
+ this area.
+
+
+ returns the 0-based index of the last row in
+ this area.
+
+
+ returns the 0-based index of the first col in
+ this area.
+
+
+ returns the 0-based index of the last col in
+ this area.
+
+
+ returns true if the cell at row and col specified
+ as absolute indexes in the sheet is contained in
+ this area.
+ @param row
+ @param col
+
+
+ returns true if the specified col is in range
+ @param col
+
+
+ returns true if the specified row is in range
+ @param row
+
+
+ @return the ValueEval from within this area at the specified row and col index. Never
+ null (possibly {@link BlankEval}). The specified indexes should be absolute
+ indexes in the sheet and not relative indexes within the area.
+
+
+ @return the ValueEval from within this area at the specified relativeRowIndex and
+ relativeColumnIndex. Never null (possibly {@link BlankEval}). The
+ specified indexes should relative to the top left corner of this area.
+
+
+ Creates an {@link AreaEval} offset by a relative amount from from the upper left cell
+ of this area
+
+
+ @author Josh Micich
+
+
+ @return whether cell at rowIndex and columnIndex is a subtotal.
+ By default return false which means 'don't care about subtotals'
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com > This class is a
+ marker class. It is a special value for empty cells.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Convenience method for the following:
+ (b ? BoolEval.TRUE : BoolEval.FALSE)
+ @return a BoolEval instance representing b.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ #NULL! - Intersection of two cell ranges is empty
+
+
+ #DIV/0! - Division by zero
+
+
+ #VALUE! - Wrong type of operand
+
+
+ #REF! - Illegal or deleted cell reference
+
+
+ #NAME? - Wrong function or range name
+
+
+ #NUM! - Value range overflow
+
+
+ #N/A - Argument or function not available
+
+
+ Translates an Excel internal error code into the corresponding POI ErrorEval instance
+ @param errorCode
+
+
+ Converts error codes to text. Handles non-standard error codes OK.
+ For debug/test purposes (and for formatting error messages).
+ @return the String representation of the specified Excel error code.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ This class is used to simplify error handling logic within operator and function
+ implementations. Note - OperationEval.Evaluate() and Function.Evaluate()
+ method signatures do not throw this exception so it cannot propagate outside.
+
+ Here is an example coded without EvaluationException, to show how it can help:
+
+ public Eval Evaluate(Eval[] args, int srcRow, short srcCol) {
+ // ...
+ Eval arg0 = args[0];
+ if(arg0 is ErrorEval) {
+ return arg0;
+ }
+ if(!(arg0 is AreaEval)) {
+ return ErrorEval.VALUE_INVALID;
+ }
+ double temp = 0;
+ AreaEval area = (AreaEval)arg0;
+ ValueEval[] values = area.LittleEndianConstants.BYTE_SIZE;
+ for (int i = 0; i < values.Length; i++) {
+ ValueEval ve = values[i];
+ if(ve is ErrorEval) {
+ return ve;
+ }
+ if(!(ve is NumericValueEval)) {
+ return ErrorEval.VALUE_INVALID;
+ }
+ temp += ((NumericValueEval)ve).NumberValue;
+ }
+ // ...
+ }
+
+ In this example, if any error is encountered while Processing the arguments, an error is
+ returned immediately. This code is difficult to refactor due to all the points where errors
+ are returned.
+ Using EvaluationException allows the error returning code to be consolidated to one
+ place.
+
+ public Eval Evaluate(Eval[] args, int srcRow, short srcCol) {
+ try {
+ // ...
+ AreaEval area = GetAreaArg(args[0]);
+ double temp = sumValues(area.LittleEndianConstants.BYTE_SIZE);
+ // ...
+ } catch (EvaluationException e) {
+ return e.GetErrorEval();
+ }
+ }
+
+ private static AreaEval GetAreaArg(Eval arg0){
+ if (arg0 is ErrorEval) {
+ throw new EvaluationException((ErrorEval) arg0);
+ }
+ if (arg0 is AreaEval) {
+ return (AreaEval) arg0;
+ }
+ throw EvaluationException.InvalidValue();
+ }
+
+ private double sumValues(ValueEval[] values){
+ double temp = 0;
+ for (int i = 0; i < values.Length; i++) {
+ ValueEval ve = values[i];
+ if (ve is ErrorEval) {
+ throw new EvaluationException((ErrorEval) ve);
+ }
+ if (!(ve is NumericValueEval)) {
+ throw EvaluationException.InvalidValue();
+ }
+ temp += ((NumericValueEval) ve).NumberValue;
+ }
+ return temp;
+ }
+
+ It is not mandatory to use EvaluationException, doing so might give the following advantages:
+ - Methods can more easily be extracted, allowing for re-use.
+ - Type management (typecasting etc) is simpler because error conditions have been Separated from
+ intermediate calculation values.
+ - Fewer local variables are required. Local variables can have stronger types.
+ - It is easier to mimic common Excel error handling behaviour (exit upon encountering first
+ error), because exceptions conveniently propagate up the call stack regardless of execution
+ points or the number of levels of nested calls.
+
+ Note - Only standard evaluation errors are represented by EvaluationException (
+ i.e. conditions expected to be encountered when evaluating arbitrary Excel formulas). Conditions
+ that could never occur in an Excel spReadsheet should result in runtime exceptions. Care should
+ be taken to not translate any POI internal error into an Excel evaluation error code.
+
+ @author Josh Micich
+
+
+ #VALUE! - Wrong type of operand
+
+
+ #REF! - Illegal or deleted cell reference
+
+
+ #NUM! - Value range overflow
+
+
+ Evaluation of a Name defined in a Sheet or Workbook scope
+
+
+ Represents a cell being used for forked Evaluation that has had a value Set different from the
+ corresponding cell in the shared master workbook.
+
+ @author Josh Micich
+
+
+ corresponding cell from master workbook
+
+
+ Represents a sheet being used for forked Evaluation. Initially, objects of this class contain
+ only the cells from the master workbook. By calling {@link #getOrCreateUpdatableCell(int, int)},
+ the master cell object is logically Replaced with a {@link ForkedEvaluationCell} instance, which
+ will be used in all subsequent Evaluations.
+
+ @author Josh Micich
+
+
+ Only cells which have been split are Put in this map. (This has been done to conserve memory).
+
+
+ Represents a workbook being used for forked Evaluation. Most operations are delegated to the
+ shared master workbook, except those that potentially involve cell values that may have been
+ updated After a call to {@link #getOrCreateUpdatableCell(String, int, int)}.
+
+
+ An alternative workbook Evaluator that saves memory in situations where a single workbook is
+ concurrently and independently Evaluated many times. With standard formula Evaluation, around
+ 90% of memory consumption is due to loading of the {@link HSSFWorkbook} or {@link NPOI.xssf.usermodel.XSSFWorkbook}.
+ This class enables a 'master workbook' to be loaded just once and shared between many Evaluation
+ clients. Each Evaluation client Creates its own {@link ForkedEvaluator} and can Set cell values
+ that will be used for local Evaluations (and don't disturb Evaluations on other Evaluators).
+
+ @author Josh Micich
+
+
+ @param udfFinder pass null for default (AnalysisToolPak only)
+
+
+ Sets the specified cell to the supplied value
+ @param sheetName the name of the sheet Containing the cell
+ @param rowIndex zero based
+ @param columnIndex zero based
+
+
+ Copies the values of all updated cells (modified by calls to {@link
+ #updateCell(String, int, int, ValueEval)}) to the supplied workbook.
+ Typically, the supplied workbook is a writable copy of the 'master workbook',
+ but at the very least it must contain sheets with the same names.
+
+
+ If cell Contains a formula, the formula is Evaluated and returned,
+ else the CellValue simply copies the appropriate cell value from
+ the cell and also its cell type. This method should be preferred over
+ EvaluateInCell() when the call should not modify the contents of the
+ original cell.
+
+ @param sheetName the name of the sheet Containing the cell
+ @param rowIndex zero based
+ @param columnIndex zero based
+ @return null if the supplied cell is null or blank
+
+
+ Coordinates several formula Evaluators together so that formulas that involve external
+ references can be Evaluated.
+ @param workbookNames the simple file names used to identify the workbooks in formulas
+ with external links (for example "MyData.xls" as used in a formula "[MyData.xls]Sheet1!A1")
+ @param Evaluators all Evaluators for the full Set of workbooks required by the formulas.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Some function IDs that require special treatment
+
+
+ 1
+
+
+ 78
+
+
+ 100
+
+
+ 148
+
+
+ 255
+
+
+ @see https://www.openoffice.org/sc/excelfileformat.pdf
+
+
+ Register a new function in runtime.
+
+ @param name the function name
+ @param func the functoin to register
+ @throws ArgumentException if the function is unknown or already registered.
+ @since 3.8 beta6
+
+
+ Returns a collection of function names implemented by POI.
+
+ @return an array of supported functions
+ @since 3.8 beta6
+
+
+ Returns an array of function names NOT implemented by POI.
+
+ @return an array of not supported functions
+ @since 3.8 beta6
+
+
+ @author Josh Micich
+
+
+ Creates a NameEval representing a function name
+
+
+ @author Josh Micich
+
+
+ @return simple rectangular {@link AreaEval} which represents the intersection of areas
+ aeA and aeB. If the two areas do not intersect, the result is null.
+
+
+ An exception thrown by implementors of {@link FormulaEvaluator} when
+ attempting to evaluate a formula which requires a function that POI
+ does not (yet) support.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Provides functionality for evaluating arguments to functions and operators.
+
+ @author Josh Micich
+
+
+ Retrieves a single value from a variety of different argument types according to standard
+ Excel rules. Does not perform any type conversion.
+ @param arg the Evaluated argument as passed to the function or operator.
+ @param srcCellRow used when arg is a single column AreaRef
+ @param srcCellCol used when arg is a single row AreaRef
+ @return a NumberEval, StringEval, BoolEval or BlankEval.
+ Never null or ErrorEval.
+ @throws EvaluationException(#VALUE!) if srcCellRow or srcCellCol do not properly index into
+ an AreaEval. If the actual value retrieved is an ErrorEval, a corresponding
+ EvaluationException is thrown.
+
+
+ Implements (some perhaps not well known) Excel functionality to select a single cell from an
+ area depending on the coordinates of the calling cell. Here is an example demonstrating
+ both selection from a single row area and a single column area in the same formula.
+
+
+ | | A | B | C | D |
+ | 1 | 15 | 20 | 25 | |
+ | 2 | | | | 200 |
+ | 3 | | | | 300 |
+ | 3 | | | | 400 |
+
+
+ If the formula "=1000+A1:B1+D2:D3" is put into the 9 cells from A2 to C4, the spReadsheet
+ will look like this:
+
+
+ | | A | B | C | D |
+ | 1 | 15 | 20 | 25 | |
+ | 2 | 1215 | 1220 | #VALUE! | 200 |
+ | 3 | 1315 | 1320 | #VALUE! | 300 |
+ | 4 | #VALUE! | #VALUE! | #VALUE! | 400 |
+
+
+ Note that the row area (A1:B1) does not include column C and the column area (D2:D3) does
+ not include row 4, so the values in C1(=25) and D4(=400) are not accessible to the formula
+ as written, but in the 4 cells A2:B3, the row and column selection works ok.
+
+ The same concept is extended to references across sheets, such that even multi-row,
+ multi-column areas can be useful.
+
+ Of course with carefully (or carelessly) chosen parameters, cyclic references can occur and
+ hence this method can throw a 'circular reference' EvaluationException. Note that
+ this method does not attempt to detect cycles. Every cell in the specified Area ae
+ has already been Evaluated prior to this method call. Any cell (or cells) part of
+ ae that would incur a cyclic reference error if selected by this method, will
+ already have the value ErrorEval.CIRCULAR_REF_ERROR upon entry to this method. It
+ is assumed logic exists elsewhere to produce this behaviour.
+
+ @return whatever the selected cell's Evaluated value Is. Never null. Never
+ ErrorEval.
+ @if there is a problem with indexing into the area, or if the
+ Evaluated cell has an error.
+
+
+ @return possibly ErrorEval, and null
+
+
+ Applies some conversion rules if the supplied value is not already an integer.
+ Value is first Coerced to a double ( See CoerceValueTodouble() ).
+
+ Excel typically Converts doubles to integers by truncating toward negative infinity.
+ The equivalent java code Is:
+ return (int)Math.floor(d);
+ not:
+ return (int)d; // wrong - rounds toward zero
+
+
+
+ Applies some conversion rules if the supplied value is not already a number.
+ Note - BlankEval is not supported and must be handled by the caller.
+ @param ev must be a NumberEval, StringEval or BoolEval
+ @return actual, Parsed or interpreted double value (respectively).
+ @throws EvaluationException(#VALUE!) only if a StringEval is supplied and cannot be Parsed
+ as a double (See Parsedouble() for allowable formats).
+ @throws Exception if the supplied parameter is not NumberEval,
+ StringEval or BoolEval
+
+
+ Converts a string to a double using standard rules that Excel would use.
+ Tolerates currency prefixes, commas, leading and trailing spaces.
+
+ Some examples:
+ " 123 " -> 123.0
+ ".123" -> 0.123
+ These not supported yet:
+ " $ 1,000.00 " -> 1000.0
+ "$1.25E4" -> 12500.0
+ "5**2" -> 500
+ "250%" -> 2.5
+
+ @param text
+ @return null if the specified text cannot be Parsed as a number
+
+
+ @param ve must be a NumberEval, StringEval, BoolEval, or BlankEval
+ @return the Converted string value. never null
+
+
+ @return null to represent blank values
+ @throws EvaluationException if ve is an ErrorEval, or if a string value cannot be converted
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation of Excel formula token '%'.
+ @author Josh Micich
+
+
+
+ @author Josh Micich
+
+
+ @author Amol S Deshmukh < amolweb at ya hoo dot com >
+
+ RefEval is the base interface for Ref2D and Ref3DEval. Basically a RefEval
+ impl should contain reference to the original ReferencePtg or Ref3DPtg as
+ well as the "value" resulting from the evaluation of the cell
+ reference. Thus if the HSSFCell has type CELL_TYPE_NUMERIC, the contained
+ value object should be of type NumberEval; if cell type is CELL_TYPE_STRING,
+ contained value object should be of type StringEval
+
+
+ The (possibly Evaluated) ValueEval contained
+ in this RefEval. eg. if cell A1 Contains "test"
+ then in a formula referring to cell A1
+ the RefEval representing
+ A1 will return as the InnerValueEval the
+ object of concrete type StringEval
+
+
+ returns the zero based column index.
+
+
+ returns the zero based row index.
+
+
+ returns the number of sheets this applies to
+
+
+ Creates an {@link AreaEval} offset by a relative amount from this RefEval
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo Dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @return never null, possibly empty string.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ This is a documentation of the observed behaviour of
+ the '+' operator in Excel:
+
+ - 1+TRUE = 2
+ - 1+FALSE = 1
+ - 1+"true" = #VALUE!
+ - 1+"1" = 2
+ - 1+A1 = #VALUE if A1 Contains "1"
+ - 1+A1 = 2 if A1 Contains ="1"
+ - 1+A1 = 2 if A1 Contains TRUE or =TRUE
+ - 1+A1 = #VALUE! if A1 Contains "TRUE" or ="TRUE"
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Should be implemented by any {@link Ptg} subclass that needs Has an extern sheet index
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ Encapsulates an encoded formula token array.
+
+ @author Josh Micich
+
+
+ immutable
+
+
+ Convenience method for {@link #read(int, LittleEndianInput, int)}
+
+
+ When there are no array constants present, encodedTokenLen==totalEncodedLen
+ @param encodedTokenLen number of bytes in the stream taken by the plain formula tokens
+ @param totalEncodedLen the total number of bytes in the formula (includes trailing encoding
+ for array constants, but does not include 2 bytes for initial ushort encodedTokenLen field.
+ @return A new formula object as read from the stream. Possibly empty, never null.
+
+
+ Writes The formula encoding is includes:
+
+ - ushort tokenDataLen
+ - tokenData
+ - arrayConstantData (if present)
+
+
+
+ @return total formula encoding length. The formula encoding includes:
+
+ - ushort tokenDataLen
+ - tokenData
+ - arrayConstantData (optional)
+
+ Note - this value is different to tokenDataLength
+
+
+ This method is often used when the formula length does not appear immediately before
+ the encoded token data.
+
+ @return the encoded length of the plain formula tokens. This does not include
+ the leading ushort field, nor any trailing array constant data.
+
+
+ Creates a {@link Formula} object from a supplied {@link Ptg} array.
+ Handles nulls OK.
+ @param ptgs may be null
+ @return Never null (Possibly empty if the supplied ptgs is null)
+
+
+ Gets the {@link Ptg} array from the supplied {@link Formula}.
+ Handles nulls OK.
+
+ @param formula may be null
+ @return possibly null (if the supplied formula is null)
+
+
+ Gets the locator for the corresponding {@link SharedFormulaRecord}, {@link ArrayRecord} or
+ {@link TableRecord} if this formula belongs to such a grouping. The {@link CellReference}
+ returned by this method will match the top left corner of the range of that grouping.
+ The return value is usually not the same as the location of the cell containing this formula.
+
+ @return the firstRow & firstColumn of an array formula or shared formula that this formula
+ belongs to. null if this formula is not part of an array or shared formula.
+
+
+
+ @author Josh Micich
+
+
+ @return null if not found
+
+
+ Stores the cached result of a formula evaluation, along with the Set of sensititive input cells
+
+
+ Cells 'used' in the current evaluation of the formula corresponding To this cache entry
+
+ If any of the following cells Change, this cache entry needs To be Cleared
+
+
+ A custom implementation of {@link java.util.HashSet} in order To reduce memory consumption.
+
+ Profiling tests (Oct 2008) have shown that each element {@link FormulaCellCacheEntry} takes
+ around 32 bytes To store in a HashSet, but around 6 bytes To store here. For Spreadsheets with
+ thousands of formula cells with multiple interdependencies, the savings can be very significant.
+
+ @author Josh Micich
+
+
+
+ Specific exception thrown when a supplied formula does not Parse properly.
+ Primarily used by test cases when testing for specific parsing exceptions.
+
+
+
+
+ This class was given package scope until it would become Clear that it is useful to general client code.
+
+
+
+
+ Lookahead Character.
+ Gets value '\0' when the input string is exhausted
+
+
+ Tracks whether the run of whitespace preceeding "look" could be an
+ intersection operator. See GetChar.
+
+
+ Create the formula Parser, with the string that is To be
+ Parsed against the supplied workbook.
+ A later call the Parse() method To return ptg list in
+ rpn order, then call the GetRPNPtg() To retrive the
+ Parse results.
+ This class is recommended only for single threaded use.
+
+ If you only have a usermodel.HSSFWorkbook, and not a
+ model.Workbook, then use the convenience method on
+ usermodel.HSSFFormulaEvaluator
+
+
+ Parse a formula into a array of tokens
+ Side effect: creates name (Workbook.createName) if formula contains unrecognized names (names are likely UDFs)
+
+ @param formula the formula to parse
+ @param workbook the parent workbook
+ @param formulaType the type of the formula, see {@link FormulaType}
+ @param sheetIndex the 0-based index of the sheet this formula belongs to.
+ @param rowIndex - the related cell's row index in 0-based form (-1 if the formula is not cell related)
+ used to handle structured references that have the "#This Row" quantifier.
+ The sheet index is required to resolve sheet-level names. -1 means that
+ the scope of the name will be ignored and the parser will match names only by name
+
+ @return array of parsed tokens
+ @throws FormulaParseException if the formula is unparsable
+
+
+ Parse a structured reference. Converts the structured
+ reference to the area that represent it.
+
+ @param tableText - The structured reference text
+ @param workbook - the parent workbook
+ @param rowIndex - the 0-based cell's row index ( used to handle "#This Row" quantifiers )
+ @return the area that being represented by the structured reference.
+
+
+ Read New Character From Input Stream
+
+
+ Report What Was Expected
+
+
+ Recognize an Alpha Character
+
+
+ Recognize a Decimal Digit
+
+
+ Recognize an Alphanumeric
+
+
+ Recognize White Space
+
+
+ Skip Over Leading White Space
+
+
+ Consumes the next input character if it is equal To the one specified otherwise throws an
+ unchecked exception. This method does not consume whitespace (before or after the
+ matched character).
+
+
+ Get a Number
+
+
+ From OOO doc: "Whenever one operand of the reference subexpression is a function,
+ a defined name, a 3D reference, or an external reference (and no error occurs),
+ a tMemFunc token is used"
+
+
+
+
+ @return true if the specified character may be used in a defined name
+
+
+ @param currentParsePosition used to format a potential error message
+
+
+ @return false if sub-expression represented the specified ParseNode definitely
+ cannot appear on either side of the range (':') operator
+
+
+ Parses area refs (things which could be the operand of ':') and simple factors
+ Examples
+
+ A$1
+ $A$1 : $B1
+ A1 ....... C2
+ Sheet1 !$A1
+ a..b!A1
+ 'my sheet'!A1
+ .my.sheet!A1
+ 'my sheet':'my alt sheet'!A1
+ .my.sheet1:.my.sheet2!$B$2
+ my.named..range.
+ 'my sheet'!my.named.range
+ .my.sheet!my.named.range
+ foo.bar(123.456, "abc")
+ 123.456
+ "abc"
+ true
+ [Foo.xls]!$A$1
+ [Foo.xls]'my sheet'!$A$1
+ [Foo.xls]!my.named.range
+
+
+
+
+ Parses a structured reference, returns it as area reference.
+ Examples:
+
+ Table1[col]
+ Table1[[#Totals],[col]]
+ Table1[#Totals]
+ Table1[#All]
+ Table1[#Data]
+ Table1[#Headers]
+ Table1[#Totals]
+ Table1[#This Row]
+ Table1[[#All],[col]]
+ Table1[[#Headers],[col]]
+ Table1[[#Totals],[col]]
+ Table1[[#All],[col1]:[col2]]
+ Table1[[#Data],[col1]:[col2]]
+ Table1[[#Headers],[col1]:[col2]]
+ Table1[[#Totals],[col1]:[col2]]
+ Table1[[#Headers],[#Data],[col2]]
+ Table1[[#This Row], [col1]]
+ Table1[ [col1]:[col2] ]
+
+ @param tableName
+ @return
+
+
+ Tries to parse the next as column - can contain whitespace
+ Caller should save pointer.
+ @return
+
+
+ Tries to parse the next as special quantifier
+ Caller should save pointer.
+ @return
+
+
+ Parses simple factors that are not primitive ranges or range components
+ i.e. '!', ':'(and equiv '...') do not appear
+ Examples
+
+ my.named...range.
+ foo.bar(123.456, "abc")
+ 123.456
+ "abc"
+ true
+
+
+
+
+ @param sheetIden may be null
+ @param part1
+ @param part2 may be null
+
+
+ Parses out a potential LHS or RHS of a ':' intended to produce a plain AreaRef. Normally these are
+ proper cell references but they could also be row or column refs like "$AC" or "10"
+ @return null (and leaves {@link #_pointer} unchanged if a proper range part does not parse out
+
+
+
+ "A1", "B3" -> "A1:B3"
+ "sheet1!A1", "B3" -> "sheet1!A1:B3"
+
+ @return null if the range expression cannot / shouldn't be reduced.
+
+
+ A1, $A1, A$1, $A$1, A, 1
+
+
+ @return true if the two range parts can be combined in an
+ {@link AreaPtg} ( Note - the explicit range operator (:) may still be valid
+ when this method returns false )
+
+
+ Note - caller should reset {@link #_pointer} upon null result
+ @return The sheet name as an identifier null if '!' is not found in the right place
+
+
+ If we have something that looks like [book]Sheet1: or
+ Sheet1, see if it's actually a range eg Sheet1:Sheet2!
+
+
+ very similar to {@link SheetNameFormatter#isSpecialChar(char)}
+
+
+ @return true if the specified name is a valid cell reference
+
+
+ Note - Excel Function names are 'case aware but not case sensitive'. This method may end
+ up creating a defined name record in the workbook if the specified name is not an internal
+ Excel Function, and Has not been encountered before.
+
+ Side effect: creates workbook name if name is not recognized (name is probably a UDF)
+
+ @param name case preserved Function name (as it was entered/appeared in the formula).
+
+
+ Adds a name (named range or user defined function) to underlying workbook's names table
+ @param functionName
+
+
+ Generates the variable Function ptg for the formula.
+
+ For IF Formulas, Additional PTGs are Added To the Tokens
+ @param name a {@link NamePtg} or {@link NameXPtg} or null
+ @return Ptg a null is returned if we're in an IF formula, it needs extreme manipulation and is handled in this Function
+
+
+ Get arguments To a Function
+
+
+ Parse and Translate a Math Factor
+
+
+ factors (without ^ or % )
+
+
+ Get a PTG for an integer from its string representation.
+ return Int or Number Ptg based on size of input
+
+
+ Parse and Translate a Math Term
+
+
+ Parse and Translate an Expression
+
+
+ API call To execute the parsing of the formula
+
+
+
+ Abstracts a workbook for the purpose of formula parsing.
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+
+ named range name matching is case insensitive
+
+ The name.
+ Index of the sheet.
+
+
+
+
+ Return the underlying workbook
+
+
+
+
+
+ XSSF Only - gets a table that exists in the worksheet
+
+
+
+
+
+
+ Return an external name (named range, function, user-defined function) Ptg
+
+ The name.
+
+
+
+
+
+ Produce the appropriate Ptg for a 3d cell reference
+
+
+
+
+
+
+
+ Produce the appropriate Ptg for a 3d area reference
+
+
+
+
+
+
+
+ Gets the externSheet index for a sheet from this workbook
+
+ Name of the sheet.
+
+
+
+
+ Gets the externSheet index for a sheet from an external workbook
+
+ Name of the workbook, e.g. "BudGet.xls"
+ a name of a sheet in that workbook
+
+
+
+
+ Returns an enum holding spReadhseet properties specific to an Excel version (
+ max column and row numbers, max arguments to a function, etc.)
+
+
+
+
+ Common logic for rendering formulas.
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ Static method To convert an array of {@link Ptg}s in RPN order
+ To a human readable string format in infix mode.
+ @param book used for defined names and 3D references
+ @param ptgs must not be null
+ @return a human readable String
+
+
+ Abstracts a workbook for the purpose of converting formula To text.
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ @return null if externSheetIndex refers To a sheet inside the current workbook
+
+
+ @return the name of the (first) sheet referred to by the given external sheet index
+
+
+ @return the name of the (last) sheet referred to by the given external sheet index
+
+
+ @author Josh Micich
+
+
+
+ Extern sheet index of sheet where moving is occurring
+
+
+
+
+ Sheet name of the sheet where moving is occurring, used for
+ updating XSSF style 3D references on row shifts.
+
+
+
+
+ Create an instance for Shifting row. For example, this will be
+ called on
+
+
+
+
+
+
+
+
+
+
+
+
+ Create an instance for shifting sheets. For example, this will be
+ called on
+
+
+
+
+
+
+
+
+ if necessary, will get modified by this method
+ the extern sheet index of the
+ sheet that contains the formula being adjusted
+ true if a change was made to the formula tokens
+
+
+
+
+
+
+
+ in-place modified ptg (if row move would cause Ptg to
+ change), deleted ref ptg (if row move causes an error),
+ or null (if no Ptg change is needed)
+
+
+
+
+
+
+
+ in-place modified ptg (if column move would cause Ptg to
+ change), deleted ref ptg (if column move causes an error),
+ or null (if no Ptg change is needed)
+
+
+
+ Call this on any ptg reference contained in a row of cells that was
+ copied. If the ptg reference is relative, the references will be
+ shifted by the distance that the rows were copied. In the future
+ similar functions could be written due to column copying or
+ individual cell copying. Just make sure to only call
+ adjustPtgDueToRowCopy on formula cells that are copied (unless row
+ shifting, where references outside of the shifted region need to be
+ updated to reflect the shift, a copy is self-contained).
+
+ the ptg to shift
+ deleted ref ptg, in-place modified ptg, or null
+ If Ptg would be shifted off the first or last row of a sheet,
+ return deleted ref
+ If Ptg needs to be changed, modifies Ptg in-place
+ If Ptg doesn't need to be changed, returns null
+
+
+
+
+ Call this on any ptg reference contained in a column of cells that was
+ copied. If the ptg reference is relative, the references will be
+ shifted by the distance that the columns were copied. Make sure to only call
+ AdjustPtgDueToColumnCopy on formula cells that are copied (unless column
+ shifting, where references outside of the shifted region need to be
+ updated to reflect the shift, a copy is self-contained).
+
+ the ptg to shift
+ deleted ref ptg, in-place modified ptg, or null
+ If Ptg would be shifted off the first or last row of a sheet,
+ return deleted ref
+ If Ptg needs to be changed, modifies Ptg in-place
+ If Ptg doesn't need to be changed, returns null
+
+
+
+
+ Modifies rptg in-place and return a reference to rptg if the cell
+ reference would move due to a row copy operation
+
+
+ null or {@link #RefErrorPtg} if no change was
+ made
+
+
+
+ Modifies rptg in-place and return a reference to rptg if the cell
+ reference would move due to a column copy operation
+
+
+ null or {@link #RefErrorPtg} if no change was
+ made
+
+
+
+ Modifies aptg in-place and return a reference to aptg if the first
+ or last row of of the Area reference would move due to a row
+ copy operation
+
+
+ null or if no change
+ was made
+
+
+
+ Modifies aptg in-place and return a reference to aptg if the first
+ or last column of of the Area reference would move due to a column
+ copy operation
+
+
+ null or if no change
+ was made
+
+
+
+ Enumeration of various formula types. For internal use only
+
+
+
+ Optimisation - compacts many blank cell references used by a single formula.
+
+ @author Josh Micich
+
+
+ Creates a text reference as text, given specified row and column numbers.
+
+ @author Aniket Banerjee (banerjee@google.com)
+
+
+ ignore nested subtotals.
+
+
+ Returns the k-th percentile of values in a range. You can use this function to establish a threshold of
+ acceptance. For example, you can decide to examine candidates who score above the 90th percentile.
+
+ PERCENTILE(array,k)
+ Array is the array or range of data that defines relative standing.
+ K is the percentile value in the range 0..1, inclusive.
+
+ Remarks
+
+ - if array is empty or Contains more than 8,191 data points, PERCENTILE returns the #NUM! error value.
+ - If k is nonnumeric, PERCENTILE returns the #VALUE! error value.
+ - If k is < 0 or if k > 1, PERCENTILE returns the #NUM! error value.
+ - If k is not a multiple of 1/(n - 1), PERCENTILE interpolates to determine the value at the k-th percentile.
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+
+ - Excel uses the error code #NUM! instead of IEEE NaN, so when numeric functions evaluate to Double#NaN be sure to translate the result to ErrorEval#NUM_ERROR.
+
+ the evaluated function arguments. Empty values are represented with BlankEval or MissingArgEval, never null
+ row index of the cell containing the formula under evaluation
+ column index of the cell containing the formula under evaluation
+ The evaluated result, possibly an ErrorEval, never null
+
+
+ Implementation for the Excel function SUMIF
+
+ Syntax :
+ AVERAGEIF ( range, criteria, avg_range )
+
+ | range | The range over which criteria is applied. Also used for included values when the third parameter is not present |
+ | criteria | The value or expression used to filter rows from range |
+ | avg_range | Locates the top-left corner of the corresponding range of addends - values to be included (after being selected by the criteria) |
+
+
+ @author Josh Micich
+
+
+ Implementation for the Excel function AverageIfs
+
+ Syntax :
+ AverageIfs ( average_range, criteria_range1, criteria1,
+ [criteria_range2, criteria2], ...)
+
+ - average_range Required. One or more cells to get the average, including numbers or names, ranges,
+ or cell references that contain numbers. Blank and text values are ignored.
+ - criteria1_range Required. The first range in which
+ to evaluate the associated criteria.
+ - criteria1 Required. The criteria in the form of a number, expression,
+ cell reference, or text that define which cells in the criteria_range1
+ argument will be counted
+ - criteria_range2, criteria2, ... Optional. Additional ranges and their associated criteria.
+ Up to 127 range/criteria pairs are allowed.
+
+
+
+ @author Yegor Kozlov
+
+
+ Verify that each criteriaRanges argument contains the same number of rows and columns
+ as the avgRange argument
+
+ @throws EvaluationException if
+
+
+
+ @param ranges criteria ranges, each range must be of the same dimensions as aeAvg
+ @param predicates array of predicates, a predicate for each value in ranges
+ @param aeAvg the range to calculate
+
+ @return the computed value
+
+
+ Verify that each criteriaRanges argument contains the same number of rows and columns
+ including the sumRange argument if present
+ @param sumRange if used, it must match the shape of the criteriaRanges
+ @param criteriaRanges to check
+ @throws EvaluationException if the ranges do not match.
+
+
+ Verify that each criteria predicate is valid, i.e. not an error
+ @param criteria to check
+
+ @throws EvaluationException if there are criteria which resulted in Errors.
+
+
+ @param sumRange the range to sum, if used (uses 1 for each match if not present)
+ @param ranges criteria ranges
+ @param predicates array of predicates, a predicate for each value in ranges
+ @return the computed value
+ @throws EvaluationException if there is an issue with eval
+
+
+ Some utils for Converting from and to any base
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation for Excel Bin2Dec() function.
+
+ Syntax:
Bin2Dec (number)
+
+ Converts a binary number to decimal.
+
+ Number is the binary number you want to convert. Number cannot contain more than 10 characters (10 bits).
+ The most significant bit of number is the sign bit. The remaining 9 bits are magnitude bits.
+ Negative numbers are represented using two's-complement notation.
+
+ Remark
+ If number is not a valid binary number, or if number contains more than 10 characters (10 bits),
+ BIN2DEC returns the #NUM! error value.
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Here are the general rules concerning Boolean functions:
+
+ - Blanks are ignored (not either true or false)
+ - Strings are ignored if part of an area ref or cell ref, otherwise they must be 'true' or 'false'
+ - Numbers: 0 is false. Any other number is TRUE
+ - Areas: *all* cells in area are evaluated according to the above rules
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation of Excel functions Date parsing functions:
+ Date - DAY, MONTH and YEAR
+ Time - HOUR, MINUTE and SECOND
+
+ @author Others (not mentioned in code)
+ @author Thies Wellpott
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Josh Micich
+
+
+ Implementation for Excel CODE () function.
+
+ Syntax:
CODE (text )
+
+ Returns a numeric code for the first character in a text string. The returned code corresponds to the character set used by your computer.
+
+ text The text for which you want the code of the first character.
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation for Excel COLUMNS function.
+
+ @author Josh Micich
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation for Excel COMPLEX () function.
+
+ Syntax:
COMPLEX (real_num,i_num,suffix )
+
+ Converts real and imaginary coefficients into a complex number of the form x + yi or x + yj.
+
+
+ All complex number functions accept "i" and "j" for suffix, but neither "I" nor "J".
+ Using uppercase results in the #VALUE! error value. All functions that accept two
+ or more complex numbers require that all suffixes match.
+
+ real_num The real coefficient of the complex number.
+ If this argument is nonnumeric, this function returns the #VALUE! error value.
+
+
+ i_num The imaginary coefficient of the complex number.
+ If this argument is nonnumeric, this function returns the #VALUE! error value.
+
+
+ suffix The suffix for the imaginary component of the complex number.
+
+ - If omitted, suffix is assumed to be "i".
+ - If suffix is neither "i" nor "j", COMPLEX returns the #VALUE! error value.
+
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Counts the number of cells that contain numeric data within
+ the list of arguments.
+
+ Excel Syntax
+ COUNT(value1,value2,...)
+ Value1, value2, ... are 1 to 30 arguments representing the values or ranges to be Counted.
+
+ TODO: Check this properly Matches excel on edge cases
+ like formula cells, error cells etc
+
+
+ Create an instance of Count to use in {@link Subtotal}
+
+ If there are other subtotals within argument refs (or nested subtotals),
+ these nested subtotals are ignored to avoid double counting.
+
+
+ @see Subtotal
+
+
+ Counts the number of cells that contain data within the list of arguments.
+
+ Excel Syntax
+ COUNTA(value1,value2,...)
+ Value1, value2, ... are 1 to 30 arguments representing the values or ranges to be Counted.
+
+ @author Josh Micich
+
+
+ don't count cells that are subtotals
+
+
+ Implementation for the function COUNTBLANK
+
+ Syntax: COUNTBLANK ( range )
+
+ | range | is the range of cells to count blanks |
+
+
+
+ @author Mads Mohr Christensen
+
+
+ Implementation for the function COUNTIF
+
+ Syntax: COUNTIF ( range, criteria )
+
+ | range | is the range of cells to be Counted based on the criteria |
+ | criteria | is used to determine which cells to Count |
+
+
+
+ @author Josh Micich
+
+
+ @return number of characters used to represent this operator
+
+
+
+ Translates Excel countif wildcard strings into .NET regex strings
+
+ Excel wildcard expression
+ return null if the specified value contains no special wildcard characters.
+
+
+ @return the number of evaluated cells in the range that match the specified criteria
+
+
+
+ @return the de-referenced criteria arg (possibly {@link ErrorEval})
+
+
+ When the second argument is a string, many things are possible
+
+
+ Creates a criteria predicate object for the supplied criteria arg
+ @return null if the arg evaluates to blank.
+
+
+ bool literals ('TRUE', 'FALSE') treated similarly but NOT same as numbers.
+
+
+ Implementation for the function COUNTIFS
+
+ Syntax: COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2])
+
+
+
+ Common interface for the matching criteria.
+
+
+ Common logic for COUNT, COUNTA and COUNTIF
+
+ @author Josh Micich
+
+
+ @return the number of evaluated cells in the range that match the specified criteria
+
+
+ @return the number of evaluated cells in the range that match the specified criteria
+
+
+ @author Pavel Krupets (pkrupets at palmtreebusiness dot com)
+
+
+ * Note - works with Java Calendar months, not Excel months
+ * Java Calendar month = Excel month + 1
+
+
+ Calculates the number of days between two dates based on a 360-day year
+ (twelve 30-day months), which is used in some accounting calculations. Use
+ this function to help compute payments if your accounting system is based on
+ twelve 30-day months.
+
+ {@code DAYS360(start_date,end_date,[method])}
+
+
+ - Start_date, end_date (required):
+ The two dates between which you want to know the number of days.
+ If start_date occurs after end_date, the DAYS360 function returns a negative number.
+
+ - Method (optional):
+ A logical value that specifies whether to use the U.S. or European method in the calculation
+
+ - Method set to false or omitted:
+ the DAYS360 function uses the U.S. (NASD) method. If the starting date is the 31st of a month,
+ it becomes equal to the 30th of the same month. If the ending date is the 31st of a month and
+ the starting date is earlier than the 30th of a month, the ending date becomes equal to the
+ 1st of the next month, otherwise the ending date becomes equal to the 30th of the same month.
+ The month February and leap years are handled in the following way:
+ On a non-leap year the function {@code =DAYS360("2/28/93", "3/1/93", FALSE)} returns 1 day
+ because the DAYS360 function ignores the extra days added to February.
+ On a leap year the function {@code =DAYS360("2/29/96","3/1/96", FALSE)} returns 1 day for
+ the same reason.
+
+ - Method Set to true:
+ When you set the method parameter to TRUE, the DAYS360 function uses the European method.
+ Starting dates or ending dates that occur on the 31st of a month become equal to the 30th of
+ the same month. The month February and leap years are handled in the following way:
+ On a non-leap year the function {@code =DAYS360("2/28/93", "3/1/93", TRUE)} returns
+ 3 days because the DAYS360 function is counting the extra days added to February to give
+ February 30 days.
+ On a leap year the function {@code =DAYS360("2/29/96", "3/1/96", TRUE)} returns
+ 2 days for the same reason.
+
+
+ @see DAYS360 Function Produces Different Values Depending on the Version of Excel
+
+
+ Implementation for Excel Bin2Dec() function.
+
+ Syntax:
Bin2Dec (number,[places] )
+
+ Converts a decimal number to binary.
+
+ The DEC2BIN function syntax has the following arguments:
+
+ - Number Required. The decimal integer you want to Convert. If number is negative, valid place values are ignored and DEC2BIN returns a 10-character (10-bit) binary number in which the most significant bit is the sign bit. The remaining 9 bits are magnitude bits. Negative numbers are represented using two's-complement notation.
+ - Places Optional. The number of characters to use. If places is omitted, DEC2BIN uses the minimum number of characters necessary. Places is useful for pAdding the return value with leading 0s (zeros).
+
+
+ Remarks
+
+ - If number < -512 or if number > 511, DEC2BIN returns the #NUM! error value.
+ - If number is nonnumeric, DEC2BIN returns the #VALUE! error value.
+ - If DEC2BIN requires more than places characters, it returns the #NUM! error value.
+ - If places is not an integer, it is tRuncated.
+ - If places is nonnumeric, DEC2BIN returns the #VALUE! error value.
+ - If places is zero or negative, DEC2BIN returns the #NUM! error value.
+
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation for Excel DELTA() function.
+
+ Syntax:
DEC2HEX (number,places )
+
+ Converts a decimal number to hexadecimal.
+
+ The decimal integer you want to Convert. If number is negative, places is ignored
+ and this function returns a 10-character (40-bit) hexadecimal number in which the
+ most significant bit is the sign bit. The remaining 39 bits are magnitude bits.
+ Negative numbers are represented using two's-complement notation.
+
+
+ - If number < -549,755,813,888 or if number > 549,755,813,887, this function returns the #NUM! error value.
+ - If number is nonnumeric, this function returns the #VALUE! error value.
+
+
+ places
+
+ The number of characters to use. The places argument is useful for pAdding the
+ return value with leading 0s (zeros).
+
+
+ - If this argument is omitted, this function uses the minimum number of characters necessary.
+ - If this function requires more than places characters, it returns the #NUM! error value.
+ - If this argument is nonnumeric, this function returns the #VALUE! error value.
+ - If this argument is negative, this function returns the #NUM! error value.
+ - If this argument Contains a decimal value, this function ignores the numbers to the right side of the decimal point.
+
+
+ @author cedric dot walter @ gmail dot com
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation for Excel DELTA() function.
+
+ Syntax:
DELTA (number1,number2 )
+
+ Tests whether two values are Equal. Returns 1 if number1 = number2; returns 0 otherwise.
+ Use this function to filter a Set of values. For example, by summing several DELTA functions
+ you calculate the count of equal pairs. This function is also known as the Kronecker Delta function.
+
+
+ - If number1 is nonnumeric, DELTA returns the #VALUE! error value.
+ - If number2 is nonnumeric, DELTA returns the #VALUE! error value.
+
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation of the DGet function:
+ Finds the value of a column in an area with given conditions.
+
+ TODO:
+ - wildcards ? and * in string conditions
+ - functions as conditions
+
+
+ Implementation of the DMin function:
+ Finds the minimum value of a column in an area with given conditions.
+
+ TODO:
+ - wildcards ? and * in string conditions
+ - functions as conditions
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ This class performs a D* calculation. It takes an {@link IDStarAlgorithm} object and
+ uses it for calculating the result value. Iterating a database and Checking the
+ entries against the Set of conditions is done here.
+
+
+
+
+ @param nameValueEval Must not be a RefEval or AreaEval. Thus make sure resolveReference() is called on the value first!
+ @param db
+ @return
+ @throws EvaluationException
+
+
+ For a given database returns the column number for a column heading.
+
+ @param db Database.
+ @param name Column heading.
+ @return Corresponding column number.
+ @If it's not possible to turn all headings into strings.
+
+
+ Checks a row in a database against a condition database.
+
+ @param db Database.
+ @param row The row in the database to Check.
+ @param cdb The condition database to use for Checking.
+ @return Whether the row matches the conditions.
+ @If references could not be Resolved or comparison
+ operators and operands didn't match.
+
+
+ Test a value against a simple (< > <= >= = starts-with) condition string.
+
+ @param value The value to Check.
+ @param condition The condition to check for.
+ @return Whether the condition holds.
+ @If comparison operator and operands don't match.
+
+
+ Test whether a value matches a numeric condition.
+ @param valueEval Value to Check.
+ @param op Comparator to use.
+ @param condition Value to check against.
+ @return whether the condition holds.
+ @If it's impossible to turn the condition into a number.
+
+
+ Resolve a ValueEval that's in an AreaEval.
+
+ @param db AreaEval from which the cell to resolve is retrieved.
+ @param dbRow Relative row in the AreaEval.
+ @param dbCol Relative column in the AreaEval.
+ @return A ValueEval that is a NumberEval, StringEval, BoolEval, BlankEval or ErrorEval.
+
+
+ Implementation of Excel 'Analysis ToolPak' function EDATE()
+
+ Adds a specified number of months to the specified date.
+
+ Syntax
+ EDATE(date, number)
+
+
+
+ @author Tomas Herceg
+
+
+ Implementation for the Excel EOMONTH() function.
+
+ EOMONTH() returns the date of the last day of a month..
+
+ Syntax:
+ EOMONTH(start_date,months)
+
+ start_date is the starting date of the calculation
+ months is the number of months to be Added to start_date,
+ to give a new date. For this new date, EOMONTH returns the date of
+ the last day of the month. months may be positive (in the future),
+ zero or negative (in the past).
+
+
+ Implementation for the ERROR.TYPE() Excel function.
+
+ Syntax:
+ ERROR.TYPE(errorValue)
+
+ Returns a number corresponding to the error type of the supplied argument.
+
+
+ | errorValue | Return Value |
+ | #NULL! | 1 |
+ | #DIV/0! | 2 |
+ | #VALUE! | 3 |
+ | #REF! | 4 |
+ | #NAME? | 5 |
+ | #NUM! | 6 |
+ | #N/A! | 7 |
+ | everything else | #N/A! |
+
+
+ Note - the results of ERROR.TYPE() are different to the constants defined in
+ ErrorConstants.
+
+
+ @author Josh Micich
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation for Excel FACTDOUBLE() function.
+
+ Syntax:
FACTDOUBLE (number)
+
+ Returns the double factorial of a number.
+
+ Number is the value for which to return the double factorial. If number is not an integer, it is truncated.
+
+ Remarks
+
+ - If number is nonnumeric, FACTDOUBLE returns the #VALUE! error value.
+ - If number is negative, FACTDOUBLE returns the #NUM! error value.
+
+ Use a cache for more speed of previously calculated factorial
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation of the financial functions pmt, fv, ppmt, ipmt.
+
+ @author Mike Argyriou micharg@gmail.com
+
+
+ Emulates Excel/Calc's PMT(interest_rate, number_payments, PV, FV, Type)
+ function, which calculates the payments for a loan or the future value of an investment
+
+ @param r
+ - periodic interest rate represented as a decimal.
+ @param nper
+ - number of total payments / periods.
+ @param pv
+ - present value -- borrowed or invested principal.
+ @param fv
+ - future value of loan or annuity.
+ @param type
+ - when payment is made: beginning of period is 1; end, 0.
+ @return double representing periodic payment amount.
+
+
+ Overloaded pmt() call omitting type, which defaults to 0.
+
+ @see #pmt(double, int, double, double, int)
+
+
+ Overloaded pmt() call omitting fv and type, which both default to 0.
+
+ @see #pmt(double, int, double, double, int)
+
+
+ Emulates Excel/Calc's IPMT(interest_rate, period, number_payments, PV,
+ FV, Type) function, which calculates the portion of the payment at a
+ given period that is the interest on previous balance.
+
+ @param r
+ - periodic interest rate represented as a decimal.
+ @param per
+ - period (payment number) to check value at.
+ @param nper
+ - number of total payments / periods.
+ @param pv
+ - present value -- borrowed or invested principal.
+ @param fv
+ - future value of loan or annuity.
+ @param type
+ - when payment is made: beginning of period is 1; end, 0.
+ @return double representing interest portion of payment.
+
+ @see #pmt(double, int, double, double, int)
+ @see #fv(double, int, double, double, int)
+
+
+ Emulates Excel/Calc's PPMT(interest_rate, period, number_payments, PV,
+ FV, Type) function, which calculates the portion of the payment at a
+ given period that will apply to principal.
+
+ @param r
+ - periodic interest rate represented as a decimal.
+ @param per
+ - period (payment number) to check value at.
+ @param nper
+ - number of total payments / periods.
+ @param pv
+ - present value -- borrowed or invested principal.
+ @param fv
+ - future value of loan or annuity.
+ @param type
+ - when payment is made: beginning of period is 1; end, 0.
+ @return double representing principal portion of payment.
+
+ @see #pmt(double, int, double, double, int)
+ @see #ipmt(double, int, int, double, double, bool)
+
+
+ Emulates Excel/Calc's FV(interest_rate, number_payments, payment, PV,
+ Type) function, which calculates future value or principal at period N.
+
+ @param r
+ - periodic interest rate represented as a decimal.
+ @param nper
+ - number of total payments / periods.
+ @param pmt
+ - periodic payment amount.
+ @param pv
+ - present value -- borrowed or invested principal.
+ @param type
+ - when payment is made: beginning of period is 1; end, 0.
+ @return double representing future principal value.
+
+
+ Overloaded fv() call omitting type, which defaults to 0.
+
+ @see #fv(double, int, double, double, int)
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ Super class for all Evals for financial function evaluation.
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+ This class Is a functon library for common fiscal functions.
+ Glossary of terms/abbreviations:
+
+
+ - FV: Future Value
+ - PV: Present Value
+ - NPV: Net Present Value
+ - PMT: (Periodic) Payment
+
+
+ For more info on the terms/abbreviations please use the references below
+ (hyperlinks are subject to Change):
+
Online References:
+
+ - GNU Emacs Calc 2.02 Manual: http://theory.uwinnipeg.ca/gnu/calc/calc_203.html
+ - Yahoo Financial Glossary: http://biz.yahoo.com/f/g/nn.html#y
+ - MS Excel function reference: http://office.microsoft.com/en-us/assistance/CH062528251033.aspx
+
+ Implementation Notes:
+ Symbols used in the formulae that follow:
+
+ - p: present value
+ - f: future value
+ - n: number of periods
+ - y: payment (in each period)
+ - r: rate
+ - ^: the power operator (NOT the java bitwise XOR operator!)
+
+ [From MS Excel function reference] Following are some of the key formulas
+ that are used in this implementation:
+
+ p(1+r)^n + y(1+rt)((1+r)^n-1)/r + f=0 ...{when r!=0}
+ ny + p + f=0 ...{when r=0}
+
+
+
+ Future value of an amount given the number of payments, rate, amount
+ of individual payment, present value and bool value indicating whether
+ payments are due at the beginning of period
+ (false => payments are due at end of period)
+ @param r rate
+ @param n num of periods
+ @param y pmt per period
+ @param p future value
+ @param t type (true=pmt at end of period, false=pmt at begining of period)
+
+
+ Present value of an amount given the number of future payments, rate, amount
+ of individual payment, future value and bool value indicating whether
+ payments are due at the beginning of period
+ (false => payments are due at end of period)
+ @param r
+ @param n
+ @param y
+ @param f
+ @param t
+
+
+ calculates the Net Present Value of a principal amount
+ given the disCount rate and a sequence of cash flows
+ (supplied as an array). If the amounts are income the value should
+ be positive, else if they are payments and not income, the
+ value should be negative.
+ @param r
+ @param cfs cashflow amounts
+
+
+
+ @param r
+ @param n
+ @param p
+ @param f
+ @param t
+
+
+
+ @param r
+ @param y
+ @param p
+ @param f
+ @param t
+
+
+ Convenience base class for functions that only take zero arguments.
+
+ @author Josh Micich
+
+
+ Convenience base class for functions that must take exactly one argument.
+
+ @author Josh Micich
+
+
+ Convenience base class for functions that must take exactly two arguments.
+
+ @author Josh Micich
+
+
+ Convenience base class for functions that must take exactly three arguments.
+
+ @author Josh Micich
+
+
+ Convenience base class for functions that must take exactly four arguments.
+
+ @author Josh Micich
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+
+ The Forecast class is a representation of the Excel FORECAST function.
+ This function predicts a future value along a linear trend line based on existing historical data.
+ The class inherits from the Fixed3ArgFunction class and overrides the Evaluate method.
+ The Evaluate method takes three arguments: the x-value for which we want to forecast a y-value,
+ and two arrays of x-values and y-values representing historical data.
+ The method calculates the slope and intercept of the line of best fit for the historical data
+ and uses these to calculate the forecast y-value.
+ The class also includes methods for converting ValueEval objects to numeric arrays and for creating ValueVectors.
+
+
+
+ For most Excel functions, involving references ((cell, area), (2d, 3d)), the references are
+ passed in as arguments, and the exact location remains fixed. However, a select few Excel
+ functions have the ability to access cells that were not part of any reference passed as an
+ argument.
+ Two important functions with this feature are INDIRECT and OFFSet
+
+ In POI, the HSSFFormulaEvaluator Evaluates every cell in each reference argument before
+ calling the function. This means that functions using fixed references do not need access to
+ the rest of the workbook to execute. Hence the Evaluate() method on the common
+ interface Function does not take a workbook parameter.
+
+ This interface recognises the requirement of some functions to freely Create and Evaluate
+ references beyond those passed in as arguments.
+
+ @author Josh Micich
+
+
+ @param args the pre-Evaluated arguments for this function. args is never null,
+ nor are any of its elements.
+ @param ec primarily used to identify the source cell Containing the formula being Evaluated.
+ may also be used to dynamically create reference evals.
+ @return never null. Possibly an instance of ErrorEval in the case of
+ a specified Excel error (Exceptions are never thrown to represent Excel errors).
+
+
+
+ Function serves as a marker interface.
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Evaluates the specified args.
+
+ the evaluated function arguments. Empty values are represented with BlankEval or MissingArgEval
+ row index of the cell containing the formula under evaluation
+ column index of the cell containing the formula under evaluation
+
+
+
+ Implemented by all functions that can be called with zero arguments
+
+ @author Josh Micich
+
+
+ see {@link Function#Evaluate(ValueEval[], int, int)}
+
+
+ Implemented by all functions that can be called with one argument
+
+ @author Josh Micich
+
+
+ see {@link Function#Evaluate(ValueEval[], int, int)}
+
+
+ Implemented by all functions that can be called with two arguments
+
+ @author Josh Micich
+
+
+ see {@link Function#Evaluate(ValueEval[], int, int)}
+
+
+ Implemented by all functions that can be called with three arguments
+
+ @author Josh Micich
+
+
+ see {@link Function#Evaluate(ValueEval[], int, int)}
+
+
+ Implemented by all functions that can be called with four arguments
+
+ @author Josh Micich
+
+
+ see {@link Function#Evaluate(ValueEval[], int, int)}
+
+
+ Implementation for Excel HEX2DEC() function.
+
+ Syntax:
HEX2DEC (number)
+
+ Converts a hexadecimal number to decimal.
+
+ Number is the hexadecimal number you want to Convert. Number cannot contain more than 10 characters (40 bits).
+ The most significant bit of number is the sign bit.
+ The remaining 39 bits are magnitude bits. Negative numbers are represented using two's-complement notation.
+ Remark
+ If number is not a valid hexadecimal number, HEX2DEC returns the #NUM! error value.
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation of the HLOOKUP() function.
+
+ HLOOKUP Finds a column in a lookup table by the first row value and returns the value from another row.
+
+ Syntax:
+ HLOOKUP(lookup_value, table_array, row_index_num, range_lookup)
+
+ lookup_value The value to be found in the first column of the table array.
+ table_array An area reference for the lookup data.
+ row_index_num a 1 based index specifying which row value of the lookup data will be returned.
+ range_lookup If TRUE (default), HLOOKUP Finds the largest value less than or equal to
+ the lookup_value. If FALSE, only exact Matches will be considered
+
+ @author Josh Micich
+
+
+ Returns one column from an AreaEval
+
+ @(#VALUE!) if colIndex Is negative, (#REF!) if colIndex Is too high
+
+
+ Implementation of Excel HYPERLINK function.
+
+ In Excel this function has special behaviour - it causes the displayed cell value to behave like
+ a hyperlink in the GUI. From an evaluation perspective however, it is very simple.
+
+ Syntax:
+ HYPERLINK(link_location, friendly_name)
+
+ link_location The URL of the hyperlink
+ friendly_name (optional) the value to display
+
+ Returns last argument. Leaves type unchanged (does not convert to {@link org.apache.poi.ss.formula.eval.StringEval}).
+
+ @author Wayne Clingingsmith
+
+
+ Interface specifying how an algorithm to be used by {@link DStarRunner} should look like.
+ Each implementing class should correspond to one of the D* functions.
+
+
+ Process a match that is found during a run through a database.
+ @param eval ValueEval of the cell in the matching row. References will already be Resolved.
+ @return Whether we should continue iterating through the database.
+
+
+ Return a result ValueEval that will be the result of the calculation.
+ This is always called at the end of a run through the database.
+ @return a ValueEval
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation for Excel IMAGINARY() function.
+
+ Syntax:
IMAGINARY (Inumber)
+
+ Returns the imaginary coefficient of a complex number in x + yi or x + yj text format.
+
+ Inumber is a complex number for which you want the imaginary coefficient.
+
+ Remarks
+
+ - Use COMPLEX to convert real and imaginary coefficients into a complex number.
+
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation for Excel ImReal() function.
+
+ Syntax:
ImReal (Inumber)
+
+ Returns the real coefficient of a complex number in x + yi or x + yj text format.
+
+ Inumber A complex number for which you want the real coefficient.
+
+ Remarks
+
+ - If inumber is not in the form x + yi or x + yj, this function returns the #NUM! error value.
+ - Use COMPLEX to convert real and imaginary coefficients into a complex number.
+
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation for the Excel function INDEX
+
+ Syntax :
+ INDEX ( reference, row_num[, column_num [, area_num]])
+ INDEX ( array, row_num[, column_num])
+
+ | reference | typically an area reference, possibly a union of areas |
+ | array | a literal array value (currently not supported) |
+ | row_num | selects the row within the array or area reference |
+ | column_num | selects column within the array or area reference. default Is 1 |
+ | area_num | used when reference Is a union of areas |
+
+
+ @author Josh Micich
+
+
+ @param colArgWasPassed false if the INDEX argument lIst had just 2 items
+ (exactly 1 comma). If anything Is passed for the column_num argument
+ (including {@link BlankEval} or {@link MIssingArgEval}) this parameter will be
+ true. ThIs parameter is needed because error codes are slightly
+ different when only 2 args are passed.
+
+
+ @param arg a 1-based index.
+ @return the Resolved 1-based index. Zero if the arg was missing or blank
+ @throws EvaluationException if the arg Is an error value evaluates to a negative numeric value
+
+
+ Implementation for Excel function INDIRECT
+
+ INDIRECT() returns the cell or area reference denoted by the text argument.
+
+ Syntax:
+ INDIRECT(ref_text,isA1Style)
+
+ ref_text a string representation of the desired reference as it would normally be written
+ in a cell formula.
+ isA1Style (default TRUE) specifies whether the ref_text should be interpreted as A1-style
+ or R1C1-style.
+
+
+ @author Josh Micich
+
+
+ @return array of length 2: {workbookName, sheetName,}. Second element will always be
+ present. First element may be null if sheetName is unqualified.
+ Returns null if text cannot be parsed.
+
+
+ @return null if there is a syntax error in any escape sequence
+ (the typical syntax error is a single quote character not followed by another).
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation of Excel function INTERCEPT()
+
+ Calculates the INTERCEPT of the linear regression line that is used to predict y values from x values
+ (http://introcs.cs.princeton.edu/java/97data/LinearRegression.java.html)
+ Syntax:
+ INTERCEPT(arrayX, arrayY)
+
+
+ @author Johan Karlsteen
+
+
+ Calculates the internal rate of return.
+
+ Syntax is IRR(values) or IRR(values,guess)
+
+ @author Marcel May
+ @author Yegor Kozlov
+
+ @see Wikipedia on IRR
+ @see Excel IRR
+
+
+ Computes the internal rate of return using an estimated irr of 10 percent.
+
+ @param income the income values.
+ @return the irr.
+
+
+ Calculates IRR using the Newton-Raphson Method.
+
+ Starting with the guess, the method cycles through the calculation until the result
+ is accurate within 0.00001 percent. If IRR can't find a result that works
+ after 20 tries, the Double.NaN is returned.
+
+
+ The implementation is inspired by the NewtonSolver from the Apache Commons-Math library,
+ @see http://commons.apache.org
+
+
+ @param values the income values.
+ @param guess the initial guess of irr.
+ @return the irr value. The method returns Double.NaN
+ if the maximum iteration count is exceeded
+
+ @see
+ http://en.wikipedia.org/wiki/Internal_rate_of_return#Numerical_solution
+ @see
+ http://en.wikipedia.org/wiki/Newton%27s_method
+
+
+ Base class for linear regression functions.
+
+ Calculates the linear regression line that is used to predict y values from x values
+ (http://introcs.cs.princeton.edu/java/97data/LinearRegression.java.html)
+ Syntax:
+ INTERCEPT(arrayX, arrayY)
+ or
+ SLOPE(arrayX, arrayY)
+
+
+ @author Johan Karlsteen
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ contribute by Pavel Egorov
+ https://github.com/xoposhiy/npoi/commit/27b34a2389030c7115a666ace65daafda40d61af
+ Implementation of Excel ISERR() function.
+
+ Syntax:
+ ISERR(value)
+
+ value The value to be tested
+
+ Returns the logical value TRUE if value refers to any error value except
+ '#N/A'; otherwise, it returns FALSE.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @param arg any {@link ValueEval}, potentially {@link BlankEval} or {@link ErrorEval}.
+
+
+ Implementation of Excel function LOOKUP.
+
+ LOOKUP Finds an index row in a lookup table by the first column value and returns the value from another column.
+
+ Syntax:
+ VLOOKUP(lookup_value, lookup_vector, result_vector)
+
+ lookup_value The value to be found in the lookup vector.
+ lookup_vector An area reference for the lookup data.
+ result_vector Single row or single column area reference from which the result value Is chosen.
+
+ @author Josh Micich
+
+
+ Common functionality used by VLOOKUP, HLOOKUP, LOOKUP and MATCH
+
+ @author Josh Micich
+
+
+ @return null if the supplied area is neither a single row nor a single colum
+
+
+ Processes the third argument to VLOOKUP, or HLOOKUP (col_index_num
+ or row_index_num respectively).
+ Sample behaviour:
+
+ | Input Return | Value | Thrown Error |
+ | 5 | 4 | |
+ | 2.9 | 2 | |
+ | "5" | 4 | |
+ | "2.18e1" | 21 | |
+ | "-$2" | -3 | * |
+ | FALSE | -1 | * |
+ | TRUE | 0 | |
+ | "TRUE" | | #REF! |
+ | "abc" | | #REF! |
+ | "" | | #REF! |
+ | <blank> | | #VALUE! |
+
+
+ * Note - out of range errors (both too high and too low) are handled by the caller.
+ @return column or row index as a zero-based value
+
+
+
+ The second argument (table_array) should be an area ref, but can actually be a cell ref, in
+ which case it Is interpreted as a 1x1 area ref. Other scalar values cause #VALUE! error.
+
+
+ Resolves the last (optional) parameter (range_lookup) to the VLOOKUP and HLOOKUP functions.
+ @param rangeLookupArg
+ @param srcCellRow
+ @param srcCellCol
+ @return
+ @throws EvaluationException
+
+
+ Finds first (lowest index) exact occurrence of specified value.
+ @param lookupComparer the value to be found in column or row vector
+ @param vector the values to be searched. For VLOOKUP this Is the first column of the
+ tableArray. For HLOOKUP this Is the first row of the tableArray.
+ @return zero based index into the vector, -1 if value cannot be found
+
+
+ Finds last (greatest index) matching occurrence of specified value.
+ @param lookupComparer the value to be found in column or row vector
+ @param vector the values to be searched. For VLOOKUP this is the first column of the
+ tableArray. For HLOOKUP this is the first row of the tableArray.
+ @param matchMode
+ @return zero based index into the vector, -1 if value cannot be found
+
+
+ Excel has funny behaviour when the some elements in the search vector are the wrong type.
+
+
+
+ Excel seems to handle mismatched types initially by just stepping 'mid' ix forward to the
+ first compatible value.
+ @param midIx 'mid' index (value which has the wrong type)
+ @return usually -1, signifying that the BinarySearchIndex has been narrowed to the new mid
+ index. Zero or greater signifies that an exact match for the lookup value was found
+
+
+ Once the binary search has found a single match, (V/H)LOOKUP steps one by one over subsequent
+ values to choose the last matching item.
+
+
+ Enumeration to support 4 valued comparison results.
+ Excel lookup functions have complex behaviour in the case where the lookup array has mixed
+ types, and/or Is Unordered. Contrary to suggestions in some Excel documentation, there
+ does not appear to be a Universal ordering across types. The binary search algorithm used
+ Changes behaviour when the Evaluated 'mid' value has a different type to the lookup value.
+
+ A simple int might have done the same job, but there Is risk in confusion with the well
+ known Comparable.CompareTo() and Comparator.Compare() which both use
+ a ubiquitous 3 value result encoding.
+
+
+ Encapsulates some standard binary search functionality so the Unusual Excel behaviour can
+ be clearly distinguished.
+
+
+ @return -1 if the search range Is empty
+
+
+ Represents a single row or column within an AreaEval.
+
+
+ @return one of 4 instances or CompareResult: LESS_THAN, EQUAL,
+ GREATER_THAN or TYPE_MISMATCH
+
+
+ used only for debug purposes
+
+
+ Implementation for the MATCH() Excel function.
+
+ Syntax:
+ MATCH(lookup_value, lookup_array, match_type)
+
+ Returns a 1-based index specifying at what position in the lookup_array the specified
+ lookup_value Is found.
+
+ Specific matching behaviour can be modified with the optional match_type parameter.
+
+
+ | Value | Matching Behaviour |
+ | 1 | (default) Find the largest value that Is less than or equal to lookup_value.
+ The lookup_array must be in ascending order*. |
+ | 0 | Find the first value that Is exactly equal to lookup_value.
+ The lookup_array can be in any order. |
+ | -1 | Find the smallest value that Is greater than or equal to lookup_value.
+ The lookup_array must be in descending order*. |
+
+
+ * Note regarding order - For the match_type cases that require the lookup_array to
+ be ordered, MATCH() can produce incorrect results if this requirement Is not met. Observed
+ behaviour in Excel Is to return the lowest index value for which every item after that index
+ breaks the match rule.
+ The (ascending) sort order expected by MATCH() Is:
+ numbers (low to high), strings (A to Z), bool (FALSE to TRUE)
+ MATCH() ignores all elements in the lookup_array with a different type to the lookup_value.
+ Type conversion of the lookup_array elements Is never performed.
+
+
+ @author Josh Micich
+
+
+ @return zero based index
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ This class Is an extension to the standard math library
+ provided by java.lang.Math class. It follows the Math class
+ in that it has a private constructor and all static methods.
+
+
+ Returns a value rounded to p digits after decimal.
+ If p Is negative, then the number Is rounded to
+ places to the left of the decimal point. eg.
+ 10.23 rounded to -1 will give: 10. If p Is zero,
+ the returned value Is rounded to the nearest integral
+ value.
+ If n Is negative, the resulting value Is obtained
+ as the round value of absolute value of n multiplied
+ by the sign value of n (@see MathX.sign(double d)).
+ Thus, -0.6666666 rounded to p=0 will give -1 not 0.
+ If n Is NaN, returned value Is NaN.
+ @param n
+ @param p
+
+
+ Returns a value rounded-up to p digits after decimal.
+ If p Is negative, then the number Is rounded to
+ places to the left of the decimal point. eg.
+ 10.23 rounded to -1 will give: 20. If p Is zero,
+ the returned value Is rounded to the nearest integral
+ value.
+ If n Is negative, the resulting value Is obtained
+ as the round-up value of absolute value of n multiplied
+ by the sign value of n (@see MathX.sign(double d)).
+ Thus, -0.2 rounded-up to p=0 will give -1 not 0.
+ If n Is NaN, returned value Is NaN.
+ @param n
+ @param p
+
+
+ Returns a value rounded to p digits after decimal.
+ If p Is negative, then the number Is rounded to
+ places to the left of the decimal point. eg.
+ 10.23 rounded to -1 will give: 10. If p Is zero,
+ the returned value Is rounded to the nearest integral
+ value.
+ If n Is negative, the resulting value Is obtained
+ as the round-up value of absolute value of n multiplied
+ by the sign value of n (@see MathX.sign(double d)).
+ Thus, -0.8 rounded-down to p=0 will give 0 not -1.
+ If n Is NaN, returned value Is NaN.
+ @param n
+ @param p
+
+
+ average of all values
+ @param values
+
+
+ sum of all values
+ @param values
+
+
+ sum of squares of all values
+ @param values
+
+
+ product of all values
+ @param values
+
+
+ min of all values. If supplied array Is zero Length,
+ double.POSITIVE_INFINITY Is returned.
+ @param values
+
+
+ min of all values. If supplied array Is zero Length,
+ double.NEGATIVE_INFINITY Is returned.
+ @param values
+
+
+ Note: this function Is different from java.lang.Math.floor(..).
+
+ When n and s are "valid" arguments, the returned value Is: Math.floor(n/s) * s;
+
+ n and s are invalid if any of following conditions are true:
+
+ - s Is zero
+ - n Is negative and s Is positive
+ - n Is positive and s Is negative
+
+ In all such cases, double.NaN Is returned.
+ @param n
+ @param s
+
+
+ Note: this function Is different from java.lang.Math.ceil(..).
+
+ When n and s are "valid" arguments, the returned value Is: Math.ceiling(n/s) * s;
+
+ n and s are invalid if any of following conditions are true:
+
+ - s Is zero
+ - n Is negative and s Is positive
+ - n Is positive and s Is negative
+
+ In all such cases, double.NaN Is returned.
+ @param n
+ @param s
+
+
+
for all n >= 1; factorial n = n * (n-1) * (n-2) * ... * 1
+
else if n == 0; factorial n = 1
+
else if n < 0; factorial n = double.NaN
+
Loss of precision can occur if n Is large enough.
+ If n Is large so that the resulting value would be greater
+ than double.MAX_VALUE; double.POSITIVE_INFINITY Is returned.
+ If n < 0, double.NaN Is returned.
+ @param n
+
+
+ returns the remainder resulting from operation:
+ n / d.
+
The result has the sign of the divisor.
+
Examples:
+
+ - mod(3.4, 2) = 1.4
+ - mod(-3.4, 2) = 0.6
+ - mod(-3.4, -2) = -1.4
+ - mod(3.4, -2) = -0.6
+
+ If d == 0, result Is NaN
+ @param n
+ @param d
+
+
+ inverse hyperbolic cosine
+ @param d
+
+
+ inverse hyperbolic sine
+ @param d
+
+
+ inverse hyperbolic tangent
+ @param d
+
+
+ hyperbolic cosine
+ @param d
+
+
+ hyperbolic sine
+ @param d
+
+
+ hyperbolic tangent
+ @param d
+
+
+ returns the sum of product of corresponding double value in each
+ subarray. It Is the responsibility of the caller to Ensure that
+ all the subarrays are of equal Length. If the subarrays are
+ not of equal Length, the return value can be Unpredictable.
+ @param arrays
+
+
+ returns the sum of difference of squares of corresponding double
+ value in each subarray: ie. sigma (xarr[i]^2-yarr[i]^2)
+
+ It Is the responsibility of the caller
+ to Ensure that the two subarrays are of equal Length. If the
+ subarrays are not of equal Length, the return value can be
+ Unpredictable.
+ @param xarr
+ @param yarr
+
+
+ returns the sum of sum of squares of corresponding double
+ value in each subarray: ie. sigma (xarr[i]^2 + yarr[i]^2)
+
+ It Is the responsibility of the caller
+ to Ensure that the two subarrays are of equal Length. If the
+ subarrays are not of equal Length, the return value can be
+ Unpredictable.
+ @param xarr
+ @param yarr
+
+
+ returns the sum of squares of difference of corresponding double
+ value in each subarray: ie. sigma ( (xarr[i]-yarr[i])^2 )
+
+ It Is the responsibility of the caller
+ to Ensure that the two subarrays are of equal Length. If the
+ subarrays are not of equal Length, the return value can be
+ Unpredictable.
+ @param xarr
+ @param yarr
+
+
+ returns the total number of combinations possible when
+ k items are chosen out of total of n items. If the number
+ Is too large, loss of precision may occur (since returned
+ value Is double). If the returned value Is larger than
+ double.MAX_VALUE, double.POSITIVE_INFINITY Is returned.
+ If either of the parameters Is negative, double.NaN Is returned.
+ @param n
+ @param k
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Calculates Modified internal rate of return. Syntax is MIRR(cash_flow_values, finance_rate, reinvest_rate)
+
+ Returns the modified internal rate of return for a series of periodic cash flows. MIRR considers both the cost
+ of the investment and the interest received on reinvestment of cash.
+
+ Values is an array or a reference to cells that contain numbers. These numbers represent a series of payments (negative values) and income (positive values) occurring at regular periods.
+
+ - Values must contain at least one positive value and one negative value to calculate the modified internal rate of return. Otherwise, MIRR returns the #DIV/0! error value.
+ - If an array or reference argument Contains text, logical values, or empty cells, those values are ignored; however, cells with the value zero are included.
+
+
+ Finance_rate is the interest rate you pay on the money used in the cash flows.
+ Reinvest_rate is the interest rate you receive on the cash flows as you reinvest them.
+
+ @author Carlos Delgado (carlos dot del dot est at gmail dot com)
+ @author Cédric Walter (cedric dot walter at gmail dot com)
+
+ @see Wikipedia on MIRR
+ @see Excel MIRR
+ @see {@link Irr}
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ if v is zero length or contains no duplicates, return value is
+ Double.NaN. Else returns the value that occurs most times and if there is
+ a tie, returns the first such value.
+
+ @param v
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ This Is the base class for all excel function evaluator
+ classes that take variable number of operands, and
+ where the order of operands does not matter
+
+
+ Maximum number of operands accepted by this function.
+ Subclasses may override to Change default value.
+
+
+ Whether to count nested subtotals.
+
+
+ Collects values from a single argument
+
+
+ Returns a double array that contains values for the numeric cells
+ from among the list of operands. Blanks and Blank equivalent cells
+ are ignored. Error operands or cells containing operands of type
+ that are considered invalid and would result in #VALUE! error in
+ excel cause this function to return null.
+
+ @return never null
+
+
+ Ensures that a two dimensional array has all sub-arrays present and the same Length
+ @return false if any sub-array Is missing, or Is of different Length
+
+
+ Implementation of Excel function NA()
+
+ @author Josh Micich
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ This Is the default implementation of a Function class.
+ The default behaviour Is to return a non-standard ErrorEval
+ "ErrorEval.FUNCTION_NOT_IMPLEMENTED". This error should alert
+ the user that the formula contained a function that Is not
+ yet implemented.
+
+
+ Implementation of Excel NOW() Function
+
+ @author Frank Taffelt
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ Support for hyperbolic trig functions was Added as a part of
+ Java distribution only in JDK1.5. This class uses custom
+ naive implementation based on formulas at:
+ http://www.math2.org/math/trig/hyperbolics.htm
+ These formulas seem to agree with excel's implementation.
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ Support for hyperbolic trig functions was Added as a part of
+ Java distribution only in JDK1.5. This class uses custom
+ naive implementation based on formulas at:
+ http://www.math2.org/math/trig/hyperbolics.htm
+ These formulas seem to agree with excel's implementation.
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ Support for hyperbolic trig functions was Added as a part of
+ Java distribution only in JDK1.5. This class uses custom
+ naive implementation based on formulas at:
+ http://www.math2.org/math/trig/hyperbolics.htm
+ These formulas seem to agree with excel's implementation.
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ Log: LOG(number,[base])
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at yahoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ This checks is x = 0 and the mean = 0.
+ Excel currently returns the value 1 where as the
+ maths common implementation will error.
+ @param x The number.
+ @param mean The mean.
+ @return If a default value should be returned.
+
+
+ All long-representable factorials
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation for Excel Oct2Dec() function.
+
+ Converts an octal number to decimal.
+
+
+ Syntax:
Oct2Dec (number )
+
+
+ Number is the octal number you want to Convert. Number may not contain more than 10 octal characters (30 bits).
+ The most significant bit of number is the sign bit. The remaining 29 bits are magnitude bits.
+ Negative numbers are represented using two's-complement notation..
+
+ If number is not a valid octal number, OCT2DEC returns the #NUM! error value.
+
+ @author cedric dot walter @ gmail dot com
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation for Excel function OFFSet()
+
+ OFFSet returns an area reference that Is a specified number of rows and columns from a
+ reference cell or area.
+
+ Syntax:
+ OFFSet(reference, rows, cols, height, width)
+ reference Is the base reference.
+ rows Is the number of rows up or down from the base reference.
+ cols Is the number of columns left or right from the base reference.
+ height (default same height as base reference) Is the row Count for the returned area reference.
+ width (default same width as base reference) Is the column Count for the returned area reference.
+
+ @author Josh Micich
+
+
+ Exceptions are used within this class to help simplify flow control when error conditions
+ are enCountered
+
+
+ A one dimensional base + offset. Represents either a row range or a column range.
+ Two instances of this class toGether specify an area range.
+
+
+ Moves the range by the specified translation amount.
+
+ This method also 'normalises' the range: Excel specifies that the width and height
+ parameters (Length field here) cannot be negative. However, OFFSet() does produce
+ sensible results in these cases. That behavior Is replicated here.
+
+ @param translationAmount may be zero negative or positive
+
+ @return the equivalent LinearOffsetRange with a positive Length, moved by the
+ specified translationAmount.
+
+
+ Encapsulates either an area or cell reference which may be 2d or 3d.
+
+
+ OFFSet's numeric arguments (2..5) have similar Processing rules
+
+
+ Fractional values are silently truncated by Excel.
+ Truncation Is toward negative infinity.
+
+
+
+ Implementation of 'Analysis Toolpak' the Excel function PERCENTRANK()
+
+
+
+ Implementation for the PMT() Excel function.
+
+ Syntax:
+ PMT(rate, nper, pv, fv, type)
+
+ Returns the constant repayment amount required for a loan assuming a constant interest rate.
+
+ rate the loan interest rate.
+ nper the number of loan repayments.
+ pv the present value of the future payments (or principle).
+ fv the future value (default zero) surplus cash at the end of the loan lifetime.
+ type whether payments are due at the beginning(1) or end(0 - default) of each payment period.
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Compute the interest portion of a payment.
+
+ @author Mike Argyriou micharg@gmail.com
+
+
+ Implementation for Excel QUOTIENT () function.
+
+ Syntax:
QUOTIENT(Numerator,Denominator)
+
+
+ Numerator is the dividend.
+ Denominator is the divisor.
+
+ Returns the integer portion of a division. Use this function when you want to discard the remainder of a division.
+
+
+ If either enumerator/denominator is non numeric, QUOTIENT returns the #VALUE! error value.
+ If denominator is Equals to zero, QUOTIENT returns the #DIV/0! error value.
+
+ @author cedric dot walter @ gmail dot com
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ * Returns the rank of a number in a list of numbers. The rank of a number is its size relative to other values in a list.
+
+ * Syntax:
+ * RANK(number,ref,order)
+ * Number is the number whose rank you want to find.
+ * Ref is an array of, or a reference to, a list of numbers. Nonnumeric values in ref are ignored.
+ * Order is a number specifying how to rank number.
+
+ * If order is 0 (zero) or omitted, Microsoft Excel ranks number as if ref were a list sorted in descending order.
+ * If order is any nonzero value, Microsoft Excel ranks number as if ref were a list sorted in ascending order.
+ *
+ * @author Rubin Wang
+
+
+ Implements the Excel Rate function
+
+
+
+ Compute the rate of interest per period.
+
+ Number of compounding periods
+ Payment
+ Present Value
+ Future value
+ When payments are due ('begin' (1) or 'end' (0))
+ Starting guess for solving the rate of interest
+ rate of interest per period or NaN if the solution didn't converge
+
+
+ Excel does not support infinities and NaNs, rather, it gives a #NUM! error in these cases
+
+ @throws EvaluationException (#NUM!) if result is NaN or Infinity
+
+
+ Implementation for Excel REPT () function.
+
+ Syntax:
REPT (text,number_times )
+
+ Repeats text a given number of times. Use REPT to fill a cell with a number of instances of a text string.
+
+ text : text The text that you want to repeat.
+ number_times: A positive number specifying the number of times to repeat text.
+
+ If number_times is 0 (zero), REPT returns "" (empty text).
+ If this argument contains a decimal value, this function ignores the numbers to the right side of the decimal point.
+
+ The result of the REPT function cannot be longer than 32,767 characters, or REPT returns #VALUE!.
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Implementation for Excel WeekNum() function.
+
+ Syntax:
WeekNum (Serial_num,Return_type)
+
+ Returns a number that indicates where the week falls numerically within a year.
+
+
+ Serial_num is a date within the week. Dates should be entered by using the DATE function,
+ or as results of other formulas or functions. For example, use DATE(2008,5,23)
+ for the 23rd day of May, 2008. Problems can occur if dates are entered as text.
+ Return_type is a number that determines on which day the week begins. The default is 1.
+ 1 Week begins on Sunday. Weekdays are numbered 1 through 7.
+ 2 Week begins on Monday. Weekdays are numbered 1 through 7.
+
+ @author cedric dot walter @ gmail dot com
+
+
+ Classic conversion.
+
+ @param number
+ @return
+
+
+ Use conversion rule to factor some parts and make them more concise
+
+ @param result
+ @param form
+ @return
+
+
+ Implementation for Excel ROWS function.
+
+ @author Josh Micich
+
+
+ Implementation of Excel function SLOPE()
+
+ Calculates the SLOPE of the linear regression line that is used to predict y values from x values
+ (http://introcs.cs.princeton.edu/java/97data/LinearRegression.java.html)
+ Syntax:
+ SLOPE(arrayX, arrayY)
+
+
+ @author Johan Karlsteen
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+ Library for common statistics functions
+
+
+ returns the mean of deviations from mean.
+ @param v
+
+
+ if v Is zero Length or Contains no duplicates, return value
+ Is double.NaN. Else returns the value that occurs most times
+ and if there Is a tie, returns the first such value.
+ @param v
+
+
+ Implementation for the Excel function SUBTOTAL
+
+ Syntax :
+ SUBTOTAL ( functionCode, ref1, ref2 ... )
+
+ | functionCode | (1-11) Selects the underlying aggregate function to be used (see table below) |
+ | ref1, ref2 ... | Arguments to be passed to the underlying aggregate function |
+
+
+
+
+ | functionCode | Aggregate Function |
+ | 1 | AVERAGE |
+ | 2 | COUNT |
+ | 3 | COUNTA |
+ | 4 | MAX |
+ | 5 | MIN |
+ | 6 | PRODUCT |
+ | 7 | STDEV |
+ | 8 | STDEVP * |
+ | 9 | SUM |
+ | 10 | VAR * |
+ | 11 | VARP * |
+ | 101-111 | * |
+
+ * Not implemented in POI yet. Functions 101-111 are the same as functions 1-11 but with
+ the option 'ignore hidden values'.
+
+
+ @author Paul Tomlin < pault at bulk sms dot com >
+
+
+ Implementation for the Excel function SUMIF
+
+ Syntax :
+ SUMIF ( range, criteria, sum_range )
+
+ | range | The range over which criteria is applied. Also used for addend values when the third parameter is not present |
+ | criteria | The value or expression used to filter rows from range |
+ | sum_range | Locates the top-left corner of the corresponding range of addends - values to be added (after being selected by the criteria) |
+
+
+ @author Josh Micich
+
+
+ @return a range of the same dimensions as aeRange using eval to define the top left corner.
+ @throws EvaluationException if eval is not a reference
+
+
+ Implementation for the Excel function SUMIFS
+
+ Syntax :
+ SUMIFS ( sum_range, criteria_range1, criteria1,
+ [criteria_range2, criteria2], ...)
+
+ - sum_range Required. One or more cells to sum, including numbers or names, ranges,
+ or cell references that contain numbers. Blank and text values are ignored.
+ - criteria1_range Required. The first range in which
+ to evaluate the associated criteria.
+ - criteria1 Required. The criteria in the form of a number, expression,
+ cell reference, or text that define which cells in the criteria_range1
+ argument will be added
+ - criteria_range2, criteria2, ... Optional. Additional ranges and their associated criteria.
+ Up to 127 range/criteria pairs are allowed.
+
+
+
+ @author Yegor Kozlov
+
+
+ Verify that each criteria predicate is valid, i.e. not an error
+
+ @throws EvaluationException if there are criteria which resulted in Errors.
+
+
+ Verify that each criteriaRanges argument contains the same number of rows and columns
+ as the sumRange argument
+
+ @throws EvaluationException if
+
+
+
+ @param ranges criteria ranges, each range must be of the same dimensions as aeSum
+ @param predicates array of predicates, a predicate for each value in ranges
+ @param aeSum the range to sum
+
+ @return the computed value
+
+
+ Reads the numeric values from the row/col of the specified area - other values return the indicated missing value.
+
+
+ Determines a double value for the specified ValueEval.
+ @param IsScalarProduct false for SUMPRODUCTs over area refs.
+ @throws EvalEx if ve represents an error value.
+
+ Note - string values and empty cells are interpreted differently depending on
+ isScalarProduct. For scalar products, if any term Is blank or a string, the
+ error (#VALUE!) Is raised. For area (sum)products, if any term Is blank or a string, the
+ result Is zero.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+
+ An implementation of the MID function
+ MID returns a specific number of
+ Chars from a text string, starting at the specified position.
+ @author Manda Wilson < wilson at c bio dot msk cc dot org;
+
+
+
+
+ Implementation of the PROPER function:
+ Normalizes all words (separated by non-word characters) by
+ making the first letter upper and the rest lower case.
+
+
+
+ An implementation of the Replace function:
+ Replaces part of a text string based on the number of Chars
+ you specify, with another text string.
+ @author Manda Wilson < wilson at c bio dot msk cc dot org >
+
+
+ Replaces part of a text string based on the number of Chars
+ you specify, with another text string.
+
+ @see org.apache.poi.hssf.record.formula.eval.Eval
+
+
+ An implementation of the SUBSTITUTE function:
+ Substitutes text in a text string with new text, some number of times.
+ @author Manda Wilson < wilson at c bio dot msk cc dot org >
+
+
+ Substitutes text in a text string with new text, some number of times.
+
+ @see org.apache.poi.hssf.record.formula.eval.Eval
+
+
+ An implementation of the TEXT function
+ TEXT returns a number value formatted with the given number formatting string.
+ This function is not a complete implementation of the Excel function, but
+ handles most of the common cases. All work is passed down to
+ {@link DataFormatter} to be done, as this works much the same as the
+ display focused work that that does.
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+ @author Manda Wilson < wilson at c bio dot msk cc dot org >
+
+ An implementation of the TRIM function:
+
+ Removes leading and trailing spaces from value if evaluated operand value is string.
+
+
+
+
+
+ An implementation of the MID function
+
+ MID returns a specific number of
+ characters from a text string, starting at the specified position.
+
+ Syntax: MID(text, start_num, num_chars)
+
+
+
+ @author Torstein Tauno Svendsen (torstei@officenet.no)
+
+ Implementation of the FIND() function.
+
+ Syntax: FIND(Find_text, within_text, start_num)
+
+ FIND returns the character position of the first (case sensitive) occurrence of
+ Find_text inside within_text. The third parameter,
+ start_num, is optional (default=1) and specifies where to start searching
+ from. Character positions are 1-based.
+
+
+
+
+ Implementation of the FIND() function. SEARCH is a case-insensitive version of FIND()
+
+ Syntax: SEARCH(Find_text, within_text, start_num)
+
+
+
+
+ An implementation of the TRIM function:
+ Removes leading and trailing spaces from value if Evaluated operand
+ value Is string.
+ @author Manda Wilson < wilson at c bio dot msk cc dot org >
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Implementation for the Excel function TIME
+
+ @author Steven Butler (sebutler @ gmail dot com)
+
+ Based on POI {@link DateFunc}
+
+
+ Converts the supplied hours, minutes and seconds to an Excel time value.
+
+
+ @param ds array of 3 doubles Containing hours, minutes and seconds.
+ Non-integer inputs are tRuncated to an integer before further calculation
+ of the time value.
+ @return An Excel representation of a time of day.
+ If the time value represents more than a day, the days are Removed from
+ the result, leaving only the time of day component.
+ @throws NPOI.SS.Formula.Eval.EvaluationException
+ If any of the arguments are greater than 32767 or the hours
+ minutes and seconds when combined form a time value less than 0, the function
+ Evaluates to an error.
+
+
+ "1,0000" is valid, "1,00" is not
+
+
+ TODO see if the same functionality is needed in {@link OperandResolver#parseDouble(String)}
+
+ @return null if there is any problem converting the text
+
+
+ Convenience base class for any function which must take two or three
+ arguments
+
+ @author Josh Micich
+
+
+ Convenience base class for any function which must take two or three
+ arguments
+
+ @author Josh Micich
+
+
+ Convenience base class for any function which must take three or four
+ arguments
+
+ @author Josh Micich
+
+
+ Implementation of the VLOOKUP() function.
+
+ VLOOKUP Finds a row in a lookup table by the first column value and returns the value from another column.
+
+ Syntax:
+ VLOOKUP(lookup_value, table_array, col_index_num, range_lookup)
+
+ lookup_value The value to be found in the first column of the table array.
+ table_array An area reference for the lookup data.
+ col_index_num a 1 based index specifying which column value of the lookup data will be returned.
+ range_lookup If TRUE (default), VLOOKUP Finds the largest value less than or equal to
+ the lookup_value. If FALSE, only exact Matches will be considered
+
+ @author Josh Micich
+
+
+ Returns one column from an AreaEval
+
+ @(#VALUE!) if colIndex Is negative, (#REF!) if colIndex Is too high
+
+
+ Implementation for the Excel function WEEKDAY
+
+ @author Thies Wellpott
+
+
+ * Perform WEEKDAY(date, returnOption) function.
+ * Note: Parameter texts are from German EXCEL-2010 help.
+ * Parameters in args[]:
+ * args[0] serialDate
+ * EXCEL-date value
+ * Standardmaessig ist der 1. Januar 1900 die fortlaufende Zahl 1 und
+ * der 1. Januar 2008 die fortlaufende Zahl 39.448, da dieser Tag nach 39.448 Tagen
+ * auf den 01.01.1900 folgt.
+ * @return Option (optional)
+ * Bestimmt den Rueckgabewert:
+ 1 oder nicht angegeben Zahl 1 (Sonntag) bis 7 (Samstag). Verhaelt sich wie fruehere Microsoft Excel-Versionen.
+ 2 Zahl 1 (Montag) bis 7 (Sonntag).
+ 3 Zahl 0 (Montag) bis 6 (Sonntag).
+ 11 Die Zahlen 1 (Montag) bis 7 (Sonntag)
+ 12 Die Zahlen 1 (Dienstag) bis 7 (Montag)
+ 13 Die Zahlen 1 (Mittwoch) bis 7 (Dienstag)
+ 14 Die Zahlen 1 (Donnerstag) bis 7 (Mittwoch)
+ 15 Die Zahlen 1 (Freitag) bis 7 (Donnerstag)
+ 16 Die Zahlen 1 (Samstag) bis 7 (Freitag)
+ 17 Die Zahlen 1 (Sonntag) bis 7 (Samstag)
+
+
+ Implementation for Excel WeekNum() function.
+
+ Syntax:
WeekNum (Serial_num,Return_type)
+
+ Returns a number that indicates where the week falls numerically within a year.
+
+
+ Serial_num is a date within the week. Dates should be entered by using the DATE function,
+ or as results of other formulas or functions. For example, use DATE(2008,5,23)
+ for the 23rd day of May, 2008. Problems can occur if dates are entered as text.
+ Return_type is a number that determines on which day the week begins. The default is 1.
+ 1 Week begins on Sunday. Weekdays are numbered 1 through 7.
+ 2 Week begins on Monday. Weekdays are numbered 1 through 7.
+
+ @author cedric dot walter @ gmail dot com
+
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+
+ Constructs a new instance of the Accumulator used to calculated this function
+
+
+ Temporarily collects FunctionMetadata instances for creation of a
+ FunctionMetadataRegistry.
+
+ @author Josh Micich
+
+
+ stores indexes of all functions with footnotes (i.e. whose definitions might Change)
+
+
+ Holds information about Excel built-in functions.
+
+ @author Josh Micich
+
+
+ Converts the text meta-data file into a FunctionMetadataRegistry
+
+ @author Josh Micich
+
+
+ plain ASCII text metadata file uses three dots for ellipsis
+
+
+ Makes sure that footnote digits from the original OOO document have not been accidentally
+ left behind
+
+
+ Allows clients to Get FunctionMetadata instances for any built-in function of Excel.
+
+ @author Josh Micich
+
+
+ The name of the IF function (i.e. "IF"). Extracted as a constant for clarity.
+
+
+ Resolves a built-in function index.
+ @param name uppercase function name
+ @return a negative value if the function name is not found.
+ This typically occurs for external functions.
+
+
+ A (mostly) opaque interface To allow test clients To trace cache values
+ Each spreadsheet cell Gets one unique cache entry instance. These objects
+ are safe To use as keys in {@link java.util.HashMap}s
+
+
+ Tests can implement this class To track the internal working of the {@link WorkbookEvaluator}.
+
+ For POI internal testing use only
+
+ @author Josh Micich
+
+
+ Internally, formula {@link ICacheEntry}s are stored in Sets which may Change ordering due
+ To seemingly trivial Changes. This method is provided To make the order of call-backs To
+ {@link #onClearDependentCachedValue(ICacheEntry, int)} more deterministic.
+
+
+ Used to help optimise cell evaluation result caching by allowing applications to specify which
+ parts of a workbook are final.
+ The term final is introduced here to denote immutability or 'having constant definition'.
+ This classification refers to potential actions (on the evaluated workbook) by the evaluating
+ application. It does not refer to operations performed by the evaluator ({@link
+ WorkbookEvaluator}).
+
+ General guidelines:
+
+ - a plain value cell can be marked as 'final' if it will not be changed after the first call
+ to {@link WorkbookEvaluator#evaluate(EvaluationCell)}.
+
+ - a formula cell can be marked as 'final' if its formula will not be changed after the first
+ call to {@link WorkbookEvaluator#evaluate(EvaluationCell)}. This remains true even if changes
+ in dependent values may cause the evaluated value to change.
+ - plain value cells should be marked as 'not final' if their plain value value may change.
+
+ - formula cells should be marked as 'not final' if their formula definition may change.
+ - cells which may switch between plain value and formula should also be marked as 'not final'.
+
+
+ Notes:
+
+ - If none of the spreadsheet cells is expected to have its definition changed after evaluation
+ begins, every cell can be marked as 'final'. This is the most efficient / least resource
+ intensive option.
+ - To retain freedom to change any cell definition at any time, an application may classify all
+ cells as 'not final'. This freedom comes at the expense of greater memory consumption.
+ - For the purpose of these classifications, setting the cached formula result of a cell (for
+ example in {@link HSSFFormulaEvaluator#evaluateFormulaCell(org.apache.poi.ss.usermodel.Cell)})
+ does not constitute changing the definition of the cell.
+ - Updating cells which have been classified as 'final' will cause the evaluator to behave
+ unpredictably (typically ignoring the update).
+
+
+ @author Josh Micich
+
+
+ Convenience implementation for situations where all cell definitions remain fixed after
+ evaluation begins.
+
+
+ Checks if a cell's value(/formula) is fixed - in other words - not expected to be modified
+ between calls to the evaluator. (Note - this is an independent concept from whether a
+ formula cell's evaluated value may change during successive calls to the evaluator).
+
+ @param sheetIndex zero based index into workbook sheet list
+ @param rowIndex zero based row index of cell
+ @param columnIndex zero based column index of cell
+ @return false if the evaluating application may need to modify the specified
+ cell between calls to the evaluator.
+
+
+ Provides Lazy Evaluation to 3D Ranges
+
+
+ @return whether cell at rowIndex and columnIndex is a subtotal
+
+
+ Provides Lazy Evaluation to a 3D Reference
+
+ TODO Provide access to multiple sheets where present
+
+
+ This class performs 'operand class' transformation. Non-base Tokens are classified into three
+ operand classes:
+
+ - reference
+ - value
+ - array
+
+
+
+ The operand class chosen for each Token depends on the formula type and the Token's place
+ in the formula. If POI Gets the operand class wrong, Excel may interpret the formula
+ incorrectly. This condition is typically manifested as a formula cell that displays as '#VALUE!',
+ but resolves correctly when the user presses F2, enter.
+
+ The logic implemented here was partially inspired by the description in
+ "OpenOffice.org's Documentation of the Microsoft Excel File Format". The model presented there
+ seems To be inconsistent with observed Excel behaviour (These differences have not been fully
+ investigated). The implementation in this class Has been heavily modified in order To satisfy
+ concrete examples of how Excel performs the same logic (see TestRVA).
+
+ Hopefully, as Additional important test cases are identified and Added To the test suite,
+ patterns might become more obvious in this code and allow for simplification.
+
+ @author Josh Micich
+
+
+ Traverses the supplied formula parse tree, calling Ptg.SetClass() for each non-base
+ Token To Set its operand class.
+
+
+ @param callerForceArrayFlag true if one of the current node's parents is a
+ function Ptg which Has been Changed from default 'V' To 'A' type (due To requirements on
+ the function return value).
+
+
+ Contains all the contextual information required to Evaluate an operation
+ within a formula
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ @return null if either workbook or sheet is not found
+
+
+ Resolves a cell or area reference dynamically.
+ @param workbookName the name of the workbook Containing the reference. If null
+ the current workbook is assumed. Note - to Evaluate formulas which use multiple workbooks,
+ a {@link CollaboratingWorkbooksEnvironment} must be set up.
+ @param sheetName the name of the sheet Containing the reference. May be null
+ (when workbookName is also null) in which case the current workbook and sheet is
+ assumed.
+ @param refStrPart1 the single cell reference or first part of the area reference. Must not
+ be null.
+ @param refStrPart2 the second part of the area reference. For single cell references this
+ parameter must be null
+ @param isA1Style specifies the format for refStrPart1 and refStrPart2.
+ Pass true for 'A1' style and false for 'R1C1' style.
+ TODO - currently POI only supports 'A1' reference style
+ @return a {@link RefEval} or {@link AreaEval}
+
+
+ This class Creates OperationEval instances To help evaluate OperationPtg
+ formula Tokens.
+
+ @author Josh Micich
+
+
+ returns the OperationEval concrete impl instance corresponding
+ to the supplied operationPtg
+
+
+ Represents a syntactic element from a formula by encapsulating the corresponding Ptg
+ Token. Each ParseNode may have child ParseNodes in the case when the wrapped
+ Ptg is non-atomic.
+
+
+ Collects the array of Ptg Tokens for the specified tree.
+
+
+ The IF() function Gets marked up with two or three tAttr Tokens.
+ Similar logic will be required for CHOOSE() when it is supported
+
+ See excelfileformat.pdf sec 3.10.5 "tAttr (19H)
+
+
+
+ @author Josh Micich
+
+
+ Used for non-formula cells, primarily To keep track of the referencing (formula) cells.
+
+ @author Josh Micich
+
+
+ This class provides the base functionality for Excel sheet functions
+ There are two kinds of function Ptgs - tFunc and tFuncVar
+ Therefore, this class will have ONLY two subclasses
+ @author Avik Sengupta
+ @author Andrew C. Oliver (acoliver at apache dot org)
+
+
+ The name of the IF function (i.e. "IF"). Extracted as a constant for clarity.
+
+
+ All external functions have function index 255
+
+
+ external functions Get some special Processing
+ @return true if this is an external function
+
+
+ Used to detect whether a function name found in a formula is one of the standard excel functions
+
+ The name matching is case insensitive.
+ @return true if the name specifies a standard worksheet function,
+ false if the name should be assumed to be an external function.
+
+
+ Resolves internal function names into function indexes.
+
+ The name matching is case insensitive.
+ @return the standard worksheet function index if found, otherwise FUNCTION_INDEX_EXTERNAL
+
+
+ Addition operator PTG the "+" binomial operator. If you need more
+ explanation than that then well...We really can't help you here.
+ @author Andrew C. Oliver (acoliver@apache.org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ implementation of method from OperationsPtg
+
+
+ Common superclass of 2-D area refs
+
+
+ Title: Area 3D Ptg - 3D reference (Sheet + Area)
+ Description: Defined an area in Extern Sheet.
+ REFERENCE:
+
+ This is HSSF only, as it matches the HSSF file format way of
+ referring to the sheet by an extern index. The XSSF equivalent
+ is {@link Area3DPxg}
+
+
+ @return text representation of this area reference that can be used in text
+ formulas. The sheet name will get properly delimited if required.
+
+
+ Title: XSSF Area 3D Reference (Sheet + Area)
+ Description: Defined an area in an external or different sheet.
+ REFERENCE:
+
+ This is XSSF only, as it stores the sheet / book references
+ in String form. The HSSF equivalent using indexes is {@link Area3DPtg}
+
+
+ AreaErr - handles deleted cell area references.
+
+ @author Daniel Noll (daniel at nuix dot com dot au)
+
+
+ Common interface for AreaPtg and Area3DPtg, and their
+ child classes.
+
+
+ @return the first row in the area
+
+
+ @return last row in the range (x2 in x1,y1-x2,y2)
+
+
+ @return the first column number in the area.
+
+
+ @return lastcolumn in the area
+
+
+ Specifies a rectangular area of cells A1:A4 for instance.
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Specifies a rectangular area of cells A1:A4 for instance.
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Specifies a rectangular area of cells A1:A4 for instance.
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ TODO - (May-2008) fix subclasses of AreaPtg 'AreaN~' which are used in shared formulas.
+ see similar comment in ReferencePtg
+
+
+ zero based, Unsigned 16 bit
+
+
+ zero based, Unsigned 16 bit
+
+
+ zero based, Unsigned 8 bit
+
+
+ zero based, Unsigned 8 bit
+
+
+ Sort the first and last row and columns in-place to the preferred (top left:bottom right) order
+ Note: Sort only occurs when an instance is constructed or when this method is called.
+
+ For example, $E5:B$10 becomes B5:$E$10
+
+
+ @return the first row in the area
+
+
+ @return last row in the range (x2 in x1,y1-x2,y2)
+
+
+ @return the first column number in the area.
+
+
+ @return whether or not the first row is a relative reference or not.
+
+
+ @return Isrelative first column to relative or not
+
+
+ @return lastcolumn in the area
+
+
+ @return last column and bitmask (the raw field)
+
+
+ @return last row relative or not
+
+
+ @return lastcol relative or not
+
+
+ Set the last column irrespective of the bitmasks
+
+
+ ArrayPtg - handles arrays
+
+ The ArrayPtg is a little weird, the size of the Ptg when parsing initially only
+ includes the Ptg sid and the reserved bytes. The next Ptg in the expression then follows.
+ It is only after the "size" of all the Ptgs is met, that the ArrayPtg data is actually
+ held after this. So Ptg.CreateParsedExpression keeps track of the number of
+ ArrayPtg elements and need to Parse the data upto the FORMULA record size.
+
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ The size of the plain tArray token written within the standard formula tokens
+ (not including the data which comes after all formula tokens)
+
+
+ @param values2d array values arranged in rows
+
+
+ Note - (2D) array elements are stored column by column
+ @return the index into the internal 1D array for the specified column and row
+
+
+ This size includes the size of the array Ptg plus the Array Ptg Token value size
+
+
+ Represents the initial plain tArray token (without the constant data that trails the whole
+ formula). Objects of this class are only temporary and cannot be used as {@link Ptg}s.
+ These temporary objects get converted to {@link ArrayPtg} by the
+ {@link #finishReading(LittleEndianInput)} method.
+
+
+ Read in the actual token (array) values. This occurs
+ AFTER the last Ptg in the expression.
+ See page 304-305 of Excel97-2007BinaryFileFormat(xls)Specification.pdf
+
+
+ "Special Attributes"
+ This seems to be a Misc Stuff and Junk record. One function it serves Is
+ in SUM functions (i.e. SUM(A1:A3) causes an area PTG then an ATTR with the SUM option Set)
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ only used for tAttrChoose: table of offsets to starts of args
+
+
+ only used for tAttrChoose: offset to the tFuncVar for CHOOSE()
+
+
+ 00H = Spaces before the next token (not allowed before tParen token)
+
+
+ 01H = Carriage returns before the next token (not allowed before tParen token)
+
+
+ 02H = Spaces before opening parenthesis (only allowed before tParen token)
+
+
+ 03H = Carriage returns before opening parenthesis (only allowed before tParen token)
+
+
+ 04H = Spaces before closing parenthesis (only allowed before tParen, tFunc, and tFuncVar tokens)
+
+
+ 05H = Carriage returns before closing parenthesis (only allowed before tParen, tFunc, and tFuncVar tokens)
+
+
+ 06H = Spaces following the equality sign (only in macro sheets)
+
+
+
+ Creates the space.
+
+ a constant from SpaceType
+ The count.
+
+
+
+ Creates if.
+
+ distance (in bytes) to start of either
+ tFuncVar(IF) token (when false parameter is not present).
+
+
+
+ Creates the skip.
+
+ distance (in bytes) to position behind tFuncVar(IF) token (minus 1).
+
+
+ bool (bool)
+ Stores a (java) bool value in a formula.
+ @author Paul Krause (pkrause at soundbite dot com)
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Common baseclass for
+ tExp
+ tTbl
+ tParen
+ tNlr
+ tAttr
+ tSheet
+ tEndSheet
+
+
+ An XSSF only representation of a reference to a deleted area
+
+
+ Title: Deleted Area 3D Ptg - 3D referecnce (Sheet + Area)
+ Description: Defined a area in Extern Sheet.
+ REFERENCE:
+ @author Patrick Luby
+ @version 1.0-pre
+
+
+ Title: Deleted Reference 3D Ptg
+ Description: Defined a cell in extern sheet.
+ REFERENCE:
+ @author Patrick Luby
+ @version 1.0-pre
+
+
+ Creates new DeletedRef3DPtg
+
+
+ This PTG implements the standard binomial divide "/"
+ @author Andrew C. Oliver acoliver at apache dot org
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+
+ @author andy
+
+
+ @author Daniel Noll (daniel at nuix dot com dot au)
+
+
+ #NULL! - Intersection of two cell ranges is empty
+
+
+ #DIV/0! - Division by zero
+
+
+ #VALUE! - Wrong type of operand
+
+
+ #REF! - Illegal or deleted cell reference
+
+
+ #NAME? - Wrong function or range name
+
+
+ #NUM! - Value range overflow
+
+
+ #N/A - Argument or function not available
+
+
+ Creates new ErrPtg
+
+
+
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+ @author dmui (save existing implementation)
+
+
+ @author aviks
+ @author Jason Height (jheight at chariot dot net dot au)
+ @author Danny Mui (dmui at apache dot org) (Leftover handling)
+
+
+
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Single instance of this token for 'sum() taking a single argument'
+
+
+ Creates new function pointer from a byte array
+ usually called while reading an excel file.
+
+
+ Create a function ptg from a string tokenised by the parser
+
+
+ PTG class to implement greater or equal to
+
+ @author fred at stsci dot edu
+
+
+ Greater than operator PTG ">"
+ @author Cameron Riley (criley at ekmail.com)
+
+
+ Get the number of operands for the Less than operator
+ @return int the number of operands
+
+
+ Implementation of method from OperationsPtg
+ @param operands a String array of operands
+ @return String the Formula as a String
+
+
+ @author Daniel Noll (daniel at nuix dot com dot au)
+
+
+ Implementation of method from Ptg
+
+
+ implementation of method from OperationsPtg
+
+
+ Integer (unsigned short integer)
+ Stores an Unsigned short value (java int) in a formula
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Excel represents integers 0..65535 with the tInt token.
+ @return true if the specified value is within the range of values
+ IntPtg can represent.
+
+
+ Ptg class to implement less than or equal
+
+ @author fred at stsci dot edu
+
+
+ Less than operator PTG "<". The SID is taken from the
+ Openoffice.orgs Documentation of the Excel File Format,
+ Table 3.5.7
+ @author Cameron Riley (criley at ekmail.com)
+
+
+ the sid for the less than operator as hex
+
+
+ identifier for LESS THAN char
+
+
+ Get the number of operands for the Less than operator
+ @return int the number of operands
+
+
+ Implementation of method from OperationsPtg
+ @param operands a String array of operands
+ @return String the Formula as a String
+
+
+ @author Daniel Noll (daniel at nuix dot com dot au)
+
+
+ Creates new MemAreaPtg
+
+
+
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+ @author Daniel Noll (daniel at nuix dot com dot au)
+
+
+ Creates new MemErrPtg
+
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ Creates new function pointer from a byte array
+ usually called while Reading an excel file.
+
+
+ Missing Function Arguments
+
+ Avik Sengupta <avik at apache.org>
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Implements the standard mathmatical multiplication - *
+ @author Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ one-based index to defined name record
+
+
+ @param nameIndex zero-based index to name within workbook
+
+
+ Creates new NamePtg
+
+
+ @return zero based index to a defined name record in the LinkTable
+
+
+ A Name, be that a Named Range or a Function / User Defined
+ Function, addressed in the HSSF External Sheet style.
+
+ This is HSSF only, as it matches the HSSF file format way of
+ referring to the sheet by an extern index. The XSSF equivalent
+ is {@link NameXPxg}
+
+
+ index to REF entry in externsheet record
+
+
+ index to defined name or externname table(1 based)
+
+
+ reserved must be 0
+
+
+ @param sheetRefIndex index to REF entry in externsheet record
+ @param nameIndex index to defined name or externname table
+
+
+ A Name, be that a Named Range or a Function / User Defined
+ Function, Addressed in the HSSF External Sheet style.
+
+ This is XSSF only, as it stores the sheet / book references
+ in String form. The HSSF equivalent using indexes is {@link NameXPtg}
+
+
+ Ptg class to implement not equal
+
+ @author fred at stsci dot edu
+
+
+ Number
+ Stores a floating point value in a formula
+ value stored in a 8 byte field using IEEE notation
+ @author Avik Sengupta
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Create a NumberPtg from a byte array Read from disk
+
+
+ Create a NumberPtg from a string representation of the number
+ Number format is not checked, it is expected to be validated in the parser
+ that calls this method.
+ @param value : String representation of a floating point number
+
+
+ @author Josh Micich
+
+
+ All Operand Ptgs are classifed ('relative', 'value', 'array')
+
+
+ defines a Ptg that is an operation instead of an operand
+ @author andy
+
+
+ returns a string representation of the operations
+ the Length of the input array should equal the number returned by
+ @see #GetNumberOfOperands
+
+
+
+ The number of operands expected by the operations
+
+
+ While formula tokens are stored in RPN order and thus do not need parenthesis for
+ precedence reasons, Parenthesis tokens ARE written to Ensure that user entered
+ parenthesis are Displayed as-is on Reading back
+
+ Avik Sengupta <lists@aviksengupta.com>
+ Andrew C. Oliver (acoliver at apache dot org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Percent PTG.
+
+ @author Daniel Noll (daniel at nuix.com.au)
+
+
+
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Ptg represents a syntactic token in a formula. 'PTG' is an acronym for
+ 'parse thing'. Originally, the name referred to the single
+ byte identifier at the start of the token, but in POI, Ptg encapsulates
+ the whole formula token (initial byte + value data).
+
+
+ Ptgs are logically arranged in a tree representing the structure of the
+ Parsed formula. However, in BIFF files Ptgs are written/Read in
+ Reverse-Polish Notation order. The RPN ordering also simplifies formula
+ evaluation logic, so POI mostly accesses Ptgs in the same way.
+
+ @author andy
+ @author avik
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Reads size bytes of the input stream, to Create an array of Ptgs.
+ Extra data (beyond size) may be Read if and ArrayPtgs are present.
+
+
+ @return a distinct copy of this Ptg if the class is mutable, or the same instance
+ if the class is immutable.
+
+
+ This method will return the same result as {@link #getEncodedSizeWithoutArrayData(Ptg[])}
+ if there are no array tokens present.
+ @return the full size taken to encode the specified Ptgs
+
+
+ Used to calculate value that should be encoded at the start of the encoded Ptg token array;
+ @return the size of the encoded Ptg tokens not including any trailing array data.
+
+
+ Writes the ptgs to the data buffer, starting at the specified offset.
+
+
+ The 2 byte encode Length field is not written by this method.
+ @return number of bytes written
+
+
+ @return the encoded Length of this Ptg, including the initial Ptg type identifier byte.
+
+
+ @return false if this token is classified as 'reference', 'value', or 'array'
+
+
+ Write this Ptg to a byte array
+
+
+ return a string representation of this token alone
+
+
+ Overridden toString method to Ensure object hash is not printed.
+ This helps Get rid of gratuitous diffs when comparing two dumps
+ Subclasses may output more relevant information by overriding this method
+
+
+
+ @return the 'operand class' (REF/VALUE/ARRAY) for this Ptg
+
+
+ Debug / diagnostic method to get this token's 'operand class' type.
+ @return 'R' for 'reference', 'V' for 'value', 'A' for 'array' and '.' for base tokens
+
+
+ An XSSF only special kind of Ptg, which stores the sheet / book
+ reference in string form.
+
+
+ An XSSF only special kind of Ptg, which stores a range of
+ sheet / book references in string form.
+
+
+ @author Daniel Noll (daniel at nuix dot com dot au)
+
+
+ implementation of method from OperationsPtg
+
+
+ @author Josh Micich
+
+
+ Takes in a String representation of a cell reference and fills out the
+ numeric fields.
+
+
+ Title: Reference 3D Ptg
+ Description: Defined a cell in extern sheet.
+ REFERENCE:
+ @author Libin Roman (Vista Portal LDT. Developer)
+ @author Jason Height (jheight at chariot dot net dot au)
+ @version 1.0-pre
+
+
+ Field 2
+ - lower 8 bits is the zero based Unsigned byte column index
+ - bit 16 - IsRowRelative
+ - bit 15 - IsColumnRelative
+
+
+ Creates new AreaPtg
+
+
+ @return text representation of this cell reference that can be used in text
+ formulas. The sheet name will Get properly delimited if required.
+
+
+ Title: XSSF 3D Reference
+ Description: Defines a cell in an external or different sheet.
+ REFERENCE:
+
+ This is XSSF only, as it stores the sheet / book references
+ in String form. The HSSF equivalent using indexes is {@link Ref3DPtg}
+
+
+ RefError - handles deleted cell reference
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ RefNPtg
+ @author Jason Height (jheight at apache dot com)
+
+
+ Creates new ValueReferencePtg
+
+
+ ReferencePtg - handles references (such as A1, A2, IA4)
+ @author Andrew C. Oliver (acoliver@apache.org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Takes in a String representation of a cell reference and Fills out the
+ numeric fields.
+
+
+ ReferencePtgBase - handles references (such as A1, A2, IA4)
+ @author Andrew C. Oliver (acoliver@apache.org)
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ The row index - zero based Unsigned 16 bit value
+
+
+ Field 2
+ - lower 8 bits is the zero based Unsigned byte column index
+ - bit 16 - IsRowRelative
+ - bit 15 - IsColumnRelative
+
+
+ Takes in a String representation of a cell reference and Fills out the
+ numeric fields.
+
+
+ Returns the row number as a short, which will be
+ wrapped (negative) for values between 32769 and 65535
+
+
+ Returns the row number as an int, between 0 and 65535
+
+
+ @author Josh Micich
+
+
+ String Stores a String value in a formula value stored in the format
+ <Length 2 bytes>char[]
+
+ @author Werner Froidevaux
+ @author Jason Height (jheight at chariot dot net dot au)
+ @author Bernard Chesnoy
+
+
+ the Char (")used in formulas to delimit string literals
+
+
+ NOTE: OO doc says 16bit Length, but BiffViewer says 8 Book says something
+ totally different, so don't look there!
+
+
+ Create a StringPtg from a stream
+
+
+ Create a StringPtg from a string representation of the number Number
+ format Is not Checked, it Is expected to be Validated in the Parser that
+ calls this method.
+
+ @param value :
+ String representation of a floating point number
+
+
+
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ This ptg indicates a data table.
+ It only occurs in a FORMULA record, never in an
+ ARRAY or NAME record. When ptgTbl occurs in a
+ formula, it is the only token in the formula.
+
+ This indicates that the cell containing the
+ formula is an interior cell in a data table;
+ the table description is found in a TABLE
+ record. Rows and columns which contain input
+ values to be substituted in the table do
+ not contain ptgTbl.
+ See page 811 of the june 08 binary docs.
+
+
+ The row number of the upper left corner
+
+
+ The column number of the upper left corner
+
+
+ Unary Plus operator
+ does not have any effect on the operand
+ @author Avik Sengupta
+
+
+ implementation of method from OperationsPtg
+
+
+ Unary Plus operator
+ does not have any effect on the operand
+ @author Avik Sengupta
+
+
+ implementation of method from OperationsPtg
+
+
+ @author Glen Stampoultzis (glens at apache.org)
+
+
+ implementation of method from OperationsPtg
+
+
+
+ @author andy
+ @author Jason Height (jheight at chariot dot net dot au)
+
+
+ Creates new UnknownPtg
+
+
+ Common baseclass of all value operators.
+ Subclasses include all Unary and binary operators except for the reference operators (IntersectionPtg, RangePtg, UnionPtg)
+
+ @author Josh Micich
+
+
+ All Operator Ptgs are base tokens (i.e. are not RVA classified)
+
+
+ Encapsulates logic to convert shared formulaa into non shared equivalent
+
+
+ Creates a non shared formula from the shared formula counterpart, i.e.
+ Converts the shared formula into the equivalent {@link org.apache.poi.ss.formula.ptg.Ptg} array that it would have,
+ were it not shared.
+
+ @param ptgs parsed tokens of the shared formula
+ @param formulaRow
+ @param formulaColumn
+
+
+ Formats sheet names for use in formula expressions.
+
+ @author Josh Micich
+
+
+ Used to format sheet names as they would appear in cell formula expressions.
+ @return the sheet name UnChanged if there is no need for delimiting. Otherwise the sheet
+ name is enclosed in single quotes ('). Any single quotes which were already present in the
+ sheet name will be converted to double single quotes ('').
+
+
+ Convenience method for when a StringBuilder is already available
+
+ @param out - sheet name will be Appended here possibly with delimiting quotes
+
+
+ @return true if the presence of the specified Char in a sheet name would
+ require the sheet name to be delimited in formulas. This includes every non-alphanumeric
+ Char besides Underscore '_'.
+
+
+ Used to decide whether sheet names like 'AB123' need delimiting due to the fact that they
+ look like cell references.
+
+ This code is currently being used for translating formulas represented with Ptg
+ tokens into human readable text form. In formula expressions, a sheet name always has a
+ trailing '!' so there is little chance for ambiguity. It doesn't matter too much what this
+ method returns but it is worth noting the likely consumers of these formula text strings:
+
+ - POI's own formula parser
+ - Visual reading by human
+ - VBA automation entry into Excel cell contents e.g. ActiveCell.Formula = "=c64!A1"
+ - Manual entry into Excel cell contents
+ - Some third party formula parser
+
+
+ At the time of writing, POI's formula parser tolerates cell-like sheet names in formulas
+ with or without delimiters. The same goes for Excel(2007), both manual and automated entry.
+
+ For better or worse this implementation attempts to replicate Excel's formula renderer.
+ Excel uses range checking on the apparent 'row' and 'column' components. Note however that
+ the maximum sheet size varies across versions.
+ @see org.apache.poi.hssf.util.CellReference
+
+
+ Note - this method assumes the specified rawSheetName has only letters and digits. It
+ cannot be used to match absolute or range references (using the dollar or colon char).
+
+ Some notable cases:
+
+ | Input | Result | Comments |
+ | "A1" | true | |
+ | "a111" | true | |
+ | "AA" | false | |
+ | "aa1" | true | |
+ | "A1A" | false | |
+ | "A1A1" | false | |
+ | "A$1:$C$20" | false | Not a plain cell reference |
+ | "SALES20080101" | true |
+ Still needs delimiting even though well out of range |
+
+
+ @return true if there is any possible ambiguity that the specified rawSheetName
+ could be interpreted as a valid cell name.
+
+
+ Evaluator for returning cells or sheets for a range of sheets
+
+
+
+
+ @author Josh Micich
+
+
+ @return whether cell at rowIndex and columnIndex is a subtotal
+ @see org.apache.poi.ss.formula.functions.Subtotal
+
+
+ Optional Extension to the likes of {@link AreaEval} and
+ {@link NPOI.SS.Formula.Eval.AreaEvalBase},
+ which allows for looking up 3D (sheet+row+column) Evaluations
+
+
+ @param sheetIndex sheet index (zero based)
+ @param rowIndex relative row index (zero based)
+ @param columnIndex relative column index (zero based)
+ @return element at the specified row and column position
+
+
+ Common interface of {@link AreaEval} and {@link org.apache.poi.ss.formula.eval.AreaEvalBase},
+ for 2D (row+column) evaluations
+
+
+ @param rowIndex relative row index (zero based)
+ @param columnIndex relative column index (zero based)
+ @return element at the specified row and column position
+
+
+ @return true if the area has just a single row, this also includes
+ the trivial case when the area has just a single cell.
+
+
+ @return true if the area has just a single column, this also includes
+ the trivial case when the area has just a single cell.
+
+
+ @param rowIndex relative row index (zero based)
+ @return a single row {@link TwoDEval}
+
+
+ @param columnIndex relative column index (zero based)
+ @return a single column {@link TwoDEval}
+
+
+ @return true if the cell at row and col is a subtotal
+
+
+ Collects Add-in libraries and VB macro functions toGether into one UDF Finder
+
+ @author PUdalau
+
+
+
+ Returns executor by specified name.
+
+ Name of function.
+ Function executor. null if not found
+
+
+
+ Add a new toolpack
+
+
+
+
+ Default UDF Finder - for Adding your own user defined functions.
+
+ @author PUdalau
+
+
+ A UDFFinder that can retrieve functions both by name and by fake index.
+
+ @author Yegor Kozlov
+
+
+ Common interface for "Add-in" libraries and user defined function libraries.
+
+ @author PUdalau
+
+
+ Returns executor by specified name. Returns null if the function name is unknown.
+
+ @param name Name of function.
+ @return Function executor.
+
+
+ Should be implemented by any {@link Ptg} subclass that needs a workbook To render its formula.
+
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ Evaluates formula cells.
+
+ For performance reasons, this class keeps a cache of all previously calculated intermediate
+ cell values. Be sure To call {@link #ClearCache()} if any workbook cells are Changed between
+ calls To evaluate~ methods on this class.
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ also for debug use. Used in ToString methods
+
+
+ Should be called whenever there are Changes To input cells in the evaluated workbook.
+ Failure To call this method after changing cell values will cause incorrect behaviour
+ of the evaluate~ methods of this class
+
+
+ Should be called To tell the cell value cache that the specified (value or formula) cell
+ Has Changed.
+
+
+ Should be called To tell the cell value cache that the specified cell Has just been
+ deleted.
+
+
+ Case-insensitive.
+ @return -1 if sheet with specified name does not exist
+
+
+ Evaluate a formula outside a cell value, e.g. conditional format rules or data validation expressions
+
+ @param formula to evaluate
+ @param ref defines the optional sheet and row/column base for the formula, if it is relative
+ @return value
+
+
+ @return never null, never {@link BlankEval}
+
+
+ Adds the current cell reference to the exception for easier debugging.
+ Would be nice to get the formula text as well, but that seems to require
+ too much digging around and casting to get the FormulaRenderingWorkbook.
+
+
+ Gets the value from a non-formula cell.
+ @param cell may be null
+ @return {@link BlankEval} if cell is null or blank, never null
+
+
+ whether print detailed messages about the next formula evaluation
+
+
+ Calculates the number of tokens that the evaluator should skip upon reaching a tAttrSkip.
+
+ @return the number of tokens (starting from startIndex+1) that need to be skipped
+ to achieve the specified distInBytes skip distance.
+
+
+ Dereferences a single value from any AreaEval or RefEval evaluation result.
+ If the supplied evaluationResult is just a plain value, it is returned as-is.
+ @return a NumberEval, StringEval, BoolEval,
+ BlankEval or ErrorEval. Never null.
+
+
+ Dereferences a single value from any AreaEval or RefEval evaluation
+ result. If the supplied evaluationResult is just a plain value, it is
+ returned as-is.
+
+ @return a {@link NumberEval}, {@link StringEval}, {@link BoolEval}, or
+ {@link ErrorEval}. Never null. {@link BlankEval} is
+ converted to {@link NumberEval#ZERO}
+
+
+ returns an appropriate Eval impl instance for the Ptg. The Ptg must be
+ one of: Area3DPtg, AreaPtg, ReferencePtg, Ref3DPtg, IntPtg, NumberPtg,
+ StringPtg, BoolPtg
special Note: OperationPtg subtypes cannot be
+ passed here!
+
+
+ Used by the lazy ref evals whenever they need To Get the value of a contained cell.
+
+
+ Whether to ignore missing references to external workbooks and
+ use cached formula results in the main workbook instead.
+
+ In some cases exetrnal workbooks referenced by formulas in the main workbook are not avaiable.
+ With this method you can control how POI handles such missing references:
+
+ - by default ignoreMissingWorkbooks=false and POI throws {@link WorkbookNotFoundException}
+ if an external reference cannot be resolved
+ - if ignoreMissingWorkbooks=true then POI uses cached formula result
+ that already exists in the main workbook
+
+
+ @param ignore whether to ignore missing references to external workbooks
+ @see Bug 52575 for details
+
+
+ Return a collection of functions that POI can evaluate
+
+ @return names of functions supported by POI
+
+
+ Return a collection of functions that POI does not support
+
+ @return names of functions NOT supported by POI
+
+
+ Register a ATP function in runtime.
+
+ @param name the function name
+ @param func the functoin to register
+ @throws IllegalArgumentException if the function is unknown or already registered.
+ @since 3.8 beta6
+
+
+ Register a function in runtime.
+
+ @param name the function name
+ @param func the functoin to register
+ @throws IllegalArgumentException if the function is unknown or already registered.
+ @since 3.8 beta6
+
+
+ Provides access to a {@link WorkbookEvaluator}, eg for use with
+ {@link CollaboratingWorkbooksEnvironment}
+
+ For POI internal use only
+
+
+ Provide the underlying WorkbookEvaluator
+
+
+ This enum allows spReadsheets from multiple Excel versions to be handled by the common code.
+ Properties of this enum correspond to attributes of the spReadsheet that are easily
+ discernable to the user. It is not intended to deal with low-level issues like file formats.
+
+
+ @author Josh Micich
+ @author Yegor Kozlov
+
+
+ Excel97 format aka BIFF8
+
+ - The total number of available columns is 256 (2^8)
+ - The total number of available rows is 64k (2^16)
+ - The maximum number of arguments to a function is 30
+ - Number of conditional format conditions on a cell is 3
+ - Length of text cell contents is unlimited
+ - Length of text cell contents is 32767
+
+
+
+ Excel2007
+
+
+ - The total number of available columns is 16K (2^14)
+ - The total number of available rows is 1M (2^20)
+ - The maximum number of arguments to a function is 255
+ - Number of conditional format conditions on a cell is unlimited
+ (actually limited by available memory in Excel)
+ - Length of text cell contents is unlimited
+
+
+
+ @return the default file extension of spReadsheet
+
+
+ @return the maximum number of usable rows in each spReadsheet
+
+
+ @return the last (maximum) valid row index, equals to GetMaxRows() - 1
+
+
+ @return the maximum number of usable columns in each spReadsheet
+
+
+ @return the last (maximum) valid column index, equals to GetMaxColumns() - 1
+
+
+ @return the maximum number arguments that can be passed to a multi-arg function (e.g. COUNTIF)
+
+
+
+ @return the maximum number of conditional format conditions on a cell
+
+
+
+ @return the last valid column index in a ALPHA-26 representation
+ (IV or XFD).
+
+
+ @return the maximum number of cell styles per spreadsheet
+
+
+ @return the maximum length of a text cell
+
+
+ Represents autofiltering for the specified worksheet.
+
+
+ Filtering data is a quick and easy way to find and work with a subset of data in a range of cells or table.
+ For example, you can filter to see only the values that you specify, filter to see the top or bottom values,
+ or filter to quickly see duplicate values.
+
+
+ TODO YK: For now (Aug 2010) POI only supports Setting a basic autofilter on a range of cells.
+ In future, when we support more auto-filter functions like custom criteria, sort, etc. we will add
+ corresponding methods to this interface.
+
+
+
+ No diagional border
+
+
+
+
+ Backward diagional border, from left-top to right-bottom
+
+
+
+
+ Forward diagional border, from right-top to left-bottom
+
+
+
+
+ Both forward and backward diagional border
+
+
+
+
+ The enumeration value indicating which borders to Draw in a Property Template
+
+
+
+
+ No properties defined. This can be used to remove existing properties
+ from the PropertyTemplate.
+
+
+
+
+ All borders, that is top, bottom, left and right, including interior
+ borders for the range. Does not include diagonals which are different
+ and not implemented here.
+
+
+
+
+ All inside borders. This is top, bottom, left, and right borders, but
+ restricted to the interior borders for the range. For a range of one
+ cell, this will produce no borders.
+
+
+
+
+ All outside borders. That is top, bottom, left and right borders that
+ bound the range only.
+
+
+
+
+ This is just the top border for the range. No interior borders will
+ be produced.
+
+
+
+
+ This is just the bottom border for the range. No interior borders
+ will be produced.
+
+
+
+
+ This is just the left border for the range, no interior borders will
+ be produced.
+
+
+
+
+ This is just the right border for the range, no interior borders will
+ be produced.
+
+
+
+
+ This is all horizontal borders for the range, including interior and
+ outside borders.
+
+
+
+
+ This is just the interior horizontal borders for the range.
+
+
+
+
+ This is just the outside horizontal borders for the range.
+
+
+
+
+ This is all vertical borders for the range, including interior and
+ outside borders.
+
+
+
+
+ This is just the interior vertical borders for the range.
+
+
+
+
+ This is just the outside vertical borders for the range.
+
+
+
+
+ High level representation for Border Formatting component
+ of Conditional Formatting settings
+
+
+
+
+ The enumeration value indicating the line style of a border in a cell
+
+
+
+
+ No border
+
+
+
+
+ Thin border
+
+
+
+
+ Medium border
+
+
+
+
+ dash border
+
+
+
+
+ dot border
+
+
+
+
+ Thick border
+
+
+
+
+ double-line border
+
+
+
+
+ hair-line border
+
+
+
+
+ Medium dashed border
+
+
+
+
+ dash-dot border
+
+
+
+
+ medium dash-dot border
+
+
+
+
+ dash-dot-dot border
+
+
+
+
+ medium dash-dot-dot border
+
+
+
+
+ slanted dash-dot border
+
+
+
+ Utility to identify built-in formats. The following is a list of the formats as
+ returned by this class.
+
+ 0, "General"
+ 1, "0"
+ 2, "0.00"
+ 3, "#,##0"
+ 4, "#,##0.00"
+ 5, "$#,##0_);($#,##0)"
+ 6, "$#,##0_);[Red]($#,##0)"
+ 7, "$#,##0.00);($#,##0.00)"
+ 8, "$#,##0.00_);[Red]($#,##0.00)"
+ 9, "0%"
+ 0xa, "0.00%"
+ 0xb, "0.00E+00"
+ 0xc, "# ?/?"
+ 0xd, "# ??/??"
+ 0xe, "m/d/yy"
+ 0xf, "d-mmm-yy"
+ 0x10, "d-mmm"
+ 0x11, "mmm-yy"
+ 0x12, "h:mm AM/PM"
+ 0x13, "h:mm:ss AM/PM"
+ 0x14, "h:mm"
+ 0x15, "h:mm:ss"
+ 0x16, "m/d/yy h:mm"
+
+ // 0x17 - 0x24 reserved for international and undocumented
+ 0x25, "#,##0_);(#,##0)"
+ 0x26, "#,##0_);[Red](#,##0)"
+ 0x27, "#,##0.00_);(#,##0.00)"
+ 0x28, "#,##0.00_);[Red](#,##0.00)"
+ 0x29, "_(*#,##0_);_(*(#,##0);_(* \"-\"_);_(@_)"
+ 0x2a, "_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)"
+ 0x2b, "_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)"
+ 0x2c, "_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)"
+ 0x2d, "mm:ss"
+ 0x2e, "[h]:mm:ss"
+ 0x2f, "mm:ss.0"
+ 0x30, "##0.0E+0"
+ 0x31, "@" - This is text format.
+ 0x31 "text" - Alias for "@"
+
+
+ @author Yegor Kozlov
+
+ Modified 6/17/09 by Stanislav Shor - positive formats don't need starting '('
+
+
+
+ The first user-defined number format starts at 164.
+
+
+ @return array of built-in data formats
+
+
+ Get the format string that matches the given format index
+
+ @param index of a built in format
+ @return string represented at index of format or null if there is not a built-in format at that index
+
+
+ Get the format index that matches the given format string.
+
+
+ Automatically converts "text" to excel's format string to represent text.
+
+ @param pFmt string matching a built-in format
+ @return index of format or -1 if undefined.
+
+
+ High level representation of a cell in a row of a spreadsheet.
+
+ Cells can be numeric, formula-based or string-based (text). The cell type
+ specifies this. String cells cannot conatin numbers and numeric cells cannot
+ contain strings (at least according to our model). Client apps should do the
+ conversions themselves. Formula cells have the formula string, as well as
+ the formula result, which can be numeric or string.
+
+
+ Cells should have their number (0 based) before being Added to a row.
+
+
+
+
+ zero-based column index of a column in a sheet.
+
+
+
+
+ zero-based row index of a row in the sheet that contains this cell
+
+
+
+
+ the sheet this cell belongs to
+
+
+
+
+ the row this cell belongs to
+
+
+
+
+ Set the cells type (numeric, formula or string)
+
+ If the cell currently contains a value, the value will
+ be converted to match the new type, if possible. Formatting
+ is generally lost in the process however.
+ If what you want to do is get a String value for your
+ numeric cell, stop!. This is not the way to do it.
+ Instead, for fetching the string value of a numeric or boolean
+ or date cell, use {@link DataFormatter} instead.
+
+
+
+ Set the cells type (numeric, formula or string)
+
+
+
+
+
+ Only valid for formula cells
+
+
+
+
+ Set a numeric value for the cell
+
+ the numeric value to set this cell to. For formulas we'll set the
+ precalculated value, for numerics we'll set its value. For other types we will change
+ the cell to a numeric cell and set its value.
+
+
+
+
+ Set a error value for the cell
+
+ the error value to set this cell to. For formulas we'll set the
+ precalculated value , for errors we'll set its value. For other types we will change
+ the cell to an error cell and set its value.
+
+
+
+
+ Converts the supplied date to its equivalent Excel numeric value and Sets that into the cell.
+
+ the numeric value to set this cell to. For formulas we'll set the
+ precalculated value, for numerics we'll set its value. For other types we will change
+ the cell to a numerics cell and set its value.
+
+
+
+
+ Set a rich string value for the cell.
+
+ value to set the cell to. For formulas we'll set the formula
+ string, for String cells we'll set its value. For other types we will
+ change the cell to a string cell and set its value.
+ If value is null then we will change the cell to a Blank cell.
+
+
+
+
+ Set a string value for the cell.
+
+ value to set the cell to. For formulas we'll set the formula
+ string, for String cells we'll set its value. For other types we will
+ change the cell to a string cell and set its value.
+ If value is null then we will change the cell to a blank cell.
+
+
+
+
+ Copy the cell to the target index. If the target cell exists, a new cell will be inserted before the existing cell.
+
+ target index
+ the new copied cell object
+
+
+
+ Return a formula for the cell
+
+ if the cell type returned by GetCellType() is not CELL_TYPE_FORMULA
+
+
+
+ Removes formula, if any.
+
+ If cell was blank, leaves it as is.
+ If it is a part of an array formula group, blanks the cell.
+ If has a regular formula, removes the formula preserving the "cached" value.
+
+
+
+
+ Sets formula for this cell.
+
+ the formula to Set, e.g. "SUM(C4:E4)".
+
+
+
+ Get the value of the cell as a number.
+
+ if the cell type returned by GetCellType() is CELL_TYPE_STRING
+ if the cell value isn't a parsable double
+
+
+
+ Get the value of the cell as a date. For non-Numeric cells including blank cell we return a null.
+
+ if the cell type returned by GetCellType() is CELL_TYPE_STRING
+ if the cell value isn't a parsable double
+
+
+
+ Get the value of the cell RichTextString
+
+
+
+
+ Get the value of the cell as an error code.
+
+
+
+
+ Get the value of the cell as a string
+
+
+
+
+ Set a bool value for the cell
+
+
+
+
+
+ Get the value of the cell as a bool.
+
+
+
+
+ get or set the cell's style.
+ If set the style for the cell. The style should be an CellStyle created/retreived from the Workbook.
+ To change the style of a cell without affecting other cells that use the same style,
+ use CellUtil#setCellStyleProperties
+
+
+
+
+ Sets this cell as the active cell for the worksheet
+
+
+
+ Gets the address of this cell
+
+ @return A1 style address of this cell
+ @since 3.14beta2
+
+
+
+ comment associated with this cell
+
+
+
+
+ Removes the comment for this cell, if there is one.
+
+
+
+
+ hyperlink associated with this cell
+
+
+
+
+ Removes the hyperlink for this cell, if there is one.
+
+
+
+
+ Only valid for array formula cells
+
+ range of the array formula group that the cell belongs to.
+
+
+
+ if this cell is part of group of cells having a common array formula.
+
+
+
+
+ Only valid for formula cells
+
+ one of (, ,
+ , ) depending
+ on the cached value of the formula
+
+
+ @since POI 3.15 beta 3
+ Will be renamed to getCachedFormulaResultType() when we make the CellType enum transition in POI 4.0. See bug 59791.
+
+
+
+ Default CellCopyPolicy, uses default policy
+ For custom CellCopyPolicy, use {@link Builder} class
+
+
+ Copy constructor
+
+ @param other policy to copy
+
+
+ Builder class for CellCopyPolicy
+
+
+ @return the copyCellValue
+
+
+ @return the copyCellStyle
+
+
+ @return the copyCellFormula
+
+
+ @return the copyHyperlink
+
+
+ @return the mergeHyperlink
+
+
+ @return the copyRowHeight
+
+
+ If condenseRows is true, a discontinuities in srcRows will be Removed when copied to destination
+ For example:
+ Sheet.CopyRows({Row(1), Row(2), Row(5)}, 11, policy) results in rows 1, 2, and 5
+ being copied to rows 11, 12, and 13 if condenseRows is True, or rows 11, 11, 15 if condenseRows is false
+ @return the condenseRows
+
+
+ @return the copyColumnWidth
+
+
+ @return the copyMergedRegions
+
+
+ Gets the number of cells in this range.
+ @return height * width
+
+
+ @return the text format of this range. Single cell ranges are formatted
+ like single cell references (e.g. 'A1' instead of 'A1:A1').
+
+
+ @return the cell at relative coordinates (0,0). Never null.
+
+
+ @param relativeRowIndex must be between 0 and height-1
+ @param relativeColumnIndex must be between 0 and width-1
+ @return the cell at the specified coordinates. Never null.
+
+
+ @return a flattened array of all the cells in this {@link CellRange}
+
+
+ @return a 2-D array of all the cells in this {@link CellRange}. The first
+ array dimension is the row index (values 0...height-1)
+ and the second dimension is the column index (values 0...width-1)
+
+
+
+ the Cell should be auto-sized to shrink to fit if the text is too long
+
+
+
+ get the index within the Workbook (sequence within the collection of ExtnededFormat objects)
+ @return unique index number of the underlying record this style represents (probably you don't care
+ unless you're comparing which one is which)
+
+
+ get the index of the format
+ @see DataFormat
+
+
+ Get the format string
+
+
+ set the font for this style
+ @param font a font object Created or retreived from the Workbook object
+ @see Workbook#CreateFont()
+ @see Workbook#GetFontAt(short)
+
+
+ Gets the index of the font for this style
+ @see Workbook#GetFontAt(short)
+
+
+ get whether the cell's using this style are to be hidden
+ @return hidden - whether the cell using this style should be hidden
+
+
+ get whether the cell's using this style are to be locked
+ @return hidden - whether the cell using this style should be locked
+
+
+
+ Turn on or off "Quote Prefix" or "123 Prefix" for the style,
+ which is used to tell Excel that the thing which looks like
+ a number or a formula shouldn't be treated as on.
+ Turning this on is somewhat (but not completely, see {@link IgnoredErrorType})
+ like prefixing the cell value with a ' in Excel
+
+
+
+ get the type of horizontal alignment for the cell
+ @return align - the type of alignment
+ @see #ALIGN_GENERAL
+ @see #ALIGN_LEFT
+ @see #ALIGN_CENTER
+ @see #ALIGN_RIGHT
+ @see #ALIGN_FILL
+ @see #ALIGN_JUSTIFY
+ @see #ALIGN_CENTER_SELECTION
+
+
+ get whether the text should be wrapped
+ @return wrap text or not
+
+
+ get the type of vertical alignment for the cell
+ @return align the type of alignment
+ @see #VERTICAL_TOP
+ @see #VERTICAL_CENTER
+ @see #VERTICAL_BOTTOM
+ @see #VERTICAL_JUSTIFY
+
+
+ get the degree of rotation for the text in the cell
+
+ Note: HSSF uses values from -90 to 90 degrees, whereas XSSF
+ uses values from 0 to 180 degrees. The implementations of this method will map between these two value-ranges
+ accordingly, however the corresponding getter is returning values in the range mandated by the current type
+ of Excel file-format that this CellStyle is applied to.
+
+
+ @return rotation degrees (between -90 and 90 degrees)
+
+
+ get the number of spaces to indent the text in the cell
+ @return indent - number of spaces
+
+
+ get the type of border to use for the left border of the cell
+ @return border type
+ @see #BORDER_NONE
+ @see #BORDER_THIN
+ @see #BORDER_MEDIUM
+ @see #BORDER_DASHED
+ @see #BORDER_DOTTED
+ @see #BORDER_THICK
+ @see #BORDER_DOUBLE
+ @see #BORDER_HAIR
+ @see #BORDER_MEDIUM_DASHED
+ @see #BORDER_DASH_DOT
+ @see #BORDER_MEDIUM_DASH_DOT
+ @see #BORDER_DASH_DOT_DOT
+ @see #BORDER_MEDIUM_DASH_DOT_DOT
+ @see #BORDER_SLANTED_DASH_DOT
+
+
+ get the type of border to use for the right border of the cell
+ @return border type
+ @see #BORDER_NONE
+ @see #BORDER_THIN
+ @see #BORDER_MEDIUM
+ @see #BORDER_DASHED
+ @see #BORDER_DOTTED
+ @see #BORDER_THICK
+ @see #BORDER_DOUBLE
+ @see #BORDER_HAIR
+ @see #BORDER_MEDIUM_DASHED
+ @see #BORDER_DASH_DOT
+ @see #BORDER_MEDIUM_DASH_DOT
+ @see #BORDER_DASH_DOT_DOT
+ @see #BORDER_MEDIUM_DASH_DOT_DOT
+ @see #BORDER_SLANTED_DASH_DOT
+
+
+ get the type of border to use for the top border of the cell
+ @return border type
+ @see #BORDER_NONE
+ @see #BORDER_THIN
+ @see #BORDER_MEDIUM
+ @see #BORDER_DASHED
+ @see #BORDER_DOTTED
+ @see #BORDER_THICK
+ @see #BORDER_DOUBLE
+ @see #BORDER_HAIR
+ @see #BORDER_MEDIUM_DASHED
+ @see #BORDER_DASH_DOT
+ @see #BORDER_MEDIUM_DASH_DOT
+ @see #BORDER_DASH_DOT_DOT
+ @see #BORDER_MEDIUM_DASH_DOT_DOT
+ @see #BORDER_SLANTED_DASH_DOT
+
+
+ get the type of border to use for the bottom border of the cell
+ @return border type
+ @see #BORDER_NONE
+ @see #BORDER_THIN
+ @see #BORDER_MEDIUM
+ @see #BORDER_DASHED
+ @see #BORDER_DOTTED
+ @see #BORDER_THICK
+ @see #BORDER_DOUBLE
+ @see #BORDER_HAIR
+ @see #BORDER_MEDIUM_DASHED
+ @see #BORDER_DASH_DOT
+ @see #BORDER_MEDIUM_DASH_DOT
+ @see #BORDER_DASH_DOT_DOT
+ @see #BORDER_MEDIUM_DASH_DOT_DOT
+ @see #BORDER_SLANTED_DASH_DOT
+
+
+ get the color to use for the left border
+
+
+ get the color to use for the left border
+ @return the index of the color defInition
+
+
+ get the color to use for the top border
+ @return hhe index of the color defInition
+
+
+ get the color to use for the left border
+ @return the index of the color defInition
+
+
+ get the fill pattern (??) - set to 1 to fill with foreground color
+ @return fill pattern
+
+
+ get the background fill color
+ @return fill color
+
+
+ get the foreground fill color
+ @return fill color
+
+
+ Clones all the style information from another
+ CellStyle, onto this one. This
+ CellStyle will then have all the same
+ properties as the source, but the two may
+ be edited independently.
+ Any stylings on this CellStyle will be lost!
+
+ The source CellStyle could be from another
+ Workbook if you like. This allows you to
+ copy styles from one Workbook to another.
+
+ However, both of the CellStyles will need
+ to be of the same type (HSSFCellStyle or
+ XSSFCellStyle)
+
+
+
+ Gets or sets the color to use for the diagional border
+
+ The index of the color definition.
+
+
+
+ Gets or sets the line type to use for the diagional border
+
+ The line type.
+
+
+
+ Gets or sets the type of diagional border
+ .
+ The border diagional type.
+
+
+ Gets the color object representing the current
+ background fill, resolving indexes using
+ the supplied workbook.
+ This will work for both indexed and rgb
+ defined colors.
+
+
+ Gets the color object representing the current
+ foreground fill, resolving indexes using
+ the supplied workbook.
+ This will work for both indexed and rgb
+ defined colors.
+
+
+ Mimics the 'data view' of a cell. This allows formula Evaluator
+ to return a CellValue instead of precasting the value to String
+ or Number or bool type.
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+
+
+ @return Returns the boolValue.
+
+
+ @return Returns the numberValue.
+
+
+ @return Returns the stringValue.
+
+
+ @return Returns the cellType.
+
+
+ @return Returns the errorValue.
+
+
+ High level representation of a chart.
+
+ @author Roman Kashitsyn
+
+
+ @return an appropriate ChartDataFactory implementation
+
+
+ @return an appropriate ChartAxisFactory implementation
+
+
+ @return chart legend instance
+
+
+ Delete current chart legend.
+
+
+ @return list of all chart axis
+
+
+ Plots specified data on the chart.
+
+ @param data a data to plot
+
+
+
+ Data for an Area Chart
+
+
+
+
+ Adds the series.
+
+ The categories data source.
+ The values data source.
+ Created series.
+
+
+
+ Return list of all series.
+
+
+
+
+ Return data source used for category axis data.
+
+
+
+
+ Return data source used for value axis.
+
+
+
+ Specifies the possible crossing states of an axis.
+
+ @author Roman Kashitsyn
+
+
+ Specifies the value axis shall cross the category axis
+ between data markers.
+
+
+ Specifies the value axis shall cross the category axis at
+ the midpoint of a category.
+
+
+ Specifies the possible crossing points for an axis.
+
+ @author Roman Kashitsyn
+
+
+ The category axis crosses at the zero point of the value axis (if
+ possible), or the minimum value (if the minimum is greater than zero) or
+ the maximum (if the maximum is less than zero).
+
+
+ The axis crosses at the maximum value.
+
+
+ Axis crosses at the minimum value of the chart.
+
+
+ Specifies the possible ways to place a picture on a data point, series, wall, or floor.
+
+ @author Roman Kashitsyn
+
+
+ Specifies that the values on the axis shall be reversed
+ so they go from maximum to minimum.
+
+
+ Specifies that the axis values shall be in the usual
+ order, minimum to maximum.
+
+
+ Enumeration of all possible axis positions.
+
+ @author Roman Kashitsyn
+
+
+
+ Data for a Bar Chart
+
+
+
+
+
+
+ Adds the series.
+
+ The categories data source.
+ The values data source.
+ Created series.
+
+
+ @return list of all series.
+
+
+ @return data source used for category axis data.
+
+
+ @return data source used for value axis.
+
+
+ High level representation of chart axis.
+
+ @author Roman Kashitsyn
+
+
+ @return axis id
+
+
+ get or set axis position
+
+
+ get or set axis number format
+
+
+ @return true if log base is defined, false otherwise
+
+
+ @param logBase a number between 2 and 1000 (inclusive)
+ @return axis log base or 0.0 if not Set
+ @throws ArgumentException if log base not within allowed range
+
+
+ @return true if minimum value is defined, false otherwise
+
+
+ get or set axis minimum
+ 0.0 if not Set
+
+
+ @return true if maximum value is defined, false otherwise
+
+
+ get or set axis maximum
+ 0.0 if not Set
+
+
+ get or set axis orientation
+
+
+ get or set axis cross type
+
+
+ Declare this axis cross another axis.
+ @param axis that this axis should cross
+
+
+ @return visibility of the axis.
+
+
+ @return major tick mark.
+
+
+ @return minor tick mark.
+
+
+
+ A factory for different chart axis.
+
+ @author Roman Kashitsyn
+
+
+
+ returns new value axis
+
+
+
+
+
+
+ A base for all chart data types.
+
+
+ @author Roman Kashitsyn
+
+
+
+
+ Fills a chart with data specified by implementation.
+
+ a chart to fill in
+ chart axis to use
+
+
+
+ A factory for different chart data types.
+
+
+ @author Roman Kashitsyn
+
+
+
+
+ returns an appropriate ScatterChartData instance
+
+
+
+
+ Return number of points contained by data source.
+
+ @return number of points contained by data source
+
+
+ Returns point value at specified index.
+
+ @param index index to value from
+ @return point value at specified index.
+ @throws {@code IndexOutOfBoundsException} if index
+ parameter not in range {@code 0 <= index <= pointCount}
+
+
+ Returns {@code true} if charts data source is valid cell range.
+
+ @return {@code true} if charts data source is valid cell range
+
+
+ Returns {@code true} if data source points should be treated as numbers.
+
+ @return {@code true} if data source points should be treated as numbers
+
+
+ Returns formula representation of the data source. It is only applicable
+ for data source that is valid cell range.
+
+ @return formula representation of the data source
+ @throws {@code UnsupportedOperationException} if the data source is not a
+ reference.
+
+
+
+ High level representation of chart legend.
+
+ @author Roman Kashitsyn
+
+
+
+ legend position
+
+
+
+
+
+ If true the legend is positioned over the chart area otherwise
+ the legend is displayed next to it.
+ Default is no overlay.
+
+
+
+ Sets the title of the series as a string literal.
+
+ @param title
+
+
+ Sets the title of the series as a cell reference.
+
+ @param titleReference
+
+
+ @return title as string literal.
+
+
+ @return title as cell reference.
+
+
+ @return title type.
+
+
+
+ Data for a Column Chart
+
+
+
+
+ Adds the series.
+
+ The categories data source.
+ The values data source.
+ Created series.
+
+
+
+ Returns list of all series.
+
+
+
+
+ Return data source used for category axis data.
+
+
+
+
+ Return data source used for value axis.
+
+
+
+
+ Specifies the possible ways to store a chart element's position.
+
+
+ @author Roman Kashitsyn
+
+
+
+
+ Specifies that the Width or Height shall be interpreted as the Right or Bottom of the chart element.
+
+
+
+
+ Specifies that the Width or Height shall be interpreted as the width or Height of the chart element.
+
+
+
+
+ Specifies whether to layout the plot area by its inside (not including axis
+ and axis labels) or outside (including axis and axis labels).
+
+
+ @author Roman Kashitsyn
+
+
+
+
+ Specifies that the plot area size shall determine the size of the plot area, not including the tick marks and axis labels.
+
+
+
+
+ Specifies that the plot area size shall determine the
+ size of the plot area, the tick marks, and the axis
+ labels.
+
+
+
+
+ Enumeration of all possible chart legend positions.
+
+
+ @author Roman Kashitsyn
+
+
+
+
+ Data for a Line Chart
+
+
+
+
+
+ @return list of all series.
+
+
+ @return data source used for category axis data.
+
+
+ @return data source used for value axis.
+
+
+ High level representation of chart element manual layout.
+
+ @author Roman Kashitsyn
+
+
+ Sets the layout target.
+ @param target new layout target.
+
+
+ Returns current layout target.
+ @return current layout target
+
+
+ Sets the x-coordinate layout mode.
+ @param mode new x-coordinate layout mode.
+
+
+ Returns current x-coordinnate layout mode.
+ @return current x-coordinate layout mode.
+
+
+ Sets the y-coordinate layout mode.
+ @param mode new y-coordinate layout mode.
+
+
+ Returns current y-coordinate layout mode.
+ @return current y-coordinate layout mode.
+
+
+ Returns the x location of the chart element.
+ @return the x location (left) of the chart element or 0.0 if
+ not Set.
+
+
+ Specifies the x location (left) of the chart element as a
+ fraction of the width of the chart. If Left Mode is Factor,
+ then the position is relative to the default position for the
+ chart element.
+
+
+ Returns current y location of the chart element.
+ @return the y location (top) of the chart element or 0.0 if not
+ Set.
+
+
+ Specifies the y location (top) of the chart element as a
+ fraction of the height of the chart. If Top Mode is Factor,
+ then the position is relative to the default position for the
+ chart element.
+
+
+ Specifies how to interpret the Width element for this manual
+ layout.
+ @param mode new width layout mode of this manual layout.
+
+
+ Returns current width mode of this manual layout.
+ @return width mode of this manual layout.
+
+
+ Specifies how to interpret the Height element for this manual
+ layout.
+ @param mode new height mode of this manual layout.
+
+
+ Returns current height mode of this
+ @return height mode of this manual layout.
+
+
+ Specifies the width (if Width Mode is Factor) or right (if
+ Width Mode is Edge) of the chart element as a fraction of the
+ width of the chart.
+ @param ratio a fraction of the width of the chart.
+
+
+ Returns current fraction of the width of the chart.
+ @return fraction of the width of the chart or 0.0 if not Set.
+
+
+ Specifies the height (if Height Mode is Factor) or bottom (if
+ Height Mode is edge) of the chart element as a fraction of the
+ height of the chart.
+ @param ratio a fraction of the height of the chart.
+
+
+ Returns current fraction of the height of the chart.
+ @return fraction of the height of the chart or 0.0 if not Set.
+
+
+ Abstraction of chart element that can be positioned with manual
+ layout.
+
+ @author Roman Kashitsyn
+
+
+ Returns manual layout for the chart element.
+ @return manual layout for the chart element.
+
+
+
+ Data for a Pie Chart
+
+
+
+
+ Adds the series.
+
+ The categories data source.
+ The values data source.
+ Created series.
+
+
+
+ Return list of all series.
+
+
+
+
+ Return data source used for category axis data.
+
+
+
+
+ Return data source used for value axis.
+
+
+
+ Data for a Scatter Chart
+
+
+ @param xs data source to be used for X axis values
+ @param ys data source to be used for Y axis values
+ @return a new scatter charts series
+
+
+ @return list of all series
+
+
+ Represents scatter charts serie.
+ @author Roman Kashitsyn
+
+
+ @return data source used for X axis values
+
+
+ @return data source used for Y axis values
+
+
+ @author Roman Kashitsyn
+
+
+ @return cross between type
+
+
+ @param crossBetween cross between type
+
+
+ Move and Resize With Anchor Cells
+
+ Specifies that the current drawing shall move and
+ resize to maintain its row and column anchors (i.e. the
+ object is anchored to the actual from and to row and column)
+
+
+
+ Move With Cells but Do Not Resize
+
+ Specifies that the current drawing shall move with its
+ row and column (i.e. the object is anchored to the
+ actual from row and column), but that the size shall remain absolute.
+
+
+ If Additional rows/columns are Added between the from and to locations of the drawing,
+ the drawing shall move its to anchors as needed to maintain this same absolute size.
+
+
+
+ Do Not Move or Resize With Underlying Rows/Columns
+
+ Specifies that the current start and end positions shall
+ be maintained with respect to the distances from the
+ absolute start point of the worksheet.
+
+
+ If Additional rows/columns are Added before the
+ drawing, the drawing shall move its anchors as needed
+ to maintain this same absolute position.
+
+
+
+ A client anchor is attached to an excel worksheet. It anchors against a
+ top-left and bottom-right cell.
+
+ @author Yegor Kozlov
+
+
+ Returns the column (0 based) of the first cell.
+
+ @return 0-based column of the first cell.
+
+
+ Returns the column (0 based) of the second cell.
+
+ @return 0-based column of the second cell.
+
+
+ Returns the row (0 based) of the first cell.
+
+ @return 0-based row of the first cell.
+
+
+ Returns the row (0 based) of the second cell.
+
+ @return 0-based row of the second cell.
+
+
+ Returns the x coordinate within the first cell
+
+ @return the x coordinate within the first cell
+
+
+ Returns the y coordinate within the first cell
+
+ @return the y coordinate within the first cell
+
+
+ Sets the y coordinate within the second cell
+
+ @return the y coordinate within the second cell
+
+
+ Returns the x coordinate within the second cell
+
+ @return the x coordinate within the second cell
+
+
+ s the anchor type
+
+ 0 = Move and size with Cells, 2 = Move but don't size with cells, 3 = Don't move or size with cells.
+
+ @return the anchor type
+ @see #MOVE_AND_RESIZE
+ @see #MOVE_DONT_RESIZE
+ @see #DONT_MOVE_AND_RESIZE
+
+
+ High level representation for the Color Scale / Colour Scale /
+ Color Gradient Formatting component of Conditional Formatting Settings
+
+
+
+ get or sets the list of colours that are interpolated
+ between.The number must match {@link #getNumControlPoints()}
+
+
+ Gets the list of thresholds
+
+
+ Creates a new, empty Threshold
+
+
+
+ High level representation of a column of a spreadsheet.
+
+
+
+
+ Use this to create new cells within the column and return it.
+ The cell that is returned is a . The type can be Changed
+ either through calling or .
+
+ the row number this cell represents
+ a high level representation of the Created cell
+ if columnIndex is less than 0 or greater than 16384,
+ the maximum number of columns supported by the SpreadsheetML format(.xlsx)
+
+
+
+ Use this to create new cells within the column and return it.
+
+ the row number this cell represents
+ the cell's data type
+ a high level representation of the Created cell.
+ if columnIndex is less than 0 or greater than 16384,
+ the maximum number of columns supported by the SpreadsheetML format(.xlsx)
+
+
+
+ Remove the Cell from this column.
+
+ the cell to remove
+
+
+
+
+ Get column number this column represents
+
+ the column number (0 based)
+
+
+
+ Returns the cell at the given (0 based) index,
+ with the from the parent Workbook.
+
+
+ the cell at the given (0 based) index
+
+
+
+ Returns the cell at the given (0 based) index, with the specified
+
+
+
+ the cell at the given (0 based) index
+ if cellnum is less than 0 or the specified MissingCellPolicy is invalid
+
+
+
+ Get the number of the first cell Contained in this column.
+
+ short representing the first logical cell in the column,
+ or -1 if the column does not contain any cells.
+
+
+
+ Gets the index of the last cell Contained in this column PLUS ONE. The result also
+ happens to be the 1-based column number of the last cell. This value can be used as a
+ standard upper bound when iterating over cells:
+
+ short representing the last logical cell in the column PLUS ONE,
+ or -1 if the column does not contain any cells.
+
+
+
+ Gets the number of defined cells (NOT number of cells in the actual column!).
+ That is to say if only rows 0,4,5 have values then there would be 3.
+
+ int representing the number of defined cells in the column.
+
+
+
+ Get whether or not to display this column with 0 width
+
+
+
+
+ Get the column's width.
+ If the height is not Set, the default worksheet value is returned
+
+ column height
+
+
+
+ Is this column formatted? Most aren't, but some columns
+ do have whole-column styles. For those that do, you
+ can get the formatting from
+
+
+
+
+ Is the column width set to best fit the content?
+
+
+
+
+ Returns the Sheet this column belongs to
+
+ the Sheet that owns this column
+
+
+
+ Returns the whole-column cell style. Most columns won't
+ have one of these, so will return null. Call
+ to check first.
+
+
+
+
+ Remove the Cell from this column.
+
+ the cell to remove
+
+
+
+
+ Copy the current column to the target column
+
+ column index of the target column
+ the new copied column object
+
+
+
+ Copy the source cell to the target cell. If the target cell exists, the new copied cell will be inserted before the existing one
+
+ index of the source cell
+ index of the target cell
+ the new copied cell object
+
+
+
+ Get cells in the column
+
+
+
+
+ Returns the columns outline level. Increased as you
+ put it into more groups (outlines), reduced as
+ you take it out of them.
+
+
+
+ Sets whether this comment is visible.
+
+ @return true if the comment is visible, false otherwise
+
+
+
+ Get or set the address of the cell that this comment is attached to
+
+
+
+ Set the address of the cell that this comment is attached to
+
+ @param row
+ @param col
+
+
+ Return the row of the cell that Contains the comment
+
+ @return the 0-based row of the cell that Contains the comment
+
+
+ Return the column of the cell that Contains the comment
+
+ @return the 0-based column of the cell that Contains the comment
+
+
+ Name of the original comment author
+
+ @return the name of the original author of the comment
+
+
+ Fetches the rich text string of the comment
+
+
+ Return defines position of this anchor in the sheet.
+
+ The anchor is the yellow box/balloon that is rendered on top of the sheets
+ when the comment is visible.
+
+ To associate a comment with a different cell, use {@link #setAddress}.
+ @return defines position of this anchor in the sheet
+
+
+ The conditional format operators used for "Highlight Cells That Contain..." rules.
+
+ For example, "highlight cells that begin with "M2" and contain "Mountain Gear".
+
+
+ @author Dmitriy Kumshayev
+ @author Yegor Kozlov
+
+
+ 'Between' operator
+
+
+ 'Not between' operator
+
+
+ 'Equal to' operator
+
+
+ 'Not equal to' operator
+
+
+ 'Greater than' operator
+
+
+ 'Less than' operator
+
+
+ 'Greater than or equal to' operator
+
+
+ 'Less than or equal to' operator
+
+
+ The ConditionalFormatting class encapsulates all Settings of Conditional Formatting.
+
+ The class can be used
+
+
+ -
+ to make a copy ConditionalFormatting Settings.
+
+
+
+ For example:
+
+ ConditionalFormatting cf = sheet.GetConditionalFormattingAt(index);
+ newSheet.AddConditionalFormatting(cf);
+
+
+
+ or to modify existing Conditional Formatting Settings (formatting regions and/or rules).
+
+
+
+ Use {@link NPOI.HSSF.UserModel.Sheet#getSheetConditionalFormatting()} to Get access to an instance of this class.
+
+ To create a new Conditional Formatting Set use the following approach:
+
+
+
+ // Define a Conditional Formatting rule, which triggers formatting
+ // when cell's value is greater or equal than 100.0 and
+ // applies patternFormatting defined below.
+ ConditionalFormattingRule rule = sheet.CreateConditionalFormattingRule(
+ ComparisonOperator.GE,
+ "100.0", // 1st formula
+ null // 2nd formula is not used for comparison operator GE
+ );
+
+ // Create pattern with red background
+ PatternFormatting patternFmt = rule.CretePatternFormatting();
+ patternFormatting.FillBackgroundColor(IndexedColor.RED.Index);
+
+ // Define a region Containing first column
+ Region [] regions =
+ {
+ new Region(1,(short)1,-1,(short)1)
+ };
+
+ // Apply Conditional Formatting rule defined above to the regions
+ sheet.AddConditionalFormatting(regions, rule);
+
+
+ @author Dmitriy Kumshayev
+ @author Yegor Kozlov
+
+
+ @return array of CellRangeAddresss. Never null
+
+
+ Sets the cell ranges the rule conditional formatting must be applied to.
+ @param ranges non-null array of CellRangeAddresss
+
+
+ Replaces an existing Conditional Formatting rule at position idx.
+ Excel allows to create up to 3 Conditional Formatting rules.
+ This method can be useful to modify existing Conditional Formatting rules.
+
+ @param idx position of the rule. Should be between 0 and 2.
+ @param cfRule - Conditional Formatting rule
+
+
+ Add a Conditional Formatting rule.
+ Excel allows to create up to 3 Conditional Formatting rules.
+
+ @param cfRule - Conditional Formatting rule
+
+
+ @return the Conditional Formatting rule at position idx.
+
+
+ @return number of Conditional Formatting rules.
+
+
+ Represents a description of a conditional formatting rule
+
+ @author Dmitriy Kumshayev
+ @author Yegor Kozlov
+
+
+ Create a new border formatting structure if it does not exist,
+ otherwise just return existing object.
+
+ @return - border formatting object, never returns null.
+
+
+ @return - border formatting object if defined, null otherwise
+
+
+ Create a new font formatting structure if it does not exist,
+ otherwise just return existing object.
+
+ @return - font formatting object, never returns null.
+
+
+ @return - font formatting object if defined, null otherwise
+
+
+ Create a new pattern formatting structure if it does not exist,
+ otherwise just return existing object.
+
+ @return - pattern formatting object, never returns null.
+
+
+ @return - pattern formatting object if defined, null otherwise
+
+
+ @return - databar / data-bar formatting object if defined, null otherwise
+
+
+ @return - icon / multi-state formatting object if defined, null otherwise
+
+
+ @return color scale / color grate formatting object if defined, null otherwise
+
+
+ Type of conditional formatting rule.
+
+ MUST be either {@link #CONDITION_TYPE_CELL_VALUE_IS} or {@link #CONDITION_TYPE_FORMULA}
+
+
+ @return the type of condition
+
+
+ The comparison function used when the type of conditional formatting is Set to
+ {@link #CONDITION_TYPE_CELL_VALUE_IS}
+
+ MUST be a constant from {@link ComparisonOperator}
+
+
+ @return the conditional format operator
+
+
+ The formula used to Evaluate the first operand for the conditional formatting rule.
+
+ If the condition type is {@link #CONDITION_TYPE_CELL_VALUE_IS},
+ this field is the first operand of the comparison.
+ If type is {@link #CONDITION_TYPE_FORMULA}, this formula is used
+ to determine if the conditional formatting is applied.
+
+
+ If comparison type is {@link #CONDITION_TYPE_FORMULA} the formula MUST be a Boolean function
+
+
+ @return the first formula
+
+
+ The formula used to Evaluate the second operand of the comparison when
+ comparison type is {@link #CONDITION_TYPE_CELL_VALUE_IS} and operator
+ is either {@link ComparisonOperator#BETWEEN} or {@link ComparisonOperator#NOT_BETWEEN}
+
+ @return the second formula
+
+
+
+ XSSF rules store textual condition values as an attribute and also as a formula that needs shifting. Using the attribute is simpler/faster.
+ HSSF rules don't have this and return null. We can fall back on the formula for those (AFAIK).
+ @return condition text if it exists, or null
+
+
+
+
+ The priority of the rule, if defined, otherwise 0.
+ For XSSF, this should always be set.For HSSF, only newer style rules
+ have this set, older ones will return 0.
+
+
+
+
+ The Threshold / CFVO / Conditional Formatting Value Object.
+ This defines how to calculate the ranges for a conditional
+ formatting rule, eg which values Get a Green Traffic Light
+ icon and which Yellow or Red.
+
+
+ Get the Range Type used
+
+
+ Changes the Range Type used
+
+ If you change the range type, you need to
+ ensure that the Formula and Value parameters
+ are compatible with it before saving
+ Formula to use to calculate the threshold,
+ or null if no formula
+
+
+ Sets the formula used to calculate the threshold,
+ or unsets it if null is given.
+ Gets the value used for the threshold, or
+ null if there isn't one.
+
+
+ Number / Parameter
+
+
+ The minimum value from the range
+
+
+ The maximum value from the range
+
+
+ Percent of the way from the mi to the max value in the range
+
+
+ The minimum value of the cell that is in X percentile of the range
+
+
+ Formula result
+
+
+ Numeric ID of the type
+
+
+ Name (system) of the type
+
+
+ @return true if the flag is missing or set to true
+
+
+ @return true if the flag is set
+
+
+ @return true if the flag is set
+
+
+ @return true if the flag is set
+
+
+ @return value, or 0 if not used/defined
+
+
+ @return value, or 0 if not used/defined
+
+
+ Represents a type of a conditional formatting rule
+
+
+ This conditional formatting rule compares a cell value
+ to a formula calculated result, using an operator
+
+
+ This conditional formatting rule contains a formula to evaluate.
+ When the formula result is true, the cell is highlighted.
+
+
+ This conditional formatting rule contains a color scale,
+ with the cell background set according to a gradient.
+
+
+ This conditional formatting rule sets a data bar, with the
+ cell populated with bars based on their values
+
+
+ This conditional formatting rule that files the values
+
+
+ This conditional formatting rule sets a data bar, with the
+ cell populated with bars based on their values
+
+
+ An object that handles instantiating concrete
+ classes of the various instances one needs for
+ HSSF and XSSF.
+ Works around a major shortcoming in Java, where we
+ can't have static methods on interfaces or abstract
+ classes.
+ This allows you to get the appropriate class for
+ a given interface, without you having to worry
+ about if you're dealing with HSSF or XSSF, despite
+ Java being quite rubbish.
+
+
+ Creates a new RichTextString instance
+ @param text The text to Initialise the RichTextString with
+
+
+ Creates a new DataFormat instance
+
+
+ Creates a new Hyperlink, of the given type
+
+
+ Creates FormulaEvaluator - an object that Evaluates formula cells.
+
+ @return a FormulaEvaluator instance
+
+
+ Creates a XSSF-style Color object, used for extended sheet
+ formattings and conditional formattings
+
+
+ High level representation for the DataBar Formatting
+ component of Conditional Formatting Settings
+
+
+ Is the bar Drawn from Left-to-Right, or from
+ Right-to-Left
+
+
+ Should Icon + Value be displayed, or only the Icon?
+
+
+ How much of the cell width, in %, should be given to
+ the min value?
+
+
+ How much of the cell width, in %, should be given to
+ the max value?
+
+
+ The threshold that defines "everything from here down is minimum"
+
+
+ The threshold that defines "everything from here up is maximum"
+
+
+ Enum mapping the values of STDataConsolidateFunction
+
+
+ get the format index that matches the given format string.
+ Creates a new format if one is not found. Aliases text to the proper format.
+ @param format string matching a built in format
+ @return index of format.
+
+
+ get the format string that matches the given format index
+ @param index of a format
+ @return string represented at index of format or null if there is not a format at that index
+
+
+
+ Pattern to find a number FormatBase: "0" or "#"
+
+
+ Pattern to find "AM/PM" marker
+
+
+ A regex to find patterns like [$$-1009] and [$�-452].
+ Note that we don't currently process these into locales
+
+
+ A regex to identify a fraction pattern.
+ This requires that replaceAll("\\?", "#") has already been called
+
+
+ A regex to strip junk out of fraction formats
+
+
+ A regex to detect if an alternate grouping character is used
+ in a numeric format
+
+
+ Cells formatted with a date or time format and which contain invalid date or time values
+ show 255 pound signs ("#").
+
+
+ The decimal symbols of the locale used for formatting values.
+
+
+ The date symbols of the locale used for formatting values.
+
+
+ A default date format, if no date format was given
+
+
+ General FormatBase for whole numbers.
+
+
+ A default FormatBase to use when a number pattern cannot be Parsed.
+
+
+ whether CSV friendly adjustments should be made to the formatted text *
+
+
+ For logging any problems we find
+
+
+ stores if the locale should change according to {@link LocaleUtil#getUserLocale()}
+
+
+ whether years in dates should be displayed with 4 digits even if the formatString specifies only 2 *
+
+
+
+ If set to true, when you do not provide a ,
+ for cells with formulas, we will return the cached value for the cell (if available),
+ otherwise - we return the formula itself.
+ The default is false and this means we return the formula itself.
+
+
+
+ Creates a formatter using the {@link Locale#getDefault() default locale}.
+
+ @param emulateCSV whether to emulate CSV output.
+
+
+ Creates a formatter using the given locale.
+
+
+ Creates a formatter using the given locale.
+
+ @param emulateCSV whether to emulate CSV output.
+
+
+ Constructor
+
+
+ Return a FormatBase for the given cell if one exists, otherwise try to
+ Create one. This method will return null if the any of the
+ following is true:
+
+ - the cell's style is null
+ - the style's data FormatBase string is null or empty
+ - the FormatBase string cannot be recognized as either a number or date
+
+
+ @param cell The cell to retrieve a FormatBase for
+ @return A FormatBase for the FormatBase String
+
+
+ Create and return a FormatBase based on the FormatBase string from a cell's
+ style. If the pattern cannot be Parsed, return a default pattern.
+
+ @param cell The Excel cell
+ @return A FormatBase representing the excel FormatBase. May return null.
+
+
+ Returns a default FormatBase for a cell.
+ @param cell The cell
+ @return a default FormatBase
+
+
+ Returns the Formatted value of an Excel date as a String based
+ on the cell's DataFormat. i.e. "Thursday, January 02, 2003"
+ , "01/02/2003" , "02-Jan" , etc.
+
+ @param cell The cell
+ @return a Formatted date string
+
+
+ Returns the Formatted value of an Excel number as a String
+ based on the cell's DataFormat. Supported Formats include
+ currency, percents, decimals, phone number, SSN, etc.:
+ "61.54%", "$100.00", "(800) 555-1234".
+
+ @param cell The cell
+ @return a Formatted number string
+
+
+ Formats the given raw cell value, based on the supplied
+ FormatBase index and string, according to excel style rules.
+ @see #FormatCellValue(Cell)
+
+
+ Performs Excel-style date formatting, using the
+ supplied Date and format
+
+
+ Formats the given raw cell value, based on the supplied
+ format index and string, according to excel style rules.
+ @see #formatCellValue(Cell)
+
+
+
+ Returns the Formatted value of a cell as a String regardless
+ of the cell type. If the Excel FormatBase pattern cannot be Parsed then the
+ cell value will be Formatted using a default FormatBase.
+
+ When passed a null or blank cell, this method will return an empty
+ string (""). Formulas in formula type cells will not be evaluated.
+ controls how these cells are evaluated.
+
+
+ The cell
+ the Formatted cell value as a String
+
+
+
+ Returns the Formatted value of a cell as a String regardless
+ of the cell type. If the Excel FormatBase pattern cannot be Parsed then the
+ cell value will be Formatted using a default FormatBase.
+
+ When passed a null or blank cell, this method will return an empty
+ string (""). Formula cells will be evaluated using the given
+ {@link HSSFFormulaEvaluator} if the evaluator is non-null. If the
+ evaluator is null, then the formula string will be returned. The caller
+ is responsible for setting the currentRow on the evaluator
+
+
+ @param cell The cell (can be null)
+ @param evaluator The HSSFFormulaEvaluator (can be null)
+ @return a string value of the cell
+
+
+
+ Sets a default number FormatBase to be used when the Excel FormatBase cannot be
+ Parsed successfully. Note: This is a fall back for when an error
+ occurs while parsing an Excel number FormatBase pattern. This will not
+ affect cells with the General FormatBase.
+
+
+ The value that will be passed to the FormatBase's FormatBase method (specified
+ by java.text.FormatBase#FormatBase) will be a double value from a
+ numeric cell. Therefore the code in the FormatBase method should expect a
+ Number value.
+
+
+ @param FormatBase A FormatBase instance to be used as a default
+ @see java.text.FormatBase#FormatBase
+
+
+ Adds a new FormatBase to the available formats.
+
+ The value that will be passed to the FormatBase's FormatBase method (specified
+ by java.text.FormatBase#FormatBase) will be a double value from a
+ numeric cell. Therefore the code in the FormatBase method should expect a
+ Number value.
+
+ @param excelformatStr The data FormatBase string
+ @param FormatBase A FormatBase instance
+
+
+ Update formats when locale has been changed
+
+ @param observable usually this is our own Observable instance
+ @param localeObj only reacts on Locale objects
+
+
+ Workaround until we merge {@link DataFormatter} with {@link CellFormat}.
+ Constant, non-cachable wrapper around a {@link CellFormatResult}
+
+
+ Error style constants for error box
+
+
+ STOP style
+
+
+ WARNING style
+
+
+ INFO style
+
+
+
+ get or set the error style for error box
+
+
+
+
+ Setting this allows an empty object as a valid value. Retrieve the settings for empty cells allowed.
+ @return True if this object should treats empty as valid value , false otherwise
+
+ true if this object should treats empty as valid value, false otherwise
+
+
+
+ Useful for list validation objects .
+ Useful only list validation objects . This method always returns false if the object isn't a list validation object
+
+
+
+ Sets the behaviour when a cell which belongs to this object is selected
+
+ true if an prompt box should be displayed , false otherwise
+
+
+ Sets the behaviour when an invalid value is entered
+
+ true if an error box should be displayed , false otherwise
+
+
+ Sets the title and text for the prompt box . Prompt box is displayed when
+ the user selects a cell which belongs to this validation object . In
+ order for a prompt box to be displayed you should also use method
+ SetShowPromptBox( bool show )
+
+ @param title The prompt box's title
+ @param text The prompt box's text
+
+
+ @return Prompt box's title or null
+
+
+ @return Prompt box's text or null
+
+
+ Sets the title and text for the error box . Error box is displayed when
+ the user enters an invalid value int o a cell which belongs to this
+ validation object . In order for an error box to be displayed you should
+ also use method SetShowErrorBox( bool show )
+
+ @param title The error box's title
+ @param text The error box's text
+
+
+ @return Error box's title or null
+
+
+ @return Error box's text or null
+
+
+
+ return data validation type of this constraint
+
+
+
+
+
+ get or set then comparison operator for this constraint
+
+
+
+
+ If validation type is {@link ValidationType#LIST}
+ and formula1 was comma-separated literal values rather than a range or named range,
+ returns list of literal values.
+ Otherwise returns null.
+
+
+
+
+ get or set the formula for expression 1. May be null
+
+
+
+
+ get or set the formula for expression 2. May be null
+
+
+
+ ValidationType enum
+
+
+ 'Any value' type - value not restricted
+
+
+ int ('Whole number') type
+
+
+ Decimal type
+
+
+ List type ( combo box type )
+
+
+ Date type
+
+
+ Time type
+
+
+ String length type
+
+
+ Formula ( 'Custom' ) type
+
+
+ Condition operator enum
+
+
+ default value to supply when the operator type is not used
+
+
+ @author Radhakrishnan J
+
+
+
+
+ Contains methods for dealing with Excel dates.
+ @author Michael Harhen
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Dan Sherman (dsherman at Isisph.com)
+ @author Hack Kampbjorn (hak at 2mba.dk)
+ @author Alex Jacoby (ajacoby at gmail.com)
+ @author Pavel Krupets (pkrupets at palmtreebusiness dot com)
+ @author Thies Wellpott
+
+
+
+ The following patterns are used in {@link #isADateFormat(int, String)}
+
+
+
+ Given a Calendar, return the number of days since 1899/12/31.
+
+ the date
+ if set to true [use1904windowing].
+ number of days since 1899/12/31
+
+
+
+ Return the number of days in prior years since 1900
+
+ a year (1900 < yr > 4000).
+
+ number of days in years prior to yr
+
+
+
+ Given a Date, Converts it into a double representing its internal Excel representation,
+ which Is the number of days since 1/1/1900. Fractional days represent hours, minutes, and seconds.
+
+ Excel representation of Date (-1 if error - test for error by Checking for less than 0.1)
+ the Date
+
+
+
+ Gets the excel date.
+
+ The year.
+ The month.
+ The day.
+ The hour.
+ The minute.
+ The second.
+ Should 1900 or 1904 date windowing be used?
+
+
+
+
+ Given a Date, Converts it into a double representing its internal Excel representation,
+ which Is the number of days since 1/1/1900. Fractional days represent hours, minutes, and seconds.
+
+ The date.
+ Should 1900 or 1904 date windowing be used?
+ Excel representation of Date (-1 if error - test for error by Checking for less than 0.1)
+
+
+
+ Given an Excel date with using 1900 date windowing, and converts it to a java.util.Date.
+ Excel Dates and Times are stored without any timezone
+ information. If you know (through other means) that your file
+ uses a different TimeZone to the system default, you can use
+ this version of the getJavaDate() method to handle it.
+
+ The Excel date.
+ null if date is not a valid Excel date
+
+
+ Given an Excel date with either 1900 or 1904 date windowing,
+ Converts it to a Date.
+
+ NOTE: If the default TimeZone in Java uses Daylight
+ Saving Time then the conversion back to an Excel date may not give
+ the same value, that Is the comparison
+ excelDate == GetExcelDate(GetJavaDate(excelDate,false))
+ Is not always true. For example if default timezone Is
+ Europe/Copenhagen, on 2004-03-28 the minute after
+ 01:59 CET Is 03:00 CEST, if the excel date represents a time between
+ 02:00 and 03:00 then it Is Converted to past 03:00 summer time
+
+ @param date The Excel date.
+ @param use1904windowing true if date uses 1904 windowing,
+ or false if using 1900 date windowing.
+ @return Java representation of the date, or null if date Is not a valid Excel date
+ @see TimeZone
+
+
+ Given an Excel date with either 1900 or 1904 date windowing,
+ converts it to a java.util.Date.
+
+ Excel Dates and Times are stored without any timezone
+ information. If you know (through other means) that your file
+ uses a different TimeZone to the system default, you can use
+ this version of the getJavaDate() method to handle it.
+
+ @param date The Excel date.
+ @param tz The TimeZone to evaluate the date in
+ @param use1904windowing true if date uses 1904 windowing,
+ or false if using 1900 date windowing.
+ @return Java representation of the date, or null if date is not a valid Excel date
+
+
+ Given an Excel date with either 1900 or 1904 date windowing,
+ converts it to a java.util.Date.
+
+ Excel Dates and Times are stored without any timezone
+ information. If you know (through other means) that your file
+ uses a different TimeZone to the system default, you can use
+ this version of the getJavaDate() method to handle it.
+
+ @param date The Excel date.
+ @param tz The TimeZone to evaluate the date in
+ @param use1904windowing true if date uses 1904 windowing,
+ or false if using 1900 date windowing.
+ @return Java representation of the date, or null if date is not a valid Excel date
+
+
+ Given an Excel date with either 1900 or 1904 date windowing,
+ converts it to a java.util.Date.
+
+ Excel Dates and Times are stored without any timezone
+ information. If you know (through other means) that your file
+ uses a different TimeZone to the system default, you can use
+ this version of the getJavaDate() method to handle it.
+
+ @param date The Excel date.
+ @param tz The TimeZone to evaluate the date in
+ @param use1904windowing true if date uses 1904 windowing,
+ or false if using 1900 date windowing.
+ @param roundSeconds round to closest second
+ @return Java representation of the date, or null if date is not a valid Excel date
+
+
+ Given an Excel date with either 1900 or 1904 date windowing,
+ converts it to a java.util.Date.
+
+ Excel Dates and Times are stored without any timezone
+ information. If you know (through other means) that your file
+ uses a different TimeZone to the system default, you can use
+ this version of the getJavaDate() method to handle it.
+
+ @param date The Excel date.
+ @param tz The TimeZone to evaluate the date in
+ @param use1904windowing true if date uses 1904 windowing,
+ or false if using 1900 date windowing.
+ @param roundSeconds round to closest second
+ @return Java representation of the date, or null if date is not a valid Excel date
+
+
+ Get EXCEL date as Java Calendar with given time zone.
+ @param date The Excel date.
+ @param use1904windowing true if date uses 1904 windowing,
+ or false if using 1900 date windowing.
+ @param timeZone The TimeZone to evaluate the date in
+ @return Java representation of the date, or null if date is not a valid Excel date
+
+
+
+ Get EXCEL date as Java Calendar (with default time zone). This is like GetJavaDate(double, boolean) but returns a Calendar object.
+
+ The Excel date.
+ true if date uses 1904 windowing, or false if using 1900 date windowing.
+
+
+ null if date is not a valid Excel date
+
+
+
+ Get EXCEL date as Java Calendar (with default time zone). This is like GetJavaDate(double, boolean) but returns a Calendar object.
+
+ The Excel date.
+ true if date uses 1904 windowing, or false if using 1900 date windowing.
+
+
+ null if date is not a valid Excel date
+
+
+
+ Converts a string of format "HH:MM" or "HH:MM:SS" to its (Excel) numeric equivalent
+
+ The time STR.
+ a double between 0 and 1 representing the fraction of the day
+
+
+
+ Converts the time internal.
+
+ The time STR.
+
+
+
+
+ Given a format ID and its format String, will Check to see if the
+ format represents a date format or not.
+ Firstly, it will Check to see if the format ID corresponds to an
+ internal excel date format (eg most US date formats)
+ If not, it will Check to see if the format string only Contains
+ date formatting Chars (ymd-/), which covers most
+ non US date formats.
+
+ The index of the format, eg from ExtendedFormatRecord.GetFormatIndex
+ The format string, eg from FormatRecord.GetFormatString
+
+ true if [is A date format] [the specified format index]; otherwise, false.
+
+
+
+
+ Converts a string of format "YYYY/MM/DD" to its (Excel) numeric equivalent
+
+ The date STR.
+ a double representing the (integer) number of days since the start of the Excel epoch
+
+
+
+ Parses the YYYYMMDD date internal.
+
+ The time string.
+
+
+
+
+ Parses the int.
+
+ The string value.
+ Name of the field.
+ The range max.
+
+
+
+
+ Parses the int.
+
+ The STR val.
+ Name of the field.
+ The lower limit.
+ The upper limit.
+
+
+
+
+ Given a format ID this will Check whether the format represents an internal excel date format or not.
+
+ The format.
+
+
+
+ Check if a cell Contains a date
+ Since dates are stored internally in Excel as double values
+ we infer it Is a date if it Is formatted as such.
+
+ The cell.
+
+
+
+ Check if a cell contains a date, Checking only for internal excel date formats.
+ As Excel stores a great many of its dates in "non-internal" date formats, you will not normally want to use this method.
+
+ The cell.
+
+
+
+ Given a double, Checks if it Is a valid Excel date.
+
+ the double value.
+
+ true if [is valid excel date] [the specified value]; otherwise, false.
+
+
+
+ @author Yegor Kozlov
+
+
+ Creates a picture.
+ @param anchor the client anchor describes how this picture is
+ attached to the sheet.
+ @param pictureIndex the index of the picture in the workbook collection
+ of pictures.
+
+ @return the newly created picture.
+
+
+ Creates a comment.
+ @param anchor the client anchor describes how this comment is attached
+ to the sheet.
+ @return the newly created comment.
+
+
+ Creates a chart.
+ @param anchor the client anchor describes how this chart is attached to
+ the sheet.
+ @return the newly created chart
+
+
+ Creates a new client anchor and sets the top-left and bottom-right
+ coordinates of the anchor.
+
+ @param dx1 the x coordinate in EMU within the first cell.
+ @param dy1 the y coordinate in EMU within the first cell.
+ @param dx2 the x coordinate in EMU within the second cell.
+ @param dy2 the y coordinate in EMU within the second cell.
+ @param col1 the column (0 based) of the first cell.
+ @param row1 the row (0 based) of the first cell.
+ @param col2 the column (0 based) of the second cell.
+ @param row2 the row (0 based) of the second cell.
+ @return the newly created client anchor
+
+
+
+ the type of fill to display with the shape or the background of the slide.
+
+
+
+
+ A solid fill
+
+
+
+
+ A patterned fill
+
+
+
+
+ A textured fill
+
+
+
+
+ A picture fill
+
+
+
+
+ A gradient fill that starts and ends with defined endpoints
+
+
+
+
+ A gradient fill that starts and ends based on the bounds of the shape
+
+
+
+
+ A gradient fill that starts on the outline of the shape and ends at a point defined within the shape
+
+
+
+
+ A gradient fill that starts on the outline of the shape and ends at a point defined within the shape.
+ The fill angle is scaled by the aspect ratio of the shape
+
+
+
+
+ A gradient fill interpreted by the host application
+
+
+
+
+ A fill that matches the background fill
+
+
+
+ A format that formats a double as Excel would, ignoring FieldPosition.
+ All other operations are unsupported.
+
+
+
+ A wrapper around a {@link SimpleDateFormat} instance,
+ which handles a few Excel-style extensions that
+ are not supported by {@link SimpleDateFormat}.
+ Currently, the extensions are around the handling
+ of elapsed time, eg rendering 1 day 2 hours
+ as 26 hours.
+
+
+ Takes a format String, and Replaces Excel specific bits
+ with our detection sequences
+
+
+ Used to let us know what the date being
+ formatted is, in Excel terms, which we
+ may wish to use when handling elapsed
+ times.
+
+
+ Represents a XSSF-style color (based on either a
+ {@link NPOI.XSSF.UserModel.XSSFColor} or a
+ {@link NPOI.HSSF.Record.Common.ExtendedColor}
+
+
+ A bool value indicating the color is automatic
+
+
+ A bool value indicating the color is indexed
+
+
+ A bool value indicating the color is RGB / ARGB
+
+
+ A bool value indicating the color is from a Theme
+
+
+ Indexed Color value, if {@link #isIndexed()} is true
+
+
+ Index of Theme color, if {@link #isThemed()} is true
+
+
+ Standard Red Green Blue ctColor value (RGB).
+ If there was an A (Alpha) value, it will be stripped.
+
+
+ Standard Alpha Red Green Blue ctColor value (ARGB).
+
+
+ RGB or ARGB or null
+
+
+ Standard Red Green Blue ctColor value (RGB) with applied tint.
+ Alpha values are ignored.
+
+
+ Return the ARGB value in hex format, eg FF00FF00.
+ Works for both regular and indexed colours.
+ Sets the ARGB value from hex format, eg FF0077FF.
+ Only works for regular (non-indexed) colours
+
+
+ Specifies the tint value applied to the ctColor.
+
+
+ If tint is supplied, then it is applied to the RGB value of the ctColor to determine the final
+ ctColor applied.
+
+
+ The tint value is stored as a double from -1.0 .. 1.0, where -1.0 means 100% darken and
+ 1.0 means 100% lighten. Also, 0.0 means no Change.
+
+
+ In loading the RGB value, it is Converted to HLS where HLS values are (0..HLSMAX), where
+ HLSMAX is currently 255.
+
+ Here are some examples of how to apply tint to ctColor:
+
+
+ If (tint < 0)
+ Lum' = Lum * (1.0 + tint)
+
+ For example: Lum = 200; tint = -0.5; Darken 50%
+ Lum' = 200 * (0.5) => 100
+ For example: Lum = 200; tint = -1.0; Darken 100% (make black)
+ Lum' = 200 * (1.0-1.0) => 0
+ If (tint > 0)
+ Lum' = Lum * (1.0-tint) + (HLSMAX - HLSMAX * (1.0-tint))
+ For example: Lum = 100; tint = 0.75; Lighten 75%
+
+ Lum' = 100 * (1-.75) + (HLSMAX - HLSMAX*(1-.75))
+ = 100 * .25 + (255 - 255 * .25)
+ = 25 + (255 - 63) = 25 + 192 = 217
+ For example: Lum = 100; tint = 1.0; Lighten 100% (make white)
+ Lum' = 100 * (1-1) + (HLSMAX - HLSMAX*(1-1))
+ = 100 * 0 + (255 - 255 * 0)
+ = 0 + (255 - 0) = 255
+
+
+
+ @return the tint value
+
+
+ The enumeration value indicating the style of fill pattern being used for a cell format.
+
+
+
+ No background
+
+
+ Solidly Filled
+
+
+ Small fine dots
+
+
+ Wide dots
+
+
+ Sparse dots
+
+
+ Thick horizontal bands
+
+
+ Thick vertical bands
+
+
+ Thick backward facing diagonals
+
+
+ Thick forward facing diagonals
+
+
+ Large spots
+
+
+ Brick-like layout
+
+
+ Thin horizontal bands
+
+
+ Thin vertical bands
+
+
+ Thin backward diagonal
+
+
+ Thin forward diagonal
+
+
+ Squares
+
+
+ Diamonds
+
+
+ Less Dots
+
+
+ Least Dots
+
+
+ not underlined
+
+
+ single (normal) underline
+
+
+ double underlined
+
+
+ accounting style single underline
+
+
+ accounting style double underline
+
+
+ no type Offsetting (not super or subscript)
+
+
+ superscript
+
+
+ subscript
+
+
+
+ Allow accessing the Initial value.
+
+
+
+ normal type of black color.
+
+
+ Dark Red color
+
+
+
+ Allow accessing the Initial value.
+
+
+
+ Normal boldness (not bold)
+
+
+ Bold boldness (bold)
+
+
+
+ get the name for the font (i.e. Arial)
+
+
+
+
+ Get the font height in unit's of 1/20th of a point.
+
+
+ Maybe you might want to use the GetFontHeightInPoints which matches to the familiar 10, 12, 14 etc..
+
+
+
+
+
+ Get the font height in points.
+
+
+ This will return the same font height that is shown in Excel, such as 10 or 14 or 28.
+
+
+
+
+
+ get whether to use italics or not
+
+
+
+
+ get whether to use a strikeout horizontal line through the text or not
+
+
+
+ get the color for the font
+ @return color to use
+ @see #COLOR_NORMAL
+ @see #COLOR_RED
+ @see NPOI.HSSF.usermodel.HSSFPalette#GetColor(short)
+
+
+
+ get type of text underlining to use
+
+
+
+
+ get type of text underlining to use
+
+
+
+
+ get character-set to use.
+
+ ANSI_CHARSET,DEFAULT_CHARSET,SYMBOL_CHARSET
+
+
+
+ get the index within the Workbook (sequence within the collection of Font objects)
+
+
+
+
+ Copies the style from another font into this one
+
+
+
+ Charset represents the basic set of characters associated with a font (that it can display), and
+ corresponds to the ANSI codepage (8-bit or DBCS) of that character set used by a given language.
+
+ @author Gisella Bronzetti
+
+
+ Returns value of this charset
+
+ @return value of this charset
+
+
+ The font family this font belongs to. A font family is a set of fonts having common stroke width and serif
+ characteristics. The font name overrides when there are conflicting values.
+
+ @author Gisella Bronzetti
+
+
+ Returns index of this font family
+
+ @return index of this font family
+
+
+ High level representation for Font Formatting component
+ of Conditional Formatting Settings
+
+ @author Dmitriy Kumshayev
+ @author Yegor Kozlov
+
+
+
+ get or set the type of super or subscript for the font
+
+
+
+
+ get or set font color index
+
+
+
+
+ get or set the colour of the font, or null if no colour applied
+
+
+
+
+ get or set the height of the font in 1/20th point units
+
+
+
+
+ get or set the type of underlining for the font
+
+
+
+ Get whether the font weight is Set to bold or not
+
+ @return bold - whether the font is bold or not
+
+
+ @return true if font style was Set to italic
+
+
+ Set font style options.
+
+ @param italic - if true, Set posture style to italic, otherwise to normal
+ @param bold if true, Set font weight to bold, otherwise to normal
+
+
+ Set font style options to default values (non-italic, non-bold)
+
+
+ Defines the font scheme to which this font belongs.
+ When a font defInition is part of a theme defInition, then the font is categorized as either a major or minor font scheme component.
+ When a new theme is chosen, every font that is part of a theme defInition is updated to use the new major or minor font defInition for that
+ theme.
+ Usually major fonts are used for styles like headings, and minor fonts are used for body and paragraph text.
+
+ @author Gisella Bronzetti
+
+
+ the different types of possible underline formatting
+
+ @author Gisella Bronzetti
+
+
+ Single-line underlining under each character in the cell.
+ The underline is drawn through the descenders of
+ characters such as g and p..
+
+
+ Double-line underlining under each character in the
+ cell. underlines are drawn through the descenders of
+ characters such as g and p.
+
+
+ Single-line accounting underlining under each
+ character in the cell. The underline is drawn under the
+ descenders of characters such as g and p.
+
+
+ Double-line accounting underlining under each
+ character in the cell. The underlines are drawn under
+ the descenders of characters such as g and p.
+
+
+ No underline.
+
+
+
+ Common defInition of a HSSF or XSSF page footer.
+ For a list of all the different fields that can be
+ placed into a footer, such as page number,
+ bold, underline etc, see
+
+
+
+ Enumerates error values in SpreadsheetML formula calculations.
+
+ See also OOO's excelfileformat.pdf (2.5.6)
+
+
+ Intended to indicate when two areas are required to intersect, but do not.
+ Example:
+ In the case of SUM(B1 C1), the space between B1 and C1 is treated as the binary
+ intersection operator, when a comma was intended. end example]
+
+
+
+ Intended to indicate when any number, including zero, is divided by zero.
+ Note: However, any error code divided by zero results in that error code.
+
+
+ Intended to indicate when an incompatible type argument is passed to a function, or
+ an incompatible type operand is used with an operator.
+ Example:
+ In the case of a function argument, text was expected, but a number was provided
+
+
+
+ Intended to indicate when a cell reference is invalid.
+ Example:
+ If a formula Contains a reference to a cell, and then the row or column Containing that cell is deleted,
+ a #REF! error results. If a worksheet does not support 20,001 columns,
+ OFFSET(A1,0,20000) will result in a #REF! error.
+
+
+
+ Intended to indicate when an argument to a function has a compatible type, but has a
+ value that is outside the domain over which that function is defined. (This is known as
+ a domain error.)
+ Example:
+ Certain calls to ASIN, ATANH, FACT, and SQRT might result in domain errors.
+
+ Intended to indicate that the result of a function cannot be represented in a value of
+ the specified type, typically due to extreme magnitude. (This is known as a range
+ error.)
+ Example: FACT(1000) might result in a range error.
+
+
+ Intended to indicate when a designated value is not available.
+ Example:
+ Some functions, such as SUMX2MY2, perform a series of operations on corresponding
+ elements in two arrays. If those arrays do not have the same number of elements, then
+ for some elements in the longer array, there are no corresponding elements in the
+ shorter one; that is, one or more values in the shorter array are not available.
+
+ This error value can be produced by calling the function NA
+
+
+ POI specific code to indicate that there is a circular reference
+ in the formula
+
+
+ POI specific code to indicate that the funcition required is
+ not implemented in POI
+
+
+ @return numeric code of the error
+
+
+ @return long (internal) numeric code of the error
+
+
+ @return string representation of the error
+
+
+ Evaluates formula cells.
+
+ For performance reasons, this class keeps a cache of all previously calculated intermediate
+ cell values. Be sure to call {@link #ClearAllCachedResultValues()} if any workbook cells are Changed between
+ calls to Evaluate~ methods on this class.
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ @author Josh Micich
+
+
+ Should be called whenever there are Changes to input cells in the Evaluated workbook.
+ Failure to call this method after changing cell values will cause incorrect behaviour
+ of the Evaluate~ methods of this class
+
+
+ Should be called to tell the cell value cache that the specified (value or formula) cell
+ has Changed.
+ Failure to call this method after changing cell values will cause incorrect behaviour
+ of the Evaluate~ methods of this class
+
+
+ Should be called to tell the cell value cache that the specified cell has just become a
+ formula cell, or the formula text has Changed
+
+
+ Should be called to tell the cell value cache that the specified (value or formula) cell
+ has changed.
+ Failure to call this method after changing cell values will cause incorrect behaviour
+ of the evaluate~ methods of this class
+
+
+ If cell Contains a formula, the formula is Evaluated and returned,
+ else the CellValue simply copies the appropriate cell value from
+ the cell and also its cell type. This method should be preferred over
+ EvaluateInCell() when the call should not modify the contents of the
+ original cell.
+ @param cell
+
+
+ Loops over all cells in all sheets of the associated workbook.
+ For cells that contain formulas, their formulas are evaluated,
+ and the results are saved. These cells remain as formula cells.
+ For cells that do not contain formulas, no changes are made.
+ This is a helpful wrapper around looping over all cells, and
+ calling evaluateFormulaCell on each one.
+
+
+ If cell Contains formula, it Evaluates the formula,
+ and saves the result of the formula. The cell
+ remains as a formula cell.
+ Else if cell does not contain formula, this method leaves
+ the cell unChanged.
+ Note that the type of the formula result is returned,
+ so you know what kind of value is also stored with
+ the formula.
+
+ int EvaluatedCellType = Evaluator.evaluateFormulaCell(cell);
+
+ Be aware that your cell will hold both the formula,
+ and the result. If you want the cell Replaced with
+ the result of the formula, use {@link #EvaluateInCell(Cell)}
+ @param cell The cell to Evaluate
+ @return The type of the formula result, i.e. -1 if the cell is not a formula,
+ or one of Cell.CELL_TYPE_NUMERIC, Cell.CELL_TYPE_STRING, Cell.CELL_TYPE_BOOLEAN, Cell.CELL_TYPE_ERROR
+ Note: the cell's type remains as Cell.CELL_TYPE_FORMULA however.
+
+
+ If cell Contains formula, it Evaluates the formula, and
+ Puts the formula result back into the cell, in place
+ of the old formula.
+ Else if cell does not contain formula, this method leaves
+ the cell unChanged.
+ Note that the same instance of Cell is returned to
+ allow chained calls like:
+
+ int EvaluatedCellType = Evaluator.evaluateInCell(cell).getCellType();
+
+ Be aware that your cell value will be Changed to hold the
+ result of the formula. If you simply want the formula
+ value comPuted for you, use {@link #EvaluateFormulaCell(Cell)}
+ @param cell
+
+
+ Sets up the Formula Evaluator to be able to reference and resolve
+ links to other workbooks, eg [Test.xls]Sheet1!A1.
+ For a workbook referenced as [Test.xls]Sheet1!A1, you should
+ supply a map containing the key Test.xls (no square brackets),
+ and an open FormulaEvaluator onto that Workbook.
+ @param otherWorkbooks Map of workbook names (no square brackets) to an evaluator on that workbook
+
+
+ Whether to ignore missing references to external workbooks and
+ use cached formula results in the main workbook instead.
+
+ In some cases external workbooks referenced by formulas in the main workbook are not available.
+ With this method you can control how POI handles such missing references:
+
+ - by default ignoreMissingWorkbooks=false and POI throws
+ {@link org.apache.poi.ss.formula.CollaboratingWorkbooksEnvironment.WorkbookNotFoundException}
+ if an external reference cannot be resolved
+ - if ignoreMissingWorkbooks=true then POI uses cached formula result
+ that already exists in the main workbook
+
+
+ @param ignore whether to ignore missing references to external workbooks
+
+
+ * Perform detailed output of formula evaluation for next evaluation only?
+ * Is for developer use only (also developers using POI for their XLS files).
+ * Log-Level WARN is for basic info, INFO for detailed information. These quite
+ * high levels are used because you have to explicitly enable this specific logging.
+
+ * @param value whether to perform detailed output
+
+
+ Format class that handles Excel style fractions, such as "# #/#" and "#/###"
+
+ As of this writing, this is still not 100% accurate, but it does a reasonable job
+ of trying to mimic Excel's fraction calculations. It does not currently
+ maintain Excel's spacing.
+
+ This class relies on a method lifted nearly verbatim from org.apache.math.fraction.
+ If further uses for Commons Math are found, we will consider Adding it as a dependency.
+ For now, we have in-lined the one method to keep things simple.
+
+
+ Single parameter ctor
+ @param denomFormatString The format string for the denominator
+
+
+
+ Common defInition of a HSSF or XSSF page header.
+ For a list of all the different fields that can be
+ placed into a header, such as page number,
+ bold, underline etc, see
+
+
+
+
+ Common interface for NPOI.SS.UserModel.Header and NPOI.SS.UserModel.Footer
+
+
+
+
+ Gets or sets the left side of the header or footer.
+
+ The string representing the left side.
+
+
+
+ Gets or sets the center of the header or footer.
+
+ The string representing the center.
+
+
+
+ Gets or sets the right side of the header or footer.
+
+ The string representing the right side.
+
+
+ Update formulas.
+
+
+ Shifts, grows, or shrinks the merged regions due to a row shift
+ ({@link RowShifter}) or column shift ({@link ColumnShifter}).
+ Merged regions that are completely overlaid by shifting will be deleted.
+
+ @param start the first row or column to be shifted
+ @param end the last row or column to be shifted
+ @param n the number of rows or columns to shift
+ @return a list of affected merged regions, excluding contain deleted ones
+
+
+ Update conditional formatting
+ @param formulaShifter The {@link FormulaShifter} to use
+
+
+ Shift the Hyperlink anchors (not the hyperlink text, even if the hyperlink
+ is of type LINK_DOCUMENT and refers to a cell that was shifted). Hyperlinks
+ do not track the content they point to.
+
+ @param formulaShifter the formula shifting policy
+
+
+
+ Helper for Shifting rows up or down
+ This abstract class exists to consolidate duplicated code between XSSFRowShifter
+ and HSSFRowShifter(currently methods sprinkled throughout HSSFSheet)
+
+
+
+
+ Shifts, grows, or shrinks the merged regions due to a row Shift.
+ Merged regions that are completely overlaid by Shifting will be deleted.
+
+ the row to start Shifting
+ the row to end Shifting
+ the number of rows to shift
+ an array of affected merged regions, doesn't contain deleted ones
+
+
+
+ Verify that the given column indices and step denote a valid range of columns to shift
+
+ the column to start shifting
+ the column to end shifting
+ length of the shifting step
+
+
+
+
+ Verify that the given column indices and step denote a valid range of columns to shift to the left
+
+ the column to start shifting
+ the column to end shifting
+ length of the shifting step
+
+
+
+
+ Updated named ranges
+
+
+
+
+
+ Update formulas.
+
+
+
+
+
+ Update the formulas in specified row using the formula Shifting policy specified by Shifter
+
+ the row to update the formulas on
+ the formula Shifting policy
+
+
+
+ Shift the Hyperlink anchors (not the hyperlink text, even if the hyperlink
+ is of type LINK_DOCUMENT and refers to a cell that was Shifted). Hyperlinks
+ do not track the content they point to.
+
+ the formula Shifting policy
+
+
+ The enumeration value indicating horizontal alignment of a cell,
+ i.e., whether it is aligned general, left, right, horizontally centered, Filled (replicated),
+ justified, centered across multiple cells, or distributed.
+
+
+ The horizontal alignment is general-aligned. Text data is left-aligned.
+ Numbers, dates, and times are rightaligned. Boolean types are centered.
+ Changing the alignment does not change the type of data.
+
+
+ The horizontal alignment is left-aligned, even in Rightto-Left mode.
+ Aligns contents at the left edge of the cell. If an indent amount is specified, the contents of
+ the cell is indented from the left by the specified number of character spaces. The character spaces are
+ based on the default font and font size for the workbook.
+
+
+ The horizontal alignment is centered, meaning the text is centered across the cell.
+
+
+ The horizontal alignment is right-aligned, meaning that cell contents are aligned at the right edge of the cell,
+ even in Right-to-Left mode.
+
+
+ The horizontal alignment is justified (flush left and right).
+ For each line of text, aligns each line of the wrapped text in a cell to the right and left
+ (except the last line). If no single line of text wraps in the cell, then the text is not justified.
+
+
+ Indicates that the value of the cell should be Filled
+ across the entire width of the cell. If blank cells to the right also have the fill alignment,
+ they are also Filled with the value, using a convention similar to centerContinuous.
+
+ Additional rules:
+
+ - Only whole values can be Appended, not partial values.
+ - The column will not be widened to 'best fit' the Filled value
+ - If Appending an Additional occurrence of the value exceeds the boundary of the cell
+ left/right edge, don't append the Additional occurrence of the value.
+ - The display value of the cell is Filled, not the underlying raw number.
+
+
+
+
+ The horizontal alignment is centered across multiple cells.
+ The information about how many cells to span is expressed in the Sheet Part,
+ in the row of the cell in question. For each cell that is spanned in the alignment,
+ a cell element needs to be written out, with the same style Id which references the centerContinuous alignment.
+
+
+ Indicates that each 'word' in each line of text inside the cell is evenly distributed
+ across the width of the cell, with flush right and left margins.
+
+ When there is also an indent value to apply, both the left and right side of the cell
+ are pAdded by the indent value.
+
+ A 'word' is a set of characters with no space character in them.
+ Two lines inside a cell are Separated by a carriage return.
+
+
+
+ Link to an existing file or web page
+
+
+
+
+ Link to a place in this document
+
+
+
+
+ Link to an E-mail Address
+
+
+
+
+ Link to a file
+
+
+
+
+ Represents an Excel hyperlink.
+
+
+
+
+ Hyperlink address. Depending on the hyperlink type it can be URL, e-mail, patrh to a file, etc.
+
+
+
+
+ text label for this hyperlink
+
+
+
+
+ the type of this hyperlink
+
+
+
+
+ the row of the first cell that Contains the hyperlink
+
+
+
+
+ the row of the last cell that Contains the hyperlink
+
+
+
+
+ the column of the first cell that Contains the hyperlink
+
+
+
+
+ the column of the last cell that Contains the hyperlink
+
+
+
+
+ Common interface for anchors.
+
+ An anchor is what specifics the position of a shape within a client object
+ or within another containing shape.
+
+
+
+
+ get or set x coordinate of the left up corner
+
+
+
+
+ get or set y coordinate of the left up corner
+
+
+
+
+ get or set x coordinate of the right down corner
+
+
+
+
+ get or set y coordinate of the right down corner
+
+
+
+
+ Get or set the Icon Set used
+
+
+
+ Changes the Icon Set used
+
+ If the new Icon Set has a different number of
+ icons to the old one, you must update the
+ thresholds before saving!
+ Should Icon + Value be displayed, or only the Icon?
+
+
+ Gets the list of thresholds
+ Sets the of thresholds. The number must match
+ {@link IconSet#num} for the current {@link #getIconSet()}
+
+
+ Creates a new, empty Threshold
+
+
+ Green Up / Yellow Side / Red Down arrows
+
+
+ Grey Up / Side / Down arrows
+
+
+ Green / Yellow / Red flags
+
+
+ Green / Yellow / Red traffic lights (no background). Default
+
+
+ Green / Yellow / Red traffic lights on a black square background.
+ Note, MS-XLS docs v20141018 say this is id=5 but seems to be id=4
+
+
+ Green Circle / Yellow Triangle / Red Diamond.
+ Note, MS-XLS docs v20141018 say this is id=4 but seems to be id=5
+
+
+ Green Tick / Yellow ! / Red Cross on a circle background
+
+
+ Green Tick / Yellow ! / Red Cross (no background)
+
+
+ Green Up / Yellow NE / Yellow SE / Red Down arrows
+
+
+ Grey Up / NE / SE / Down arrows
+
+
+ Red / Light Red / Grey / Black traffic lights
+
+
+ Green / Yellow / Red / Black traffic lights
+
+
+ Numeric ID of the icon set
+
+
+ How many icons in the set
+
+
+ Name (system) of the set
+
+
+ Types of ignored workbook and worksheet error.
+
+ TODO Implement these for HSSF too, using FeatFormulaErr2,
+ see bugzilla bug #46136 for details
+
+
+ ????. Probably XSSF-only.
+
+
+ Whether to check for references to empty cells.
+ HSSF + XSSF.
+
+
+ Whether to check for calculation/Evaluation errors.
+ HSSF + XSSF.
+
+
+ Whether to check formulas in the range of the shared feature
+ that are inconsistent with formulas in neighbouring cells.
+ HSSF + XSSF.
+
+
+ Whether to check formulas in the range of the shared feature
+ with references to less than the entirety of a range Containing
+ continuous data.
+ HSSF + XSSF.
+
+
+ ????. Is this XSSF-specific the same as performDataValidation
+ in HSSF?
+
+
+ Whether to check the format of string values and warn
+ if they look to actually be numeric values.
+ HSSF + XSSF.
+
+
+ ????. Is this XSSF-specific the same as CheckDateTimeFormats
+ in HSSF?
+
+
+ Whether to check for unprotected formulas.
+ HSSF + XSSF.
+
+
+ A deprecated indexing scheme for colours that is still required for some records, and for backwards
+ compatibility with OLE2 formats.
+
+
+ Each element corresponds to a color index (zero-based). When using the default indexed color palette,
+ the values are not written out, but instead are implied. When the color palette has been modified from default,
+ then the entire color palette is used.
+
+
+ @author Yegor Kozlov
+
+
+
+
+ @param index the index of the color
+ @return the corresponding IndexedColors enum
+ @throws IllegalArgumentException if index is not a valid IndexedColors
+ @since 3.15-beta2
+
+
+ Returns index of this color
+
+ @return index of this color
+
+
+
+ A common interface for shape groups.
+
+
+
+
+ Represents a defined name for a range of cells.
+ A name is a meaningful shorthand that makes it easier to understand the purpose of a
+ cell reference, constant or a formula.
+
+
+ Get the sheets name which this named range is referenced to
+
+ @return sheet name, which this named range refered to
+
+
+ Gets the name of the named range
+
+ @return named range name
+
+
+ Returns the formula that the name is defined to refer to.
+
+ @return the reference for this name, null if it has not been set yet. Never empty string
+ @see #SetRefersToFormula(String)
+
+
+ Checks if this name is a function name
+
+ @return true if this name is a function name
+
+
+ Checks if this name points to a cell that no longer exists
+
+ @return true if the name refers to a deleted cell, false otherwise
+
+
+ Returns the sheet index this name applies to.
+
+ @return the sheet index this name applies to, -1 if this name applies to the entire workbook
+
+
+ Returns the comment the user provided when the name was Created.
+
+ @return the user comment for this named range
+
+
+ Indicates that the defined name refers to a user-defined function.
+ This attribute is used when there is an add-in or other code project associated with the file.
+
+ @param value true indicates the name refers to a function.
+
+
+ Specifies printed page order.
+
+ @author Gisella Bronzetti
+
+
+ Order pages vertically first, then move horizontally.
+
+
+ Order pages horizontally first, then move vertically
+
+
+ The enumeration value indicating the possible paper size for a sheet
+
+ @author Daniele Montagni
+
+
+
+ Allow accessing the Initial value.
+
+
+
+
+ A4 Transverse - 210x297 mm
+
+
+
+
+ A4 Plus - 210x330 mm
+
+
+
+
+ US Letter Rotated 11 x 8 1/2 in
+
+
+
+
+ A4 Rotated - 297x210 mm */
+
+
+
+ @author Yegor Kozlov
+
+
+
+ Allow accessing the Initial value.
+
+
+
+
+ Extended windows meta file
+
+
+ Windows Meta File
+
+
+ Mac PICT format
+
+
+ JPEG format
+
+
+ PNG format
+
+
+ Device independent bitmap
+
+
+ GIF image format
+
+
+ Tag Image File (.tiff)
+
+
+ Encapsulated Postscript (.eps)
+
+
+ Windows Bitmap (.bmp)
+
+
+ WordPerfect graphics (.wpg)
+
+
+ Repersents a picture in a SpreadsheetML document
+
+ @author Yegor Kozlov
+
+
+ Reset the image to the dimension of the embedded image
+
+ @see #resize(double, double)
+
+
+ Resize the image proportionally.
+
+
+
+ Resize the image.
+
+ Please note, that this method works correctly only for workbooks
+ with the default font size (Arial 10pt for .xls and Calibri 11pt for .xlsx).
+ If the default font is changed the resized image can be streched vertically or horizontally.
+
+
+ resize(1.0,1.0) keeps the original size,
+ resize(0.5,0.5) resize to 50% of the original,
+ resize(2.0,2.0) resizes to 200% of the original.
+ resize({@link Double#MAX_VALUE},{@link Double#MAX_VALUE}) resizes to the dimension of the embedded image.
+
+
+ @param scaleX the amount by which the image width is multiplied relative to the original width.
+ @param scaleY the amount by which the image height is multiplied relative to the original height.
+
+
+ Calculate the preferred size for this picture.
+
+ @return XSSFClientAnchor with the preferred size for this image
+
+
+ Calculate the preferred size for this picture.
+
+ @param scaleX the amount by which image width is multiplied relative to the original width.
+ @param scaleY the amount by which image height is multiplied relative to the original height.
+ @return ClientAnchor with the preferred size for this image
+
+
+ Return the dimension of the embedded image in pixel
+
+ @return image dimension in pixels
+
+
+ Return picture data for this picture
+
+ @return picture data for this picture
+
+
+ @return the anchor that is used by this picture
+
+
+ Gets the picture data.
+
+ @return the picture data.
+
+
+ Suggests a file extension for this image.
+
+ @return the file extension.
+
+
+ Returns the mime type for the image
+
+
+ @return the POI internal image type, 0 if unknown image type
+
+ @see Workbook#PICTURE_TYPE_DIB
+ @see Workbook#PICTURE_TYPE_EMF
+ @see Workbook#PICTURE_TYPE_JPEG
+ @see Workbook#PICTURE_TYPE_PICT
+ @see Workbook#PICTURE_TYPE_PNG
+ @see Workbook#PICTURE_TYPE_WMF
+
+
+
+ return true if column headers should be visible
+
+
+
+
+ return true if row headers should be visible
+
+
+
+ These enumerations specify how cell comments shall be displayed for paper printing purposes.
+
+ @author Gisella Bronzetti
+
+
+ Do not print cell comments.
+
+
+ Print cell comments as displayed.
+
+
+ Print cell comments at end of document.
+
+
+ The enumeration value indicating the print orientation for a sheet.
+
+ @author Gisella Bronzetti
+
+
+ orientation not specified
+
+
+ portrait orientation
+
+
+ landscape orientations
+
+
+
+ Used by HSSFPrintSetup.CellError property
+
+
+
+ Returns the paper size.
+ @return paper size
+
+
+ Returns the scale.
+ @return scale
+
+
+ Returns the page start.
+ @return page start
+
+
+ Returns the number of pages wide to fit sheet in.
+ @return number of pages wide to fit sheet in
+
+
+ Returns the number of pages high to fit the sheet in.
+ @return number of pages high to fit the sheet in
+
+
+ Returns the left to right print order.
+ @return left to right print order
+
+
+ Returns the landscape mode.
+ @return landscape mode
+
+
+ Returns the valid Settings.
+ @return valid Settings
+
+
+ Returns the black and white Setting.
+ @return black and white Setting
+
+
+ Returns the draft mode.
+ @return draft mode
+
+
+ Returns the print notes.
+ @return print notes
+
+
+ Returns the no orientation.
+ @return no orientation
+
+
+ Returns the use page numbers.
+ @return use page numbers
+
+
+ Returns the horizontal resolution.
+ @return horizontal resolution
+
+
+ Returns the vertical resolution.
+ @return vertical resolution
+
+
+ Returns the header margin.
+ @return header margin
+
+
+ Returns the footer margin.
+ @return footer margin
+
+
+ Returns the number of copies.
+ @return number of copies
+
+
+ Rich text unicode string. These strings can have fonts
+ applied to arbitary parts of the string.
+
+ @author Glen Stampoultzis (glens at apache.org)
+ @author Jason Height (jheight at apache.org)
+
+
+ Applies a font to the specified characters of a string.
+
+ @param startIndex The start index to apply the font to (inclusive)
+ @param endIndex The end index to apply the font to (exclusive)
+ @param fontIndex The font to use.
+
+
+ Applies a font to the specified characters of a string.
+
+ @param startIndex The start index to apply the font to (inclusive)
+ @param endIndex The end index to apply to font to (exclusive)
+ @param font The index of the font to use.
+
+
+ Sets the font of the entire string.
+ @param font The font to use.
+
+
+ Removes any formatting that may have been applied to the string.
+
+
+ Returns the plain string representation.
+
+
+ @return the number of characters in the font.
+
+
+ @return The number of formatting Runs used.
+
+
+
+ The index within the string to which the specified formatting run applies.
+ @param index the index of the formatting run
+ @return the index within the string.
+
+
+ Applies the specified font to the entire string.
+
+ @param fontIndex the font to apply.
+
+
+ Used to specify the different possible policies
+ if for the case of null and blank cells
+
+
+
+ High level representation of a row of a spreadsheet.
+
+
+
+
+ Use this to create new cells within the row and return it.
+
+ The cell that is returned is a /.
+ The type can be changed either through calling SetCellValue or SetCellType.
+
+ the column number this cell represents
+ Cell a high level representation of the created cell.
+
+ ArgumentException if columnIndex < 0 or greater than the maximum number of supported columns
+ (255 for *.xls, 1048576 for *.xlsx)
+
+
+
+
+ Use this to create new cells within the row and return it.
+
+ The cell that is returned is a /. The type can be changed
+ either through calling SetCellValue or SetCellType.
+
+ the column number this cell represents
+
+ Cell a high level representation of the created cell.
+ ArgumentException if columnIndex < 0 or greater than the maximum number of supported columns
+ (255 for *.xls, 1048576 for *.xlsx)
+
+
+
+
+ Remove the Cell from this row.
+
+ the cell to remove
+
+
+
+ Get row number this row represents
+
+ the row number (0 based)
+
+
+
+ Get the cell representing a given column (logical cell) 0-based. If you
+ ask for a cell that is not defined....you get a null.
+
+ 0 based column number
+ Cell representing that column or null if undefined.
+
+
+
+
+ Returns the cell at the given (0 based) index, with the specified {@link NPOI.SS.usermodel.Row.MissingCellPolicy}
+
+ the cell at the given (0 based) index
+ ArgumentException if cellnum < 0 or the specified MissingCellPolicy is invalid
+
+
+
+
+
+
+ Get the number of the first cell Contained in this row.
+
+
+ short representing the first logical cell in the row,
+ or -1 if the row does not contain any cells.
+
+
+
+
+ Gets the index of the last cell Contained in this row PLUS ONE. The result also
+ happens to be the 1-based column number of the last cell. This value can be used as a
+ standard upper bound when iterating over cells:
+
+ short minColIx = row.GetFirstCellNum();
+ short maxColIx = row.GetLastCellNum();
+ for(short colIx=minColIx; colIx<maxColIx; colIx++) {
+ Cell cell = row.GetCell(colIx);
+ if(cell == null) {
+ continue;
+ }
+ //... do something with cell
+ }
+
+
+
+ short representing the last logical cell in the row PLUS ONE,
+ or -1 if the row does not contain any cells.
+
+
+
+
+ Gets the number of defined cells (NOT number of cells in the actual row!).
+ That is to say if only columns 0,4,5 have values then there would be 3.
+
+ int representing the number of defined cells in the row.
+
+
+
+ Get whether or not to display this row with 0 height
+
+ zHeight height is zero or not.
+
+
+
+ Get the row's height measured in twips (1/20th of a point).
+ If the height is not set, the default worksheet value is returned,
+
+
+ row height measured in twips (1/20th of a point)
+
+
+
+ Returns row height measured in point size.
+ If the height is not set, the default worksheet value is returned,
+
+
+ row height measured in point size
+
+
+
+
+
+ Is this row formatted? Most aren't, but some rows
+ do have whole-row styles. For those that do, you
+ can get the formatting from
+
+
+
+
+ Returns the Sheet this row belongs to
+
+ the Sheet that owns this row
+
+
+
+ Returns the whole-row cell styles. Most rows won't
+ have one of these, so will return null. Call IsFormmated to check first
+
+ The row style.
+
+
+
+ Moves the supplied cell to a new column, which
+ must not already have a cell there!
+
+ The cell to move
+ The new column number (0 based)
+
+
+
+ Copy the current row to the target row
+
+ row index of the target row
+ the new copied row object
+
+
+
+ Copy the source cell to the target cell. If the target cell exists, the new copied cell will be inserted before the existing one
+
+ index of the source cell
+ index of the target cell
+ the new copied cell object
+
+
+
+ Get cells in the row
+
+
+
+
+ Returns the rows outline level. Increased as you
+ put it into more groups (outlines), reduced as
+ you take it out of them.
+
+
+
+ All known types of automatic shapes in DrawingML
+
+ @author Yegor Kozlov
+
+
+
+ Allow accessing the Initial value.
+
+
+
+
+ Indicate the position of the margin. One of left, right, top and bottom.
+
+
+
+
+ referes to the left margin
+
+
+
+
+ referes to the right margin
+
+
+
+
+ referes to the top margin
+
+
+
+
+ referes to the bottom margin
+
+
+
+
+ Define the position of the pane. One of lower/right, upper/right, lower/left and upper/left.
+
+
+
+
+ referes to the lower/right corner
+
+
+
+
+ referes to the upper/right corner
+
+
+
+
+ referes to the lower/left corner
+
+
+
+
+ referes to the upper/left corner
+
+
+
+
+ High level representation of a Excel worksheet.
+
+
+ Sheets are the central structures within a workbook, and are where a user does most of his spreadsheet work.
+ The most common type of sheet is the worksheet, which is represented as a grid of cells. Worksheet cells can
+ contain text, numbers, dates, and formulas. Cells can also be formatted.
+
+
+
+
+ Create a new row within the sheet and return the high level representation
+
+ The row number.
+ high level Row object representing a row in the sheet
+ RemoveRow(Row)
+
+
+
+ Remove a row from this sheet. All cells Contained in the row are Removed as well
+
+ a row to Remove.
+
+
+
+ Returns the logical row (not physical) 0-based. If you ask for a row that is not
+ defined you get a null. This is to say row 4 represents the fifth row on a sheet.
+
+ row to get (0-based).
+ the rownumber or null if its not defined on the sheet
+
+
+
+ Returns the number of physically defined rows (NOT the number of rows in the sheet)
+
+ the number of physically defined rows in this sheet.
+
+
+
+ Gets the first row on the sheet
+
+ the number of the first logical row on the sheet (0-based).
+
+
+
+ Gets the last row on the sheet
+
+ last row contained n this sheet (0-based)
+
+
+
+ whether force formula recalculation.
+
+
+
+
+ Get the visibility state for a given column
+
+ the column to get (0-based)
+ the visiblity state of the column
+
+
+
+ Get the hidden state for a given column
+
+ the column to set (0-based)
+ hidden - false if the column is visible
+
+
+
+ Copy the source row to the target row. If the target row exists, the new copied row will be inserted before the existing one
+
+ source index
+ target index
+ the new copied row object
+
+
+
+ Copies comment from one cell to another
+
+ Cell with a comment to copy
+ Cell to paste the comment to
+ Copied comment
+
+
+
+ Set the width (in units of 1/256th of a character width)
+
+ the column to set (0-based)
+ the width in units of 1/256th of a character width
+
+ The maximum column width for an individual cell is 255 characters.
+ This value represents the number of characters that can be displayed
+ in a cell that is formatted with the standard font.
+
+
+
+
+ get the width (in units of 1/256th of a character width )
+
+ the column to get (0-based)
+ the width in units of 1/256th of a character width
+
+
+
+ get the width in pixel
+
+
+
+
+ Please note, that this method works correctly only for workbooks
+ with the default font size (Arial 10pt for .xls and Calibri 11pt for .xlsx).
+ If the default font is changed the column width can be streched
+
+
+
+
+ Get the default column width for the sheet (if the columns do not define their own width)
+ in characters
+
+ default column width measured in characters.
+
+
+
+ Get the default row height for the sheet (if the rows do not define their own height) in
+ twips (1/20 of a point)
+
+ default row height measured in twips (1/20 of a point)
+
+
+
+ Get the default row height for the sheet (if the rows do not define their own height) in
+ points.
+
+ The default row height in points.
+
+
+
+ Returns the CellStyle that applies to the given
+ (0 based) column, or null if no style has been
+ set for that column
+
+ The column.
+
+
+
+ Adds a merged region of cells (hence those cells form one)
+
+ (rowfrom/colfrom-rowto/colto) to merge.
+ index of this region
+
+
+
+ Adds a merged region of cells (hence those cells form one).
+ Skips validation. It is possible to create overlapping merged regions
+ or create a merged region that intersects a multi-cell array formula
+ with this formula, which may result in a corrupt workbook.
+
+ To check for merged regions overlapping array formulas or other merged regions
+ after addMergedRegionUnsafe has been called, call {@link #validateMergedRegions()}, which runs in O(n^2) time.
+
+ region to merge
+ index of this region
+ if region contains fewer than 2 cells
+
+
+
+ Verify that merged regions do not intersect multi-cell array formulas and
+ no merged regions intersect another merged region in this sheet.
+
+ if region intersects with a multi-cell array formula
+ if at least one region intersects with another merged region in this sheet
+
+
+
+ Determine whether printed output for this sheet will be horizontally centered.
+
+
+
+
+ Determine whether printed output for this sheet will be vertically centered.
+
+
+
+
+ Removes a merged region of cells (hence letting them free)
+
+ index of the region to unmerge
+
+
+
+ Removes a number of merged regions of cells (hence letting them free)
+
+ A set of the regions to unmerge
+
+
+
+ Returns the number of merged regions
+
+
+
+
+ Returns the merged region at the specified index
+
+ The index.
+
+
+
+ Returns the list of merged regions.
+
+
+
+
+ Gets the row enumerator.
+
+
+ an iterator of the PHYSICAL rows. Meaning the 3rd element may not
+ be the third row if say for instance the second row is undefined.
+ Call on each row
+ if you care which one it is.
+
+
+
+
+ Get the row enumerator
+
+
+
+
+
+ Gets the flag indicating whether the window should show 0 (zero) in cells Containing zero value.
+ When false, cells with zero value appear blank instead of showing the number zero.
+
+ whether all zero values on the worksheet are displayed.
+
+
+
+ Gets or sets a value indicating whether the sheet displays Automatic Page Breaks.
+
+
+
+
+ Get whether to display the guts or not,
+
+ default value is true
+
+
+
+ Flag indicating whether the Fit to Page print option is enabled.
+
+
+
+
+ Flag indicating whether summary rows appear below detail in an outline, when applying an outline.
+
+
+ When true a summary row is inserted below the detailed data being summarized and a
+ new outline level is established on that row.
+
+
+ When false a summary row is inserted above the detailed data being summarized and a new outline level
+ is established on that row.
+
+
+ true if row summaries appear below detail in the outline
+
+
+
+ Flag indicating whether summary columns appear to the right of detail in an outline, when applying an outline.
+
+
+ When true a summary column is inserted to the right of the detailed data being summarized
+ and a new outline level is established on that column.
+
+
+ When false a summary column is inserted to the left of the detailed data being
+ summarized and a new outline level is established on that column.
+
+
+ true if col summaries appear right of the detail in the outline
+
+
+
+ Gets the flag indicating whether this sheet displays the lines
+ between rows and columns to make editing and reading easier.
+
+ true if this sheet displays gridlines.
+
+
+
+ Get or set the flag indicating whether this sheet prints the
+ row and column headings when printing.
+
+ return true if this sheet prints row and column headings.
+
+
+
+
+ Gets the print Setup object.
+
+ The user model for the print Setup object.
+
+
+
+ Gets the user model for the default document header.
+
+ Note that XSSF offers more kinds of document headers than HSSF does
+
+
+ the document header. Never null
+
+
+
+ Gets the user model for the default document footer.
+
+ Note that XSSF offers more kinds of document footers than HSSF does.
+
+ the document footer. Never null
+
+
+
+ Gets the size of the margin in inches.
+
+ which margin to get
+ the size of the margin
+
+
+
+ Sets the size of the margin in inches.
+
+ which margin to get
+ the size of the margin
+
+
+
+ Answer whether protection is enabled or disabled
+
+ true => protection enabled; false => protection disabled
+
+
+
+ Sets the protection enabled as well as the password
+
+ to set for protection. Pass null to remove protection
+
+
+
+ Answer whether scenario protection is enabled or disabled
+
+ true => protection enabled; false => protection disabled
+
+
+
+ Gets or sets the tab color of the _sheet
+
+
+
+
+ Returns the top-level drawing patriach, if there is one.
+ This will hold any graphics or charts for the _sheet.
+ WARNING - calling this will trigger a parsing of the
+ associated escher records. Any that aren't supported
+ (such as charts and complex drawing types) will almost
+ certainly be lost or corrupted when written out. Only
+ use this with simple drawings, otherwise call
+ HSSFSheet#CreateDrawingPatriarch() and
+ start from scratch!
+
+ The drawing patriarch.
+
+
+
+ Sets the zoom magnication for the sheet. The zoom is expressed as a
+ fraction. For example to express a zoom of 75% use 3 for the numerator
+ and 4 for the denominator.
+
+ The numerator for the zoom magnification.
+ denominator for the zoom magnification.
+
+
+
+
+ The top row in the visible view when the sheet is
+ first viewed after opening it in a viewer
+
+ the rownum (0 based) of the top row.
+
+
+
+ The left col in the visible view when the sheet is
+ first viewed after opening it in a viewer
+
+ the rownum (0 based) of the top row
+
+
+
+ Sets desktop window pane display area, when the file is first opened in a viewer.
+
+ the top row to show in desktop window pane
+ the left column to show in desktop window pane
+
+
+
+ Shifts rows between startRow and endRow n number of rows.
+ If you use a negative number, it will shift rows up.
+ Code ensures that rows don't wrap around.
+
+ Calls shiftRows(startRow, endRow, n, false, false);
+
+
+ Additionally shifts merged regions that are completely defined in these
+ rows (ie. merged 2 cells on a row to be shifted).
+
+ the row to start shifting
+ the row to end shifting
+ the number of rows to shift
+
+
+
+ Shifts rows between startRow and endRow n number of rows.
+ If you use a negative number, it will shift rows up.
+ Code ensures that rows don't wrap around
+
+ Additionally shifts merged regions that are completely defined in these
+ rows (ie. merged 2 cells on a row to be shifted).
+
+ the row to start shifting
+ the row to end shifting
+ the number of rows to shift
+ whether to copy the row height during the shift
+ whether to set the original row's height to the default
+
+
+
+ Creates a split (freezepane). Any existing freezepane or split pane is overwritten.
+
+ Horizonatal position of split
+ Vertical position of split
+ Top row visible in bottom pane
+ Left column visible in right pane
+
+
+
+ Creates a split (freezepane). Any existing freezepane or split pane is overwritten.
+
+ Horizonatal position of split.
+ Vertical position of split.
+
+
+
+ Creates a split pane. Any existing freezepane or split pane is overwritten.
+
+ Horizonatal position of split (in 1/20th of a point)
+ Vertical position of split (in 1/20th of a point)
+ Left column visible in right pane
+ Top row visible in bottom pane
+ Active pane. One of: PANE_LOWER_RIGHT, PANE_UPPER_RIGHT, PANE_LOWER_LEFT, PANE_UPPER_LEFT
+ @see #PANE_LOWER_LEFT
+ @see #PANE_LOWER_RIGHT
+ @see #PANE_UPPER_LEFT
+ @see #PANE_UPPER_RIGHT
+
+
+
+ Returns the information regarding the currently configured pane (split or freeze)
+
+ if no pane configured returns null else return the pane information.
+
+
+
+ Returns if gridlines are displayed
+
+
+
+
+ Returns if formulas are displayed
+
+
+
+
+ Returns if RowColHeadings are displayed.
+
+
+
+
+ Returns if RowColHeadings are displayed.
+
+
+
+
+ Determines if there is a page break at the indicated row
+
+ The row.
+
+
+
+ Removes the page break at the indicated row
+
+ The row index.
+
+
+
+ Retrieves all the horizontal page breaks
+
+ all the horizontal page breaks, or null if there are no row page breaks
+
+
+
+ Retrieves all the vertical page breaks
+
+ all the vertical page breaks, or null if there are no column page breaks.
+
+
+
+ Sets the active cell range.
+
+ The firstrow.
+ The lastrow.
+ The firstcolumn.
+ The lastcolumn.
+
+
+
+ Sets the active cell range.
+
+ The cellranges.
+ The index of the active range.
+ The active row in the active range
+ The active column in the active range
+
+
+
+ Sets a page break at the indicated column
+
+ The column.
+
+
+
+ Sets the row break.
+
+ The row.
+
+
+
+ Determines if there is a page break at the indicated column
+
+ The column index.
+
+
+
+ Removes a page break at the indicated column
+
+ The column.
+
+
+
+ Expands or collapses a column group.
+
+ One of the columns in the group.
+ if set to truecollapse group.falseexpand group.
+
+
+
+ Create an outline for the provided column range.
+
+ beginning of the column range.
+ end of the column range.
+
+
+
+ Ungroup a range of columns that were previously groupped
+
+ start column (0-based).
+ end column (0-based).
+
+
+
+ Tie a range of rows toGether so that they can be collapsed or expanded
+
+ start row (0-based)
+ end row (0-based)
+
+
+
+ Ungroup a range of rows that were previously groupped
+
+ start row (0-based)
+ end row (0-based)
+
+
+
+ Set view state of a groupped range of rows
+
+ start row of a groupped range of rows (0-based).
+ whether to expand/collapse the detail rows.
+
+
+
+ Sets the default column style for a given column. POI will only apply this style to new cells Added to the sheet.
+
+ the column index
+ the style to set
+
+
+
+ Adjusts the column width to fit the contents.
+
+ the column index
+
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ processing.
+
+
+
+
+ Adjusts the column width to fit the contents.
+
+ the column index.
+ whether to use the contents of merged cells when
+ calculating the width of the column. Default is to ignore merged cells.
+
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ processing.
+
+
+
+
+ Adjusts the row height to fit the contents.
+
+ the row index
+
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per row, at the end of your
+ processing.
+
+
+
+
+ Adjusts the row height to fit the contents.
+
+ the row index.
+ whether to use the contents of merged cells when
+ calculating the height of the row. Default is to ignore merged cells.
+
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per row, at the end of your
+ processing.
+
+
+
+
+ Returns cell comment for the specified row and column
+
+ The row.
+ The column.
+
+
+
+ Returns cell comment for the specified location
+
+ cell location
+ return cell comment or null if not found
+
+
+
+ Returns all cell comments on this sheet.
+
+ return A Dictionary of each Comment in the sheet, keyed on the cell address where the comment is located.
+
+
+
+ Creates the top-level drawing patriarch.
+
+
+
+
+ Gets the parent workbook.
+
+
+
+
+ Gets the name of the sheet.
+
+
+
+
+ Gets or sets a value indicating whether this sheet is currently selected.
+
+
+
+
+ Sets whether sheet is selected.
+
+ Whether to select the sheet or deselect the sheet.
+
+
+
+ Sets array formula to specified region for result.
+
+ text representation of the formula
+ Region of array formula for result
+ the of cells affected by this change
+
+
+
+ Remove a Array Formula from this sheet. All cells contained in the Array Formula range are removed as well
+
+ any cell within Array Formula range
+ the of cells affected by this change
+
+
+
+ Checks if the provided region is part of the merged regions.
+
+ Region searched in the merged regions
+ true, when the region is contained in at least one of the merged regions
+
+
+
+ Create an instance of a DataValidationHelper.
+
+ Instance of a DataValidationHelper
+
+
+
+ Returns the list of DataValidation in the sheet.
+
+ list of DataValidation in the sheet
+
+
+
+ Creates a data validation object
+
+ The data validation object settings
+
+
+
+ Removes a data validation object
+
+ The data validation object settings
+
+
+
+ Enable filtering for a range of cells
+
+ the range of cells to filter
+
+
+
+ The 'Conditional Formatting' facet for this Sheet
+
+ conditional formatting rule for this sheet
+
+
+
+ Whether the text is displayed in right-to-left mode in the window
+
+
+
+
+ Get or set the repeating rows used when printing the sheet, as found in File->PageSetup->Sheet.
+
+ Repeating rows cover a range of contiguous rows, e.g.:
+
+ Sheet1!$1:$1
+ Sheet2!$5:$8
+
+ The {@link CellRangeAddress} returned contains a column part which spans
+ all columns, and a row part which specifies the contiguous range of
+ repeating rows.
+
+ If the Sheet does not have any repeating rows defined, null is returned.
+
+
+
+
+ Gets or set the repeating columns used when printing the sheet, as found in File->PageSetup->Sheet.
+
+ Repeating columns cover a range of contiguous columns, e.g.:
+
+ Sheet1!$A:$A
+ Sheet2!$C:$F
+
+ The {@link CellRangeAddress} returned contains a row part which spans all
+ rows, and a column part which specifies the contiguous range of
+ repeating columns.
+
+ If the Sheet does not have any repeating columns defined, null is
+ returned.
+
+
+
+
+ Copy sheet with a new name
+
+ new sheet name
+ cloned sheet
+
+
+
+ Copy sheet with a new name
+
+ new sheet name
+ whether to copy styles
+ cloned sheet
+
+
+
+ Returns the column outline level. Increased as you
+ put it into more groups (outlines), reduced as
+ you take it out of them.
+
+
+
+
+
+
+ Get a Hyperlink in this sheet anchored at row, column
+
+
+
+ return hyperlink if there is a hyperlink anchored at row, column; otherwise returns null
+
+
+
+ Get a Hyperlink in this sheet located in a cell specified by {code addr}
+
+ The address of the cell containing the hyperlink
+ return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null}
+
+
+
+ Get a list of Hyperlinks in this sheet
+
+ return Hyperlinks for the sheet
+
+
+
+ get or set location of the active cell, e.g. A1.
+
+
+
+ The 'Conditional Formatting' facet of Sheet
+
+ @author Dmitriy Kumshayev
+ @author Yegor Kozlov
+ @since 3.8
+
+
+
+ Add a new Conditional Formatting to the sheet.
+
+ list of rectangular regions to apply conditional formatting rules
+ the rule to apply
+ index of the newly Created Conditional Formatting object
+
+
+
+ Add a new Conditional Formatting consisting of two rules.
+
+ list of rectangular regions to apply conditional formatting rules
+ the first rule
+ the second rule
+ index of the newly Created Conditional Formatting object
+
+
+
+ Add a new Conditional Formatting Set to the sheet.
+
+ list of rectangular regions to apply conditional formatting rules
+ Set of up to three conditional formatting rules
+ index of the newly Created Conditional Formatting object
+
+
+
+ Adds a copy of a ConditionalFormatting object to the sheet
+
+ the Conditional Formatting to clone
+ index of the new Conditional Formatting object
+
+ This method could be used to copy ConditionalFormatting object
+ from one sheet to another. For example:
+ ConditionalFormatting cf = sheet.GetConditionalFormattingAt(index);
+ newSheet.AddConditionalFormatting(cf);
+
+
+
+ A factory method allowing to create a conditional formatting rule
+ with a cell comparison operator
+
+ The Created conditional formatting rule Compares a cell value
+ to a formula calculated result, using the specified operator.
+ The type of the Created condition is {@link ConditionalFormattingRule#CONDITION_TYPE_CELL_VALUE_IS}
+
+
+ @param comparisonOperation - MUST be a constant value from
+ {@link ComparisonOperator}:
+
+ - BETWEEN
+ - NOT_BETWEEN
+ - EQUAL
+ - NOT_EQUAL
+ - GT
+ - LT
+ - GE
+ - LE
+
+
+ @param formula1 - formula for the valued, Compared with the cell
+ @param formula2 - second formula (only used with
+ {@link ComparisonOperator#BETWEEN}) and {@link ComparisonOperator#NOT_BETWEEN} operations)
+
+
+
+ Create a conditional formatting rule that Compares a cell value to a formula calculated result, using an operator
+
+ MUST be a constant value from ComparisonOperator except BETWEEN and NOT_BETWEEN
+ the formula to determine if the conditional formatting is applied
+ a conditional formatting rule
+
+
+
+ Create a conditional formatting rule based on a Boolean formula.
+ When the formula result is true, the cell is highlighted.
+
+ the formula to Evaluate. MUST be a Boolean function.
+ conditional formatting rule
+
+
+
+
+
+
+ Gets Conditional Formatting object at a particular index
+
+ 0-based index of the Conditional Formatting object to fetch
+ Conditional Formatting object or null if not found
+ throws ArgumentException if the index is outside of the allowable range (0 ... numberOfFormats-1)
+
+
+
+ get the number of conditional formats in this sheet
+
+
+
+
+ Removes a Conditional Formatting object by index
+
+ 0-based index of the Conditional Formatting object to remove
+ throws ArgumentException if the index is outside of the allowable range (0 ... numberOfFormats-1)
+
+
+ Regular expression matching a Structured Reference (Table syntax) for XSSF table expressions.
+ Public for unit tests
+ @see
+ Excel Structured Reference Syntax
+
+
+
+ XSSF Only!
+ High level abstraction of table in a workbook.
+
+
+ Get the top-left column index relative to the sheet
+ @return table start column index on sheet
+
+
+ Get the top-left row index on the sheet
+ @return table start row index on sheet
+
+
+ Get the bottom-right column index on the sheet
+ @return table end column index on sheet
+
+
+ Get the bottom-right row index
+ @return table end row index on sheet
+
+
+ Get the name of the table.
+ @return table name
+
+
+ Returns the index of a given named column in the table (names are case insensitive in XSSF).
+ Note this list is lazily loaded and cached for performance.
+ Changes to the underlying table structure are not reflected in later calls
+ unless XSSFTable.UpdateHeaders() is called to reset the cache.
+ @param columnHeader the column header name to Get the table column index of
+ @return column index corresponding to columnHeader
+
+
+ Returns the sheet name that the table belongs to.
+
+
+ Returns true iff the table has a 'Totals' row
+
+
+
+ return true if alternating row styles should be applied
+
+
+
+
+ return true if the distinct first column style should be applied
+
+
+
+
+ return true if the distinct last column style should be applied
+
+
+
+
+ return the name of the style (may reference a built-in style)
+
+
+
+
+ style definition
+
+
+
+ This interface isn't implemented ...
+
+
+ @return the rich text string for this textbox.
+
+
+ @return Returns the left margin within the textbox.
+
+
+ @return returns the right margin within the textbox.
+
+
+ @return returns the top margin within the textbox.
+
+
+ s the bottom margin within the textbox.
+
+
+ This enumeration value indicates the type of vertical alignment for a cell, i.e.,
+ whether it is aligned top, bottom, vertically centered, justified or distributed.
+
+
+ The vertical alignment is aligned-to-top.
+
+
+ The vertical alignment is centered across the height of the cell.
+
+
+ The vertical alignment is aligned-to-bottom.
+
+
+
+ When text direction is horizontal: the vertical alignment of lines of text is distributed vertically,
+ where each line of text inside the cell is evenly distributed across the height of the cell,
+ with flush top and bottom margins.
+
+
+ When text direction is vertical: similar behavior as horizontal justification.
+ The alignment is justified (flush top and bottom in this case). For each line of text, each
+ line of the wrapped text in a cell is aligned to the top and bottom (except the last line).
+ If no single line of text wraps in the cell, then the text is not justified.
+
+
+
+
+ When text direction is horizontal: the vertical alignment of lines of text is distributed vertically,
+ where each line of text inside the cell is evenly distributed across the height of the cell,
+ with flush top
+
+
+ When text direction is vertical: behaves exactly as distributed horizontal alignment.
+ The first words in a line of text (appearing at the top of the cell) are flush
+ with the top edge of the cell, and the last words of a line of text are flush with the bottom edge of the cell,
+ and the line of text is distributed evenly from top to bottom.
+
+
+
+
+ Indicates the sheet is visible.
+
+
+
+
+ Indicates the book window is hidden, but can be shown by the user via the user interface.
+
+
+
+
+ Indicates the sheet is hidden and cannot be shown in the user interface (UI).
+
+
+ In Excel this state is only available programmatically in VBA:
+ ThisWorkbook.Sheets("MySheetName").Visible = xlSheetVeryHidden
+
+
+
+
+
+ High level interface of a Excel workbook. This is the first object most users
+ will construct whether they are reading or writing a workbook. It is also the
+ top level object for creating new sheets/etc.
+ This interface is shared between the implementation specific to xls and xlsx.
+ This way it is possible to access Excel workbooks stored in both formats.
+
+
+
+
+ get the active sheet. The active sheet is is the sheet
+ which is currently displayed when the workbook is viewed in Excel.
+
+
+
+
+ Gets the first tab that is displayed in the list of tabs in excel.
+
+
+
+
+ Sets the order of appearance for a given sheet.
+
+ the name of the sheet to reorder
+ the position that we want to insert the sheet into (0 based)
+
+
+
+ Sets the tab whose data is actually seen when the sheet is opened.
+ This may be different from the "selected sheet" since excel seems to
+ allow you to show the data of one sheet when another is seen "selected"
+ in the tabs (at the bottom).
+
+ the index of the sheet to select (0 based)
+
+
+
+ set the active sheet. The active sheet is is the sheet
+ which is currently displayed when the workbook is viewed in Excel.
+
+ index of the active sheet (0-based)
+
+
+
+ Set the sheet name
+
+ sheet number (0 based)
+ Sheet name
+
+
+
+ Set the sheet name.
+
+ sheet number (0 based)
+ sheet name
+
+
+
+ Returns the index of the sheet by its name
+
+ the sheet name
+ index of the sheet (0 based)
+
+
+
+ Returns the index of the given sheet
+
+ the sheet to look up
+ index of the sheet (0 based)
+
+
+
+ Sreate an Sheet for this Workbook, Adds it to the sheets and returns
+ the high level representation. Use this to create new sheets.
+
+
+
+
+
+ Create an Sheet for this Workbook, Adds it to the sheets and returns
+ the high level representation. Use this to create new sheets.
+
+ sheetname to set for the sheet.
+ Sheet representing the new sheet.
+
+
+
+ Create an Sheet from an existing sheet in the Workbook.
+
+
+
+
+
+
+ Get the number of spreadsheets in the workbook
+
+
+
+
+ Get the Sheet object at the given index.
+
+ index of the sheet number (0-based physical & logical)
+ Sheet at the provided index
+
+
+
+ Get sheet with the given name
+
+ name of the sheet
+ Sheet with the name provided or null if it does not exist
+
+
+
+ Removes sheet at the given index
+
+
+
+
+
+ Enumerate sheets
+
+
+
+
+
+ Create a new Font and add it to the workbook's font table
+
+
+
+
+
+ Finds a font that matches the one with the supplied attributes
+
+
+
+
+
+
+
+
+
+ the font with the matched attributes or null
+
+
+
+ Finds a font that matches the one with the supplied attributes
+
+
+
+
+
+
+
+
+
+ the font with the matched attributes or null
+
+
+
+ Get the number of fonts in the font table
+
+
+
+
+ Get the font at the given index number
+
+ index number (0-based)
+ font at the index
+
+
+
+ Create a new Cell style and add it to the workbook's style table
+
+ the new Cell Style object
+
+
+
+ Get the number of styles the workbook Contains
+
+
+
+
+ Get the cell style object at the given index
+
+ index within the set of styles (0-based)
+ CellStyle object at the index
+
+
+
+ Write out this workbook to an OutPutstream.
+
+ the stream you wish to write to
+ leave stream open or not
+
+
+
+ the total number of defined names in this workbook
+
+
+
+
+ the defined name with the specified name.
+
+ the name of the defined name
+ the defined name with the specified name. null if not found
+
+
+
+ Returns all defined names with the given name.
+
+ the name of the defined name
+ a list of the defined names with the specified name. An empty list is returned if none is found.
+
+
+
+ Returns all defined names.
+
+ a list of the defined names. An empty list is returned if none is found.
+
+
+
+ the defined name at the specified index
+
+ position of the named range (0-based)
+
+
+
+
+ Creates a new (unInitialised) defined name in this workbook
+
+ new defined name object
+
+
+
+ Gets the defined name index by name
+
+ the name of the defined name
+ zero based index of the defined name.
+
+
+
+ Remove the defined name at the specified index
+
+ named range index (0 based)
+
+
+
+ Remove a defined name by name
+
+ the name of the defined name
+
+
+
+ Remove a defined name
+
+ the name of the defined name
+
+
+
+ Adds the linking required to allow formulas referencing the specified
+ external workbook to be added to this one. In order for formulas
+ such as "[MyOtherWorkbook]Sheet3!$A$5" to be added to the file,
+ some linking information must first be recorded. Once a given external
+ workbook has been linked, then formulas using it can added. Each workbook
+ needs linking only once.
+ This linking only applies for writing formulas.
+ To link things for evaluation, see {@link FormulaEvaluator#setupReferencedWorkbooks(java.util.Map)}
+
+ The name the workbook will be referenced as in formulas
+ The open workbook to fetch the link required information from
+
+
+
+
+ Sets the printarea for the sheet provided
+
+ Zero-based sheet index
+ Valid name Reference for the Print Area
+
+
+
+ Sets the printarea for the sheet provided
+
+ Zero-based sheet index (0 = First Sheet)
+ Column to begin printarea
+ Column to end the printarea
+ Row to begin the printarea
+ Row to end the printarea
+
+
+
+ Retrieves the reference for the printarea of the specified sheet,
+ the sheet name is Appended to the reference even if it was not specified.
+
+ Zero-based sheet index
+ Null if no print area has been defined
+
+
+
+ Delete the printarea for the sheet specified
+
+ Zero-based sheet index (0 = First Sheet)
+
+
+
+ Retrieves the current policy on what to do when getting missing or blank cells from a row.
+
+
+
+
+ Returns the instance of DataFormat for this workbook.
+
+ the DataFormat object
+
+
+
+ Adds a picture to the workbook.
+
+ The bytes of the picture
+ The format of the picture.
+ the index to this picture (1 based).
+
+
+
+ Gets all pictures from the Workbook.
+
+ the list of pictures (a list of link PictureData objects.)
+
+
+
+ Return an object that handles instantiating concrete classes of
+ the various instances one needs for HSSF and XSSF.
+
+
+
+
+
+ if this workbook is not visible in the GUI
+
+
+
+
+ Check whether a sheet is hidden.
+
+ number of sheet
+ true if sheet is hidden
+
+
+ Check whether a sheet is very hidden.
+
+ This is different from the normal hidden status
+ ({@link #isSheetHidden(int)})
+
+ @param sheetIx sheet index to check
+ @return true if sheet is very hidden
+
+
+ Hide or unhide a sheet
+
+ @param sheetIx the sheet index (0-based)
+ @param hidden True to mark the sheet as hidden, false otherwise
+
+
+ Hide or unhide a sheet.
+
+ 0 = not hidden
+ 1 = hidden
+ 2 = very hidden.
+
+ @param sheetIx The sheet number
+ @param hidden 0 for not hidden, 1 for hidden, 2 for very hidden
+
+
+
+ Register a new toolpack in this workbook.
+
+ the toolpack to register
+
+
+
+ Gets a bool value that indicates whether the date systems used in the workbook starts in 1904.
+ The default value is false, meaning that the workbook uses the 1900 date system,
+ where 1/1/1900 is the first day in the system.
+
+ True if the date systems used in the workbook starts in 1904
+
+
+
+ Returns the spreadsheet version (EXCLE97) of this workbook
+
+
+
+ The Char (!) that Separates sheet names from cell references
+
+
+ The Char (:) that Separates the two cell references in a multi-cell area reference
+
+
+ The Char (') used to quote sheet names when they contain special Chars
+
+
+ Create an area ref from a string representation. Sheet names containing special Chars should be
+ delimited and escaped as per normal syntax rules for formulas.
+ The area reference must be contiguous (i.e. represent a single rectangle, not a Union of rectangles)
+
+
+ Creates an area ref from a pair of Cell References.
+
+
+ is the reference for a contiguous (i.e.
+ Unbroken) area, or is it made up of
+ several different parts?
+ (If it Is, you will need to call
+ ....
+
+
+ is the reference for a whole-column reference,
+ such as C:C or D:G ?
+
+
+ Takes a non-contiguous area reference, and
+ returns an array of contiguous area references.
+
+
+ @return false if this area reference involves more than one cell
+
+
+ @return the first cell reference which defines this area. Usually this cell is in the upper
+ left corner of the area (but this is not a requirement).
+
+
+ Note - if this area reference refers to a single cell, the return value of this method will
+ be identical to that of GetFirstCell()
+ @return the second cell reference which defines this area. For multi-cell areas, this is
+ cell diagonally opposite the 'first cell'. Usually this cell is in the lower right corner
+ of the area (but this is not a requirement).
+
+
+ Returns a reference to every cell covered by this area
+
+
+ Example return values:
+
+ | Result | Comment |
+ | A1:A1 | Single cell area reference without sheet |
+ | A1:$C$1 | Multi-cell area reference without sheet |
+ | Sheet1!A$1:B4 | Standard sheet name |
+ | 'O''Brien''s Sales'!B5:C6' | Sheet name with special Chars |
+
+ @return the text representation of this area reference as it would appear in a formula.
+
+
+ Separates Area refs in two parts and returns them as Separate elements in a String array,
+ each qualified with the sheet name (if present)
+
+ @return array with one or two elements. never null
+
+
+ This class is a Container for POI usermodel row=0 column=0 cell references.
+ It is barely a Container for these two coordinates. The implementation
+ of the Comparable interface sorts by "natural" order top left to bottom right.
+
+ Use CellAddress when you want to refer to the location of a cell in a sheet
+ when the concept of relative/absolute does not apply (such as the anchor location
+ of a cell comment). Use {@link CellReference} when the concept of
+ relative/absolute does apply (such as a cell reference in a formula).
+ CellAddresses do not have a concept of "sheet", while CellReferences do.
+
+
+ A constant for references to the first cell in a sheet.
+
+
+ Create a new CellAddress object.
+
+ @param row Row index (first row is 0)
+ @param column Column index (first column is 0)
+
+
+ Create a new CellAddress object.
+
+ @param Address a cell Address in A1 format. Address may not contain sheet name or dollar signs.
+ (that is, Address is not a cell reference. Use {@link #CellAddress(CellReference)} instead if
+ starting with a cell reference.)
+
+
+ Create a new CellAddress object.
+
+ @param reference a reference to a cell
+
+
+ Create a new CellAddress object
+
+ @param address a CellAddress
+
+
+ Create a new CellAddress object.
+
+ @param cell the Cell to Get the location of
+
+
+ Get the cell Address row
+
+ @return row
+
+
+ Get the cell Address column
+
+ @return column
+
+
+ Compare this CellAddress using the "natural" row-major, column-minor ordering.
+ That is, top-left to bottom-right ordering.
+
+ @param other
+ @return
+ - -1 if this CellAddress is before (above/left) of other
+ - 0 if Addresses are the same
+ - 1 if this CellAddress is After (below/right) of other
+
+
+
+ Same as {@link #ToString()}
+ @return A1-style cell Address string representation
+
+
+ Creates new cell range. Indexes are zero-based.
+
+ @param firstRow Index of first row
+ @param lastRow Index of last row (inclusive), must be equal to or larger than {@code firstRow}
+ @param firstCol Index of first column
+ @param lastCol Index of last column (inclusive), must be equal to or larger than {@code firstCol}
+
+
+ @return the text format of this range using specified sheet name.
+
+
+
+ Creates a CellRangeAddress from a cell range reference string.
+
+
+ usually a standard area ref (e.g. "B1:D8"). May be a single
+ cell ref (e.g. "B5") in which case the result is a 1 x 1 cell
+ range. May also be a whole row range (e.g. "3:5"), or a whole
+ column range (e.g. "C:F")
+
+ a CellRangeAddress object
+
+
+ See OOO documentation: excelfileformat.pdf sec 2.5.14 - 'Cell Range Address'
+
+ Common subclass of 8-bit and 16-bit versions
+
+ @author Josh Micich
+
+
+ Validate the range limits against the supplied version of Excel
+
+ @param ssVersion the version of Excel to validate against
+ @throws IllegalArgumentException if the range limits are outside of the allowed range
+
+
+ Runs a bounds check for row numbers
+ @param row
+
+
+ Runs a bounds check for column numbers
+ @param column
+
+
+ Check if the row is in the specified cell range
+
+ @param rowInd the row to check
+ @return true if the range contains the row [rowInd]
+
+
+ Check if the column is in the specified cell range
+
+ @param colInd the column to check
+ @return true if the range contains the column [colInd]
+
+
+
+ Determines whether or not this CellRangeAddress and the specified CellRangeAddress intersect.
+
+ a candidate cell range address to check for intersection with this range
+ returns true if this range and other range have at least 1 cell in common
+
+
+ @return column number for the upper left hand corner
+
+
+ @return row number for the upper left hand corner
+
+
+ @return column number for the lower right hand corner
+
+
+ @return row number for the lower right hand corner
+
+
+ @return the size of the range (number of cells in the area).
+
+
+ List of CellRangeAddresses. Each structure represents a cell range
+
+
+ Convenience constructor for creating a CellRangeAddressList with a single
+ CellRangeAddress. Other CellRangeAddresses may be Added later.
+
+
+ @param in the RecordInputstream to read the record from
+
+
+ Get the number of following ADDR structures. The number of this
+ structures is automatically set when reading an Excel file and/or
+ increased when you manually Add a new ADDR structure . This is the reason
+ there isn't a set method for this field .
+
+ @return number of ADDR structures
+
+
+ Add a cell range structure.
+
+ @param firstRow - the upper left hand corner's row
+ @param firstCol - the upper left hand corner's col
+ @param lastRow - the lower right hand corner's row
+ @param lastCol - the lower right hand corner's col
+ @return the index of this ADDR structure
+
+
+ @return CellRangeAddress at the given index
+
+
+ @return the total size of for the specified number of ranges,
+ including the initial 2 byte range count
+
+
+ Utility class that builds on {@link CellRangeAddress}
+
+ Portions of this class may be moved to {@link CellRangeAddressBase}
+
+
+ first range is within the second range
+
+
+ first range encloses or is equal to the second
+
+
+ Get the type of intersection between two cell ranges
+
+ @param crB - the specified range
+ @return code which reflects how the specified range is related to this range.
+ Possible return codes are:
+ NO_INTERSECTION - the specified range is outside of this range;
+ OVERLAP - both ranges partially overlap;
+ INSIDE - the specified range is inside of this one
+ ENCLOSES - the specified range encloses (possibly exactly the same as) this range
+
+
+ Do all possible cell merges between cells of the list so that:
+ if a cell range is completely inside of another cell range, it s removed from the list
+ if two cells have a shared border, merge them into one bigger cell range
+ @param cellRangeList
+ @return updated List of cell ranges
+
+
+ @return the new range(s) to replace the supplied ones. null if no merge is possible
+
+
+ **
+
+
+ Check if the specified range is located inside of this cell range.
+
+ @param crB
+ @return true if this cell range Contains the argument range inside if it's area
+
+
+ Check if the specified cell range has a shared border with the current range.
+
+ @return true if the ranges have a complete shared border (i.e.
+ the two ranges toher make a simple rectangular region.
+
+
+ Create an enclosing CellRange for the two cell ranges.
+
+ @return enclosing CellRange
+
+
+ @return true if a < b
+
+
+ @return true if a <= b
+
+
+ @return true if a > b
+
+
+ @return true if a >= b
+
+
+
+ Allow accessing the Initial value.
+
+
+
+ Common conversion functions between Excel style A1, C27 style
+ cell references, and POI usermodel style row=0, column=0
+ style references. Handles sheet-based and sheet-free references
+ as well, eg "Sheet1!A1" and "$B$72"
+
+ Use CellReference when the concept of
+ relative/absolute does apply (such as a cell reference in a formula).
+ Use {@link CellAddress} when you want to refer to the location of a cell in a sheet
+ when the concept of relative/absolute does not apply (such as the anchor location
+ of a cell comment).
+ CellReferences have a concept of "sheet", while CellAddresses do not.
+
+
+ The character ($) that signifies a row or column value is absolute instead of relative
+
+
+ The character (!) that Separates sheet names from cell references
+
+
+ The character (') used to quote sheet names when they contain special characters
+
+
+ Create an cell ref from a string representation. Sheet names containing special characters should be
+ delimited and escaped as per normal syntax rules for formulas.
+
+
+ @return possibly null if this is a 2D reference. Special characters are not
+ escaped or delimited
+
+
+ takes in a column reference portion of a CellRef and converts it from
+ ALPHA-26 number format to 0-based base 10.
+ 'A' -> 0
+ 'Z' -> 25
+ 'AA' -> 26
+ 'IV' -> 255
+ @return zero based column index
+
+
+ Takes in a 0-based base-10 column and returns a ALPHA-26
+ representation.
+ eg column #3 -> D
+
+
+ Separates the row from the columns and returns an array of three Strings. The first element
+ is the sheet name. Only the first element may be null. The second element in is the column
+ name still in ALPHA-26 number format. The third element is the row.
+
+
+ Example return values:
+
+ | Result | Comment |
+ | A1 | Cell reference without sheet |
+ | Sheet1!A1 | Standard sheet name |
+ | 'O''Brien''s Sales'!A1' | Sheet name with special characters |
+
+ @return the text representation of this cell reference as it would appear in a formula.
+
+
+ Returns the three parts of the cell reference, the
+ Sheet name (or null if none supplied), the 1 based
+ row number, and the A based column letter.
+ This will not include any markers for absolute
+ references, so use {@link #formatAsString()}
+ to properly turn references into strings.
+
+
+ Appends cell reference with '$' markers for absolute values as required.
+ Sheet name is not included.
+
+
+ Used to decide whether a name of the form "[A-Z]*[0-9]*" that appears in a formula can be
+ interpreted as a cell reference. Names of that form can be also used for sheets and/or
+ named ranges, and in those circumstances, the question of whether the potential cell
+ reference is valid (in range) becomes important.
+
+ Note - that the maximum sheet size varies across Excel versions:
+
+
+ | Version | File Format |
+ Last Column | Last Row |
+ | 97-2003 | BIFF8 | "IV" (2^8) | 65536 (2^14) |
+ | 2007 | BIFF12 | "XFD" (2^14) | 1048576 (2^20) |
+
+ POI currently targets BIFF8 (Excel 97-2003), so the following behaviour can be observed for
+ this method:
+
+ | Input |
+ Result |
+ | "A", "1" | true |
+ | "a", "111" | true |
+ | "A", "65536" | true |
+ | "A", "65537" | false |
+ | "iv", "1" | true |
+ | "IW", "1" | false |
+ | "AAA", "1" | false |
+ | "a", "111" | true |
+ | "Sheet", "1" | false |
+
+
+ @param colStr a string of only letter characters
+ @param rowStr a string of only digit characters
+ @return true if the row and col parameters are within range of a BIFF8 spreadsheet.
+
+
+ @deprecated 3.15 beta 2. Use {@link #isColumnWithinRange}.
+
+
+
+ Generic parsing logic that extracts reference information.
+
+ Input to parse.
+ Possible column prefix like '$', if none.
+ Column name string, empty if none.
+ Possible row prefix like '$', if none.
+ Row data, empty if none
+
+
+
+ Various utility functions that make working with a cells and rows easier. The various methods
+ that deal with style's allow you to create your CellStyles as you need them. When you apply a
+ style change to a cell, the code will attempt to see if a style already exists that meets your
+ needs. If not, then it will create a new style. This is to prevent creating too many styles.
+ there is an upper limit in Excel on the number of styles that can be supported.
+
+ @author Eric Pugh epugh@upstate.com
+ @author (secondary) Avinash Kewalramani akewalramani@accelrys.com
+
+
+ Get a row from the spreadsheet, and create it if it doesn't exist.
+
+ @param rowIndex The 0 based row number
+ @param sheet The sheet that the row is part of.
+ @return The row indicated by the rowCounter
+
+
+ Get a specific cell from a row. If the cell doesn't exist, then create it.
+
+ @param row The row that the cell is part of
+ @param columnIndex The column index that the cell is in.
+ @return The cell indicated by the column.
+
+
+ Creates a cell, gives it a value, and applies a style if provided
+
+ @param row the row to create the cell in
+ @param column the column index to create the cell in
+ @param value The value of the cell
+ @param style If the style is not null, then set
+ @return A new Cell
+
+
+ Create a cell, and give it a value.
+
+ @param row the row to create the cell in
+ @param column the column index to create the cell in
+ @param value The value of the cell
+ @return A new Cell.
+
+
+ Take a cell, and align it.
+
+ @param cell the cell to set the alignment for
+ @param workbook The workbook that is being worked with.
+ @param align the column alignment to use.
+
+ @see CellStyle for alignment options
+
+
+ Take a cell, and align it.
+
+ This is superior to cell.getCellStyle().setAlignment(align) because
+ this method will not modify the CellStyle object that may be referenced
+ by multiple cells. Instead, this method will search for existing CellStyles
+ that match the desired CellStyle, creating a new CellStyle with the desired
+ style if no match exists.
+
+ @param cell the cell to set the alignment for
+ @param align the horizontal alignment to use.
+
+ @see HorizontalAlignment for alignment options
+ @since POI 3.15 beta 3
+
+
+ Take a cell, and vertically align it.
+
+ This is superior to cell.getCellStyle().setVerticalAlignment(align) because
+ this method will not modify the CellStyle object that may be referenced
+ by multiple cells. Instead, this method will search for existing CellStyles
+ that match the desired CellStyle, creating a new CellStyle with the desired
+ style if no match exists.
+
+ @param cell the cell to set the alignment for
+ @param align the vertical alignment to use.
+
+ @see VerticalAlignment for alignment options
+ @since POI 3.15 beta 3
+
+
+ Take a cell, and apply a font to it
+
+ @param cell the cell to set the alignment for
+ @param workbook The workbook that is being worked with.
+ @param font The Font that you want to set...
+
+
+ Take a cell, and apply a font to it
+
+ @param cell the cell to set the alignment for
+ @param font The Font that you want to set.
+ @throws IllegalArgumentException if font and cell do not belong to the same workbook
+
+
+ This method attempts to find an existing CellStyle that matches the cell's
+ current style plus styles properties in properties. A new style is created if the
+ workbook does not contain a matching style.
+
+ Modifies the cell style of cell without affecting other cells that use the
+ same style.
+
+ This is necessary because Excel has an upper limit on the number of styles that it supports.
+
+ This function is more efficient than multiple calls to
+ {@link #setCellStyleProperty(org.apache.poi.ss.usermodel.Cell, org.apache.poi.ss.usermodel.Workbook, String, Object)}
+ if adding multiple cell styles.
+
+ For performance reasons, if this is the only cell in a workbook that uses a cell style,
+ this method does NOT remove the old style from the workbook.
+
+
+
+ @param cell The cell to change the style of
+ @param properties The properties to be added to a cell style, as {propertyName: propertyValue}.
+ @since POI 3.14 beta 2
+
+
+ This method attempts to find an existing CellStyle that matches the cell's
+ current style plus a single style property propertyName with value
+ propertyValue.
+ A new style is created if the workbook does not contain a matching style.
+
+ Modifies the cell style of cell without affecting other cells that use the
+ same style.
+
+ If setting more than one cell style property on a cell, use
+ {@link #setCellStyleProperties(org.apache.poi.ss.usermodel.Cell, Map)},
+ which is faster and does not add unnecessary intermediate CellStyles to the workbook.
+
+ @param cell The cell that is to be changed.
+ @param propertyName The name of the property that is to be changed.
+ @param propertyValue The value of the property that is to be changed.
+
+
+ This method attempts to find an existing CellStyle that matches the cell's
+ current style plus a single style property propertyName with value
+ propertyValue.
+ A new style is created if the workbook does not contain a matching style.
+
+ Modifies the cell style of cell without affecting other cells that use the
+ same style.
+
+ If setting more than one cell style property on a cell, use
+ {@link #setCellStyleProperties(Cell, Map)},
+ which is faster and does not add unnecessary intermediate CellStyles to the workbook.
+
+ @param workbook The workbook that is being worked with.
+ @param propertyName The name of the property that is to be changed.
+ @param propertyValue The value of the property that is to be changed.
+ @param cell The cell that needs it's style changes
+
+
+ Copies the entries in src to dest, using the preferential data type
+ so that maps can be compared for equality
+
+ @param src the property map to copy from (read-only)
+ @param dest the property map to copy into
+ @since POI 3.15 beta 3
+
+
+ Returns a map containing the format properties of the given cell style.
+ The returned map is not tied to style, so subsequent changes
+ to style will not modify the map, and changes to the returned
+ map will not modify the cell style. The returned map is mutable.
+ @param style cell style
+ @return map of format properties (String -> Object)
+ @see #setFormatProperties(org.apache.poi.ss.usermodel.CellStyle, org.apache.poi.ss.usermodel.Workbook, java.util.Map)
+
+
+ Sets the format properties of the given style based on the given map.
+
+ @param style cell style
+ @param workbook parent workbook
+ @param properties map of format properties (String -> Object)
+ @see #getFormatProperties(CellStyle)
+
+
+ Utility method that returns the named short value form the given map.
+
+ @param properties map of named properties (String -> Object)
+ @param name property name
+ @return zero if the property does not exist, or is not a {@link Short}.
+
+
+ Utility method that returns the named int value from the given map.
+
+ @param properties map of named properties (String -> Object)
+ @param name property name
+ @return zero if the property does not exist, or is not a {@link Integer}
+ otherwise the property value
+
+
+ Utility method that returns the named BorderStyle value form the given map.
+
+ @param properties map of named properties (String -> Object)
+ @param name property name
+ @return Border style if set, otherwise {@link BorderStyle#NONE}
+
+
+ Utility method that returns the named FillPattern value from the given map.
+
+ @param properties map of named properties (String -> Object)
+ @param name property name
+ @return FillPattern style if set, otherwise {@link FillPattern#NO_FILL}
+ @since POI 3.15 beta 3
+
+
+ Utility method that returns the named HorizontalAlignment value from the given map.
+
+ @param properties map of named properties (String -> Object)
+ @param name property name
+ @return HorizontalAlignment style if set, otherwise {@link HorizontalAlignment#GENERAL}
+ @since POI 3.15 beta 3
+
+
+ Utility method that returns the named VerticalAlignment value from the given map.
+
+ @param properties map of named properties (String -> Object)
+ @param name property name
+ @return VerticalAlignment style if set, otherwise {@link VerticalAlignment#BOTTOM}
+ @since POI 3.15 beta 3
+
+
+ Utility method that returns the named boolean value form the given map.
+
+ @param properties map of properties (String -> Object)
+ @param name property name
+ @return false if the property does not exist, or is not a {@link Boolean}.
+
+
+ Utility method that puts the given value to the given map.
+
+ @param properties map of properties (String -> Object)
+ @param name property name
+ @param value property value
+
+
+ Utility method that puts the named short value to the given map.
+
+ @param properties map of properties (String -> Object)
+ @param name property name
+ @param value property value
+
+
+ Utility method that puts the named short value to the given map.
+
+ @param properties map of properties (String -> Object)
+ @param name property name
+ @param value property value
+
+
+ Utility method that puts the named boolean value to the given map.
+
+ @param properties map of properties (String -> Object)
+ @param name property name
+ @param value property value
+
+
+ Looks for text in the cell that should be unicode, like an alpha and provides the
+ unicode version of it.
+
+ @param cell The cell to check for unicode values
+ @return translated to unicode
+
+
+ Represents callback for CellWalk traverse method.
+ @author Roman Kashitsyn
+
+
+ @param cell current cell
+ @param ctx information about invokation context
+
+
+ Traverse cell range.
+
+ @author Roman Kashitsyn
+
+
+ Should we call handler on empty (blank) cells. Default is
+ false.
+ @return true if handler should be called on empty (blank)
+ cells, false otherwise.
+
+
+ Sets the traverseEmptyCells property.
+ @param traverseEmptyCells new property value
+
+
+ Traverse cell range from top left to bottom right cell.
+ @param handler handler to call on each appropriate cell
+
+
+ Inner class to hold walk context.
+ @author Roman Kashitsyn
+
+
+ @author Roman Kashitsyn
+
+
+ Returns ordinal number of cell in range. Numeration starts
+ from top left cell and ends at bottom right cell. Here is a
+ brief example (number in cell is it's ordinal number):
+
+
+
+ @return ordinal number of current cell
+
+
+ Returns number of current row.
+ @return number of current row
+
+
+ Returns number of current column.
+ @return number of current column
+
+
+
+ Represents data marker used in charts.
+ @author Roman Kashitsyn
+
+
+
+
+ constructor
+
+ the sheet where data located.
+ the range within that sheet.
+
+
+
+ get or set the sheet marker points to.
+
+
+
+
+ get or set range of the marker.
+
+
+
+
+ Formats data marker using canonical format, for example
+ 'SheetName!$A$1:$A$5'.
+
+ formatted data marker
+
+
+
+ Convert DateFormat patterns into Excel custom number formats.
+ For example, to format a date in excel using the "dd MMMM, yyyy" pattern and Japanese
+ locale, use the following code:
+
+
+ returns "[$-0411]dd MMMM, yyyy;@" where the [$-0411] prefix tells Excel to use the Japanese locale
+ String excelFormatPattern = DateFormatConverter.convert(Locale.JAPANESE, "dd MMMM, yyyy");
+
+ CellStyle cellStyle = workbook.createCellStyle();
+
+ DataFormat poiFormat = workbook.createDataFormat();
+ cellStyle.setDataFormat(poiFormat.getFormat(excelFormatPattern));
+ cell.setCellValue(new Date());
+ cell.setCellStyle(cellStyle); // formats date as '2012\u5e743\u670817\u65e5'
+
+
+
+ Always 64 bits long (MSB, bit-63 is '1')
+
+
+ Convert to an equivalent {@link NormalisedDecimal} representation having 15 decimal digits of precision in the
+ non-fractional bits of the significand.
+
+
+ @return the number of non-fractional bits after the MSB of the significand
+
+
+
+ A substitute class for Format class in Java
+
+
+
+ Format class for Excel's SSN Format. This class mimics Excel's built-in
+ SSN Formatting.
+
+ @author James May
+
+
+ Format a number as an SSN
+
+
+ Format class for Excel Zip + 4 Format. This class mimics Excel's
+ built-in Formatting for Zip + 4.
+ @author James May
+
+
+ Format a number as Zip + 4
+
+
+ Format class for Excel phone number Format. This class mimics Excel's
+ built-in phone number Formatting.
+ @author James May
+
+
+ Format a number as a phone number
+
+
+ Format class that does nothing and always returns a constant string.
+
+ This format is used to simulate Excel's handling of a format string
+ of all # when the value is 0. Excel will output "", Java will output "0".
+
+ @see DataFormatter#createFormat(double, int, String)
+
+
+ The value the exponent field Gets for all NaN and InfInity values
+
+
+ @param rawBits the 64 bit binary representation of the double value
+ @return the top 12 bits (sign and biased exponent value)
+
+
+ @author Yegor Kozlov
+
+
+ Return the dimension of this image
+
+ @param is the stream Containing the image data
+ @param type type of the picture: {@link NPOI.SS.UserModel.Workbook#PICTURE_TYPE_JPEG},
+ {@link NPOI.SS.UserModel.Workbook#PICTURE_TYPE_PNG} or {@link NPOI.SS.UserModel.Workbook#PICTURE_TYPE_DIB}
+
+ @return image dimension in pixels
+
+
+ The metadata of PNG and JPEG can contain the width of a pixel in millimeters.
+ Return the the "effective" dpi calculated as 25.4/HorizontalPixelSize
+ and 25.4/VerticalPixelSize. Where 25.4 is the number of mm in inch.
+
+ @return array of two elements: {horisontalPdi, verticalDpi}.
+ {96, 96} is the default.
+
+
+ Calculate and Set the preferred size (anchor) for this picture.
+
+ @param scaleX the amount by which image width is multiplied relative to the original width.
+ @param scaleY the amount by which image height is multiplied relative to the original height.
+ @return the new Dimensions of the scaled picture in EMUs
+
+
+ Calculates the dimensions in EMUs for the anchor of the given picture
+
+ @param picture the picture Containing the anchor
+ @return the dimensions in EMUs
+
+
+ The minimum value in 'Base-10 normalised form'.
+ When {@link #_binaryExponent} == 46 this is the the minimum {@link #_frac} value
+ (1014-0.05) * 2^17
+
+ Values between (1014-0.05) and 1014 will be represented as '1'
+ followed by 14 zeros.
+ Values less than (1014-0.05) will get Shifted by one more power of 10
+
+ This frac value rounds to '1' followed by fourteen zeros with an incremented decimal exponent
+
+
+ For 'Base-10 normalised form'
+ The maximum {@link #_frac} value when {@link #_binaryExponent} == 49
+ (10^15-0.5) * 2^14
+
+
+ Width of a long
+
+
+ Minimum precision after discarding whole 32-bit words from the significand
+
+
+ @param nBits number of bits to shift right
+
+
+ Holds values for quick multiplication and division by 10
+
+
+ Number of powers of ten Contained in the significand
+
+
+ 219
+
+
+ the value of {@link #_fractionalPart} that represents 0.5
+
+
+ 1015
+
+
+ Rounds at the digit with value 10decimalExponent
+
+
+ The decimal exponent increased by one less than the digit count of {@link #_wholePart}
+
+
+ The whole part of the significand (typically 15 digits).
+
+ 47-50 bits long (MSB may be anywhere from bit 46 to 49)
+ LSB is units bit.
+
+
+ The fractional part of the significand.
+ 24 bits (only top 14-17 bits significant): a value between 0x000000 and 0xFFFF80
+
+
+ Convert to an equivalent {@link ExpandedDouble} representation (binary frac and exponent).
+ The resulting transformed object is easily Converted to a 64 bit IEEE double:
+
+ - bits 2-53 of the {@link #GetSignificand()} become the 52 bit 'fraction'.
+ - {@link #GetBinaryExponent()} is biased by 1023 to give the 'exponent'.
+
+ The sign bit must be obtained from somewhere else.
+ @return a new {@link NormalisedDecimal} normalised to base 2 representation.
+
+
+ @return the significand as a fixed point number (with 24 fraction bits and 47-50 whole bits)
+
+
+ Rounds the first whole digit position (considers only units digit, not frational part).
+ Caller should check total digit count of result to see whether the rounding operation caused
+ a carry out of the most significant digit
+
+
+ @return the number of powers of 10 which have been extracted from the significand and binary exponent.
+
+
+ assumes both this and other are normalised
+
+
+ This class attempts to reproduce Excel's behaviour for comparing numbers. Results are
+ mostly the same as those from {@link Double#compare(double, double)} but with some
+ rounding. For numbers that are very close, this code converts to a format having 15
+ decimal digits of precision and a decimal exponent, before completing the comparison.
+
+ In Excel formula evaluation, expressions like "(0.06-0.01)=0.05" evaluate to "TRUE" even
+ though the equivalent java expression is false. In examples like this,
+ Excel achieves the effect by having additional logic for comparison operations.
+
+
+ Note - Excel also gives special treatment to expressions like "0.06-0.01-0.05" which
+ evaluates to "0" (in java, rounding anomalies give a result of 6.9E-18). The special
+ behaviour here is for different reasons to the example above: If the last operator in a
+ cell formula is '+' or '-' and the result is less than 250 times smaller than
+ first operand, the result is rounded to zero.
+ Needless to say, the two rules are not consistent and it is relatively easy to find
+ examples that satisfy
+ "A=B" is "TRUE" but "A-B" is not "0"
+ and
+ "A=B" is "FALSE" but "A-B" is "0"
+
+ This rule (for rounding the result of a final addition or subtraction), has not been
+ implemented in POI (as of Jul-2009).
+
+ @return negative, 0, or positive according to the standard Excel comparison
+ of values a and b.
+
+
+ If both numbers are subnormal, Excel seems to use standard comparison rules
+
+
+ Usually any normal number is greater (in magnitude) than any subnormal number.
+ However there are some anomalous cases around the threshold where Excel produces screwy results
+ @param isNegative both values are either negative or positive. This parameter affects the sign of the comparison result
+ @return usually isNegative ? -1 : +1
+
+
+ for formatting double values in error messages
+
+
+ Converts the supplied value to the text representation that Excel would give if
+ the value were to appear in an unformatted cell, or as a literal number in a formula.
+ Note - the results from this method differ slightly from those of Double.ToString()
+ In some special cases Excel behaves quite differently. This function attempts to reproduce
+ those results.
+
+
+ Holds information regarding a split plane or freeze plane for a sheet.
+
+
+
+ Constant for active pane being the lower right
+
+
+ Constant for active pane being the upper right
+
+
+ Constant for active pane being the lower left
+
+
+ Constant for active pane being the upper left
+
+
+ Returns the vertical position of the split.
+ @return 0 if there is no vertical spilt,
+ or for a freeze pane the number of columns in the TOP pane,
+ or for a split plane the position of the split in 1/20th of a point.
+
+
+ Returns the horizontal position of the split.
+ @return 0 if there is no horizontal spilt,
+ or for a freeze pane the number of rows in the LEFT pane,
+ or for a split plane the position of the split in 1/20th of a point.
+
+
+ For a horizontal split returns the top row in the BOTTOM pane.
+ @return 0 if there is no horizontal split, or the top row of the bottom pane.
+
+
+ For a vertical split returns the left column in the RIGHT pane.
+ @return 0 if there is no vertical split, or the left column in the RIGHT pane.
+
+
+ Returns the active pane
+ @see #PANE_LOWER_RIGHT
+ @see #PANE_UPPER_RIGHT
+ @see #PANE_LOWER_LEFT
+ @see #PANE_UPPER_LEFT
+ @return the active pane.
+
+
+ Returns true if this is a Freeze pane, false if it is a split pane.
+
+
+
+
+ This is a list of cell properties for one shot application to a range of
+ cells at a later time.
+
+
+
+
+ Create a PropertyTemplate object
+
+
+
+
+ Create a PropertyTemplate object from another PropertyTemplate
+
+ a PropertyTemplate object
+
+
+
+ Draws a group of cell borders for a cell range. The borders are not
+ applied to the cells at this time, just the template is Drawn. To apply
+ the Drawn borders to a sheet, use .
+
+ range
+ - range of cells on which borders are
+ Drawn.
+
+ borderType
+ - Type of border to Draw. .
+
+ extent
+ - of the borders to be
+ applied.
+
+
+
+
+ Draws a group of cell borders for a cell range. The borders are not
+ applied to the cells at this time, just the template is Drawn. To apply
+ the Drawn borders to a sheet, use .
+
+ range
+ - range of cells on which borders are
+ Drawn.
+
+ borderType
+ - Type of border to Draw. .
+
+ color
+ - Color index from used to Draw the
+ borders.
+
+ extent
+ - of the borders to be
+ applied.
+
+
+
+
+ Draws the top border for a range of cells
+
+ range
+ - range of cells on which borders are
+ Drawn.
+
+ borderType
+ - Type of border to Draw. .
+
+
+
+
+ Draws the bottom border for a range of cells
+
+ range
+ - range of cells on which borders are
+ Drawn.
+
+ borderType
+ - Type of border to Draw. .
+
+
+
+
+ Draws the left border for a range of cells
+
+ range
+ - range of cells on which borders are
+ Drawn.
+
+ borderType
+ - Type of border to Draw. .
+
+
+
+
+ Draws the right border for a range of cells
+
+ range
+ - range of cells on which borders are
+ Drawn.
+
+ borderType
+ - Type of border to Draw. .
+
+
+
+
+
+
+
+ Removes all border properties from this for the
+ specified range.
+
+ @parm range - range of cells to remove borders.
+
+
+
+ Applies the Drawn borders to a Sheet. The borders that are applied are
+ the ones that have been Drawn by the and
+ methods.
+
+ sheet
+ - on which to apply borders
+
+
+
+
+ Sets the color for a group of cell borders for a cell range. The borders
+ are not applied to the cells at this time, just the template is Drawn. If
+ the borders do not exist, a BORDER_THIN border is used. To apply the
+ Drawn borders to a sheet, use .
+
+ range
+ - range of cells on which colors are
+ Set.
+
+ color
+ - Color index from used to Draw the
+ borders.
+
+ extent
+ - of the borders for which
+ colors are Set.
+
+
+
+
+ Sets the color of the top border for a range of cells.
+
+ range
+ - range of cells on which colors are
+ Set.
+
+ color
+ - Color index from used to Draw the
+ borders.
+
+
+
+
+ Sets the color of the bottom border for a range of cells.
+
+ range
+ - range of cells on which colors are
+ Set.
+
+ color
+ - Color index from used to Draw the
+ borders.
+
+
+
+
+ Sets the color of the left border for a range of cells.
+
+ range
+ - range of cells on which colors are
+ Set.
+
+ color
+ - Color index from used to Draw the
+ borders.
+
+
+
+
+ Sets the color of the right border for a range of cells. If the border is
+ not Drawn, it defaults to BORDER_THIN
+
+ range
+ - range of cells on which colors are
+ Set.
+
+ color
+ - Color index from used to Draw the
+ borders.
+
+
+
+
+
+
+
+ Removes all border properties from this for the
+ specified range.
+
+ @parm range - range of cells to remove borders.
+
+
+
+ Adds a property to this for a given cell
+
+ row
+ col
+ property
+ value
+
+
+
+ Adds a property to this for a given cell
+
+ row
+ col
+ property
+ value
+
+
+
+ Removes a Set of properties from this for a
+ given cell
+
+ row
+ col
+ properties
+
+
+
+ Retrieves the number of borders assigned to a cell
+
+ cell
+
+
+
+ Retrieves the number of borders assigned to a cell
+
+ row
+ col
+
+
+
+ Retrieves the number of border colors assigned to a cell
+
+ cell
+
+
+
+ Retrieves the number of border colors assigned to a cell
+
+ row
+ col
+
+
+
+ Retrieves the border style for a given cell
+
+ cell
+ property
+
+
+
+ Retrieves the border style for a given cell
+
+ row
+ col
+ property
+
+
+
+ Retrieves the border style for a given cell
+
+ cell
+ property
+
+
+
+ Retrieves the border style for a given cell
+
+ row
+ col
+ property
+
+
+
+ Converts a short object to a short value or 0 if the object is not a
+ short
+
+ Potentially short value to convert
+ short value, or 0 if not a short
+
+
+ Various utility functions that make working with a region of cells easier.
+
+ @author Eric Pugh epugh@upstate.com
+ @author (secondary) Avinash Kewalramani akewalramani@accelrys.com
+
+
+ For setting the same property on many cells to the same value
+
+
+
+ Sets the left border style for a region of cells by manipulating the cell style of the individual cells on the left
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+
+ Sets the left border style for a region of cells by manipulating the cell style of the individual cells on the left
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+ since POI 3.16 beta 1
+
+
+
+ Sets the left border color for a region of cells by manipulating the cell style of the individual cells on the left
+
+ The color of the border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+
+ Sets the right border for a region of cells by manipulating the cell style of the individual cells on the right
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+
+ Sets the right border style for a region of cells by manipulating the cell style of the individual cells on the right
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+
+ Sets the right border color for a region of cells by manipulating the cell style of the individual cells on the right
+
+ The color of the border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+
+ Sets the bottom border for a region of cells by manipulating the cell style of the individual cells on the bottom
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on
+
+
+
+ Sets the bottom border style for a region of cells by manipulating the cell style of the individual cells on the bottom
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on
+
+
+
+ Sets the bottom border color for a region of cells by manipulating the cell style of the individual cells on the bottom
+
+ The color of the border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+
+ Sets the top border for a region of cells by manipulating the cell style of the individual cells on the top
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+
+ Sets the top border for a region of cells by manipulating the cell style of the individual cells on the top
+
+ The new border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+
+ Sets the top border color for a region of cells by manipulating the cell style of the individual cells on the top
+
+ The color of the border
+ The region that should have the border
+ The sheet that the region is on.
+
+
+ Class {@code SheetBuilder} provides an easy way of building workbook sheets
+ from 2D array of Objects. It can be used in test cases to improve code
+ readability or in Swing applications with tables.
+
+ @author Roman Kashitsyn
+
+
+ Returns {@code true} if null array elements should be treated as empty
+ cells.
+
+ @return {@code true} if null objects should be treated as empty cells
+ and {@code false} otherwise
+
+
+ Specifies if null array elements should be treated as empty cells.
+
+ @param shouldCreateEmptyCells {@code true} if null array elements should be
+ treated as empty cells
+ @return {@code this}
+
+
+ Specifies name of the sheet to build. If not specified, default name (provided by
+ workbook) will be used instead.
+ @param sheetName sheet name to use
+ @return {@code this}
+
+
+ Builds sheet from parent workbook and 2D array with cell
+ values. Creates rows anyway (even if row contains only null
+ cells), creates cells if either corresponding array value is not
+ null or createEmptyCells property is true.
+ The conversion is performed in the following way:
+
+
+ - Numbers become numeric cells.
+ java.util.Date or java.util.Calendar
+ instances become date cells.
+ - String with leading '=' char become formulas (leading '='
+ will be truncated).
+ - Other objects become strings via
Object.toString()
+ method call.
+
+
+ @return newly created sheet
+
+
+ Sets the cell value using object type information.
+ @param cell cell to change
+ @param value value to set
+
+
+ Helper methods for when working with Usermodel sheets
+
+ @author Yegor Kozlov
+
+
+ Dummy formula Evaluator that does nothing.
+ YK: The only reason of having this class is that
+ {@link NPOI.SS.UserModel.DataFormatter#formatCellValue(NPOI.SS.UserModel.Cell)}
+ returns formula string for formula cells. Dummy Evaluator Makes it to format the cached formula result.
+
+ See Bugzilla #50021
+
+
+ Compute width of a single cell
+
+ @param cell the cell whose width is to be calculated
+ @param defaultCharWidth the width of a single character
+ @param formatter formatter used to prepare the text to be measured
+ @param useMergedCells whether to use merged cells
+ @return the width in pixels or -1 if cell is empty
+
+
+ Compute width of a column and return the result
+
+ @param sheet the sheet to calculate
+ @param column 0-based index of the column
+ @param useMergedCells whether to use merged cells
+ @param maxRows limit the scope to maxRows rows to speed up the function, or leave 0 (optional)
+ @return the width in pixels or -1 if all cells are empty
+
+
+ Compute width of a column based on a subset of the rows and return the result
+
+ @param sheet the sheet to calculate
+ @param column 0-based index of the column
+ @param useMergedCells whether to use merged cells
+ @param firstRow 0-based index of the first row to consider (inclusive)
+ @param lastRow 0-based index of the last row to consider (inclusive)
+ @param maxRows limit the scope to maxRows rows to speed up the function, or leave 0 (optional)
+ @return the width in pixels or -1 if cell is empty
+
+
+ Get default character width
+
+ @param wb the workbook to get the default character width from
+ @return default character width
+
+
+ Compute width of a single cell in a row
+ Convenience method for {@link getCellWidth}
+
+ @param row the row that contains the cell of interest
+ @param column the column number of the cell whose width is to be calculated
+ @param defaultCharWidth the width of a single character
+ @param formatter formatter used to prepare the text to be measured
+ @param useMergedCells whether to use merged cells
+ @return the width in pixels or -1 if cell is empty
+
+
+ Check if the Fonts are installed correctly so that Java can compute the size of
+ columns.
+
+ If a Cell uses a Font which is not available on the operating system then Java may
+ fail to return useful Font metrics and thus lead to an auto-computed size of 0.
+
+ This method allows to check if computing the sizes for a given Font will succeed or not.
+
+ @param font The Font that is used in the Cell
+ @return true if computing the size for this Font will succeed, false otherwise
+
+
+
+ Convert HSSFFont to Font.
+
+ The font.
+
+ Will throw this if no font are
+ found by SixLabors in the current environment.
+
+
+
+ Check if the cell is in the specified cell range
+
+ the cell range to check in
+ the row to check
+ the column to check
+ return true if the range contains the cell [rowIx, colIx]
+
+
+ Generate a valid sheet name based on the existing one. Used when cloning sheets.
+
+ @param srcName the original sheet name to
+ @return clone sheet name
+
+
+ Return the cell, taking account of merged regions. Allows you to find the
+ cell who's contents are Shown in a given position in the sheet.
+
+ If the cell at the given co-ordinates is a merged cell, this will
+ return the primary (top-left) most cell of the merged region.
+ If the cell at the given co-ordinates is not in a merged region,
+ then will return the cell itself.
+ If there is no cell defined at the given co-ordinates, will return
+ null.
+
+
+ For POI internal use only
+
+ @author Josh Micich
+
+
+ Helper methods for when working with Usermodel Workbooks
+
+
+ Creates a valid sheet name, which is conform to the rules.
+ In any case, the result safely can be used for
+ {@link org.apache.poi.ss.usermodel.Workbook#setSheetName(int, String)}.
+
+ Rules:
+
+ - never null
+ - minimum length is 1
+ - maximum length is 31
+ - doesn't contain special chars: 0x0000, 0x0003, / \ ? * ] [
+ - Sheet names must not begin or end with ' (apostrophe)
+
+ Invalid characters are replaced by one space character ' '.
+
+ @param nameProposal can be any string, will be truncated if necessary,
+ allowed to be null
+ @return a valid string, "empty" if to short, "null" if null
+
+
+ Creates a valid sheet name, which is conform to the rules.
+ In any case, the result safely can be used for
+ {@link org.apache.poi.ss.usermodel.Workbook#setSheetName(int, String)}.
+
+ Rules:
+
+ - never null
+ - minimum length is 1
+ - maximum length is 31
+ - doesn't contain special chars: : 0x0000, 0x0003, / \ ? * ] [
+ - Sheet names must not begin or end with ' (apostrophe)
+
+
+ @param nameProposal can be any string, will be truncated if necessary,
+ allowed to be null
+ @param replaceChar the char to replace invalid characters.
+ @return a valid string, "empty" if to short, "null" if null
+
+
+ Validates sheet name.
+
+
+ The character count MUST be greater than or equal to 1 and less than or equal to 31.
+ The string MUST NOT contain the any of the following characters:
+
+ - 0x0000
+ - 0x0003
+ - colon (:)
+ - backslash (\)
+ - asterisk (*)
+ - question mark (?)
+ - forward slash (/)
+ - opening square bracket ([)
+ - closing square bracket (])
+
+ The string MUST NOT begin or end with the single quote (') character.
+
+
+ @param sheetName the name to validate
+
+
+ Base class of all the exceptions that POI throws in the event
+ that it's given a file that isn't supported
+
+
+ @since POI v3.16 beta 1
+
+
+ This is the default header or Footer, It is displayed on every page where
+ a more specific header or footer is not specified. It is always displayed
+ on ODD pages that are not the first page of the section.
+
+
+ This is an even page header or footer, it is displayed on even pages that
+ are not the first page of the section.
+
+
+ This is a first page header or footer It is displayed on the first page
+ of the section.
+
+
+ This class represents a run of text that share common properties.
+
+
+
+ Gets the fonts which shall be used to display the text contents of
+ this run. Specifies a font which shall be used to format all "normal"
+ characters in the run
+
+
+
+ @return The text of the Run, including any tabs/spaces/etc
+
+
+ This class represents a paragraph, made up of one or more
+ Runs of text.
+
+
+
diff --git a/bin/NPOI.OOXML.dll b/bin/NPOI.OOXML.dll
new file mode 100644
index 0000000..f131c02
Binary files /dev/null and b/bin/NPOI.OOXML.dll differ
diff --git a/bin/NPOI.OOXML.xml b/bin/NPOI.OOXML.xml
new file mode 100644
index 0000000..3e2be88
--- /dev/null
+++ b/bin/NPOI.OOXML.xml
@@ -0,0 +1,13482 @@
+
+
+
+ NPOI.OOXML
+
+
+
+ Decryptor implementation for Agile Encryption
+
+
+ Set decryption password
+
+
+ instead of a password, it's also possible to decrypt via certificate.
+ Warning: this code is experimental and hasn't been validated
+
+ @see Agile encryption with certificates
+
+ @param keyPair
+ @param x509
+ @return true, when the data can be successfully decrypted with the given private key
+ @throws GeneralSecurityException
+
+
+ 2.3.4.15 Data Encryption (Agile Encryption)
+
+ The EncryptedPackage stream (1) MUST be encrypted in 4096-byte segments to facilitate nearly
+ random access while allowing CBC modes to be used in the encryption Process.
+ The Initialization vector for the encryption process MUST be obtained by using the zero-based
+ segment number as a blockKey and the binary form of the KeyData.saltValue as specified in
+ section 2.3.4.12. The block number MUST be represented as a 32-bit unsigned integer.
+ Data blocks MUST then be encrypted by using the Initialization vector and the intermediate key
+ obtained by decrypting the encryptedKeyValue from a KeyEncryptor Contained within the
+ KeyEncryptors sequence as specified in section 2.3.4.10. The data block MUST be pAdded to
+ the next integral multiple of the KeyData.blockSize value. Any pAdding bytes can be used. Note
+ that the StreamSize field of the EncryptedPackage field specifies the number of bytes of
+ unencrypted data as specified in section 2.3.4.4.
+
+
+ Used when Checking if a key is valid for a document
+
+
+ Generate an HMAC, as specified in [RFC2104], of the encrypted form of the data (message),
+ which the DataIntegrity element will verify by using the Salt generated in step 2 as the key.
+ Note that the entire EncryptedPackage stream (1), including the StreamSize field, MUST be
+ used as the message.
+
+ Encrypt the HMAC as in step 3 by using a blockKey byte array consisting of the following bytes:
+ 0xa0, 0x67, 0x7f, 0x02, 0xb2, 0x2c, 0x84, and 0x33.
+
+
+
+ 2.3.4.15 Data Encryption (Agile Encryption)
+
+ The EncryptedPackage stream (1) MUST be encrypted in 4096-byte segments to facilitate nearly
+ random access while allowing CBC modes to be used in the encryption Process.
+ The Initialization vector for the encryption process MUST be obtained by using the zero-based
+ segment number as a blockKey and the binary form of the KeyData.saltValue as specified in
+ section 2.3.4.12. The block number MUST be represented as a 32-bit unsigned integer.
+ Data blocks MUST then be encrypted by using the Initialization vector and the intermediate key
+ obtained by decrypting the encryptedKeyValue from a KeyEncryptor Contained within the
+ KeyEncryptors sequence as specified in section 2.3.4.10. The data block MUST be pAdded to
+ the next integral multiple of the KeyData.blockSize value. Any pAdding bytes can be used. Note
+ that the StreamSize field of the EncryptedPackage field specifies the number of bytes of
+ unencrypted data as specified in section 2.3.4.4.
+
+
+ Exception thrown in case there is something wrong with the incoming eID
+ certificate.
+
+ @author Frank Cornelis
+
+
+
+ Digest Information data transfer class.
+
+
+ Main constructor.
+
+ @param digestValue
+ @param hashAlgo
+ @param description
+
+
+ Exception thrown in case the incoming eID certificate is expired.
+
+ @author Frank Cornelis
+
+
+
+ Signature Facet implementation to create enveloped signatures.
+
+ @author Frank Cornelis
+
+
+
+ Signature Facet implementation that Adds ds:KeyInfo to the XML signature.
+
+ @author Frank Cornelis
+
+
+
+ Work-around for Office2010 to accept the XAdES-BES/EPES signature.
+
+ xades:UnsignedProperties/xades:UnsignedSignatureProperties needs to be
+ present.
+
+ @author Frank Cornelis
+
+
+
+ Office OpenXML Signature Facet implementation.
+
+ @author fcorneli
+ @see [MS-OFFCRYPTO]: Office Document Cryptography Structure
+
+
+ Office 2010 list of signed types (extensions).
+
+
+ JSR105 Signature Facet base class.
+
+
+ This method is being invoked by the XML signature service engine during
+ pre-sign phase. Via this method a signature facet implementation can add
+ signature facets to an XML signature.
+
+ @param document the signature document to be used for imports
+ @param references list of reference defInitions
+ @param objects objects to be signed/included in the signature document
+ @throws XMLSignatureException
+
+
+ This method is being invoked by the XML signature service engine during
+ the post-sign phase. Via this method a signature facet can extend the XML
+ signatures with for example key information.
+
+ @param document the signature document to be modified
+ @throws MarshalException
+
+
+ XAdES Signature Facet. Implements XAdES v1.4.1 which is compatible with XAdES
+ v1.3.2. The implemented XAdES format is XAdES-BES/EPES. It's up to another
+ part of the signature service to upgrade the XAdES-BES to a XAdES-X-L.
+
+ This implementation has been tested against an implementation that
+ participated multiple ETSI XAdES plugtests.
+
+ @author Frank Cornelis
+ @see XAdES
+
+
+
+ Adds a mime-type for the given ds:Reference (referred via its @URI). This
+ information is Added via the xades:DataObjectFormat element.
+
+ @param dsReferenceUri
+ @param mimetype
+
+
+ XAdES-X-L v1.4.1 signature facet. This signature facet implementation will
+ upgrade a given XAdES-BES/EPES signature to XAdES-X-L.
+
+ We don't inherit from XAdESSignatureFacet as we also want to be able to use
+ this facet out of the context of a signature creation. This signature facet
+ assumes that the signature is already XAdES-BES/EPES compliant.
+
+ This implementation has been tested against an implementation that
+ participated multiple ETSI XAdES plugtests.
+
+ @author Frank Cornelis
+ @see XAdESSignatureFacet
+
+
+ JSR105 URI dereferencer for Office Open XML documents.
+
+
+ Exception thrown in case the incoming eID certificate has been revoked.
+
+ @author Frank Cornelis
+
+
+
+ Container class for PKI revocation data.
+
+ @author Frank Cornelis
+
+
+
+ Default constructor.
+
+
+ Adds a CRL to this revocation data Set.
+
+ @param encodedCrl
+
+
+ Adds a CRL to this revocation data Set.
+
+ @param crl
+
+
+ Adds an OCSP response to this revocation data Set.
+
+ @param encodedOcsp
+
+
+ Gives back a list of all CRLs.
+
+ @return a list of all CRLs
+
+
+ Gives back a list of all OCSP responses.
+
+ @return a list of all OCSP response
+
+
+ Returns true if this revocation data Set holds OCSP
+ responses.
+
+ @return true if this revocation data Set holds OCSP
+ responses.
+
+
+ Returns true if this revocation data Set holds CRLs.
+
+ @return true if this revocation data Set holds CRLs.
+
+
+ Returns true if this revocation data is not empty.
+
+ @return true if this revocation data is not empty.
+
+
+ Interface for a service that retrieves revocation data about some given
+ certificate chain.
+
+ @author Frank Cornelis
+
+
+
+ Gives back the revocation data corresponding with the given certificate
+ chain.
+
+ @param certificateChain the certificate chain
+ @return the revocation data corresponding with the given certificate chain.
+
+
+ Interface for the signature policy service.
+
+ @author Frank Cornelis
+
+
+
+ Gives back the signature policy identifier URI.
+
+ @return the signature policy identifier URI.
+
+
+ Gives back the short description of the signature policy or
+ null if a description is not available.
+
+ @return the description, or null.
+
+
+ Gives back the download URL where the signature policy document can be
+ found. Can be null in case such a download location does not
+ exist.
+
+ @return the download URL, or null.
+
+
+ Gives back the signature policy document.
+
+ @return the bytes of the signature policy document.
+
+
+ Interface for a time-stamp service.
+
+ @author Frank Cornelis
+
+
+
+ Gives back the encoded time-stamp token for the given array of data
+ bytes. We assume that the time-stamp token itself Contains its full
+ certificate chain required for proper validation.
+
+ @param data
+ the data to be time-stamped.
+ @param revocationData
+ the optional Container that needs to be Filled up with the
+ revocation data used to validate the TSA certificate chain.
+ @return the DER encoded time-stamp token.
+ @throws Exception
+ in case something went wrong.
+
+
+ Interface for trust validator of a TSP.
+
+ @author Frank Cornelis
+
+
+
+ Validates the given certificate chain.
+
+ @param certificateChain
+ @param revocationData
+ the optional data Container that should be Filled with
+ revocation data that was used to validate the given
+ certificate chain.
+ @throws Exception
+ in case the certificate chain is invalid.
+
+
+ A TSP time-stamp service implementation.
+
+ @author Frank Cornelis
+
+
+
+ Maps the digest algorithm to corresponding OID value.
+
+
+ This class bundles the configuration options used for the existing
+ signature facets.
+ Apart of the thread local members (e.g. opc-package) most values will probably be constant, so
+ it might be configured centrally (e.g. by spring)
+
+
+ the optional signature policy service used for XAdES-EPES.
+
+
+ the time-stamp service used for XAdES-T and XAdES-X.
+
+
+ timestamp service provider URL
+
+
+ if not defined, it's the same as the main digest
+
+
+ the optional TSP request policy OID.
+
+
+ the optional revocation data service used for XAdES-C and XAdES-X-L.
+ When null the signature will be limited to XAdES-T only.
+
+
+ if not defined, it's the same as the main digest
+
+
+ Work-around for Office 2010 IssuerName encoding.
+
+
+ The signature Id attribute value used to create the XML signature. A
+ null value will trigger an automatically generated signature Id.
+
+
+ Gives back the human-readable description of what the citizen will be
+ signing. The default value is "Office OpenXML Document".
+
+
+ The process of signing includes the marshalling of xml structures.
+ This also includes the canonicalization. Currently this leads to problems
+ with certain namespaces, so this EventListener is used to interfere
+ with the marshalling Process.
+
+
+ Map of namespace uris to prefix
+ If a mapping is specified, the corresponding elements will be prefixed
+
+
+ Inits and Checks the config object.
+ If not Set previously, complex configuration properties also Get
+ Created/initialized via this Initialization call.
+
+ @param onlyValidation if true, only a subset of the properties
+ is Initialized, which are necessary for validation. If false,
+ also the other properties needed for signing are been taken care of
+
+
+ @param signatureFacet the signature facet is Appended to facet list
+
+
+ @return the list of facets, may be empty when the config object is not Initialized
+
+
+ @param signatureFacets the new list of facets
+
+
+ @return the main digest algorithm, defaults to sha-1
+
+
+ @param digestAlgo the main digest algorithm
+
+
+ @return the opc package to be used by this thread, stored as thread-local
+
+
+ @param opcPackage the opc package to be handled by this thread, stored as thread-local
+
+
+ @return the private key
+
+
+ @param key the private key
+
+
+ @return the certificate chain, index 0 is usually the certificate matching
+ the private key
+
+
+ @param signingCertificateChain the certificate chain, index 0 should be
+ the certificate matching the private key
+
+
+ @return the time at which the document is signed, also used for the timestamp service.
+ defaults to now
+
+
+ @param executionTime Sets the time at which the document ought to be signed
+
+
+ @return the service to be used for XAdES-EPES properties. There's no default implementation
+
+
+ @param signaturePolicyService the service to be used for XAdES-EPES properties
+
+
+ @return Gives back the human-readable description of what the citizen
+ will be signing. The default value is "Office OpenXML Document".
+
+
+ @param signatureDescription the human-readable description of
+ what the citizen will be signing.
+
+
+ @return the default canonicalization method, defaults to INCLUSIVE
+
+
+ @param canonicalizationMethod the default canonicalization method
+
+
+ @return The signature Id attribute value used to create the XML signature.
+ Defaults to "idPackageSignature"
+
+
+ @param packageSignatureId The signature Id attribute value used to create the XML signature.
+ A null value will trigger an automatically generated signature Id.
+
+
+ @return the url of the timestamp provider (TSP)
+
+
+ @param tspUrl the url of the timestamp provider (TSP)
+
+
+ @return if true, uses timestamp-request/response mimetype,
+ if false, timestamp-query/reply mimetype
+
+
+ @param tspOldProtocol defines the timestamp-protocol mimetype
+ @see #isTspOldProtocol
+
+
+ @return the hash algorithm to be used for the timestamp entry.
+ Defaults to the hash algorithm of the main entry
+
+
+ @param tspDigestAlgo the algorithm to be used for the timestamp entry.
+ if null, the hash algorithm of the main entry
+
+
+ @return the proxy url to be used for all communications.
+ Currently this affects the timestamp service
+
+
+ @param proxyUrl the proxy url to be used for all communications.
+ Currently this affects the timestamp service
+
+
+ @return the timestamp service. Defaults to {@link TSPTimeStampService}
+
+
+ @param tspService the timestamp service
+
+
+ @return the user id for the timestamp service - currently only basic authorization is supported
+
+
+ @param tspUser the user id for the timestamp service - currently only basic authorization is supported
+
+
+ @return the password for the timestamp service
+
+
+ @param tspPass the password for the timestamp service
+
+
+ @return the validator for the timestamp service (certificate)
+
+
+ @param tspValidator the validator for the timestamp service (certificate)
+
+
+ @return the optional revocation data service used for XAdES-C and XAdES-X-L.
+ When null the signature will be limited to XAdES-T only.
+
+
+ @param revocationDataService the optional revocation data service used for XAdES-C and XAdES-X-L.
+ When null the signature will be limited to XAdES-T only.
+
+
+ @return hash algorithm used for XAdES. Defaults to the {@link #getDigestAlgo()}
+
+
+ @param xadesDigestAlgo hash algorithm used for XAdES.
+ When null, defaults to {@link #getDigestAlgo()}
+
+
+ @return the user agent used for http communication (e.g. to the TSP)
+
+
+ @param userAgent the user agent used for http communication (e.g. to the TSP)
+
+
+ @return the asn.1 object id for the tsp request policy.
+ Defaults to 1.3.6.1.4.1.13762.3
+
+
+ @param tspRequestPolicy the asn.1 object id for the tsp request policy.
+
+
+ @return true, if the whole certificate chain is included in the signature.
+ When false, only the signer cert will be included
+
+
+ @param includeEntireCertificateChain if true, include the whole certificate chain.
+ If false, only include the signer cert
+
+
+ @return if true, issuer serial number is included
+
+
+ @param includeIssuerSerial if true, issuer serial number is included
+
+
+ @return if true, the key value of the public key (certificate) is included
+
+
+ @param includeKeyValue if true, the key value of the public key (certificate) is included
+
+
+ @return the xades role element. If null the claimed role element is omitted.
+ Defaults to null
+
+
+ @param xadesRole the xades role element. If null the claimed role element is omitted.
+
+
+ @return the Id for the XAdES SignedProperties element.
+ Defaults to idSignedProperties
+
+
+ @param xadesSignatureId the Id for the XAdES SignedProperties element.
+ When null defaults to idSignedProperties
+
+
+ @return when true, include the policy-implied block.
+ Defaults to true
+
+
+ @param xadesSignaturePolicyImplied when true, include the policy-implied block
+
+
+ Make sure the DN is encoded using the same order as present
+ within the certificate. This is an Office2010 work-around.
+ Should be reverted back.
+
+ XXX: not correct according to RFC 4514.
+
+ @return when true, the issuer DN is used instead of the issuer X500 principal
+
+
+ @param xadesIssuerNameNoReverseOrder when true, the issuer DN instead of the issuer X500 prinicpal is used
+
+
+ @return the map of namespace uri (key) to prefix (value)
+
+
+ @param namespacePrefixes the map of namespace uri (key) to prefix (value)
+
+
+ helper method for null/default value handling
+ @param value
+ @param defaultValue
+ @return if value is not null, return value otherwise defaultValue
+
+
+ Each digest method has its own IV (Initial vector)
+
+ @return the IV depending on the main digest method
+
+
+ @return the uri for the signature method, i.e. currently only rsa is
+ supported, so it's the rsa variant of the main digest
+
+
+ @return the uri for the main digest
+
+
+ @param digestAlgo the digest algo, currently only sha* and ripemd160 is supported
+ @return the uri for the given digest
+
+
+ @return the cannonicalization method for XAdES-XL signing.
+ Defaults to EXCLUSIVE
+ @see javax.xml.Crypto.dsig.CanonicalizationMethod
+
+
+ @param xadesCanonicalizationMethod the cannonicalization method for XAdES-XL signing
+ @see javax.xml.Crypto.dsig.CanonicalizationMethod
+
+
+
+ Returns the URI of the referenced data object.
+
+ @return the URI of the data object in RFC 2396 format (may be
+ null if not specified)
+
+
+ Returns the type of data referenced by this URI.
+
+ @return the type (a URI) of the data object (may be null
+ if not specified)
+
+
+
+ Dereferences the specified URIReference and returns the
+ dereferenced data.
+
+ @param uriReference the URIReference
+ @param context an XMLCryptoContext that may
+ contain additional useful information for dereferencing the URI. This
+ implementation should dereference the specified
+ URIReference against the context's baseURI
+ parameter, if specified.
+ @return the dereferenced data
+ @throws NullPointerException if uriReference or
+ context are null
+ @throws URIReferenceException if an exception occurs while
+ dereferencing the specified uriReference
+
+
+
+ This method is called whenever an event occurs of the type for which
+ the EventListener interface was registered.
+ @param evt The Event contains contextual information
+ about the event. It also contains the stopPropagation
+ and preventDefault methods which are used in
+ determining the event's flow and default action.
+
+
+ This class is the default entry point for XML signatures and can be used for
+ validating an existing signed office document and signing a office document.
+
+ Validating a signed office document
+
+
+ OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ);
+ SignatureConfig sic = new SignatureConfig();
+ sic.setOpcPackage(pkg);
+ SignatureInfo si = new SignatureInfo();
+ si.setSignatureConfig(sic);
+ boolean isValid = si.validate();
+ ...
+
+
+ Signing an office document
+
+
+ // loading the keystore - pkcs12 is used here, but of course jks & co are also valid
+ // the keystore needs to contain a private key and it's certificate having a
+ // 'digitalSignature' key usage
+ char password[] = "test".toCharArray();
+ File file = new File("test.pfx");
+ KeyStore keystore = KeyStore.getInstance("PKCS12");
+ FileInputStream fis = new FileInputStream(file);
+ keystore.load(fis, password);
+ fis.close();
+
+ // extracting private key and certificate
+ String alias = "xyz"; // alias of the keystore entry
+ Key key = keystore.getKey(alias, password);
+ X509Certificate x509 = (X509Certificate)keystore.getCertificate(alias);
+
+ // filling the SignatureConfig entries (minimum fields, more options are available ...)
+ SignatureConfig signatureConfig = new SignatureConfig();
+ signatureConfig.setKey(keyPair.getPrivate());
+ signatureConfig.setSigningCertificateChain(Collections.singletonList(x509));
+ OPCPackage pkg = OPCPackage.open(..., PackageAccess.READ_WRITE);
+ signatureConfig.setOpcPackage(pkg);
+
+ // adding the signature document to the package
+ SignatureInfo si = new SignatureInfo();
+ si.setSignatureConfig(signatureConfig);
+ si.confirmSignature();
+ // optionally verify the generated signature
+ boolean b = si.verifySignature();
+ assert (b);
+ // write the changes back to disc
+ pkg.close();
+
+
+ Implementation notes:
+
+ Although there's a XML signature implementation in the Oracle JDKs 6 and higher,
+ compatibility with IBM JDKs is also in focus (... but maybe not thoroughly tested ...).
+ Therefore we are using the Apache Santuario libs (xmlsec) instead of the built-in classes,
+ as the compatibility seems to be provided there.
+
+ To use SignatureInfo and its sibling classes, you'll need to have the following libs
+ in the classpath:
+
+ - BouncyCastle bcpkix and bcprov (tested against 1.51)
+ - Apache Santuario "xmlsec" (tested against 2.0.1)
+ - and slf4j-api (tested against 1.7.7)
+
+
+
+ @return the package part Containing the signature
+
+
+ @return the signer certificate
+
+
+ @return the certificate chain of the signer
+
+
+ @return true, when the xml signature is valid, false otherwise
+
+ @throws EncryptedDocumentException if the signature can't be extracted or if its malformed
+
+
+ Constructor Initializes xml signature environment, if it hasn't been Initialized before
+
+
+ @return the signature config
+
+
+ @param signatureConfig the signature config, needs to be Set before a SignatureInfo object is used
+
+
+ @return true, if first signature part is valid
+
+
+ add the xml signature to the document
+
+ @throws XMLSignatureException
+ @throws MarshalException
+
+
+ Sign (encrypt) the digest with the private key.
+ Currently only rsa is supported.
+
+ @param digest the hashed input
+ @return the encrypted hash
+
+
+ @return a signature part for each signature document.
+ the parts can be validated independently.
+
+
+ Initialize the xml signing environment and the bouncycastle provider
+
+
+ Helper method for Adding informations before the signing.
+ Normally {@link #ConfirmSignature()} is sufficient to be used.
+
+
+ Helper method for Adding informations After the signing.
+ Normally {@link #ConfirmSignature()} is sufficient to be used.
+
+
+ Write XML signature into the OPC package
+
+ @param document the xml signature document
+ @throws MarshalException
+
+
+ Helper method for null lists, which are Converted to empty lists
+
+ @param other the reference to wrap, if null
+ @return if other is null, an empty lists is returned, otherwise other is returned
+
+
+ This listener class is used, to modify the to be digested xml document,
+ e.g. to register id attributes or Set prefixes for registered namespaces
+
+
+
+ Exception thrown in case the incoming eID certificate is not trusted.
+
+ @author Frank Cornelis
+
+
+
+ The OPC Package
+
+
+ The properties of the OPC namespace, opened as needed
+
+
+ Wrapper to open a namespace, returning an IOException
+ in the event of a problem.
+ Works around shortcomings in java's this() constructor calls
+
+
+ Retrieves all the PackageParts which are defined as
+ relationships of the base document with the
+ specified content type.
+
+
+ Checks that the supplied Stream (which MUST
+ support mark and reSet, or be a PushbackStream)
+ has a OOXML (zip) header at the start of it.
+ If your Stream does not support mark / reSet,
+ then wrap it in a PushBackStream, then be
+ sure to always use that, and not the original!
+ @param inp An Stream which supports either mark/reSet, or is a PushbackStream
+
+
+ Get the document properties. This gives you access to the
+ core ooxml properties, and the extended ooxml properties.
+
+
+ Get the document's embedded files.
+
+
+ Closes the underlying {@link OPCPackage} from which this
+ document was read, if there is one
+
+
+ Write out this document to an Outputstream.
+
+ Note - if the Document was opened from a {@link File} rather
+ than an {@link InputStream}, you must write out to
+ a different file, overwriting via an OutputStream isn't possible.
+
+ If {@code stream} is a {@link java.io.FileOutputStream} on a networked drive
+ or has a high cost/latency associated with each written byte,
+ consider wrapping the OutputStream in a {@link java.io.BufferedOutputStream}
+ to improve write performance.
+
+ @param stream - the java Stream you wish to write the file to
+
+ @exception IOException if anything can't be written.
+
+
+ Represents an entry of a OOXML namespace.
+
+
+ Each POIXMLDocumentPart keeps a reference to the underlying a {@link org.apache.poi.openxml4j.opc.PackagePart}.
+
+
+ @author Yegor Kozlov
+
+
+ The RelationPart is a cached relationship between the document, which contains the RelationPart,
+ and one of its referenced child document parts.
+ The child document parts may only belong to one parent, but it's often referenced by other
+ parents too, having varying {@link PackageRelationship#getId() relationship ids} pointing to it.
+
+
+ @return the cached relationship, which uniquely identifies this child document part within the parent
+
+
+ @return the child document part
+
+
+ Counter that provides the amount of incoming relations from other parts
+ to this part.
+
+
+ Construct POIXMLDocumentPart representing a "core document" namespace part.
+
+
+ Construct POIXMLDocumentPart representing a custom "core document" package part.
+
+
+ Creates new POIXMLDocumentPart - called by client code to create new parts from scratch.
+
+ @see #CreateRelationship(POIXMLRelation, POIXMLFactory, int, bool)
+
+
+ Creates an POIXMLDocumentPart representing the given package part and relationship.
+ Called by {@link #read(POIXMLFactory, java.util.Map)} when reading in an existing file.
+
+ @param part - The package part that holds xml data representing this sheet.
+ @see #read(POIXMLFactory, java.util.Map)
+
+ @since POI 3.14-Beta1
+
+
+ Creates an POIXMLDocumentPart representing the given package part, relationship and parent
+ Called by {@link #read(POIXMLFactory, java.util.Map)} when reading in an existing file.
+
+ @param parent - Parent part
+ @param part - The package part that holds xml data representing this sheet.
+ @see #read(POIXMLFactory, java.util.Map)
+
+ @since POI 3.14-Beta1
+
+
+ Creates an POIXMLDocumentPart representing the given namespace part and relationship.
+ Called by {@link #read(POIXMLFactory, java.util.Map)} when Reading in an exisiting file.
+
+ @param part - The namespace part that holds xml data represenring this sheet.
+ @param rel - the relationship of the given namespace part
+ @see #read(POIXMLFactory, java.util.Map)
+
+
+ Creates an POIXMLDocumentPart representing the given namespace part, relationship and parent
+ Called by {@link #read(POIXMLFactory, java.util.Map)} when Reading in an exisiting file.
+
+ @param parent - Parent part
+ @param part - The namespace part that holds xml data represenring this sheet.
+ @param rel - the relationship of the given namespace part
+ @see #read(POIXMLFactory, java.util.Map)
+
+
+ When you open something like a theme, call this to
+ re-base the XML Document onto the core child of the
+ current core document
+
+
+ Provides access to the underlying PackagePart
+
+ @return the underlying PackagePart
+
+
+ Provides access to the PackageRelationship that identifies this POIXMLDocumentPart
+
+ @return the PackageRelationship that identifies this POIXMLDocumentPart
+
+
+ Returns the list of child relations for this POIXMLDocumentPart
+
+ @return child relations
+
+
+ Returns the list of child relations for this POIXMLDocumentPart
+
+ @return child relations
+
+
+ Returns the target {@link POIXMLDocumentPart}, where a
+ {@link PackageRelationship} is set from the {@link PackagePart} of this
+ {@link POIXMLDocumentPart} to the {@link PackagePart} of the target
+ {@link POIXMLDocumentPart} with a {@link PackageRelationship#GetId()}
+ matching the given parameter value.
+
+ @param id
+ The relation id to look for
+ @return the target part of the relation, or null, if none exists
+
+
+ Returns the {@link PackageRelationship#GetId()} of the
+ {@link PackageRelationship}, that sources from the {@link PackagePart} of
+ this {@link POIXMLDocumentPart} to the {@link PackagePart} of the given
+ parameter value.
+
+ @param part
+ The {@link POIXMLDocumentPart} for which the according
+ relation-id shall be found.
+ @return The value of the {@link PackageRelationship#GetId()} or null, if
+ parts are not related.
+
+
+
+ Add a new child POIXMLDocumentPart
+
+
+ the child to add
+
+
+
+ Add a new child POIXMLDocumentPart
+
+ the preferred relation id, when null the next free relation id will be used
+ the package relationship type
+ the child to add
+
+
+
+
+ Add a new child POIXMLDocumentPart
+
+ the relationship of the child
+ the child to add
+
+
+ Remove the relation to the specified part in this namespace and remove the
+ part, if it is no longer needed.
+
+
+ Remove the relation to the specified part in this namespace and remove the
+ part, if it is no longer needed and flag is set to true.
+
+ @param part
+ The related part, to which the relation shall be Removed.
+ @param RemoveUnusedParts
+ true, if the part shall be Removed from the namespace if not
+ needed any longer.
+
+
+ Returns the parent POIXMLDocumentPart. All parts except root have not-null parent.
+
+ @return the parent POIXMLDocumentPart or null for the root element.
+
+
+ Save the content in the underlying namespace part.
+ Default implementation is empty meaning that the namespace part is left unmodified.
+
+ Sub-classes should override and add logic to marshal the "model" into Ooxml4J.
+
+ For example, the code saving a generic XML entry may look as follows:
+
+ protected void commit() {
+ PackagePart part = GetPackagePart();
+ Stream out = part.GetStream();
+ XmlObject bean = GetXmlBean(); //the "model" which holds Changes in memory
+ bean.save(out, DEFAULT_XML_OPTIONS);
+ out.close();
+ }
+
+
+
+
+ Save Changes in the underlying OOXML namespace.
+ Recursively fires {@link #commit()} for each namespace part
+
+ @param alreadySaved context set Containing already visited nodes
+
+
+ Ensure that a memory based package part does not have lingering data from previous
+ commit() calls.
+
+ Note: This is overwritten for some objects, as *PictureData seem to store the actual content
+ in the part directly without keeping a copy like all others therefore we need to handle them differently.
+
+
+ Create a new child POIXMLDocumentPart
+
+ @param descriptor the part descriptor
+ @param factory the factory that will create an instance of the requested relation
+ @return the Created child POIXMLDocumentPart
+
+
+ Identifies the next available part number for a part of the given type,
+ if possible, otherwise -1 if none are available.
+ The found (valid) index can then be safely given to
+ {@link #createRelationship(POIXMLRelation, POIXMLFactory, int)} or
+ {@link #createRelationship(POIXMLRelation, POIXMLFactory, int, boolean)}
+ without naming clashes.
+ If parts with other types are already claiming a name for this relationship
+ type (eg a {@link XSSFRelation#CHART} using the drawing part namespace
+ normally used by {@link XSSFRelation#DRAWINGS}), those will be considered
+ when finding the next spare number.
+
+ @param descriptor The relationship type to find the part number for
+ @param minIdx The minimum free index to assign, use -1 for any
+ @return The next free part number, or -1 if none available
+
+
+ Create a new child POIXMLDocumentPart
+
+ @param descriptor the part descriptor
+ @param factory the factory that will create an instance of the requested relation
+ @param idx part number
+ @param noRelation if true, then no relationship is Added.
+ @return the Created child POIXMLDocumentPart
+
+
+ Iterate through the underlying PackagePart and create child POIXMLFactory instances
+ using the specified factory
+
+ @param factory the factory object that Creates POIXMLFactory instances
+ @param context context map Containing already visited noted keyed by tarGetURI
+
+
+ Get the PackagePart that is the target of a relationship.
+
+ @param rel The relationship
+ @return The target part
+ @throws InvalidFormatException
+
+
+ Fired when a new namespace part is Created
+
+
+ Fired when a namespace part is read
+
+
+ Fired when a namespace part is about to be Removed from the namespace
+
+
+ Retrieves the core document part
+
+ @since POI 3.14-Beta1
+
+
+ Defines a factory API that enables sub-classes to create instances of POIXMLDocumentPart
+
+ @author Yegor Kozlov
+
+
+ Create a POIXMLDocumentPart from existing package part and relation. This method is called
+ from {@link POIXMLDocument#load(POIXMLFactory)} when parsing a document
+
+ @param parent parent part
+ @param rel the package part relationship
+ @param part the PackagePart representing the created instance
+ @return A new instance of a POIXMLDocumentPart.
+
+ @since by POI 3.14-Beta1
+
+
+ Need to delegate instantiation to sub class because of constructor visibility
+ @since POI 3.14-Beta1
+
+
+ returns the descriptor for the given relationship type
+
+ @return the descriptor or null if type is unknown
+
+ @since POI 3.14-Beta1
+
+
+ Create a POIXMLDocumentPart from existing package part and relation. This method is called
+ from {@link POIXMLDocument#load(POIXMLFactory)} when parsing a document
+
+ @param parent parent part
+ @param rel the package part relationship
+ @param part the PackagePart representing the created instance
+ @return A new instance of a POIXMLDocumentPart.
+
+ @deprecated in POI 3.14, scheduled for removal in POI 3.16
+
+
+ Create a new POIXMLDocumentPart using the supplied descriptor. This method is used when adding new parts
+ to a document, for example, when adding a sheet to a workbook, slide to a presentation, etc.
+
+ @param descriptor describes the object to create
+ @return A new instance of a POIXMLDocumentPart.
+
+
+ Retrieves the package relationship of the child part within the parent
+
+ @since POI 3.14-Beta1
+
+
+ The core document properties
+
+
+ Extended document properties
+
+
+ Custom document properties
+
+
+ Each custom property element Contains an fmtid attribute
+ with the same GUID value ({D5CDD505-2E9C-101B-9397-08002B2CF9AE}).
+
+
+ Add a new property
+
+ @param name the property name
+ @throws IllegalArgumentException if a property with this name already exists
+
+
+ Add a new string property
+
+ @throws IllegalArgumentException if a property with this name already exists
+
+
+ Add a new double property
+
+ @throws IllegalArgumentException if a property with this name already exists
+
+
+ Add a new integer property
+
+ @throws IllegalArgumentException if a property with this name already exists
+
+
+ Add a new bool property
+
+ @throws IllegalArgumentException if a property with this name already exists
+
+
+ Generate next id that uniquely relates a custom property
+
+ @return next property id starting with 2
+
+
+ Check if a property with this name already exists in the collection of custom properties
+
+ @param name the name to check
+ @return whether a property with the given name exists in the custom properties
+
+
+ Retrieve the custom property with this name, or null if none exists.
+
+ You will need to test the various isSetX methods to work out
+ what the type of the property is, before fetching the
+ appropriate value for it.
+
+ @param name the name of the property to fetch
+
+
+ Wrapper around the three different kinds of OOXML properties
+ and metadata a document can have (Core, Extended and Custom),
+ as well Thumbnails.
+
+
+ Returns the core document properties
+
+
+ Returns the extended document properties
+
+
+ Returns the custom document properties
+
+
+ Returns the {@link PackagePart} for the Document
+ Thumbnail, or null if there isn't one
+
+ @return The Document Thumbnail part or null
+
+
+ Returns the name of the Document thumbnail, eg
+ thumbnail.jpeg, or null if there
+ isn't one.
+
+ @return The thumbnail filename, or null
+
+
+ Returns the Document thumbnail image data, or
+ null if there isn't one.
+
+ @return The thumbnail data, or null
+
+
+ Sets the Thumbnail for the document, replacing any existing
+ one.
+
+ @param name The filename for the thumbnail image, eg thumbnail.jpg
+ @param imageData The inputstream to read the thumbnail image from
+
+
+ Commit Changes to the underlying OPC namespace
+
+
+ A {@link POITextExtractor} for returning the textual
+ content of the OOXML file properties, eg author
+ and title.
+
+
+ Creates a new POIXMLPropertiesTextExtractor for the
+ given open document.
+
+
+ Creates a new POIXMLPropertiesTextExtractor, for the
+ same file that another TextExtractor is already
+ working on.
+
+
+ Returns the core document properties, eg author
+
+
+ Returns the extended document properties, eg
+ application
+
+
+ Returns the custom document properties, if
+ there are any
+
+
+ Represents a descriptor of a OOXML relation.
+
+ @author Yegor Kozlov
+
+
+ Describes the content stored in a part.
+
+
+ The kind of connection between a source part and a target part in a namespace.
+
+
+ The path component of a pack URI.
+
+
+ Defines what object is used to construct instances of this relationship
+
+
+ Instantiates a POIXMLRelation.
+
+ @param type content type
+ @param rel relationship
+ @param defaultName default item name
+ @param cls defines what object is used to construct instances of this relationship
+
+
+ Instantiates a POIXMLRelation.
+
+ @param type content type
+ @param rel relationship
+ @param defaultName default item name
+
+
+ Return the content type. Content types define a media type, a subtype, and an
+ optional set of parameters, as defined in RFC 2616.
+
+ @return the content type
+
+
+ Return the relationship, the kind of connection between a source part and a target part in a namespace.
+ Relationships make the connections between parts directly discoverable without looking at the content
+ in the parts, and without altering the parts themselves.
+
+ @return the relationship
+
+
+ Return the default part name. Part names are used to refer to a part in the context of a
+ namespace, typically as part of a URI.
+
+ @return the default part name
+
+
+ Returns the filename for the nth one of these,
+ e.g. /xl/comments4.xml
+
+
+ Returns the index of the filename within the package for the given part.
+ e.g. 4 for /xl/comments4.xml
+
+
+ Return type of the obejct used to construct instances of this relationship
+
+ @return the class of the object used to construct instances of this relation
+
+
+ The POIXMLDocument that's open
+
+
+ Creates a new text extractor for the given document
+
+
+ Returns the core document properties
+
+
+ Returns the extended document properties
+
+
+ Returns the custom document properties
+
+
+ Returns opened document
+
+
+ Returns the opened OPCPackage that Contains the document
+
+
+ Returns an OOXML properties text extractor for the
+ document properties metadata, such as title and author.
+
+
+
+ 是否输出列头
+
+
+
+
+ 是否输出隐藏的列
+
+
+
+
+ 是否输出隐藏的行
+
+
+
+
+ 是否输出文本前的空格
+
+
+
+
+ 是否输出行号
+
+
+
+
+ 在跨列的单元格使用DIV标记
+
+
+
+ @return maximum 1-base index of column that were rendered, zero if none
+
+
+ Creates COLGROUP element with width specified for all columns. (Except
+ first if {@link #isOutputRowNumbers()}==true)
+
+
+ Creates a map (i.e. two-dimensional array) filled with ranges. Allow fast
+ retrieving {@link CellRangeAddress} of any cell, if cell is contained in
+ range.
+
+ @see #getMergedRange(CellRangeAddress[][], int, int)
+
+
+ See here for Xio explanation and details
+
+
+ @param mergedRanges
+ map of sheet merged ranges built with
+ {@link #buildMergedRangesMap(HSSFSheet)}
+ @return {@link CellRangeAddress} from map if cell with specified row and
+ column numbers contained in found range, null otherwise
+
+
+
+ Only Text and Formulas are imported. Pictures, Drawing, Styles etc. are all ignored.
+
+
+
+
+ Only Text, Comments and Formulas are imported. Pictures, Drawing, Styles etc. are all ignored.
+
+
+
+
+ Everything is imported - this is the same as NONE.
+
+
+
+
+ Factory for creating the appropriate kind of Workbook
+ (be it HSSFWorkbook or XSSFWorkbook), from the given input
+
+
+
+
+ Creates an HSSFWorkbook from the given POIFSFileSystem
+
+
+
+
+ Creates an HSSFWorkbook from the given NPOIFSFileSystem
+
+
+
+
+
+
+ Creates a Workbook from the given NPOIFSFileSystem, which may be password protected
+
+
+
+
+
+
+
+ Creates an XSSFWorkbook from the given OOXML Package
+
+
+
+
+ Creates the appropriate HSSFWorkbook / XSSFWorkbook from
+ the given InputStream. The Stream is wraped inside a PushbackInputStream.
+
+ Input Stream of .xls or .xlsx file
+ IWorkbook depending on the input HSSFWorkbook or XSSFWorkbook is returned.
+ Your input stream MUST either support mark/reset, or
+ be wrapped as a {@link PushbackInputStream}!
+
+
+
+ Creates the appropriate HSSFWorkbook / XSSFWorkbook from
+ the given File, which must exist and be readable.
+
+
+
+
+
+
+ Note that for Workbooks opened this way, it is not possible
+ to explicitly close the underlying File resource.
+
+
+
+
+ Creates the appropriate HSSFWorkbook / XSSFWorkbook from
+ the given InputStream. The Stream is wraped inside a PushbackInputStream.
+
+ Input Stream of .xls or .xlsx file
+ Customize the elements that are processed on the next import
+ IWorkbook depending on the input HSSFWorkbook or XSSFWorkbook is returned.
+
+
+
+ Creates a specific FormulaEvaluator for the given workbook.
+
+
+
+
+ Sets the import option when opening the next workbook.
+ Works only for XSSF. For HSSF workbooks this option is ignored.
+
+ Customize the elements that are processed on the next import
+
+
+
+ 24.08.2009 @author Stefan Stern
+
+
+
+
+
+
+
+
+
+ List of segments of available identifiers
+
+
+ @param lowerbound the lower limit of the id-range to manage. Must be greater than or equal to {@link #MIN_ID}.
+ @param upperbound the upper limit of the id-range to manage. Must be less then or equal {@link #MAX_ID}.
+
+
+ @return a new identifier.
+ @throws InvalidOperationException if no more identifiers are available, then an Exception is raised.
+
+
+ @param id
+ the identifier to release. Must be greater than or equal to
+ {@link #lowerbound} and must be less than or equal to {@link #upperbound}
+ @return true, if the identifier was reserved and has been successfully
+ released, false, if the identifier was not reserved.
+
+
+
+
+
+ Provides handy methods to work with OOXML namespaces
+
+ @author Yegor Kozlov
+
+
+ Clone the specified namespace.
+
+ @param pkg the namespace to clone
+ @param file the destination file
+ @return the Cloned namespace
+
+
+ Creates an empty file in the default temporary-file directory,
+
+
+ Recursively copy namespace parts to the destination namespace
+
+
+ Copy core namespace properties
+
+ @param src source properties
+ @param tgt target properties
+
+
+ Helper class to extract text from an OOXML Excel file
+
+
+
+ Should header and footer be included? Default is true
+
+
+
+
+ Should sheet names be included? Default is true
+
+ if set to true [include sheet names].
+
+
+
+ Should we return the formula itself, and not
+ the result it produces? Default is false
+
+ if set to true [formulas not results].
+
+
+
+ Should cell comments be included? Default is false
+
+ if set to true [include cell comments].
+
+
+ Should sheet names be included? Default is true
+
+
+ Should we return the formula itself, and not
+ the result it produces? Default is false
+
+
+ Should cell comments be included? Default is false
+
+
+ Should headers and footers be included? Default is true
+
+
+ Should text within textboxes be included? Default is true
+ @param includeTextBoxes
+
+
+ Retreives the text contents of the file
+
+
+
+ Maps an XLSX to an XML according to one of the mapping defined.
+
+
+ The output XML Schema must respect this limitations:
+
+
+ - all mandatory elements and attributes must be mapped (enable validation to check this)
+
+ - no <any> in complex type/element declaration
+ - no <anyAttribute> attributes declaration
+ - no recursive structures: recursive structures can't be nested more than one level
+ - no abstract elements: abstract complex types can be declared but must not be used in elements.
+ - no mixed content: an element can't contain simple text and child element(s) together
+ - no <substitutionGroup> in complex type/element declaration
+
+
+
+ Creates a new exporter and Sets the mapping to be used when generating the XML output document
+
+ @param map the mapping rule to be used
+
+
+
+ Exports the data in an XML stream
+
+ @param os OutputStream in which will contain the output XML
+ @param validate if true, validates the XML againts the XML Schema
+ @throws SAXException
+ @throws TransformerException
+ @throws ParserConfigurationException
+
+
+ Exports the data in an XML stream
+
+ @param os OutputStream in which will contain the output XML
+ @param encoding the output charset encoding
+ @param validate if true, validates the XML againts the XML Schema
+ @throws SAXException
+ @throws ParserConfigurationException
+ @throws TransformerException
+ @throws InvalidFormatException
+
+
+ Validate the generated XML against the XML Schema associated with the XSSFMap
+
+ @param xml the XML to validate
+ @return
+
+
+ Compares two xpaths to define an ordering according to the XML Schema
+
+
+
+ The cells in a workbook can be calculated in different orders depending on various optimizations and
+ dependencies. The calculation chain object specifies the order in which the cells in a workbook were last calculated.
+
+ @author Yegor Kozlov
+
+
+ Remove a formula reference from the calculation chain
+
+ @param sheetId the sheet Id of a sheet the formula belongs to.
+ @param ref A1 style reference to the cell Containing the formula.
+
+
+ XML Beans uses a list, which is very slow
+ to search, so we wrap things with our own
+ map for fast Lookup.
+
+
+ Called after the reference is updated, so that
+ we can reflect that in our cache
+
+
+ Called after the reference is updated, so that
+ we can reflect that in our cache
+ @param oldReference the comment to remove from the commentRefs map
+ @param comment the comment to replace in the commentRefs map
+
+
+
+ Searches the author. If not found he is added to the list of authors.
+
+ author to search
+ index of the author
+
+
+ Finds the cell comment at cellAddress, if one exists
+
+ @param cellAddress the address of the cell to find a comment
+ @return cell comment if one exists, otherwise returns null
+ @
+
+
+ Finds the cell comment at cellAddress, if one exists
+
+ @param cellAddress the address of the cell to find a comment
+ @return cell comment if one exists, otherwise returns null
+
+
+ Get the underlying CTComment xmlbean for a comment located at cellRef, if it exists
+
+ @param cellRef the location of the cell comment
+ @return CTComment xmlbean if comment exists, otherwise return null.
+ @
+
+
+ Get the underlying CTComment xmlbean for a comment located at cellRef, if it exists
+
+ @param cellRef the location of the cell comment
+ @return CTComment xmlbean if comment exists, otherwise return null.
+
+
+ Returns all cell comments on this sheet.
+ @return A map of each Comment in this sheet, keyed on the cell address where
+ the comment is located.
+
+
+
+ Create a new comment located at cell address
+
+ @param ref the location to add the comment
+ @return a new CTComment located at ref with default author
+
+
+ Create a new comment located` at cell address
+
+ @param ref the location to add the comment
+ @return a new CTComment located at ref with default author
+
+
+ Remove the comment at cellRef location, if one exists
+
+ @param cellRef the location of the comment to remove
+ @return returns true if a comment was removed
+ @deprecated 2015-11-23 (circa POI 3.14beta1). Use {@link #removeComment(CellAddress)} instead
+
+
+ Remove the comment at cellRef location, if one exists
+
+ @param cellRef the location of the comment to remove
+ @return returns true if a comment was removed
+
+
+ Add a new author to the CommentsTable.
+ This does not check if the author already exists.
+
+ @param author the name of the comment author
+ @return the index of the new author
+
+
+ Returns the underlying CTComments list xmlbean
+
+ @return underlying comments list xmlbean
+
+
+ Holds details of links to parts of other workbooks (eg named ranges),
+ along with the most recently seen values for what they point to.
+
+
+ Returns the underlying xmlbeans object for the external
+ link table
+
+
+ get or set the last recorded name of the file that this
+ is linked to
+
+
+
+ This class : the Custom XML Mapping Part (Open Office XML Part 1:
+ chapter 12.3.6)
+
+ An instance of this part type Contains a schema for an XML file, and
+ information on the behavior that is used when allowing this custom XML schema
+ to be mapped into the spreadsheet.
+
+ @author Roberto Manicardi
+
+
+ Returns the parent XSSFWorkbook
+
+ @return the parent XSSFWorkbook
+
+
+
+ @return the internal data object
+
+
+ Gets the
+ @param schemaId the schema ID
+ @return CTSchema by it's ID
+
+
+
+ @return all the mappings configured in this document
+
+
+ Used internally to navigate the paragraph text style hierarchy within a shape and fetch properties
+
+
+
+ @param shape the shape being examined
+ @return true if the desired property was fetched
+
+
+ Table of strings shared across all sheets in a workbook.
+
+ A workbook may contain thousands of cells Containing string (non-numeric) data. Furthermore this data is very
+ likely to be repeated across many rows or columns. The goal of implementing a single string table that is shared
+ across the workbook is to improve performance in opening and saving the file by only Reading and writing the
+ repetitive information once.
+
+
+ Consider for example a workbook summarizing information for cities within various countries. There may be a
+ column for the name of the country, a column for the name of each city in that country, and a column
+ Containing the data for each city. In this case the country name is repetitive, being duplicated in many cells.
+ In many cases the repetition is extensive, and a tremendous savings is realized by making use of a shared string
+ table when saving the workbook. When displaying text in the spreadsheet, the cell table will just contain an
+ index into the string table as the value of a cell, instead of the full string.
+
+
+ The shared string table Contains all the necessary information for displaying the string: the text, formatting
+ properties, and phonetic properties (for East Asian languages).
+
+
+ @author Nick Birch
+ @author Yegor Kozlov
+
+
+ Array of individual string items in the Shared String table.
+
+
+ Maps strings and their indexes in the strings arrays
+
+
+ An integer representing the total count of strings in the workbook. This count does not
+ include any numbers, it counts only the total of text strings in the workbook.
+
+
+ An integer representing the total count of unique strings in the Shared String Table.
+ A string is unique even if it is a copy of another string, but has different formatting applied
+ at the character level.
+
+
+ Return a string item by index
+
+ @param idx index of item to return.
+ @return the item at the specified position in this Shared String table.
+
+
+ Return an integer representing the total count of strings in the workbook. This count does not
+ include any numbers, it counts only the total of text strings in the workbook.
+
+ @return the total count of strings in the workbook
+
+
+ Returns an integer representing the total count of unique strings in the Shared String Table.
+ A string is unique even if it is a copy of another string, but has different formatting applied
+ at the character level.
+
+ @return the total count of unique strings in the workbook
+
+
+ Add an entry to this Shared String table (a new value is appened to the end).
+
+
+ If the Shared String table already Contains this CT_Rst bean, its index is returned.
+ Otherwise a new entry is aded.
+
+
+ @param st the entry to add
+ @return index the index of Added entry
+
+
+ Provide low-level access to the underlying array of CT_Rst beans
+
+ @return array of CT_Rst beans
+
+
+
+ this table out as XML.
+
+ @param out The stream to write to.
+ @throws IOException if an error occurs while writing.
+
+
+
+ This class : the Single Cell Tables Part (Open Office XML Part 4:
+ chapter 3.5.2)
+
+
+ @author Roberto Manicardi
+
+
+
+ @return all the SimpleXmlCell Contained in this SingleXmlCells element
+
+
+ Table of styles shared across all sheets in a workbook.
+
+ @author ugo
+
+
+ The first style id available for use as a custom style
+
+
+ Depending on the version of Excel, the maximum number of number formats in a workbook is between 200 and 250
+ See https://support.office.com/en-us/article/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3
+ POI defaults this limit to 250, but can be increased or decreased on a per-StylesTable basis with
+ {@link #setMaxNumberOfDataFormats(int)} if needed.
+
+
+ Get the upper limit on the number of data formats that has been set for the style table.
+ To get the current number of data formats in use, use {@link #getNumDataFormats()}.
+
+ @return the maximum number of data formats allowed in the workbook
+
+
+ Create a new, empty StylesTable
+
+
+ If there isn't currently a {@link ThemesTable} for the
+ current Workbook, then creates one and sets it up.
+ After this, calls to {@link #getTheme()} won't give null
+
+
+ Read this shared styles table from an XML file.
+
+ @param is The input stream Containing the XML document.
+ @throws IOException if an error occurs while Reading.
+
+
+ Get number format string given its id
+
+ @param fmtId number format id
+ @return number format code
+
+
+ Puts fmt in the numberFormats map if the format is not
+ already in the the number format style table.
+ Does nothing if fmt is already in number format style table.
+
+ @param fmt the number format to add to number format style table
+ @return the index of fmt in the number format style table
+
+
+ Add a number format with a specific ID into the numberFormats map.
+ If a format with the same ID already exists, overwrite the format code
+ with fmt
+ This may be used to override built-in number formats.
+
+ @param index the number format ID
+ @param fmt the number format code
+
+
+ Remove a number format from the style table if it exists.
+ All cell styles with this number format will be modified to use the default number format.
+
+ @param fmt the number format to remove
+ @return true if the number format was removed
+
+
+ Remove a number format from the style table if it exists
+ All cell styles with this number format will be modified to use the default number format
+
+ @param fmt the number format to remove
+ @return true if the number format was removed
+
+
+ Records the given font in the font table.
+ Will re-use an existing font index if this
+ font matches another, EXCEPT if forced
+ registration is requested.
+ This allows people to create several fonts
+ then customise them later.
+ Note - End Users probably want to call
+ {@link XSSFFont#registerTo(StylesTable)}
+
+
+
+ @param idx style index
+ @return XSSFCellStyle or null if idx is out of bounds for xfs array
+
+
+
+ Adds a border to the border style table if it isn't already in the style table
+ Does nothing if border is already in borders style table
+
+ border to add
+ return the index of the added border
+
+
+
+ Adds a fill to the fill style table if it isn't already in the style table
+ Does nothing if fill is already in fill style table
+
+ fill to add
+ return the index of the added fill
+
+
+
+ Adds a cell to the styles table. Does not check for duplicates
+
+ the cell to add to the styles table
+ return the added cell ID in the style table
+
+
+
+ Adds a cell style to the styles table.Does not check for duplicates.
+
+ the cell style to add to the styles table
+ return the cell style ID in the style table
+
+
+ get the size of cell styles
+
+
+ @return number of data formats in the styles table
+
+
+ For unit testing only
+
+
+ For unit testing only
+
+
+ For unit testing only
+
+
+ For unit testing only!
+
+
+ Write this table out as XML.
+
+ @param out The stream to write to.
+ @throws IOException if an error occurs while writing.
+
+
+
+ Adds a Dxf to the style table Does not check for duplicates.
+
+ the Dxf to add
+ added dxf ID in the style table
+
+
+ Create a cell style in this style table.
+ Note - End users probably want to call {@link XSSFWorkbook#createCellStyle()}
+ rather than working with the styles table directly.
+
+
+ Finds a font that matches the one with the supplied attributes
+
+
+ Finds a font that matches the one with the supplied attributes
+
+
+ Class that represents theme of XLSX document. The theme includes specific
+ colors and fonts.
+
+
+ Create a new, empty ThemesTable
+
+
+ Construct a ThemesTable.
+ @param part A PackagePart.
+ @param rel A PackageRelationship.
+
+
+ Construct a ThemesTable from an existing ThemeDocument.
+ @param theme A ThemeDocument.
+
+
+ Convert a theme "index" into a color.
+ @param idx A theme "index"
+ @return The mapped XSSFColor, or null if not mapped.
+
+
+ If the colour is based on a theme, then inherit
+ information (currently just colours) from it as
+ required.
+
+
+ Write this table out as XML.
+
+ @param out The stream to write to.
+ @throws IOException if an error occurs while writing.
+
+
+
+ map of tracked columns, with values containing the best-fit width for the column
+ Using a HashMap instead of a TreeMap because insertion (trackColumn), removal (untrackColumn), and membership (everything)
+ will be called more frequently than getTrackedColumns(). The O(1) cost of insertion, removal, and membership operations
+ outweigh the infrequent O(n*log n) cost of sorting getTrackedColumns().
+ Memory consumption for a HashMap and TreeMap is about the same
+
+
+
+ Gets the current best-fit column width for the provided settings
+
+ @param useMergedCells true if merged cells are considered into the best-fit column width calculation
+ @return best fit column width, measured in default character widths.
+
+
+ Sets the best-fit column width to the maximum of the current width and the provided width
+
+ @param unmergedWidth the best-fit column width calculated with useMergedCells=False
+ @param mergedWidth the best-fit column width calculated with useMergedCells=True
+
+
+ AutoSizeColumnTracker constructor. Holds no reference to sheet
+
+ @param sheet the sheet associated with this auto-size column tracker
+ @since 3.14beta1
+
+
+ Get the currently tracked columns, naturally ordered.
+ Note if all columns are tracked, this will only return the columns that have been explicitly or implicitly tracked,
+ which is probably only columns containing 1 or more non-blank values
+
+ @return a set of the indices of all tracked columns
+ @since 3.14beta1
+
+
+ Returns true if column is currently tracked for auto-sizing.
+
+ @param column the index of the column to check
+ @return true if column is tracked
+ @since 3.14beta1
+
+
+ Returns true if all columns are implicitly tracked.
+
+ @return true if all columns are implicitly tracked
+ @since 3.14beta1
+
+
+ Tracks all non-blank columns
+ Allows columns that have been explicitly untracked to be tracked
+ @since 3.14beta1
+
+
+ Untrack all columns that were previously tracked for auto-sizing.
+ All best-fit column widths are forgotten.
+ @since 3.14beta1
+
+
+ Marks multiple columns for inclusion in auto-size column tracking.
+ Note this has undefined behavior if columns are tracked after one or more rows are written to the sheet.
+ Any column in columns that are already tracked are ignored by this call.
+
+ @param columns the indices of the columns to track
+ @since 3.14beta1
+
+
+ Marks a column for inclusion in auto-size column tracking.
+ Note this has undefined behavior if a column is tracked after one or more rows are written to the sheet.
+ If column is already tracked, this call does nothing.
+
+ @param column the index of the column to track for auto-sizing
+ @return if column is already tracked, the call does nothing and returns false
+ @since 3.14beta1
+
+
+ Implicitly track a column if it has not been explicitly untracked
+ If it has been explicitly untracked, this call does nothing and returns false.
+ Otherwise return true
+
+ @param column the column to implicitly track
+ @return false if column has been explicitly untracked, otherwise return true
+
+
+ Removes columns that were previously marked for inclusion in auto-size column tracking.
+ When a column is untracked, the best-fit width is forgotten.
+ Any column in columns that is not tracked will be ignored by this call.
+
+ @param columns the indices of the columns to track for auto-sizing
+ @return true if one or more columns were untracked as a result of this call
+ @since 3.14beta1
+
+
+ Removes a column that was previously marked for inclusion in auto-size column tracking.
+ When a column is untracked, the best-fit width is forgotten.
+ If column is not tracked, it will be ignored by this call.
+
+ @param column the index of the column to track for auto-sizing
+ @return true if column was tracked prior this call, false if no action was taken
+ @since 3.14beta1
+
+
+ Get the best-fit width of a tracked column
+
+ @param column the index of the column to get the current best-fit width of
+ @param useMergedCells true if merged cells should be considered when computing the best-fit width
+ @return best-fit column width, measured in number of characters
+ @throws InvalidOperationException if column is not tracked and trackAllColumns is false
+ @since 3.14beta1
+
+
+ Calculate the best fit width for each tracked column in row
+
+ @param row the row to get the cells
+ @since 3.14beta1
+
+
+ Helper for {@link #updateColumnWidths(Row)}.
+ Implicitly track the columns corresponding to the cells in row.
+ If all columns in the row are already tracked, this call does nothing.
+ Explicitly untracked columns will not be tracked.
+
+ @param row the row containing cells to implicitly track the columns
+ @since 3.14beta1
+
+
+ Helper for {@link #updateColumnWidths(Row)}.
+
+ @param cell the cell to compute the best fit width on
+ @param pair the column width pair to update
+ @since 3.14beta1
+
+
+ @param sharedStringsTable the shared strings table, or null if inline text is used
+
+
+ @return temp file to write sheet data
+
+
+ Table of strings shared across this workbook.
+ If two cells contain the same string, then the cell value is the same index into SharedStringsTable
+
+
+ Create a temp file to write sheet data.
+ By default, temp files are created in the default temporary-file directory
+ with a prefix "poi-sxssf-sheet" and suffix ".xml". Subclasses can override
+ it and specify a different temp directory or filename or suffix, e.g. .gz
+
+ @return temp file to write sheet data
+
+
+ Create a writer for the sheet data.
+
+ @param fd the file to write to
+
+
+ Override this to translate (such as encrypt or compress) the file output stream
+ as it is being written to disk.
+ The default behavior is to to pass the stream through unmodified.
+
+ @param fos the stream to decorate
+ @return a decorated stream
+ @throws IOException
+ @see #decorateInputStream(FileInputStream)
+
+
+ flush and close the temp data writer.
+ This method must be invoked before calling {@link #getWorksheetXMLInputStream()}
+
+
+ @return a stream to read temp file with the sheet data
+
+
+ Override this to translate (such as decrypt or expand) the file input stream
+ as it is being read from disk.
+ The default behavior is to to pass the stream through unmodified.
+
+ @param fis the stream to decorate
+ @return a decorated stream
+ @throws IOException
+ @see #decorateOutputStream(FileOutputStream)
+
+
+ Write a row to the file
+
+ @param rownum 0-based row number
+ @param row a row
+
+
+ @return whether the string has leading / trailing spaces that
+ need to be preserved with the xml:space=\"preserve\" attribute
+
+
+ Deletes the temporary file that backed this sheet on disk.
+ @return true if the file was deleted, false if it wasn't.
+
+
+
+ Get DateTime-type cell value
+
+
+
+ Used to help format error messages
+
+
+
+ Streaming version of Drawing.
+ Delegates most tasks to the non-streaming XSSF code.
+ TODO: Potentially, Comment and Chart need a similar streaming wrapper like Picture.
+
+
+
+ Will return {@link CellType} in a future version of POI.
+ For forwards compatibility, do not hard-code cell type literals in your code.
+
+ @return cell type
+
+
+ @since POI 3.15 beta 3
+ @deprecated POI 3.15 beta 3.
+ Will be deleted when we make the CellType enum transition. See bug 59791.
+
+
+
+ Will return CellType in a future version of POI. For forwards compatibility, do not hard-code cell type literals in your code.
+
+
+
+ Loops over rows and cells, evaluating formula cells there.
+ If any sheets are inactive, or any cells outside of the window,
+ will give an Exception.
+ For SXSSF, you generally don't want to use this method, instead
+ evaluate your formulas as you go before they leave the window.
+
+
+
+
+ Streaming version of Picture.
+ Most of the code is a copy of the non-streaming XSSFPicture code.
+ This is necessary as a private method GetRowHeightInPixels of that class needs to be Changed, which is called by a method call chain nested several levels.
+
+
+ The main change is to access the rows in the SXSSF sheet, not the always empty rows in the XSSF sheet when Checking the row heights.
+
+
+
+
+
+
+ Column width measured as the number of characters of the maximum digit width of the
+ numbers 0, 1, 2, ..., 9 as rendered in the normal style's font. There are 4 pixels of margin
+ pAdding (two on each side), plus 1 pixel pAdding for the gridlines.
+
+
+ This value is the same for default font in Office 2007 (Calibry) and Office 2003 and earlier (Arial)
+
+
+
+
+
+
+ Return the underlying CTPicture bean that holds all properties for this picture
+
+
+
+
+ underlying CTPicture bean///
+
+
+
+
+ Reset the image to the original size.
+
+
+
+ Please note, that this method works correctly only for workbooks
+ with the default font size (Calibri 11pt for .xlsx).
+ If the default font is Changed the resized image can be streched vertically or horizontally.
+
+
+
+
+
+
+
+ Reset the image to the original size.
+
+ Please note, that this method works correctly only for workbooks
+ with the default font size (Calibri 11pt for .xlsx).
+ If the default font is Changed the resized image can be streched vertically or horizontally.
+
+
+
+
+
+ the amount by which image dimensions are multiplied relative to the original size.
+ resize(1.0) Sets the original size, resize(0.5) resize to 50% of the original,
+ resize(2.0) resizes to 200% of the original.
+
+
+
+
+
+ Calculate the preferred size for this picture.
+
+
+
+
+ with the preferred size for this image///
+
+
+
+
+ Calculate the preferred size for this picture.
+
+
+
+
+ the amount by which image dimensions are multiplied relative to the original size.///
+ with the preferred size for this image///
+
+
+
+
+ Return the dimension of this image
+
+
+
+
+ the package part holding raw picture data///
+ type of the picture: {@link Workbook#PICTURE_TYPE_JPEG},
+ {@link Workbook#PICTURE_TYPE_PNG} or {@link Workbook#PICTURE_TYPE_DIB}
+
+
+ dimension in pixels///
+
+
+
+
+ Return picture data for this shape
+
+
+
+
+ data for this shape///
+
+
+ Compares two SXSSFRow objects. Two rows are equal if they belong to the same worksheet and
+ their row indexes are equal.
+
+ @param other the SXSSFRow to be compared.
+ @return
+ -
+ the value
0 if the row number of this SXSSFRow is
+ equal to the row number of the argument SXSSFRow
+
+ -
+ a value less than
0 if the row number of this this SXSSFRow is
+ numerically less than the row number of the argument SXSSFRow
+
+ -
+ a value greater than
0 if the row number of this this SXSSFRow is
+ numerically greater than the row number of the argument SXSSFRow
+
+
+ @throws IllegalArgumentException if the argument row belongs to a different worksheet
+
+
+
+ throws RuntimeException if the bounds are exceeded.
+
+
+
+
+ Return the column number of a cell if it is in this row
+ Otherwise return -1
+
+ @param cell the cell to get the index of
+ @return cell column index if it is in this row, -1 otherwise
+
+
+ Create an iterator over the cells from [0, getLastCellNum()).
+ Includes blank cells, excludes empty cells
+
+ Returns an iterator over all filled cells (created via Row.createCell())
+ Throws ConcurrentModificationException if cells are added, moved, or
+ removed after the iterator is created.
+
+
+ Returns whether row and column headings are printed.
+
+ @return whether row and column headings are printed
+
+
+ Returns the list of merged regions. If you want multiple regions, this is
+ faster than calling {@link #getMergedRegion(int)} each time.
+
+ @return the list of merged regions
+
+
+
+ Adds a merged region of cells (hence those cells form one).
+ Skips validation.It is possible to create overlapping merged regions
+ or create a merged region that intersects a multi-cell array formula
+ with this formula, which may result in a corrupt workbook.
+
+ region to merge
+ index of this region
+ if region contains fewer than 2 cells
+
+
+ Verify that merged regions do not intersect multi-cell array formulas and
+ no merged regions intersect another merged region in this sheet.
+
+ @throws InvalidOperationException if region intersects with a multi-cell array formula
+ @throws InvalidOperationException if at least one region intersects with another merged region in this sheet
+
+
+ Adjusts the column width to fit the contents.
+
+
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ processing.
+
+ You can specify whether the content of merged cells should be considered or ignored.
+ Default is to ignore merged cells.
+
+
+ Special note about SXSSF implementation: You must register the columns you wish to track with
+ the SXSSFSheet using {@link #trackColumnForAutoSizing(int)} or {@link #trackAllColumnsForAutoSizing()}.
+ This is needed because the rows needed to compute the column width may have fallen outside the
+ random access window and been flushed to disk.
+ Tracking columns is required even if all rows are in the random access window.
+
+ New in POI 3.14 beta 1: auto-sizes columns using cells from current and flushed rows.
+
+ @param column the column index to auto-size
+
+
+ Adjusts the column width to fit the contents.
+
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ processing.
+
+ You can specify whether the content of merged cells should be considered or ignored.
+ Default is to ignore merged cells.
+
+
+ Special note about SXSSF implementation: You must register the columns you wish to track with
+ the SXSSFSheet using {@link #trackColumnForAutoSizing(int)} or {@link #trackAllColumnsForAutoSizing()}.
+ This is needed because the rows needed to compute the column width may have fallen outside the
+ random access window and been flushed to disk.
+ Tracking columns is required even if all rows are in the random access window.
+
+ New in POI 3.14 beta 1: auto-sizes columns using cells from current and flushed rows.
+
+ @param column the column index to auto-size
+ @param useMergedCells whether to use the contents of merged cells when calculating the width of the column
+
+
+
+ Copies comment from one cell to another
+
+ Cell with a comment to copy
+ Cell to paste the comment to
+ Copied comment
+
+
+
+ Get a Hyperlink in this sheet anchored at row, column
+
+ The index of the row of the hyperlink, zero-based
+ the index of the column of the hyperlink, zero-based
+ return hyperlink if there is a hyperlink anchored at row, column; otherwise returns null
+
+
+
+ Get a Hyperlink in this sheet located in a cell specified by {code addr}
+
+ The address of the cell containing the hyperlink
+ return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null}
+
+
+ Get a list of Hyperlinks in this sheet
+
+ @return Hyperlinks for the sheet
+
+
+
+ Returns cell comment for the specified row and column
+
+ The row.
+ The column.
+ cell comment or null if not found
+
+
+
+ Returns cell comment for the specified location
+
+ cell location
+ return cell comment or null if not found
+
+
+
+ Returns all cell comments on this sheet.
+
+ return A Dictionary of each Comment in the sheet, keyed on the cell address where the comment is located.
+
+
+ Set row groupings (like groupRow) in a stream-friendly manner
+
+
+ groupRows requires all rows in the group to be in the current window.
+ This is not always practical. Instead use setRowOutlineLevel to
+ explicitly set the group level. Level 1 is the top level group,
+ followed by 2, etc. It is up to the user to ensure that level 2
+ groups are correctly nested under level 1, etc.
+
+
+ @param rownum index of row to update (0-based)
+ @param level outline level (greater than 0)
+
+
+ Removes a merged region of cells (hence letting them free)
+
+ @param indices of the regions to unmerge
+
+
+ Track a column in the sheet for auto-sizing.
+ Note this has undefined behavior if a column is tracked after one or more rows are written to the sheet.
+ If column is already tracked, this call does nothing.
+
+ @param column the column to track for autosizing
+ @since 3.14beta1
+ @see #trackColumnsForAutoSizing(Collection)
+ @see #trackAllColumnsForAutoSizing()
+
+
+ Track several columns in the sheet for auto-sizing.
+ Note this has undefined behavior if columns are tracked after one or more rows are written to the sheet.
+ Any column in columns that are already tracked are ignored by this call.
+
+ @param columns the columns to track for autosizing
+ @since 3.14beta1
+
+
+ Tracks all columns in the sheet for auto-sizing. If this is called, individual columns do not need to be tracked.
+ Because determining the best-fit width for a cell is expensive, this may affect the performance.
+ @since 3.14beta1
+
+
+ Removes a column that was previously marked for inclusion in auto-size column tracking.
+ When a column is untracked, the best-fit width is forgotten.
+ If column is not tracked, it will be ignored by this call.
+
+ @param column the index of the column to track for auto-sizing
+ @return true if column was tracked prior to this call, false if no action was taken
+ @since 3.14beta1
+ @see #untrackColumnsForAutoSizing(Collection)
+ @see #untrackAllColumnsForAutoSizing(int)
+
+
+ Untracks several columns in the sheet for auto-sizing.
+ When a column is untracked, the best-fit width is forgotten.
+ Any column in columns that is not tracked will be ignored by this call.
+
+ @param columns the indices of the columns to track for auto-sizing
+ @return true if one or more columns were untracked as a result of this call
+
+ @param columns the columns to track for autosizing
+ @since 3.14beta1
+
+
+ Untracks all columns in the sheet for auto-sizing. Best-fit column widths are forgotten.
+ If this is called, individual columns do not need to be untracked.
+ @since 3.14beta1
+
+
+ Returns true if column is currently tracked for auto-sizing.
+
+ @param column the index of the column to check
+ @return true if column is tracked
+ @since 3.14beta1
+
+
+ Get the currently tracked columns for auto-sizing.
+ Note if all columns are tracked, this will only return the columns that have been explicitly or implicitly tracked,
+ which is probably only columns containing 1 or more non-blank values
+
+ @return a set of the indices of all tracked columns
+ @since 3.14beta1
+
+
+ @param rowIndex the zero based row index to find from
+
+
+
+ Specifies how many rows can be accessed at most via getRow().
+ The exceeding rows (if any) are flushed to the disk while rows
+ with lower index values are flushed first.
+
+
+ @return Last row number to be flushed to disk, or -1 if none flushed yet
+
+
+ Streaming version of XSSFWorkbook implementing the "BigGridDemo" strategy.
+
+ This allows to write very large files without running out of memory as only
+ a configurable portion of the rows are kept in memory at any one time.
+
+ You can provide a template workbook which is used as basis for the written
+ data.
+
+ See https://poi.apache.org/spreadsheet/how-to.html#sxssf for details.
+
+ Please note that there are still things that still may consume a large
+ amount of memory based on which features you are using, e.g. merged regions,
+ comments, ... are still only stored in memory and thus may require a lot of
+ memory if used extensively.
+
+ SXSSFWorkbook defaults to using inline strings instead of a shared strings
+ table. This is very efficient, since no document content needs to be kept in
+ memory, but is also known to produce documents that are incompatible with
+ some clients. With shared strings enabled all unique strings in the document
+ has to be kept in memory. Depending on your document content this could use
+ a lot more resources than with shared strings disabled.
+
+ Carefully review your memory budget and compatibility needs before deciding
+ whether to enable shared strings or not.
+
+ Streaming version of the XSSFWorkbook, originally implemented in the "BigGridDemo".
+
+
+
+ See the constructors for a more detailed description of the sliding window of rows.
+
+ @return The number of rows that are kept in memory at once before flushing them out.
+
+
+
+ whether temp file should be compresss.
+
+
+
+
+ setting this flag On allows to write large files;
+ however, this can lead to compatibility issues
+
+
+
+
+ shared string table - a cache of strings in this workbook.
+
+
+
+ Construct an empty workbook and specify the window for row access.
+
+ When a new node is created via createRow() and the total number
+ of unflushed records would exceed the specified value, then the
+ row with the lowest index value is flushed and cannot be accessed
+ via getRow() anymore.
+
+
+ A value of -1 indicates unlimited access. In this case all
+ records that have not been flushed by a call to flush() are available
+ for random access.
+
+
+ A value of 0 is not allowed because it would flush any newly created row
+ without having a chance to specify any cells.
+
+
+ @param rowAccessWindowSize the number of rows that are kept in memory until flushed out, see above.
+
+
+
+ Construct a new workbook with default row window size
+
+
+
+ Construct a workbook from a template.
+
+ There are three use-cases to use SXSSFWorkbook(XSSFWorkbook) :
+
+ -
+ Append new sheets to existing workbooks. You can open existing
+ workbook from a file or create on the fly with XSSF.
+
+ -
+ Append rows to existing sheets. The row number MUST be greater
+ than max(rownum) in the template sheet.
+
+ -
+ Use existing workbook as a template and re-use global objects such
+ as cell styles, formats, images, etc.
+
+
+ All three use cases can work in a combination.
+
+ What is not supported:
+
+ -
+ Access initial cells and rows in the template. After constructing
+ SXSSFWorkbook(XSSFWorkbook) all internal windows are empty and
+ SXSSFSheet@getRow and SXSSFRow#getCell return null.
+
+ -
+ Override existing cells and rows. The API silently allows that but
+ the output file is invalid and Excel cannot read it.
+
+
+
+ @param workbook the template workbook
+
+
+ Constructs an workbook from an existing workbook.
+
+ When a new node is created via createRow() and the total number
+ of unflushed records would exceed the specified value, then the
+ row with the lowest index value is flushed and cannot be accessed
+ via getRow() anymore.
+
+
+ A value of -1 indicates unlimited access. In this case all
+ records that have not been flushed by a call to flush() are available
+ for random access.
+
+
+ A value of 0 is not allowed because it would flush any newly created row
+ without having a chance to specify any cells.
+
+
+ @param rowAccessWindowSize the number of rows that are kept in memory until flushed out, see above.
+
+
+ Constructs an workbook from an existing workbook.
+
+ When a new node is created via createRow() and the total number
+ of unflushed records would exceed the specified value, then the
+ row with the lowest index value is flushed and cannot be accessed
+ via getRow() anymore.
+
+
+ A value of -1 indicates unlimited access. In this case all
+ records that have not been flushed by a call to flush() are available
+ for random access.
+
+
+ A value of 0 is not allowed because it would flush any newly created row
+ without having a chance to specify any cells.
+
+
+ @param rowAccessWindowSize the number of rows that are kept in memory until flushed out, see above.
+ @param compressTmpFiles whether to use gzip compression for temporary files
+
+
+ Constructs an workbook from an existing workbook.
+
+ When a new node is created via createRow() and the total number
+ of unflushed records would exceed the specified value, then the
+ row with the lowest index value is flushed and cannot be accessed
+ via getRow() anymore.
+
+
+ A value of -1 indicates unlimited access. In this case all
+ records that have not been flushed by a call to flush() are available
+ for random access.
+
+
+ A value of 0 is not allowed because it would flush any newly created row
+ without having a chance to specify any cells.
+
+
+ @param workbook the template workbook
+ @param rowAccessWindowSize the number of rows that are kept in memory until flushed out, see above.
+ @param compressTmpFiles whether to use gzip compression for temporary files
+ @param useSharedStringsTable whether to use a shared strings table
+
+ Currently only supports writing not reading. E.g. the number of rows returned from a worksheet will be wrong etc.
+
+
+
+
+
+
+
+ Set whether temp files should be compressed.
+
+ SXSSF writes sheet data in temporary files (a temp file per-sheet)
+ and the size of these temp files can grow to to a very large size,
+ e.g. for a 20 MB csv data the size of the temp xml file become few GB large.
+ If the "compress" flag is set to true then the temporary XML is gzipped.
+
+
+ Please note the the "compress" option may cause performance penalty.
+
+ @param compress whether to compress temp files
+
+
+ Finds a font that matches the one with the supplied attributes
+
+ @return the font with the matched attributes or null
+
+
+ Dispose of temporary files backing this workbook on disk.
+ Calling this method will render the workbook unusable.
+ @return true if all temporary files were deleted successfully.
+
+
+ Returns all defined names with the given name.
+
+ @param name the name of the defined name
+ @return a list of the defined names with the specified name. An empty list is returned if none is found.
+
+
+
+ Returns all defined names
+
+ Returns all defined names
+
+
+
+ Remove the given defined name
+
+ the name to remove
+
+
+
+ Returns the spreadsheet version (EXCLE2007) of this workbook
+
+
+
+
+ Gets a bool value that indicates whether the date systems used in the workbook starts in 1904.
+ The default value is false, meaning that the workbook uses the 1900 date system,
+ where 1/1/1900 is the first day in the system.
+
+ True if the date systems used in the workbook starts in 1904
+
+
+ Internal POI use only - parent of XSSF and SXSSF Evaluation workbooks
+
+
+ XSSF doesn't use external sheet indexes, so when asked treat
+ it just as a local index
+
+
+ @return the external sheet index of the sheet with the given internal
+ index. Used by some of the more obscure formula and named range things.
+ Fairly easy on XSSF (we think...) since the internal and external
+ indices are the same
+
+
+
+ Return EvaluationName wrapper around the matching XSSFName (named range)
+
+ case-aware but case-insensitive named range in workbook
+ index of sheet if named range scope is limited to one sheet
+ if named range scope is global to the workbook, sheetIndex is -1.
+ If name is a named range in the workbook, returns
+ EvaluationName corresponding to that named range
+ Returns null if there is no named range with the same name and scope in the workbook
+
+
+
+
+ Return an external name (named range, function, user-defined function) Pxg
+
+
+
+
+
+
+ Returns the data table with the given name (case insensitive).
+ Tables are cached for performance (formula evaluation looks them up by name repeatedly).
+ After the first table lookup, adding or removing a table from the document structure will cause trouble.
+ This is meant to be used on documents whose structure is essentially static at the point formulas are evaluated.
+
+ @param name the data table name (case-insensitive)
+ @return The Data table in the workbook named name, or null if no table is named name.
+ @since 3.15 beta 2
+
+
+ Internal POI use only - parent of XSSF and SXSSF formula Evaluators
+
+
+ Turns a XSSFCell / SXSSFCell into a XSSFEvaluationCell
+
+
+ Returns a CellValue wrapper around the supplied ValueEval instance.
+
+
+
+ Holds data for a XSSF Area Chart
+
+
+
+
+
+ List of all data series.
+
+
+
+ Holds data for a XSSF Bar Chart
+
+
+
+
+
+ List of all data series.
+
+
+ Base class for all axis types.
+
+ @author Roman Kashitsyn
+
+
+ @author Roman Kashitsyn
+
+
+ @return new scatter chart data instance
+
+
+ @return factory instance
+
+
+ Represents a SpreadsheetML chart legend
+ @author Roman Kashitsyn
+
+
+ Underlaying CTLagend bean
+
+
+ Create a new SpreadsheetML chart legend
+
+
+ Set sensible default styling.
+
+
+ Return the underlying CTLegend bean.
+
+ @return the underlying CTLegend bean
+
+
+ Package private class with utility methods.
+
+ @author Roman Kashitsyn
+
+
+ Builds CTAxDataSource object content from POI ChartDataSource.
+ @param ctAxDataSource OOXML data source to build
+ @param dataSource POI data source to use
+
+
+ Builds CTNumDataSource object content from POI ChartDataSource
+ @param ctNumDataSource OOXML data source to build
+ @param dataSource POI data source to use
+
+
+
+ Holds data for a XSSF Column Chart
+
+
+
+
+
+ List of all data series.
+
+
+
+ Holds data for a XSSF Line Chart
+
+
+
+
+
+ List of all data series.
+
+
+ Represents a SpreadsheetML manual layout.
+ @author Roman Kashitsyn
+
+
+ Underlaying CTManualLayout bean.
+
+
+ Create a new SpreadsheetML manual layout.
+ @param layout a Spreadsheet ML layout that should be used as base.
+
+
+ Create a new SpreadsheetML manual layout for chart.
+ @param chart a chart to create layout for.
+
+
+ Return the underlying CTManualLayout bean.
+
+ @return the underlying CTManualLayout bean.
+
+
+
+ Holds data for a XSSF Pie Chart
+
+
+
+
+
+
+ List of all data series.
+
+
+
+ Represents DrawingML scatter chart.
+
+ @author Roman Kashitsyn
+
+
+ List of all data series.
+
+
+ Package private ScatterChartSerie implementation.
+
+
+ Returns data source used for X axis values.
+ @return data source used for X axis values
+
+
+ Returns data source used for Y axis values.
+ @return data source used for Y axis values
+
+
+ @param useCache if true, cached results will be Added on plot
+
+
+ Value axis type.
+
+ @author Roman Kashitsyn
+
+
+ Cell Settings avaiable in the Format/Alignment tab
+
+
+ Creates a Cell Alignment from the supplied XML defInition
+
+ @param cellAlignment
+
+
+ Get the type of vertical alignment for the cell
+
+ @return the type of aligment
+ @see VerticalAlignment
+
+
+ Get the type of horizontal alignment for the cell
+
+ @return the type of aligment
+ @see HorizontalAlignment
+
+
+ Get the number of spaces to indent the text in the cell
+
+ @return indent - number of spaces
+
+
+
+ Whether the text should be wrapped
+
+ @return a bool value indicating if the text in a cell should be line-wrapped within the cell.
+
+
+ Access to low-level data
+
+
+ The enumeration value indicating the side being used for a cell border.
+
+
+ This element Contains border formatting information, specifying border defInition formats (left, right, top, bottom, diagonal)
+ for cells in the workbook.
+ Color is optional.
+
+
+ Creates a Cell Border from the supplied XML defInition
+
+
+ Creates a Cell Border from the supplied XML defInition
+
+
+ Creates a new, empty Cell Border.
+ You need to attach this to the Styles Table
+
+
+ Records the Themes Table that is associated with
+ the current font, used when looking up theme
+ based colours and properties.
+
+
+ Returns the underlying XML bean.
+
+ @return CT_Border
+
+
+ Get the type of border to use for the selected border
+
+ @param side - - where to apply the color defInition
+ @return borderstyle - the type of border to use. default value is NONE if border style is not Set.
+ @see BorderStyle
+
+
+ Set the type of border to use for the selected border
+
+ @param side - - where to apply the color defInition
+ @param style - border style
+ @see BorderStyle
+
+
+ Get the color to use for the selected border
+
+ @param side - where to apply the color defInition
+ @return color - color to use as XSSFColor. null if color is not set
+
+
+ Set the color to use for the selected border
+
+ @param side - where to apply the color defInition
+ @param color - the color to use
+
+
+ This element specifies fill formatting.
+ A cell fill consists of a background color, foreground color, and pattern to be applied across the cell.
+
+
+ Creates a CellFill from the supplied parts
+
+ @param fill - fill
+
+
+ Creates an empty CellFill
+
+
+ Get the background fill color.
+
+ @return fill color, null if color is not set
+
+
+ Set the background fill color represented as a indexed color value.
+
+ @param index
+
+
+ Set the background fill color represented as a {@link XSSFColor} value.
+
+ @param color
+
+
+ Get the foreground fill color.
+
+ @return XSSFColor - foreground color. null if color is not set
+
+
+ Set the foreground fill color as a indexed color value
+
+ @param index - the color to use
+
+
+ Set the foreground fill color represented as a {@link XSSFColor} value.
+
+ @param color - the color to use
+
+
+ get the fill pattern
+
+ @return fill pattern type. null if fill pattern is not set
+
+
+ set the fill pattern
+
+ @param patternType fill pattern to use
+
+
+ Returns the underlying XML bean.
+
+ @return CT_Fill
+
+
+
+ Parent class of all XSSF headers and footers.
+
+
+
+ Create an instance of XSSFHeaderFooter from the supplied XML bean
+
+ @param headerFooter
+
+
+ Returns the underlying CTHeaderFooter xml bean
+
+ @return the underlying CTHeaderFooter xml bean
+
+
+ Are fields currently being stripped from the text that this
+ {@link XSSFHeaderFooter} returns? Default is false, but can be Changed
+
+
+ Should fields (eg macros) be stripped from the text that this class
+ returns? Default is not to strip.
+
+ @param StripFields
+
+
+ Removes any fields (eg macros, page markers etc) from the string.
+ Normally used to make some text suitable for showing to humans, and the
+ resultant text should not normally be saved back into the document!
+
+
+ get the text representing the center part of this element
+
+
+ get the text representing the left part of this element
+
+
+ get the text representing the right part of this element
+
+
+
+ Helper class for dealing with the Column Settings on a CT_Worksheet
+ (the data part of a sheet). Note - within POI, we use 0 based column
+ indexes, but the column defInitions in the XML are 1 based!
+
+
+
+
+ Returns the Column at the given 0 based index
+
+
+
+
+
+
+
+ Returns the Column at the given 1 based index. POI default is 0
+ based, but the file stores as 1 based.
+
+
+
+
+
+
+
+ Does the column at the given 0 based index exist in the supplied
+ list of column defInitions?
+
+
+
+
+
+
+
+ Returns -1 if no column is found for the given index
+
+
+
+
+
+
+ Return the CT_Col at the given (0 based) column index, creating
+ it if required.
+
+
+
+
+
+
+
+ Insert a new CT_Col at position 0 into cols, Setting min=min,
+ max=max and copying all the colsWithAttributes array cols
+ attributes into newCol
+
+
+
+
+
+
+
+
+
+ Returns a view of the portion of this map whose keys are
+ greater than (or equal to, if inclusive is true) fromKey.
+
+
+
+
+
+
+
+ Helper for Shifting columns left or right
+ This abstract class exists to consolidate duplicated code between
+ XSSFColumnShifter and HSSFColumnShifter
+
+
+
+
+ Shifts, grows, or shrinks the merged regions due to a column Shift.
+ Merged regions that are completely overlaid by Shifting will
+ be deleted.
+
+ the column to start Shifting
+ the column to end Shifting
+ the number of columns to shift
+ an array of affected merged regions, doesn't contain
+ deleted ones
+
+
+
+ Updated named ranges
+
+
+
+
+
+ Update formulas.
+
+
+
+
+
+ Update the formulas in specified column using the formula Shifting
+ policy specified by Shifter
+
+ the column to update the formulas on
+ the formula Shifting policy
+
+
+
+ Shift the Hyperlink anchors (not the hyperlink text, even if the
+ hyperlink is of type LINK_DOCUMENT and refers to a cell that was
+ Shifted). Hyperlinks do not track the content they point to.
+
+ the formula Shifting policy
+
+
+ Split into left, center, right
+
+
+ Utility to update formulas and named ranges when a sheet name was Changed
+
+ @author Yegor Kozlov
+
+
+ Update sheet name in all formulas and named ranges.
+ Called from {@link XSSFWorkbook#setSheetName(int, String)}
+
+
+ The idea is to parse every formula and render it back to string
+ with the updated sheet name. This is done by parsing into Ptgs,
+ looking for ones with sheet references in them, and changing those
+
+
+ @param sheetIndex the 0-based index of the sheet being changed
+ @param oldName the old sheet name
+ @param newName the new sheet name
+
+
+ Parse cell formula and re-assemble it back using the specified FormulaRenderingWorkbook.
+
+ @param cell the cell to update
+ @param frwb the formula rendering workbbok that returns new sheet name
+
+
+ Parse formula in the named range and re-assemble it back using the specified FormulaRenderingWorkbook.
+
+ @param name the name to update
+ @param frwb the formula rendering workbbok that returns new sheet name
+
+
+ XSSF-specific code for working with ignored errors
+
+
+ Sets the XORed or hashed password
+
+ @param xobj the xmlbeans object which Contains the password attributes
+ @param password the password, if null, the password attributes will be Removed
+ @param hashAlgo the hash algorithm, if null the password will be XORed
+ @param prefix the prefix of the password attributes, may be null
+
+
+ Validates the password, i.e.
+ calculates the hash of the given password and Compares it against the stored hash
+
+ @param xobj the xmlbeans object which Contains the password attributes
+ @param password the password, if null the method will always return false,
+ even if there's no password Set
+ @param prefix the prefix of the password attributes, may be null
+
+ @return true, if the hashes match
+
+
+ @author Yegor Kozlov
+
+
+ *
+ * This class is a wrapper around the CTSingleXmlCell (Open Office XML Part 4:
+ * chapter 3.5.2.1)
+ *
+
+ *
+ * @author Roberto Manicardi
+ *
+
+
+ Gets the XSSFCell referenced by the R attribute or Creates a new one if cell doesn't exists
+ @return the referenced XSSFCell, null if the cell reference is invalid
+
+
+
+ This class is a wrapper around the CT_XmlColumnPr (Open Office XML Part 4:
+ chapter 3.5.1.7)
+
+
+ @author Roberto Manicardi
+
+
+
+ (see Open Office XML Part 4: chapter 3.5.1.3) An integer representing the unique identifier of this column.
+
+
+
+ If the XPath is, for example, /Node1/Node2/Node3 and /Node1/Node2 is the common XPath for the table, the local XPath is /Node3
+
+ @return the local XPath
+
+
+ Specifies type of automatic numbered bullet points that should be applied to a paragraph.
+
+
+ (a), (b), (c), ...
+
+
+ (A), (B), (C), ...
+
+
+ a), b), c), ...
+
+
+ A), B), C), ...
+
+
+ a., b., c., ...
+
+
+ A., B., C., ...
+
+
+ (1), (2), (3), ...
+
+
+ 1), 2), 3), ...
+
+
+ 1., 2., 3., ...
+
+
+ 1, 2, 3, ...
+
+
+ (i), (ii), (iii), ...
+
+
+ (I), (II), (III), ...
+
+
+ i), ii), iii), ...
+
+
+ I), II), III), ...
+
+
+ i., ii., iii., ...
+
+
+ I., II., III., ...
+
+
+ Dbl-byte circle numbers
+
+
+ Wingdings black circle numbers
+
+
+ Wingdings white circle numbers
+
+
+ Specified a list of text alignment types
+
+
+ Align text to the left margin.
+
+
+ Align text in the center.
+
+
+ Align text to the right margin.
+
+
+ Align text so that it is justified across the whole line. It
+ is smart in the sense that it will not justify sentences
+ which are short
+
+
+ Specifies a list of auto-fit types.
+
+ Autofit specifies that a shape should be auto-fit to fully contain the text described within it.
+ Auto-fitting is when text within a shape is scaled in order to contain all the text inside
+
+
+
+ Specifies that text within the text body should not be auto-fit to the bounding box.
+ Auto-fitting is when text within a text box is scaled in order to remain inside
+ the text box.
+
+
+ Specifies that text within the text body should be normally auto-fit to the bounding box.
+ Autofitting is when text within a text box is scaled in order to remain inside the text box.
+
+
+ Example: Consider the situation where a user is building a diagram and needs
+ to have the text for each shape that they are using stay within the bounds of the shape.
+ An easy way this might be done is by using NORMAL autofit
+
+
+
+ Specifies that a shape should be auto-fit to fully contain the text described within it.
+ Auto-fitting is when text within a shape is scaled in order to contain all the text inside.
+
+
+ Example: Consider the situation where a user is building a diagram and needs to have
+ the text for each shape that they are using stay within the bounds of the shape.
+ An easy way this might be done is by using SHAPE autofit
+
+
+
+ Text Capitalization that is to be applied to the text Run. This is a render-only
+ modification and does not affect the actual characters stored in the text Run.
+
+
+ Vertical Text Types
+
+
+ Horizontal text. This should be default.
+
+
+ Vertical orientation.
+ (each line is 90 degrees rotated clockwise, so it goes
+ from top to bottom; each next line is to the left from
+ the previous one).
+
+
+ Vertical orientation.
+ (each line is 270 degrees rotated clockwise, so it goes
+ from bottom to top; each next line is to the right from
+ the previous one).
+
+
+ Determines if all of the text is vertical
+ ("one letter on top of another").
+
+
+ Specified a list of text font alignment types
+
+
+ Automatic alignment
+
+
+ Align text to the top.
+
+
+ Align text in the center.
+
+
+ Align text to the baseline.
+
+
+ Align text to the bottom.
+
+
+ Text Horizontal Overflow
+
+
+ When a big character does not fit into a line, allow a
+ horizontal overflow.
+
+
+ When a big character does not fit into a line, clip it at
+ the proper horizontal overflow.
+
+
+ Text Vertical Overflow
+
+
+ Overflow the text and pay no attention to top and bottom barriers.
+
+
+ Pay attention to top and bottom barriers. Use an
+ ellipsis to denote that there is text which is not visible.
+
+
+ Pay attention to top and bottom barriers. Provide no
+ indication that there is text which is not visible.
+
+
+ An anchor is what specifics the position of a shape within a client object
+ or within another containing shape.
+
+ @author Yegor Kozlov
+
+
+ Represents autofiltering for the specified worksheet.
+
+ @author Yegor Kozlov
+
+
+ @author Yegor Kozlov
+
+
+ @param builtIn
+ @param style
+
+
+ High level representation of a cell in a row of a spreadsheet.
+
+ Cells can be numeric, formula-based or string-based (text). The cell type
+ specifies this. String cells cannot conatin numbers and numeric cells cannot
+ contain strings (at least according to our model). Client apps should do the
+ conversions themselves. Formula cells have the formula string, as well as
+ the formula result, which can be numeric or string.
+
+
+ Cells should have their number (0 based) before being Added to a row. Only
+ cells that have values should be Added.
+
+
+
+ the xml bean Containing information about the cell's location, value,
+ data type, formatting, and formula
+
+
+ the XSSFRow this cell belongs to
+
+
+ 0-based column index
+
+
+ Table of strings shared across this workbook.
+ If two cells contain the same string, then the cell value is the same index into SharedStringsTable
+
+
+ Table of cell styles shared across all cells in a workbook.
+
+
+ Construct a XSSFCell.
+
+ @param row the parent row.
+ @param cell the xml bean Containing information about the cell.
+
+
+
+ Copy cell value, formula and style, from srcCell per cell copy policy
+ If srcCell is null, clears the cell value and cell style per cell copy policy
+
+ This does not shift references in formulas. Use {@link XSSFRowShifter} to shift references in formulas.
+
+ The cell to take value, formula and style from
+ The policy for copying the information, see {@link CellCopyPolicy}
+ if copy cell style and srcCell is from a different workbook
+
+
+ @return table of strings shared across this workbook
+
+
+ @return table of cell styles shared across this workbook
+
+
+ Returns the sheet this cell belongs to
+
+ @return the sheet this cell belongs to
+
+
+ Returns the row this cell belongs to
+
+ @return the row this cell belongs to
+
+
+ Get the value of the cell as a bool.
+
+ For strings, numbers, and errors, we throw an exception. For blank cells we return a false.
+
+ @return the value of the cell as a bool
+ @throws InvalidOperationException if the cell type returned by {@link #CellType}
+ is not CellType.Boolean, CellType.Blank or CellType.Formula
+
+
+ Set a bool value for the cell
+
+ @param value the bool value to Set this cell to. For formulas we'll Set the
+ precalculated value, for bools we'll Set its value. For other types we
+ will change the cell to a bool cell and Set its value.
+
+
+ Get the value of the cell as a number.
+
+ For strings we throw an exception. For blank cells we return a 0.
+ For formulas or error cells we return the precalculated value;
+
+ @return the value of the cell as a number
+ @throws InvalidOperationException if the cell type returned by {@link #CellType} is CellType.String
+ @exception NumberFormatException if the cell value isn't a parsable double.
+ @see DataFormatter for turning this number into a string similar to that which Excel would render this number as.
+
+
+ Set a numeric value for the cell
+
+ @param value the numeric value to Set this cell to. For formulas we'll Set the
+ precalculated value, for numerics we'll Set its value. For other types we
+ will change the cell to a numeric cell and Set its value.
+
+
+ Get the value of the cell as a string
+
+ For numeric cells we throw an exception. For blank cells we return an empty string.
+ For formulaCells that are not string Formulas, we throw an exception
+
+ @return the value of the cell as a string
+
+
+ Get the value of the cell as a XSSFRichTextString
+
+ For numeric cells we throw an exception. For blank cells we return an empty string.
+ For formula cells we return the pre-calculated value if a string, otherwise an exception
+
+ @return the value of the cell as a XSSFRichTextString
+
+
+ Set a string value for the cell.
+
+ @param str value to Set the cell to. For formulas we'll Set the formula
+ cached string result, for String cells we'll Set its value. For other types we will
+ change the cell to a string cell and Set its value.
+ If value is null then we will change the cell to a Blank cell.
+
+
+ Set a string value for the cell.
+
+ @param str value to Set the cell to. For formulas we'll Set the 'pre-Evaluated result string,
+ for String cells we'll Set its value. For other types we will
+ change the cell to a string cell and Set its value.
+ If value is null then we will change the cell to a Blank cell.
+
+
+
+ Return a formula for the cell, for example, SUM(C4:E4)
+
+
+
+ package/hierarchy use only - reuse an existing evaluation workbook if available for caching
+
+ @param fpb evaluation workbook for reuse, if available, or null to create a new one as needed
+ @return a formula for the cell
+ @throws InvalidOperationException if the cell type returned by {@link #getCellType()} is not CELL_TYPE_FORMULA
+
+
+
+ Creates a non shared formula from the shared formula counterpart
+
+ Shared Group Index
+
+ non shared formula created for the given shared formula and this cell
+
+
+ Sets formula for this cell.
+
+ Note, this method only Sets the formula string and does not calculate the formula value.
+ To Set the precalculated value use {@link #setCellValue(double)} or {@link #setCellValue(String)}
+
+
+ @param formula the formula to Set, e.g. "SUM(C4:E4)".
+ If the argument is null then the current formula is Removed.
+ @throws NPOI.ss.formula.FormulaParseException if the formula has incorrect syntax or is otherwise invalid
+ @throws InvalidOperationException if the operation is not allowed, for example,
+ when the cell is a part of a multi-cell array formula
+
+
+
+ Called when this an array formula in this cell is deleted.
+
+ a customized exception message for the case if deletion of the cell is impossible. If null, a default message will be generated
+
+
+
+ Returns zero-based column index of this cell
+
+
+
+
+ Returns zero-based row index of a row in the sheet that contains this cell
+
+
+
+
+ Returns an A1 style reference to the location of this cell
+
+ A1 style reference to the location of this cell
+
+
+
+ Return the cell's style.
+
+
+
+
+ Return the cell type.
+
+
+
+
+ Only valid for formula cells
+
+
+
+
+ Detect cell type based on the "t" attribute of the CT_Cell bean
+
+
+
+
+
+
+ Get the value of the cell as a date.
+
+
+
+
+ Set a date value for the cell. Excel treats dates as numeric so you will need to format the cell as a date.
+
+ the date value to Set this cell to. For formulas we'll set the precalculated value,
+ for numerics we'll Set its value. For other types we will change the cell to a numeric cell and Set its value.
+
+
+
+ Returns the error message, such as #VALUE!
+
+
+
+
+ Get the value of the cell as an error code.
+ For strings, numbers, and bools, we throw an exception.
+ For blank cells we return a 0.
+
+
+
+
+ Set a error value for the cell
+
+ the error value to Set this cell to.
+ For formulas we'll Set the precalculated value , for errors we'll set
+ its value. For other types we will change the cell to an error cell and Set its value.
+
+
+
+
+ Sets this cell as the active cell for the worksheet.
+
+
+
+
+ Blanks this cell. Blank cells have no formula or value but may have styling.
+ This method erases all the data previously associated with this cell.
+
+
+
+
+ Sets column index of this cell
+
+
+
+
+
+ Set the cells type (numeric, formula or string)
+
+
+
+
+
+ Returns a string representation of the cell
+
+ Formula cells return the formula string, rather than the formula result.
+ Dates are displayed in dd-MMM-yyyy format
+ Errors are displayed as #ERR<errIdx>
+
+
+
+ Returns the raw, underlying ooxml value for the cell
+
+ If the cell Contains a string, then this value is an index into
+ the shared string table, pointing to the actual string value. Otherwise,
+ the value of the cell is expressed directly in this element. Cells Containing formulas express
+ the last calculated result of the formula in this element.
+
+
+ @return the raw cell value as Contained in the underlying CT_Cell bean,
+ null for blank cells.
+
+
+
+ Used to help format error messages
+
+
+
+
+
+ Used to help format error messages
+
+
+ @throws RuntimeException if the bounds are exceeded.
+
+
+
+ Returns cell comment associated with this cell
+
+
+
+
+ Removes the comment for this cell, if there is one.
+
+
+
+
+ Get or set hyperlink associated with this cell
+ If the supplied hyperlink is null on setting, the hyperlink for this cell will be removed.
+
+
+
+ Removes the hyperlink for this cell, if there is one.
+
+
+ Returns the xml bean containing information about the cell's location (reference), value,
+ data type, formatting, and formula
+
+ @return the xml bean containing information about this cell
+
+
+ Chooses a new bool value for the cell when its type is changing.
+
+ Usually the caller is calling SetCellType() with the intention of calling
+ SetCellValue(bool) straight afterwards. This method only exists to give
+ the cell a somewhat reasonable value until the SetCellValue() call (if at all).
+ TODO - perhaps a method like SetCellTypeAndValue(int, Object) should be introduced to avoid this
+
+
+ The purpose of this method is to validate the cell state prior to modification
+
+ @see #NotifyArrayFormulaChanging()
+
+
+
+ Called when this cell is modified.The purpose of this method is to validate the cell state prior to modification.
+
+ if modification is not allowed
+
+
+
+ High level representation of the the possible formatting information for the contents of the cells on a sheet in a
+ SpreadsheetML document.
+
+ @see NPOI.xssf.usermodel.XSSFWorkbook#CreateCellStyle()
+ @see NPOI.xssf.usermodel.XSSFWorkbook#getCellStyleAt(short)
+ @see NPOI.xssf.usermodel.XSSFCell#setCellStyle(NPOI.ss.usermodel.CellStyle)
+
+
+ Creates a Cell Style from the supplied parts
+ @param cellXfId The main XF for the cell. Must be a valid 0-based index into the XF table
+ @param cellStyleXfId Optional, style xf. A value of -1 means no xf.
+ @param stylesSource Styles Source to work off
+
+
+ Used so that StylesSource can figure out our location
+
+
+ Used so that StylesSource can figure out our location
+
+
+
+ Creates an empty Cell Style
+
+
+
+
+ Verifies that this style belongs to the supplied Workbook
+ Styles Source.
+ Will throw an exception if it belongs to a different one.
+ This is normally called when trying to assign a style to a
+ cell, to ensure the cell and the style are from the same
+ workbook (if they're not, it won't work)
+ @throws ArgumentException if there's a workbook mis-match
+
+
+ Clones all the style information from another
+ XSSFCellStyle, onto this one. This
+ XSSFCellStyle will then have all the same
+ properties as the source, but the two may
+ be edited independently.
+ Any stylings on this XSSFCellStyle will be lost!
+
+ The source XSSFCellStyle could be from another
+ XSSFWorkbook if you like. This allows you to
+ copy styles from one XSSFWorkbook to another.
+
+
+
+ Get the type of horizontal alignment for the cell
+
+ the type of alignment
+
+
+
+ Get or set the type of border to use for the bottom border of the cell
+
+
+
+
+ Get or set the type of border to use for the left border of the cell
+
+
+
+
+ Get or set the type of border to use for the right border of the cell
+
+
+
+
+ Get or set the type of border to use for the top border of the cell
+
+
+
+ Get the color to use for the bottom border
+ Color is optional. When missing, IndexedColors.Automatic is implied.
+ @return the index of the color defInition, default value is {@link NPOI.ss.usermodel.IndexedColors#AUTOMATIC}
+ @see NPOI.ss.usermodel.IndexedColors
+
+
+ Get the color to use for the bottom border as a {@link XSSFColor}
+
+ @return the used color or null if not Set
+
+
+ Get the index of the number format (numFmt) record used by this cell format.
+
+ @return the index of the number format
+
+
+ Set the index of a data format
+
+ @param fmt the index of a data format
+
+
+ Get the contents of the format string, by looking up
+ the StylesSource
+
+ @return the number format string
+
+
+
+ Get the background fill color.
+ Note - many cells are actually filled with a foreground fill, not a background fill
+
+
+
+ Get the background fill color.
+
+ Note - many cells are actually Filled with a foreground
+ Fill, not a background fill - see {@link #getFillForegroundColor()}
+
+ @see NPOI.xssf.usermodel.XSSFColor#getRgb()
+ @return XSSFColor - fill color or null if not Set
+
+
+ Get the foreground fill color.
+
+ Many cells are Filled with this, instead of a
+ background color ({@link #getFillBackgroundColor()})
+
+ @see IndexedColors
+ @return fill color, default value is {@link NPOI.ss.usermodel.IndexedColors#AUTOMATIC}
+
+
+
+ Get the foreground fill color.
+
+
+
+
+ Get the foreground fill color.
+
+
+
+ Gets the font for this style
+ @return Font - font
+
+
+ Gets the index of the font for this style
+
+ @return short - font index
+ @see NPOI.xssf.usermodel.XSSFWorkbook#getFontAt(short)
+
+
+ Get whether the cell's using this style are to be hidden
+
+ @return bool - whether the cell using this style is hidden
+
+
+ Get the number of spaces to indent the text in the cell
+
+ @return indent - number of spaces
+
+
+ Get the index within the StylesTable (sequence within the collection of CT_Xf elements)
+
+ @return unique index number of the underlying record this style represents
+
+
+ Get the color to use for the left border
+
+ @return the index of the color defInition, default value is {@link NPOI.ss.usermodel.IndexedColors#BLACK}
+ @see NPOI.ss.usermodel.IndexedColors
+
+
+ Get the color to use for the left border
+
+ @return the index of the color defInition or null if not Set
+ @see NPOI.ss.usermodel.IndexedColors
+
+
+
+ Get whether the cell's using this style are locked
+
+
+
+
+ Turn on or off "Quote Prefix" or "123 Prefix" for the style,
+ which is used to tell Excel that the thing which looks like
+ a number or a formula shouldn't be treated as on.
+
+ Is "Quote Prefix" or "123 Prefix" enabled for the cell?
+
+
+
+ Get the color to use for the right border
+
+
+
+
+ Get the color to use for the right border
+
+
+
+
+
+ Get the degree of rotation (between 0 and 180 degrees) for the text in the cell
+
+ Note: HSSF uses values from -90 to 90 degrees, whereas XSSF
+ uses values from 0 to 180 degrees.The implementations of this method will map between these two value-ranges
+ accordingly, however the corresponding getter is returning values in the range mandated by the current type
+ of Excel file-format that this CellStyle is applied to.
+
+
+ Expressed in degrees. Values range from 0 to 180. The first letter of
+ the text is considered the center-point of the arc.
+ For 0 - 90, the value represents degrees above horizon. For 91-180 the degrees below the horizon is calculated as:
+ [degrees below horizon] = 90 - textRotation.
+
+
+
+ Get the color to use for the top border
+
+ @return the index of the color defInition, default value is {@link NPOI.ss.usermodel.IndexedColors#BLACK}
+ @see NPOI.ss.usermodel.IndexedColors
+
+
+
+ Get the color to use for the top border
+
+
+
+
+
+ Get the type of vertical alignment for the cell
+
+
+
+
+ Get the type of vertical alignment for the cell
+
+
+
+
+
+ Whether the text in a cell should be line-wrapped within the cell.
+
+
+
+ Set the color to use for the bottom border
+
+ @param color the color to use, null means no color
+
+
+
+ * Set the foreground fill color represented as a {@link XSSFColor} value.
+ *
+ * Note: Ensure Foreground color is Set prior to background color.
+ * @param color the color to use
+ * @see #setFillBackgroundColor(NPOI.xssf.usermodel.XSSFColor) )
+
+
+ Get a copy of the currently used CT_Fill, if none is used, return a new instance.
+
+
+ Get a copy of the currently used CT_Border, if none is used, return a new instance.
+
+
+ Set the font for this style
+
+ @param font a font object Created or retrieved from the XSSFWorkbook object
+ @see NPOI.xssf.usermodel.XSSFWorkbook#CreateFont()
+ @see NPOI.xssf.usermodel.XSSFWorkbook#getFontAt(short)
+
+
+ Set the color to use for the left border as a {@link XSSFColor} value
+
+ @param color the color to use
+
+
+ Set the color to use for the right border as a {@link XSSFColor} value
+
+ @param color the color to use
+
+
+ Set the color to use for the top border as a {@link XSSFColor} value
+
+ @param color the color to use
+
+
+ Set the type of vertical alignment for the cell
+
+ @param align - align the type of alignment
+ @see NPOI.ss.usermodel.CellStyle#VERTICAL_TOP
+ @see NPOI.ss.usermodel.CellStyle#VERTICAL_CENTER
+ @see NPOI.ss.usermodel.CellStyle#VERTICAL_BOTTOM
+ @see NPOI.ss.usermodel.CellStyle#VERTICAL_JUSTIFY
+ @see NPOI.ss.usermodel.VerticalAlignment
+
+
+ Gets border color
+
+ @param side the border side
+ @return the used color
+
+
+ Set the color to use for the selected border
+
+ @param side - where to apply the color defInition
+ @param color - the color to use
+
+
+ Get the cellAlignment object to use for manage alignment
+ @return XSSFCellAlignment - cell alignment
+
+
+ Return the CT_CellAlignment instance for alignment
+
+ @return CT_CellAlignment
+
+
+ Returns a hash code value for the object. The hash is derived from the underlying CT_Xf bean.
+
+ @return the hash code value for this style
+
+
+ Checks is the supplied style is equal to this style
+
+ @param o the style to check
+ @return true if the supplied style is equal to this style
+
+
+ Make a copy of this style. The underlying CT_Xf bean is Cloned,
+ the references to Fills and borders remain.
+
+ @return a copy of this style
+
+
+ Represents a SpreadsheetML Chart
+ @author Nick Burch
+ @author Roman Kashitsyn
+
+
+ Parent graphic frame.
+
+
+ Root element of the SpreadsheetML Chart part
+
+
+ The Chart within that
+
+
+ Create a new SpreadsheetML chart
+
+
+ Construct a SpreadsheetML chart from a package part.
+
+ @param part the package part holding the chart data,
+ the content type must be application/vnd.openxmlformats-officedocument.drawingml.chart+xml
+ @param rel the package relationship holding this chart,
+ the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart
+
+ @since POI 3.14-Beta1
+
+
+ Construct a new CTChartSpace bean.
+ By default, it's just an empty placeholder for chart objects.
+
+ @return a new CTChartSpace bean
+
+
+
+ Return the underlying CTChartSpace bean, the root element of the SpreadsheetML Chart part.
+
+
+
+
+
+ Return the underlying CTChart bean, within the Chart Space
+
+
+
+
+
+ Returns the parent graphic frame.
+
+
+
+
+ Sets the parent graphic frame.
+
+
+ @return true if only visible cells will be present on the chart,
+ false otherwise
+
+
+ @param plotVisOnly a flag specifying if only visible cells should be
+ present on the chart
+
+
+ Returns the title, or null if none is Set
+
+
+ Sets the title text.
+
+
+ High level representation of Sheet Parts that are of type 'chartsheet'.
+
+ Chart sheet is a special kind of Sheet that Contains only chart and no data.
+
+
+ @author Yegor Kozlov
+
+
+ @since POI 3.14-Beta1
+
+
+ Provide access to the CTChartsheet bean holding this sheet's data
+
+ @return the CTChartsheet bean holding this sheet's data
+
+
+ A client anchor is attached to an excel worksheet. It anchors against
+ top-left and bottom-right cells.
+
+ @author Yegor Kozlov
+
+
+ Starting anchor point
+
+
+ Ending anchor point
+
+
+ Creates a new client anchor and defaults all the anchor positions to 0.
+
+
+ Creates a new client anchor and Sets the top-left and bottom-right
+ coordinates of the anchor.
+
+ @param dx1 the x coordinate within the first cell.
+ @param dy1 the y coordinate within the first cell.
+ @param dx2 the x coordinate within the second cell.
+ @param dy2 the y coordinate within the second cell.
+ @param col1 the column (0 based) of the first cell.
+ @param row1 the row (0 based) of the first cell.
+ @param col2 the column (0 based) of the second cell.
+ @param row2 the row (0 based) of the second cell.
+
+
+
+
+
+
+
+
+
+
+
+
+ Create XSSFClientAnchor from existing xml beans
+
+ @param cell1 starting anchor point
+ @param cell2 ending anchor point
+
+
+ Create XSSFClientAnchor from existing xml beans
+
+ @param cell1 starting anchor point
+ @param cell2 ending anchor point
+
+
+ Return starting anchor point
+
+ @return starting anchor point
+
+
+ Return ending anchor point
+
+ @return ending anchor point
+
+
+ Represents a color in SpreadsheetML
+
+
+ Create an instance of XSSFColor from the supplied XML bean
+
+
+ Create an new instance of XSSFColor
+
+
+
+ A bool value indicating the ctColor is automatic and system ctColor dependent.
+
+
+
+ A bool value indicating if the ctColor has a alpha or not
+
+
+ A bool value indicating if the ctColor has a tint or not
+
+
+ Indexed ctColor value. Only used for backwards compatibility. References a ctColor in indexedColors.
+
+
+ Standard Red Green Blue ctColor value (RGB).
+ If there was an A (Alpha) value, it will be stripped.
+
+
+ Standard Alpha Red Green Blue ctColor value (ARGB).
+
+
+ Standard Alpha Red Green Blue ctColor value (ARGB).
+
+
+ Standard Red Green Blue ctColor value (RGB) with applied tint.
+ Alpha values are ignored.
+
+
+ Standard Alpha Red Green Blue ctColor value (ARGB).
+
+
+ Index into the clrScheme collection, referencing a particular sysClr or
+ srgbClr value expressed in the Theme part.
+
+
+ Specifies the tint value applied to the ctColor.
+
+
+ If tint is supplied, then it is applied to the RGB value of the ctColor to determine the final
+ ctColor applied.
+
+
+ The tint value is stored as a double from -1.0 .. 1.0, where -1.0 means 100% darken and
+ 1.0 means 100% lighten. Also, 0.0 means no Change.
+
+
+ In loading the RGB value, it is Converted to HLS where HLS values are (0..HLSMAX), where
+ HLSMAX is currently 255.
+
+ Here are some examples of how to apply tint to ctColor:
+
+
+ If (tint < 0)
+ Lum' = Lum * (1.0 + tint)
+
+ For example: Lum = 200; tint = -0.5; Darken 50%
+ Lum' = 200 * (0.5) => 100
+ For example: Lum = 200; tint = -1.0; Darken 100% (make black)
+ Lum' = 200 * (1.0-1.0) => 0
+ If (tint > 0)
+ Lum' = Lum * (1.0-tint) + (HLSMAX - HLSMAX * (1.0-tint))
+ For example: Lum = 100; tint = 0.75; Lighten 75%
+
+ Lum' = 100 * (1-.75) + (HLSMAX - HLSMAX*(1-.75))
+ = 100 * .25 + (255 - 255 * .25)
+ = 25 + (255 - 63) = 25 + 192 = 217
+ For example: Lum = 100; tint = 1.0; Lighten 100% (make white)
+ Lum' = 100 * (1-1) + (HLSMAX - HLSMAX*(1-1))
+ = 100 * 0 + (255 - 255 * 0)
+ = 0 + (255 - 0) = 255
+
+
+
+ @return the tint value
+
+
+ Returns the underlying XML bean
+
+ @return the underlying XML bean
+
+
+
+ Checked type cast color to an XSSFColor.
+
+ the color to type cast
+ the type casted color
+ if color is null or is not an instance of XSSFColor
+
+
+ High level representation for Color Scale / Color Gradient Formatting
+ component of Conditional Formatting Settings
+
+
+
+ the xml node Containing defInition for this column
+
+
+
+
+ the parent sheet
+
+
+
+
+ XSSFSheet this column belongs to
+
+
+
+
+ Get the number of the first cell Contained in this column.
+
+ short representing the first logical cell in the column,
+ or -1 if the column does not contain any cells.
+
+
+
+ Gets the index of the last cell Contained in this column PLUS
+ ONE. The result also happens to be the 1-based row number of
+ the last cell. This value can be used as a standard upper bound
+ when iterating over cells:
+
+ short representing the last logical cell in the column
+ PLUS ONE, or -1 if the column does not contain any cells.
+
+
+
+ Get the column's width.
+ If the width is not Set, the default worksheet value is returned,
+ See
+
+ column width
+
+
+
+ Gets the number of defined cells (NOT number of cells in the actual
+ column!). That is to say if only rows 0,4,5 have values then
+ there would be 3.
+
+ int representing the number of defined cells in the column.
+
+
+
+ Get column number this column represents
+
+ the column number (0 based)
+
+
+
+ Get whether or not to display this column with 0 width
+
+
+
+
+ Is this column formatted? Most aren't, but some columns
+ do have whole-column styles. For those that do, you
+ can get the formatting from
+
+
+
+
+ Is the column width set to best fit the content?
+
+
+
+
+ Returns the whole-column cell style. Most columns won't
+ have one of these, so will return null. Call
+ to check first.
+
+
+
+
+ Construct an XSSFColumn.
+
+ the xml node Containing defInitions for this column.
+ the parent sheet.
+
+
+
+ Use this to create new cells within the column and return it. The
+ cell that is returned is a . The type
+ can be Changed either through calling
+ or .
+
+ the row number this cell represents
+ a high level representation of the Created cell
+ if columnIndex is
+ less than 0 or greater than 16384, the maximum number of columns
+ supported by the SpreadsheetML format(.xlsx)
+
+
+
+ Use this to create new cells within the column and return it.
+
+ the row number this cell represents
+ the cell's data type
+ a high level representation of the Created cell.
+ if columnIndex is
+ less than 0 or greater than 16384, the maximum number of columns
+ supported by the SpreadsheetML format(.xlsx)
+
+
+
+ Returns the cell at the given (0 based) index,
+ with the from the parent Workbook.
+
+
+ the cell at the given (0 based) index
+
+
+
+ Returns the cell at the given (0 based) index, with the specified
+
+
+
+
+ the cell at the given (0 based) index
+ if cellnum is less than 0 or
+ the specified MissingCellPolicy is invalid
+
+
+
+ Remove the Cell from this column.
+
+ the cell to remove
+
+
+
+
+ Copy the cells from srcColumn to this column If this column is not
+ a blank column, this will merge the two columns, overwriting the
+ cells in this column with the cells in srcColumn If srcColumn is
+ null, overwrite cells in destination column with blank values,
+ styles, etc per cell copy policy srcColumn may be from a different
+ sheet in the same workbook
+
+ the column to copy from
+ the policy to determine what gets copied
+
+
+
+ Returns the underlying CT_Col xml node Containing all cell
+ defInitions in this column
+
+ the underlying CT_Col xml node
+
+
+
+ update cell references when Shifting columns
+
+ n the number of columns to move
+
+
+
+ Fired when the document is written to an output stream.
+ See
+
+
+
+
+ Cell iterator over the physically defined cell
+
+ an iterator over cells in this column.
+
+
+
+ Alias for to allow foreach loops
+
+ an iterator over cells in this row.
+
+
+
+ Compares two objects. Two columns are
+ equal if they belong to the same worksheet and their column indexes
+ are equal.
+
+ the to be compared.
+
+ the value 0 if the column number of this
+ is equal to the column number of the argument
+ a value less than 0 if the column number of this this
+ is numerically less than the column number
+ of the argument a value greater than 0 if
+ the column number of this this is
+ numerically greater than the column number of the
+ argument
+
+ if the argument column belongs
+ to a different worksheet
+
+
+
+ formatted xml representation of this column
+
+ formatted xml representation of this column
+
+
+
+ Get the xssfcell representing a given column (logical cell)
+ 0-based. If you ask for a cell that is not defined, then
+ you Get a null.
+ This is the basic call, with no policies applied
+
+ 0 based row number
+ Cell representing that row or null if Undefined.
+
+
+ cached reference to the string with the comment text
+
+
+ Creates a new XSSFComment, associated with a given
+ low level comment object.
+
+
+
+ @return Name of the original comment author. Default value is blank.
+
+
+ @return the 0-based column of the cell that the comment is associated with.
+
+
+ @return the 0-based row index of the cell that the comment is associated with.
+
+
+ @return whether the comment is visible
+
+
+ @return the rich text string of the comment
+
+
+ Sets the rich text string used by this comment.
+
+ @param string the XSSFRichTextString used by this object.
+
+
+ @return the xml bean holding this comment's properties
+
+
+ @author Yegor Kozlov
+
+
+ @return array of CellRangeAddresss. Never null
+
+
+ Replaces an existing Conditional Formatting rule at position idx.
+ Excel allows to create up to 3 Conditional Formatting rules.
+ This method can be useful to modify existing Conditional Formatting rules.
+
+ @param idx position of the rule. Should be between 0 and 2.
+ @param cfRule - Conditional Formatting rule
+
+
+ Add a Conditional Formatting rule.
+ Excel allows to create up to 3 Conditional Formatting rules.
+
+ @param cfRule - Conditional Formatting rule
+
+
+ @return the Conditional Formatting rule at position idx.
+
+
+ @return number of Conditional Formatting rules.
+
+
+ @author Yegor Kozlov
+
+
+ Create a new border formatting structure if it does not exist,
+ otherwise just return existing object.
+
+ @return - border formatting object, never returns null.
+
+
+ @return - border formatting object if defined, null otherwise
+
+
+ Create a new font formatting structure if it does not exist,
+ otherwise just return existing object.
+
+ @return - font formatting object, never returns null.
+
+
+ @return - font formatting object if defined, null otherwise
+
+
+ Create a new pattern formatting structure if it does not exist,
+ otherwise just return existing object.
+
+ @return - pattern formatting object, never returns null.
+
+
+ @return - pattern formatting object if defined, null otherwise
+
+
+ Type of conditional formatting rule.
+
+
+ The comparison function used when the type of conditional formatting is Set to
+ {@link ConditionalFormattingRule#CONDITION_TYPE_CELL_VALUE_IS}
+
+ MUST be a constant from {@link NPOI.ss.usermodel.ComparisonOperator}
+
+
+ @return the conditional format operator
+
+
+ The formula used to Evaluate the first operand for the conditional formatting rule.
+
+ If the condition type is {@link ConditionalFormattingRule#CONDITION_TYPE_CELL_VALUE_IS},
+ this field is the first operand of the comparison.
+ If type is {@link ConditionalFormattingRule#CONDITION_TYPE_FORMULA}, this formula is used
+ to determine if the conditional formatting is applied.
+
+
+ If comparison type is {@link ConditionalFormattingRule#CONDITION_TYPE_FORMULA} the formula MUST be a Boolean function
+
+
+ @return the first formula
+
+
+ The formula used to Evaluate the second operand of the comparison when
+ comparison type is {@link ConditionalFormattingRule#CONDITION_TYPE_CELL_VALUE_IS} and operator
+ is either {@link NPOI.ss.usermodel.ComparisonOperator#BETWEEN} or {@link NPOI.ss.usermodel.ComparisonOperator#NOT_BETWEEN}
+
+ @return the second formula
+
+
+ High level representation for Icon / Multi-State / Databar /
+ Colour Scale change thresholds
+
+
+ A connection shape Drawing element. A connection shape is a line, etc.
+ that connects two other shapes in this Drawing.
+
+ @author Yegor Kozlov
+
+
+ Construct a new XSSFConnector object.
+
+ @param Drawing the XSSFDrawing that owns this shape
+ @param ctShape the shape bean that holds all the shape properties
+
+
+ Initialize default structure of a new auto-shape
+
+
+
+ Gets the shape type, one of the constants defined in {@link NPOI.ss.usermodel.ShapeTypes}.
+
+ @return the shape type
+ @see NPOI.ss.usermodel.ShapeTypes
+
+
+ Creates a new XSSFRichTextString for you.
+
+
+ Creates a XSSFFormulaEvaluator, the object that Evaluates formula cells.
+
+ @return a XSSFFormulaEvaluator instance
+
+
+ Creates a XSSFClientAnchor. Use this object to position Drawing object in
+ a sheet
+
+ @return a XSSFClientAnchor instance
+ @see NPOI.ss.usermodel.Drawing
+
+
+ High level representation for DataBar / Data Bar Formatting
+ component of Conditional Formatting Settings
+
+
+ Handles data formats for XSSF.
+ Per Microsoft Excel 2007+ format limitations:
+ Workbooks support between 200 and 250 "number formats"
+ (POI calls them "data formats") So short or even byte
+ would be acceptable data types to use for referring to
+ data format indices.
+ https://support.office.com/en-us/article/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3
+
+
+
+ Get the format index that matches the given format
+ string, creating a new format entry if required.
+ Aliases text to the proper format as required.
+
+ @param format string matching a built in format
+ @return index of format.
+
+
+ Get the format string that matches the given format index
+ @param index of a format
+ @return string represented at index of format or null if there is not a format at that index
+
+
+ get the format string that matches the given format index
+ @param index of a format
+ @return string represented at index of format or null if there is not a format at that index
+
+ @deprecated POI 3.16 beta 1 - use {@link #getFormat(short)} instead
+
+
+ Add a number format with a specific ID into the number format style table.
+ If a format with the same ID already exists, overwrite the format code
+ with fmt
+ This may be used to override built-in number formats.
+
+ @param index the number format ID
+ @param format the number format code
+
+
+ @author Radhakrishnan J
+
+
+
+ For all characters which cannot be represented in XML as defined by the XML 1.0 specification,
+ the characters are escaped using the Unicode numerical character representation escape character
+ format _xHHHH_, where H represents a hexadecimal character in the character's value.
+
+ Example: The Unicode character 0D is invalid in an XML 1.0 document,
+ so it shall be escaped as _x000D_.
+
+ See section 3.18.9 in the OOXML spec.
+
+ @param text the string to encode
+ @return the encoded string
+
+
+ @author Radhakrishnan J
+
+
+
+ Excel validation constraints with static lists are delimited with optional whitespace and the Windows List Separator,
+ which is typically comma, but can be changed by users. POI will just assume comma.
+
+
+
+ This is the constructor called using the OOXML raw data. Excel overloads formula1 to also encode explicit value lists,
+ so this constructor has to check for and parse that syntax.
+
+
+
+ Overloaded: formula1 or list of explicit values
+ formula1 is a list of explicit values, this is ignored: use null
+
+
+ @author Radhakrishnan J
+
+
+
+ Represents a SpreadsheetML Drawing
+
+ @author Yegor Kozlov
+
+
+ Root element of the SpreadsheetML Drawing part
+
+
+ Create a new SpreadsheetML Drawing
+
+ @see NPOI.xssf.usermodel.XSSFSheet#CreateDrawingPatriarch()
+
+
+ Construct a SpreadsheetML Drawing from a namespace part
+
+ @param part the namespace part holding the Drawing data,
+ the content type must be application/vnd.openxmlformats-officedocument.Drawing+xml
+ @param rel the namespace relationship holding this Drawing,
+ the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing
+
+
+ Construct a new CT_Drawing bean. By default, it's just an empty placeholder for Drawing objects
+
+ @return a new CT_Drawing bean
+
+
+ Return the underlying CT_Drawing bean, the root element of the SpreadsheetML Drawing part.
+
+ @return the underlying CT_Drawing bean
+
+
+ Constructs a textbox under the Drawing.
+
+ @param anchor the client anchor describes how this group is attached
+ to the sheet.
+ @return the newly Created textbox.
+
+
+ Creates a picture.
+
+ @param anchor the client anchor describes how this picture is attached to the sheet.
+ @param pictureIndex the index of the picture in the workbook collection of pictures,
+ {@link NPOI.xssf.usermodel.XSSFWorkbook#getAllPictures()} .
+
+ @return the newly Created picture shape.
+
+
+
+ Creates a chart.
+
+ the client anchor describes how this chart is attached to
+ the newly created chart
+
+
+
+ Removes chart.
+
+ The chart to be removed.
+
+
+ Add the indexed picture to this Drawing relations
+
+ @param pictureIndex the index of the picture in the workbook collection of pictures,
+ {@link NPOI.xssf.usermodel.XSSFWorkbook#getAllPictures()} .
+
+
+ Creates a simple shape. This includes such shapes as lines, rectangles,
+ and ovals.
+
+ @param anchor the client anchor describes how this group is attached
+ to the sheet.
+ @return the newly Created shape.
+
+
+ Creates a simple shape. This includes such shapes as lines, rectangles,
+ and ovals.
+
+ @param anchor the client anchor describes how this group is attached
+ to the sheet.
+ @return the newly Created shape.
+
+
+
+
+
+
+
+
+
+
+
+ Creates a simple shape. This includes such shapes as lines, rectangles,
+ and ovals.
+
+ @param anchor the client anchor describes how this group is attached
+ to the sheet.
+ @return the newly Created shape.
+
+
+ Creates a comment.
+ @param anchor the client anchor describes how this comment is attached
+ to the sheet.
+ @return the newly Created comment.
+
+
+ Creates a new graphic frame.
+
+ @param anchor the client anchor describes how this frame is attached
+ to the sheet
+ @return the newly Created graphic frame
+
+
+ Returns all charts in this Drawing.
+
+
+ Create and Initialize a CT_TwoCellAnchor that anchors a shape against top-left and bottom-right cells.
+
+ @return a new CT_TwoCellAnchor
+
+
+
+ @return list of shapes in this drawing
+
+
+ XSSF wrapper for a cell under Evaluation
+
+ @author Josh Micich
+
+
+ XSSF wrapper for a sheet under Evaluation
+
+ @author Josh Micich
+
+
+ Internal POI use only
+
+ @author Josh Micich
+
+
+
+ Even page footer value. Corresponds to even printed pages.
+ Even page(s) in the sheet may not be printed, for example, if the print area is specified to be
+ a range such that it falls outside an even page's scope.
+ If no even footer is specified, then the odd footer's value is assumed for even page footers.
+
+
+
+ Create an instance of XSSFEvenFooter from the supplied XML bean
+ @see XSSFSheet#GetEvenFooter()
+ @param headerFooter
+
+
+ Get the content text representing the footer
+ @return text
+
+
+
+ Even page header value. Corresponds to even printed pages.
+ Even page(s) in the sheet may not be printed, for example, if the print area is specified to be
+ a range such that it falls outside an even page's scope.
+ If no even header is specified, then odd header value is assumed for even page headers.
+
+
+
+
+ Create an instance of XSSFEvenHeader from the supplied XML bean
+ @see XSSFSheet#GetEvenHeader()
+ @param headerFooter
+
+
+ Get the content text representing this header
+ @return text
+
+
+ Instantiates sub-classes of POIXMLDocumentPart depending on their relationship type
+
+ @author Yegor Kozlov
+
+
+ @since POI 3.14-Beta1
+
+
+ @since POI 3.14-Beta1
+
+
+
+ First page footer content. Corresponds to first printed page.
+ The first logical page in the sheet may not be printed, for example, if the print area is specified to
+ be a range such that it falls outside the first page's scope.
+
+
+
+ Create an instance of XSSFFirstFooter from the supplied XML bean
+ @see XSSFSheet#getFirstFooter()
+ @param headerFooter
+
+
+ Get the content text representing the footer
+ @return text
+
+
+
+ First page header content. Corresponds to first printed page.
+ The first logical page in the sheet may not be printed, for example, if the print area is specified to
+ be a range such that it falls outside the first page's scope.
+
+
+
+ Create an instance of XSSFFirstHeader from the supplied XML bean
+ @see XSSFSheet#getFirstHeader()
+ @param headerFooter
+
+
+ Get the content text representing this header
+ @return text
+
+
+ Represents a font used in a workbook.
+
+ @author Gisella Bronzetti
+
+
+ By default, Microsoft Office Excel 2007 uses the Calibry font in font size 11
+
+
+ By default, Microsoft Office Excel 2007 uses the Calibry font in font size 11
+
+
+ Default font color is black
+ @see NPOI.SS.usermodel.IndexedColors#BLACK
+
+
+ Create a new XSSFFont
+
+ @param font the underlying CT_Font bean
+
+
+ Create a new XSSFont. This method is protected to be used only by XSSFWorkbook
+
+
+ get the underlying CT_Font font
+
+
+ get a bool value for the boldness to use.
+
+ @return bool - bold
+
+
+ get character-set to use.
+
+ @return int - character-set (0-255)
+ @see NPOI.SS.usermodel.FontCharset
+
+
+ get the indexed color value for the font
+ References a color defined in IndexedColors.
+
+ @return short - indexed color to use
+ @see IndexedColors
+
+
+ get the color value for the font
+ References a color defined as Standard Alpha Red Green Blue color value (ARGB).
+
+ @return XSSFColor - rgb color to use
+
+
+ get the color value for the font
+ References a color defined in theme.
+
+ @return short - theme defined to use
+
+
+
+ Get the font height in unit's of 1/20th of a point.
+
+
+
+
+ Get the font height in points.
+
+
+
+ get the name of the font (i.e. Arial)
+
+ @return String - a string representing the name of the font to use
+
+
+ get a bool value that specify whether to use italics or not
+
+ @return bool - value for italic
+
+
+ get a bool value that specify whether to use a strikeout horizontal line through the text or not
+
+ @return bool - value for strikeout
+
+
+ get normal,super or subscript.
+
+ @return short - offset type to use (none,super,sub)
+ @see Font#SS_NONE
+ @see Font#SS_SUPER
+ @see Font#SS_SUB
+
+
+ get type of text underlining to use
+
+ @return byte - underlining type
+ @see NPOI.SS.usermodel.FontUnderline
+
+
+ get the boldness to use
+ @return boldweight
+ @see #BOLDWEIGHT_NORMAL
+ @see #BOLDWEIGHT_BOLD
+
+
+ set character-set to use.
+
+ @param charset - charset
+ @see FontCharset
+
+
+ set character-set to use.
+
+ @param charset - charset
+ @see FontCharset
+
+
+ set character-set to use.
+
+ @param charSet
+
+
+ set the color for the font in Standard Alpha Red Green Blue color value
+
+ @param color - color to use
+
+
+ set the theme color for the font to use
+
+ @param theme - theme color to use
+
+
+ set an enumeration representing the style of underlining that is used.
+ The none style is equivalent to not using underlining at all.
+ The possible values for this attribute are defined by the FontUnderline
+
+ @param underline - FontUnderline enum value
+
+
+ **
+
+
+ Records the Themes Table that is associated with
+ the current font, used when looking up theme
+ based colours and properties.
+
+
+ get the font scheme property.
+ is used only in StylesTable to create the default instance of font
+
+ @return FontScheme
+ @see NPOI.XSSF.model.StylesTable#CreateDefaultFont()
+
+
+ set font scheme property
+
+ @param scheme - FontScheme enum value
+ @see FontScheme
+
+
+ get the font family to use.
+
+ @return the font family to use
+ @see NPOI.SS.usermodel.FontFamily
+
+
+ set an enumeration representing the font family this font belongs to.
+ A font family is a set of fonts having common stroke width and serif characteristics.
+
+ @param family font family
+ @link #SetFamily(int value)
+
+
+ get the index within the XSSFWorkbook (sequence within the collection of Font objects)
+ @return unique index number of the underlying record this Font represents (probably you don't care
+ unless you're comparing which one is which)
+
+
+ @author Yegor Kozlov
+
+
+ Get the type of super or subscript for the font
+
+ @return super or subscript option
+ @see #SS_NONE
+ @see #SS_SUPER
+ @see #SS_SUB
+
+
+ @return font color index
+
+
+ Gets the height of the font in 1/20th point units
+
+ @return fontheight (in points/20); or -1 if not modified
+
+
+ Get the type of underlining for the font
+
+ @return font underlining type
+
+ @see #U_NONE
+ @see #U_SINGLE
+ @see #U_DOUBLE
+ @see #U_SINGLE_ACCOUNTING
+ @see #U_DOUBLE_ACCOUNTING
+
+
+ Get whether the font weight is Set to bold or not
+
+ @return bold - whether the font is bold or not
+
+
+ @return true if font style was Set to italic
+
+
+ Set font style options.
+
+ @param italic - if true, Set posture style to italic, otherwise to normal
+ @param bold if true, Set font weight to bold, otherwise to normal
+
+
+ Set font style options to default values (non-italic, non-bold)
+
+
+ Evaluates formula cells.
+
+ For performance reasons, this class keeps a cache of all previously calculated intermediate
+ cell values. Be sure to call {@link #ClearAllCachedResultValues()} if any workbook cells are Changed between
+ calls to Evaluate~ methods on this class.
+
+ @author Amol S. Deshmukh < amolweb at ya hoo dot com >
+ @author Josh Micich
+
+
+ @param stabilityClassifier used to optimise caching performance. Pass null
+ for the (conservative) assumption that any cell may have its defInition Changed After
+ Evaluation begins.
+ @param udfFinder pass null for default (AnalysisToolPak only)
+
+
+ Loops over all cells in all sheets of the supplied
+ workbook.
+ For cells that contain formulas, their formulas are
+ Evaluated, and the results are saved. These cells
+ remain as formula cells.
+ For cells that do not contain formulas, no Changes
+ are made.
+ This is a helpful wrapper around looping over all
+ cells, and calling EvaluateFormulaCell on each one.
+
+
+ Loops over all cells in all sheets of the supplied
+ workbook.
+ For cells that contain formulas, their formulas are
+ Evaluated, and the results are saved. These cells
+ remain as formula cells.
+ For cells that do not contain formulas, no Changes
+ are made.
+ This is a helpful wrapper around looping over all
+ cells, and calling EvaluateFormulaCell on each one.
+
+
+ Turns a XSSFCell into a XSSFEvaluationCell
+
+
+ A default instance of CTShape used for creating new shapes.
+
+
+ Xml bean that stores properties of this shape
+
+
+
+
+
+
+
+
+
+ Prototype with the default structure of a new auto-shape.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the simple shape name.
+ @return name of the simple shape
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ P(t)=sigma(k=0..N,nCk*t^k*(1-t)^(N-k)Pk)
+
+
+
+
+
+ nCk
+
+
+
+
+
+
+
+ n! (n>=0)
+
+
+
+
+
+ Represents DrawingML GraphicalObjectFrame.
+
+ @author Roman Kashitsyn
+
+
+ Construct a new XSSFGraphicFrame object.
+
+ @param Drawing the XSSFDrawing that owns this frame
+ @param ctGraphicFrame the XML bean that stores this frame content
+
+
+ Initialize default structure of a new graphic frame
+
+
+ Sets the frame macro.
+
+
+ Returns the frame id.
+ @return id of the frame
+
+
+ Returns the frame name.
+ @return name of the frame
+
+
+ Returns the frame anchor.
+ @return the anchor this frame is attached to
+
+
+ Assign a DrawingML chart to the graphic frame.
+
+
+ Gets the frame id.
+
+
+
+ XSSF Implementation of a Hyperlink.
+ Note - unlike with HSSF, many kinds of hyperlink
+ are largely stored as relations of the sheet
+
+
+ Create a new XSSFHyperlink. This method is protected to be used only by XSSFCreationHelper
+
+ @param type - the type of hyperlink to create
+
+
+ Create a XSSFHyperlink amd Initialize it from the supplied CTHyperlink bean and namespace relationship
+
+ @param ctHyperlink the xml bean Containing xml properties
+ @param hyperlinkRel the relationship in the underlying OPC namespace which stores the actual link's Address
+
+
+ Create a new XSSFHyperlink. This method is for Internal use only.
+ XSSFHyperlinks can be created by XSSFCreationHelper.
+
+ @param type - the type of hyperlink to create, see {@link Hyperlink}
+
+
+ @return the underlying CTHyperlink object
+
+
+ Do we need to a relation too, to represent
+ this hyperlink?
+
+
+ Generates the relation if required
+
+
+ Return the type of this hyperlink
+
+ @return the type of this hyperlink
+
+
+ Get the reference of the cell this applies to,
+ es A55
+
+
+ Hyperlink Address. Depending on the hyperlink type it can be URL, e-mail, path to a file
+
+ @return the Address of this hyperlink
+
+
+ Return text label for this hyperlink
+
+ @return text to display
+
+
+ Location within target. If target is a workbook (or this workbook) this shall refer to a
+ sheet and cell or a defined name. Can also be an HTML anchor if target is HTML file.
+
+ @return location
+
+
+ Assigns this hyperlink to the given cell reference
+
+
+ Return the column of the first cell that Contains the hyperlink
+
+ @return the 0-based column of the first cell that Contains the hyperlink
+
+
+ Return the column of the last cell that Contains the hyperlink
+ For XSSF, a Hyperlink may only reference one cell
+
+ @return the 0-based column of the last cell that Contains the hyperlink
+
+
+ Return the row of the first cell that Contains the hyperlink
+
+ @return the 0-based row of the cell that Contains the hyperlink
+
+
+ Return the row of the last cell that Contains the hyperlink
+ For XSSF, a Hyperlink may only reference one cell
+
+ @return the 0-based row of the last cell that Contains the hyperlink
+
+
+
+ get or set additional text to help the user understand more about the hyperlink
+
+
+
+ High level representation for Icon / Multi-State Formatting
+ component of Conditional Formatting Settings
+
+
+ Always . You cannot change text of a line break.
+
+
+ This class : the Map element (Open Office XML Part 4:
+ chapter 3.16.2)
+
+ This element Contains all of the properties related to the XML map,
+ and the behaviors expected during data refresh operations.
+
+ @author Roberto Manicardi
+
+
+ @return the list of Single Xml Cells that provide a map rule to this mapping.
+
+
+ @return the list of all Tables that provide a map rule to this mapping
+
+
+ Represents a defined named range in a SpreadsheetML workbook.
+
+ Defined names are descriptive text that is used to represents a cell, range of cells, formula, or constant value.
+ Use easy-to-understand names, such as Products, to refer to hard to understand ranges, such as Sales!C20:C30.
+
+ Example:
+
+ XSSFWorkbook wb = new XSSFWorkbook();
+ XSSFSheet sh = wb.CreateSheet("Sheet1");
+
+ //applies to the entire workbook
+ XSSFName name1 = wb.CreateName();
+ name1.SetNameName("FMLA");
+ name1.SetRefersToFormula("Sheet1!$B$3");
+
+ //applies to Sheet1
+ XSSFName name2 = wb.CreateName();
+ name2.SetNameName("SheetLevelName");
+ name2.SetComment("This name is scoped to Sheet1");
+ name2.SetLocalSheetId(0);
+ name2.SetRefersToFormula("Sheet1!$B$3");
+
+
+
+ @author Nick Burch
+ @author Yegor Kozlov
+
+
+ A built-in defined name that specifies the workbook's print area
+
+
+ A built-in defined name that specifies the row(s) or column(s) to repeat
+ at the top of each printed page.
+
+
+ A built-in defined name that refers to a range Containing the criteria values
+ to be used in Applying an advanced filter to a range of data
+
+
+ this defined name refers to the range Containing the filtered
+ output values resulting from Applying an advanced filter criteria to a source
+ range
+
+
+ ?an be one of the following
+ 1 this defined name refers to a range to which an advanced filter has been
+ applied. This represents the source data range, unfiltered.
+ 2 This defined name refers to a range to which an AutoFilter has been
+ applied
+
+
+ A built-in defined name that refers to a consolidation area
+
+
+ A built-in defined name that specified that the range specified is from a database data source
+
+
+ A built-in defined name that refers to a sheet title.
+
+
+ Creates an XSSFName object - called internally by XSSFWorkbook.
+
+ @param name - the xml bean that holds data represenring this defined name.
+ @param workbook - the workbook object associated with the name
+ @see NPOI.XSSF.usermodel.XSSFWorkbook#CreateName()
+
+
+ Returns the underlying named range object
+
+
+ Returns the name that will appear in the user interface for the defined name.
+
+ @return text name of this defined name
+
+
+ Returns the sheet index this name applies to.
+
+ @return the sheet index this name applies to, -1 if this name applies to the entire workbook
+
+
+ Indicates that the defined name refers to a user-defined function.
+ This attribute is used when there is an Add-in or other code project associated with the file.
+
+ @return true indicates the name refers to a function.
+
+
+ Returns the function group index if the defined name refers to a function. The function
+ group defines the general category for the function. This attribute is used when there is
+ an Add-in or other code project associated with the file.
+
+ @return the function group index that defines the general category for the function
+
+
+ Get the sheets name which this named range is referenced to
+
+ @return sheet name, which this named range referred to.
+ Empty string if the referenced sheet name weas not found.
+
+
+ Is the name refers to a user-defined function ?
+
+ @return true if this name refers to a user-defined function
+
+
+ Returns the comment the user provided when the name was Created.
+
+ @return the user comment for this named range
+
+
+ Compares this name to the specified object.
+ The result is true if the argument is XSSFName and the
+ underlying CTDefinedName bean Equals to the CTDefinedName representing this name
+
+ @param o the object to compare this XSSFName against.
+ @return true if the XSSFName are Equal;
+ false otherwise.
+
+
+ https://support.office.com/en-us/article/Define-and-use-names-in-formulas-4D0F13AC-53B7-422E-AFD2-ABD7FF379C64#bmsyntax_rules_for_names
+
+ Valid characters:
+ First character: { letter | underscore | backslash }
+ Remaining characters: { letter | number | period | underscore }
+
+ Cell shorthand: cannot be { "C" | "c" | "R" | "r" }
+
+ Cell references disallowed: cannot be a cell reference $A$1 or R1C1
+
+ Spaces are not valid (follows from valid characters above)
+
+ Name length: (XSSF-specific?) 255 characters maximum
+
+ Case sensitivity: all names are case-insensitive
+
+ Uniqueness: must be unique (for names with the same scope)
+
+ @param name
+
+
+ Odd page footer value. Corresponds to odd printed pages.
+ Odd page(s) in the sheet may not be printed, for example, if the print area is specified to be
+ a range such that it falls outside an odd page's scope.
+
+
+
+ Create an instance of XSSFOddFooter from the supplied XML bean
+ @see XSSFSheet#GetOddFooter()
+ @param headerFooter
+
+
+ Get the content text representing the footer
+ @return text
+
+
+ Odd page header value. Corresponds to odd printed pages.
+ Odd page(s) in the sheet may not be printed, for example, if the print area is specified to be
+ a range such that it falls outside an odd page's scope.
+
+
+
+ Create an instance of XSSFOddHeader from the supplied XML bean
+ @see XSSFSheet#GetOddHeader()
+ @param headerFooter
+
+
+ Get the content text representing this header
+ @return text
+
+
+ @author Yegor Kozlov
+
+
+ Represents a picture shape in a SpreadsheetML Drawing.
+
+ @author Yegor Kozlov
+
+
+ A default instance of CTShape used for creating new shapes.
+
+
+ This object specifies a picture object and all its properties
+
+
+ Construct a new XSSFPicture object. This constructor is called from
+ {@link XSSFDrawing#CreatePicture(XSSFClientAnchor, int)}
+
+ @param Drawing the XSSFDrawing that owns this picture
+
+
+ Returns a prototype that is used to construct new shapes
+
+ @return a prototype that is used to construct new shapes
+
+
+ Returns the picture id.
+ @return id of the picture
+
+
+ Returns the picture name.
+ @return name of the picture
+
+
+ Link this shape with the picture data
+
+ @param rel relationship referring the picture data
+
+
+ Return the underlying CT_Picture bean that holds all properties for this picture
+
+ @return the underlying CT_Picture bean
+
+
+ Reset the image to the original size.
+
+
+ Please note, that this method works correctly only for workbooks
+ with the default font size (Calibri 11pt for .xlsx).
+ If the default font is Changed the resized image can be streched vertically or horizontally.
+
+
+
+ Resize the image proportionally.
+
+ @see #resize(double, double)
+
+
+ Resize the image relatively to its current size.
+
+ Please note, that this method works correctly only for workbooks
+ with the default font size (Calibri 11pt for .xlsx).
+ If the default font is changed the resized image can be streched vertically or horizontally.
+
+
+ resize(1.0,1.0) keeps the original size,
+ resize(0.5,0.5) resize to 50% of the original,
+ resize(2.0,2.0) resizes to 200% of the original.
+ resize({@link Double#MAX_VALUE},{@link Double#MAX_VALUE}) resizes to the dimension of the embedded image.
+
+
+ @param scaleX the amount by which the image width is multiplied relative to the original width,
+ when set to {@link java.lang.Double#MAX_VALUE} the width of the embedded image is used
+ @param scaleY the amount by which the image height is multiplied relative to the original height,
+ when set to {@link java.lang.Double#MAX_VALUE} the height of the embedded image is used
+
+
+ Calculate the preferred size for this picture.
+
+ @return XSSFClientAnchor with the preferred size for this image
+
+
+ Calculate the preferred size for this picture.
+
+ @param scale the amount by which image dimensions are multiplied relative to the original size.
+ @return XSSFClientAnchor with the preferred size for this image
+
+
+ Calculate the preferred size for this picture.
+
+ @param scaleX the amount by which image width is multiplied relative to the original width.
+ @param scaleY the amount by which image height is multiplied relative to the original height.
+ @return XSSFClientAnchor with the preferred size for this image
+
+
+ Return the dimension of this image
+
+ @param part the namespace part holding raw picture data
+ @param type type of the picture: {@link Workbook#PICTURE_TYPE_JPEG},
+ {@link Workbook#PICTURE_TYPE_PNG} or {@link Workbook#PICTURE_TYPE_DIB}
+
+ @return image dimension in pixels
+
+
+ Return the dimension of the embedded image in pixel
+
+ @return image dimension in pixels
+
+
+ @return the anchor that is used by this shape.
+
+
+ @return the sheet which contains the picture shape
+
+
+ Raw picture data, normally attached to a SpreadsheetML Drawing.
+ As a rule, pictures are stored in the /xl/media/ part of a SpreadsheetML package.
+
+
+ Relationships for each known picture type
+
+
+ Create a new XSSFPictureData node
+
+ @see NPOI.xssf.usermodel.XSSFWorkbook#AddPicture(byte[], int)
+
+
+ Construct XSSFPictureData from a namespace part
+
+ @param part the namespace part holding the Drawing data,
+ @param rel the namespace relationship holding this Drawing,
+ the relationship type must be http://schemas.Openxmlformats.org/officeDocument/2006/relationships/image
+
+
+ Suggests a file extension for this image.
+
+ @return the file extension.
+
+
+ Return an integer constant that specifies type of this picture
+
+ @return an integer constant that specifies type of this picture
+ @see NPOI.ss.usermodel.Workbook#PICTURE_TYPE_EMF
+ @see NPOI.ss.usermodel.Workbook#PICTURE_TYPE_WMF
+ @see NPOI.ss.usermodel.Workbook#PICTURE_TYPE_PICT
+ @see NPOI.ss.usermodel.Workbook#PICTURE_TYPE_JPEG
+ @see NPOI.ss.usermodel.Workbook#PICTURE_TYPE_PNG
+ @see NPOI.ss.usermodel.Workbook#PICTURE_TYPE_DIB
+
+
+
+ Gets the picture data as a byte array.
+
+
+
+ *PictureData objects store the actual content in the part directly without keeping a
+ copy like all others therefore we need to handle them differently.
+
+
+ Creates n XSSFPivotCache representing the given package part and relationship.
+ Should only be called when Reading in an existing file.
+
+ @param part - The package part that holds xml data representing this pivot cache defInition.
+ @param rel - the relationship of the given package part in the underlying OPC package
+
+
+ Creates an XSSFPivotCacheDefintion representing the given package part and relationship.
+ Should only be called when Reading in an existing file.
+
+ @param part - The package part that holds xml data representing this pivot cache defInition.
+ @param rel - the relationship of the given package part in the underlying OPC package
+
+
+ Find the 2D base data area for the pivot table, either from its direct reference or named table/range.
+ @return AreaReference representing the current area defined by the pivot table
+ @ if the ref1 attribute is not contiguous or the name attribute is not found.
+
+
+ Generates a cache field for each column in the reference area for the pivot table.
+ @param sheet The sheet where the data i collected from
+
+
+ Creates an XSSFPivotCacheRecords representing the given package part and relationship.
+ Should only be called when Reading in an existing file.
+
+ @param part - The package part that holds xml data representing this pivot cache records.
+ @param rel - the relationship of the given package part in the underlying OPC package
+
+
+ Creates an XSSFPivotTable representing the given package part and relationship.
+ Should only be called when Reading in an existing file.
+
+ @param part - The package part that holds xml data representing this pivot table.
+ @param rel - the relationship of the given package part in the underlying OPC package
+
+
+ Set default values for the table defInition.
+
+
+ Verify column index (relative to first column in1 pivot area) is within the
+ pivot area
+
+ @param columnIndex
+ @
+
+
+ Add a row label using data from the given column.
+ @param columnIndex the index of the column to be used as row label.
+
+
+ Add a column label using data from the given column and specified function
+ @param columnIndex the index of the column to be used as column label.
+ @param function the function to be used on the data
+ The following functions exists:
+ Sum, Count, Average, Max, Min, Product, Count numbers, StdDev, StdDevp, Var, Varp
+ @param valueFieldName the name of pivot table value field
+
+
+ Add a column label using data from the given column and specified function
+ @param columnIndex the index of the column to be used as column label.
+ @param function the function to be used on the data
+ The following functions exists:
+ Sum, Count, Average, Max, Min, Product, Count numbers, StdDev, StdDevp, Var, Varp
+
+
+ Add data field with data from the given column and specified function.
+ @param function the function to be used on the data
+ The following functions exists:
+ Sum, Count, Average, Max, Min, Product, Count numbers, StdDev, StdDevp, Var, Varp
+ @param columnIndex the index of the column to be used as column label.
+ @param valueFieldName the name of pivot table value field
+
+
+ Add column Containing data from the referenced area.
+ @param columnIndex the index of the column Containing the data
+ @param isDataField true if the data should be displayed in the pivot table.
+
+
+ Add filter for the column with the corresponding index and cell value
+ @param columnIndex index of column to filter on
+
+
+ Creates cacheSource and workSheetSource for pivot table and sets the source reference as well assets the location of the pivot table
+ @param sourceRef Source for data for pivot table - mutually exclusive with sourceName
+ @param sourceName Source for data for pivot table - mutually exclusive with sourceRef
+ @param position Position for pivot table in sheet
+ @param sourceSheet Sheet where the source will be collected from
+
+
+ Configure the name or area reference for the pivot table
+ @param wsSource CTWorksheetSource that needs the pivot source reference assignment
+
+
+ Page Setup and page margins Settings for the worksheet.
+
+
+ Set the paper size as enum value.
+
+ @param size value for the paper size.
+
+
+ Orientation of the page: landscape - portrait.
+
+ @return Orientation of the page
+ @see PrintOrientation
+
+
+ Get print page order.
+
+ @return PageOrder
+
+
+ Returns the paper size.
+
+ @return short - paper size
+
+
+ Returns the paper size as enum.
+
+ @return PaperSize paper size
+ @see PaperSize
+
+
+ Returns the scale.
+
+ @return short - scale
+
+
+ Set the page numbering start.
+ Page number for first printed page. If no value is specified, then 'automatic' is assumed.
+
+ @return page number for first printed page
+
+
+ Returns the number of pages wide to fit sheet in.
+
+ @return number of pages wide to fit sheet in
+
+
+ Returns the number of pages high to fit the sheet in.
+
+ @return number of pages high to fit the sheet in
+
+
+ Returns the left to right print order.
+
+ @return left to right print order
+
+
+ Returns the landscape mode.
+
+ @return landscape mode
+
+
+ Use the printer's defaults Settings for page Setup values and don't use the default values
+ specified in the schema. For example, if dpi is not present or specified in the XML, the
+ application shall not assume 600dpi as specified in the schema as a default and instead
+ shall let the printer specify the default dpi.
+
+ @return valid Settings
+
+
+ Returns the black and white Setting.
+
+ @return black and white Setting
+
+
+ Returns the draft mode.
+
+ @return draft mode
+
+
+ Returns the print notes.
+
+ @return print notes
+
+
+ Returns the no orientation.
+
+ @return no orientation
+
+
+ Returns the use page numbers.
+
+ @return use page numbers
+
+
+ Returns the horizontal resolution.
+
+ @return horizontal resolution
+
+
+ Returns the vertical resolution.
+
+ @return vertical resolution
+
+
+ Returns the header margin.
+
+ @return header margin
+
+
+ Returns the footer margin.
+
+ @return footer margin
+
+
+
+ Page margin top (In inch)
+
+
+
+
+ Page margin left (In inch)
+
+
+
+
+ Page margin right (In inch)
+
+
+
+
+ Page margin bottom (In inch)
+
+
+
+ Returns the number of copies.
+
+ @return number of copies
+
+
+
+ Defines namespaces, content types and normal file names / naming
+ patterns, for the well-known XSSF format parts.
+
+
+
+ A map to lookup POIXMLRelation by its relation type
+
+
+ JPG is an intentional duplicate of JPEG, to handle documents generated by other software. *
+
+
+ Fetches the InputStream to read the contents, based
+ of the specified core part, for which we are defined
+ as a suitable relationship
+
+
+ Get POIXMLRelation by relation type
+
+ @param rel relation type, for example,
+ http://schemas.openxmlformats.org/officeDocument/2006/relationships/image
+ @return registered POIXMLRelation or null if not found
+
+
+
+ Removes the relation from the internal table.
+ Following readings of files will ignoring the removed relation.
+
+ Relation to remove
+
+
+
+ Adds the relation to the internal table.
+ Following readings of files will process the given relation.
+
+ Relation to add
+
+
+ Rich text unicode string. These strings can have fonts applied to arbitary parts of the string.
+
+
+ Most strings in a workbook have formatting applied at the cell level, that is, the entire string in the cell has the
+ same formatting applied. In these cases, the formatting for the cell is stored in the styles part,
+ and the string for the cell can be shared across the workbook. The following code illustrates the example.
+
+
+
+
+ cell1.SetCellValue(new XSSFRichTextString("Apache POI"));
+ cell2.SetCellValue(new XSSFRichTextString("Apache POI"));
+ cell3.SetCellValue(new XSSFRichTextString("Apache POI"));
+
+
+ In the above example all three cells will use the same string cached on workbook level.
+
+
+ Some strings in the workbook may have formatting applied at a level that is more granular than the cell level.
+ For instance, specific characters within the string may be bolded, have coloring, italicizing, etc.
+ In these cases, the formatting is stored along with the text in the string table, and is treated as
+ a unique entry in the workbook. The following xml and code snippet illustrate this.
+
+
+
+
+ XSSFRichTextString s1 = new XSSFRichTextString("Apache POI");
+ s1.ApplyFont(boldArial);
+ cell1.SetCellValue(s1);
+
+ XSSFRichTextString s2 = new XSSFRichTextString("Apache POI");
+ s2.ApplyFont(italicCourier);
+ cell2.SetCellValue(s2);
+
+
+
+
+ @author Yegor Kozlov
+
+
+ Create a rich text string
+
+
+ Create empty rich text string and Initialize it with empty string
+
+
+ Create a rich text string from the supplied XML bean
+
+
+ Applies a font to the specified characters of a string.
+
+ @param startIndex The start index to apply the font to (inclusive)
+ @param endIndex The end index to apply the font to (exclusive)
+ @param fontIndex The font to use.
+
+
+ Applies a font to the specified characters of a string.
+
+ @param startIndex The start index to apply the font to (inclusive)
+ @param endIndex The end index to apply to font to (exclusive)
+ @param font The index of the font to use.
+
+
+ Sets the font of the entire string.
+ @param font The font to use.
+
+
+ Applies the specified font to the entire string.
+
+ @param fontIndex the font to Apply.
+
+
+ Append new text to this text run and apply the specify font to it
+
+ @param text the text to append
+ @param font the font to apply to the Appended text or null if no formatting is required
+
+
+ Append new text to this text run
+
+ @param text the text to append
+
+
+ Copy font attributes from CTFont bean into CTRPrElt bean
+
+
+ Does this string have any explicit formatting applied, or is
+ it just text in the default style?
+
+
+ Removes any formatting that may have been applied to the string.
+
+
+ The index within the string to which the specified formatting run applies.
+
+ @param index the index of the formatting run
+ @return the index within the string.
+
+
+ Returns the number of characters this format run covers.
+
+ @param index the index of the formatting run
+ @return the number of characters this format run covers
+
+
+ Returns the plain string representation.
+
+
+ Returns the number of characters in this string.
+
+
+ @return The number of formatting Runs used.
+
+
+ Gets a copy of the font used in a particular formatting Run.
+
+ @param index the index of the formatting run
+ @return A copy of the font used or null if no formatting is applied to the specified text Run.
+
+
+ Return a copy of the font in use at a particular index.
+
+ @param index The index.
+ @return A copy of the font that's currently being applied at that
+ index or null if no font is being applied or the
+ index is out of range.
+
+
+ Return the underlying xml bean
+
+
+
+ CTRPrElt --> CTFont adapter
+
+
+ **
+
+
+ For all characters which cannot be represented in XML as defined by the XML 1.0 specification,
+ the characters are escaped using the Unicode numerical character representation escape character
+ format _xHHHH_, where H represents a hexadecimal character in the character's value.
+
+ Example: The Unicode character 0D is invalid in an XML 1.0 document,
+ so it shall be escaped as _x000D_.
+
+ See section 3.18.9 in the OOXML spec.
+
+ @param value the string to decode
+ @return the decoded string
+
+
+
+ High level representation of a row of a spreadsheet.
+
+
+
+
+ the xml node Containing all cell defInitions for this row
+
+
+
+
+ Cells of this row keyed by their column indexes.
+ The SortedDictionary ensures that the cells are ordered by columnIndex in the ascending order.
+
+
+
+
+ the parent sheet
+
+
+
+
+ XSSFSheet this row belongs to
+
+
+
+
+ Get the number of the first cell Contained in this row.
+
+ short representing the first logical cell in the row,
+ or -1 if the row does not contain any cells.
+
+
+
+ Gets the index of the last cell Contained in this row PLUS ONE. The result also
+ happens to be the 1-based column number of the last cell. This value can be used as a
+ standard upper bound when iterating over cells:
+
+ short representing the last logical cell in the row PLUS ONE,
+ or -1 if the row does not contain any cells.
+
+
+
+ Get the row's height measured in twips (1/20th of a point).
+ If the height is not Set, the default worksheet value is returned,
+ See
+
+ row height measured in twips (1/20th of a point)
+
+
+
+ Returns row height measured in point size. If the height is not Set,
+ the default worksheet value is returned,See
+
+
+
+
+ Gets the number of defined cells (NOT number of cells in the actual row!).
+ That is to say if only columns 0,4,5 have values then there would be 3.
+
+ int representing the number of defined cells in the row.
+
+
+
+ Get row number this row represents
+
+ the row number (0 based)
+
+
+
+ Get whether or not to display this row with 0 height
+
+
+
+
+ Is this row formatted? Most aren't, but some rows
+ do have whole-row styles. For those that do, you
+ can get the formatting from
+
+
+
+
+ Returns the whole-row cell style. Most rows won't
+ have one of these, so will return null. Call
+ to check first.
+
+
+
+
+ Construct an XSSFRow.
+
+ the xml node Containing all cell defInitions for this row.
+ the parent sheet.
+
+
+
+ Use this to create new cells within the row and return it.
+ The cell that is returned is a . The type can be Changed
+ either through calling or .
+
+ the column number this cell represents
+ a high level representation of the Created cell
+ if columnIndex is less than 0 or greater than 16384,
+ the maximum number of columns supported by the SpreadsheetML format(.xlsx)
+
+
+
+ Use this to create new cells within the row and return it.
+
+ the column number this cell represents
+ the cell's data type
+ a high level representation of the Created cell.
+ if columnIndex is less than 0 or greater than 16384,
+ the maximum number of columns supported by the SpreadsheetML format(.xlsx)
+
+
+
+ Returns the cell at the given (0 based) index,
+ with the from the parent Workbook.
+
+
+ the cell at the given (0 based) index
+
+
+
+ Returns the cell at the given (0 based) index, with the specified
+
+
+
+ the cell at the given (0 based) index
+ if cellnum is less than 0 or the specified MissingCellPolicy is invalid
+
+
+
+ Remove the Cell from this row.
+
+ the cell to remove
+
+
+
+
+ Copy the cells from srcRow to this row
+ If this row is not a blank row, this will merge the two rows, overwriting
+ the cells in this row with the cells in srcRow
+ If srcRow is null, overwrite cells in destination row with blank values, styles, etc per cell copy policy
+ srcRow may be from a different sheet in the same workbook
+
+ the rows to copy from
+ policy the policy to determine what gets copied
+
+
+
+ Applies a whole-row cell styling to the row.
+ If the value is null then the style information is Removed,
+ causing the cell to used the default workbook style.
+
+
+
+
+
+ Returns the underlying CT_Row xml node Containing all cell defInitions in this row
+
+ the underlying CT_Row xml node
+
+
+
+ Fired when the document is written to an output stream.
+ See
+
+
+
+
+ update cell references when Shifting rows
+
+ n the number of rows to move
+
+
+
+ Cell iterator over the physically defined cell
+
+ an iterator over cells in this row.
+
+
+
+ Alias for to allow foreach loops
+
+ an iterator over cells in this row.
+
+
+
+ Compares two objects. Two rows are equal if they belong to the
+ same worksheet and their row indexes are equal.
+
+ the to be compared.
+
+ the value 0 if the row number of this is
+ equal to the row number of the argument
+ a value less than 0 if the row number of this this is
+ numerically less than the row number of the argument
+ a value greater than 0 if the row number of this this is
+ numerically greater than the row number of the argument
+
+ if the argument row belongs to a different worksheet
+
+
+
+ formatted xml representation of this row
+
+ formatted xml representation of this row
+
+
+
+ Get the hssfcell representing a given column (logical cell)
+ 0-based. If you ask for a cell that is not defined, then
+ you Get a null.
+ This is the basic call, with no policies applied
+
+ 0 based column number
+ Cell representing that column or null if Undefined.
+
+
+ Represents a shape in a SpreadsheetML Drawing.
+
+ @author Yegor Kozlov
+
+
+ Parent Drawing
+
+
+ The parent shape, always not-null for shapes in groups
+
+
+ anchor that is used by this shape
+
+
+ Return the Drawing that owns this shape
+
+ @return the parent Drawing that owns this shape
+
+
+ Gets the parent shape.
+
+
+ @return the anchor that is used by this shape.
+
+
+ Returns xml bean with shape properties.
+
+ @return xml bean with shape properties.
+
+
+ Whether this shape is not Filled with a color
+
+ @return true if this shape is not Filled with a color.
+
+
+ Sets the color used to fill this shape using the solid fill pattern.
+
+
+ The color applied to the lines of this shape.
+
+
+ This object specifies a group shape that represents many shapes grouped together. This shape is to be treated
+ just as if it were a regular shape but instead of being described by a single geometry it is made up of all the
+ shape geometries encompassed within it. Within a group shape each of the shapes that make up the group are
+ specified just as they normally would.
+
+ @author Yegor Kozlov
+
+
+ Construct a new XSSFSimpleShape object.
+
+ @param Drawing the XSSFDrawing that owns this shape
+ @param ctGroup the XML bean that stores this group content
+
+
+ Initialize default structure of a new shape group
+
+
+ Returns the shape group id.
+ @return id of the shape group
+
+
+ Returns the shape group name.
+ @return name of the shape group
+
+
+ Constructs a textbox.
+
+ @param anchor the child anchor describes how this shape is attached
+ to the group.
+ @return the newly Created textbox.
+
+
+ Creates a simple shape. This includes such shapes as lines, rectangles,
+ and ovals.
+
+ @param anchor the child anchor describes how this shape is attached
+ to the group.
+ @return the newly Created shape.
+
+
+ Creates a simple shape. This includes such shapes as lines, rectangles,
+ and ovals.
+
+ @param anchor the child anchor describes how this shape is attached
+ to the group.
+ @return the newly Created shape.
+
+
+ Creates a picture.
+
+ @param anchor the client anchor describes how this picture is attached to the sheet.
+ @param pictureIndex the index of the picture in the workbook collection of pictures,
+ {@link XSSFWorkbook#getAllPictures()} .
+ @return the newly Created picture shape.
+
+
+
+
+
+
+
+
+
+
+
+ Sets the coordinate space of this group. All children are constrained
+ to these coordinates.
+
+
+
+ High level representation of a SpreadsheetML worksheet. Sheets are the
+ central structures within a workbook, and are where a user does most of
+ his spreadsheet work. The most common type of sheet is the worksheet,
+ which is represented as a grid of cells.Worksheet cells can contain
+ text, numbers, dates, and formulas. Cells can also be formatted.
+
+
+
+
+ cache of master shared formulas in this sheet. Master shared
+ formula is the first formula in a group of shared formulas is saved
+ in the f element.
+
+
+
+
+ Returns the parent XSSFWorkbook
+
+
+
+
+ Returns the name of this sheet
+
+
+
+
+ Vertical page break information used for print layout view, page
+ layout view, drawing print breaksin normal view, and for printing
+ the worksheet.
+
+
+
+
+ Get the default column width for the sheet (if the columns do not
+ define their own width) in characters.
+
+
+
+
+ Get the default row height for the sheet (if the rows do not define
+ their own height) in twips(1/20 of a point)
+
+
+
+
+ Get the default row height for the sheet measued in point size
+ (if the rows do not define their own height).
+
+
+
+
+ Whether the text is displayed in right-to-left mode in the window
+
+
+
+
+ Get whether to display the guts or not, default value is true
+
+
+
+
+ Gets the flag indicating whether the window should show 0 (zero)
+ in cells Containing zero value. When false, cells with zero value
+ appear blank instead of Showing the number zero.
+
+
+
+
+ Gets the first row on the sheet
+
+
+
+
+ Gets the first column on the sheet
+
+
+
+
+ Flag indicating whether the Fit to Page print option is enabled.
+
+
+
+
+ Returns the default footer for the sheet, creating one as needed.
+ You may also want to look at ,
+ and
+
+
+
+
+ Returns the default header for the sheet, creating one as needed.
+ You may also want to look at ,
+ and
+
+
+
+
+ Returns the odd footer. Used on all pages unless other footers
+ also present, when used on only odd pages.
+
+
+
+
+ Returns the even footer. Not there by default, but when Set,
+ used on even pages.
+
+
+
+
+ Returns the first page footer. Not there by default, but when
+ Set, used on the first page.
+
+
+
+
+ Returns the odd header. Used on all pages unless other headers
+ also present, when used on only odd pages.
+
+
+
+
+ Returns the even header. Not there by default, but when
+ Set, used on even pages.
+
+
+
+
+ Returns the first page header. Not there by default, but when
+ Set, used on the first page.
+
+
+
+
+ Determine whether printed output for this sheet will be
+ horizontally centered.
+
+
+
+
+ Returns the list of merged regions. If you want multiple regions,
+ this is faster than calling {@link #getMergedRegion(int)} each time.
+
+
+
+
+ Returns the number of merged regions defined in this worksheet
+
+
+
+
+ Returns the information regarding the currently configured pane
+ (split or freeze).
+
+
+
+
+ Returns the number of phsyically defined rows (NOT the number of
+ rows in the sheet)
+
+
+
+
+ Returns the number of phsyically defined columns (NOT the number of
+ columns in the sheet)
+
+
+
+
+ Gets the print Setup object.
+
+
+
+
+ Answer whether protection is enabled or disabled
+
+
+
+
+ Horizontal page break information used for print layout view, page
+ layout view, drawing print breaks in normal view, and for printing
+ the worksheet.
+
+
+
+
+ Flag indicating whether summary rows appear below detail in an
+ outline, when Applying an outline. When true a summary row is
+ inserted below the detailed data being summarized and a new outline
+ level is established on that row. When false a summary row is
+ inserted above the detailed data being summarized and a new outline
+ level is established on that row.
+
+
+
+
+ When true a summary column is inserted to the right of the detailed
+ data being summarized and a new outline level is established on
+ that column. When false a summary column is inserted to the left of
+ the detailed data being summarized and a new outline level is
+ established on that column.
+
+
+
+
+ A flag indicating whether scenarios are locked when the sheet
+ is protected.
+
+
+
+
+ The top row in the visible view when the sheet is first viewed
+ after opening it in a viewer
+
+
+
+
+ Determine whether printed output for this sheet will be vertically
+ centered.
+
+
+
+
+ Gets the flag indicating whether this sheet should display formulas.
+
+
+
+
+ Gets the flag indicating whether this sheet displays the lines
+ between rows and columns to make editing and Reading easier.
+
+
+
+
+ Gets the flag indicating whether this sheet should display row and
+ column headings. Row heading are the row numbers to the side of the
+ sheet Column heading are the letters or numbers that appear above
+ the columns of the sheet
+
+
+
+
+ Returns whether gridlines are printed.
+
+
+
+
+ Returns whether row and column headings are printed.
+
+
+
+
+ Whether Excel will be asked to recalculate all formulas when the
+ workbook is opened.
+
+
+
+
+ Flag indicating whether the sheet displays Automatic Page Breaks.
+
+
+
+
+ Returns a flag indicating whether this sheet is selected.
+
+ When only 1 sheet is selected and active, this value should be in
+ synch with the activeTab value. In case of a conflict, the Start
+ Part Setting wins and Sets the active sheet tab.
+
+ Note: multiple sheets can be selected, but only one sheet can be
+ active at one time.
+
+
+
+
+ Return location of the active cell, e.g. A1.
+
+
+
+
+ Does this sheet have any comments on it? We need to know, so we can
+ decide about writing it to disk or not
+
+
+
+
+ true when Autofilters are locked and the sheet is protected.
+
+
+
+
+ true when Deleting columns is locked and the sheet is protected.
+
+
+
+
+ true when Deleting rows is locked and the sheet is protected.
+
+
+
+
+ true when Formatting cells is locked and the sheet is protected.
+
+
+
+
+ true when Formatting columns is locked and the sheet is protected.
+
+
+
+
+ true when Formatting rows is locked and the sheet is protected.
+
+
+
+
+ true when Inserting columns is locked and the sheet is protected.
+
+
+
+
+ true when Inserting hyperlinks is locked and the sheet is protected.
+
+
+
+
+ true when Inserting rows is locked and the sheet is protected.
+
+
+
+
+ true when Pivot tables are locked and the sheet is protected.
+
+
+
+
+ true when Sorting is locked and the sheet is protected.
+
+
+
+
+ true when Objects are locked and the sheet is protected.
+
+
+
+
+ true when Scenarios are locked and the sheet is protected.
+
+
+
+
+ true when Selection of locked cells is locked and the sheet is
+ protected.
+
+
+
+
+ true when Selection of unlocked cells is locked and the sheet is
+ protected.
+
+
+
+
+ true when Sheet is Protected.
+
+
+
+
+ Get or set background color of the sheet tab. The value is null
+ if no sheet tab color is set.
+
+
+
+
+ Creates new XSSFSheet - called by XSSFWorkbook to create a sheet
+ from scratch. See
+
+
+
+
+ Creates an XSSFSheet representing the given namespace part and
+ relationship. Should only be called by XSSFWorkbook when Reading in
+ an exisiting file.
+
+ The namespace part that holds xml data
+ represenring this sheet.
+
+
+
+ Initialize worksheet data when Reading in an exisiting file.
+
+
+
+
+
+ Initialize worksheet data when creating a new sheet.
+
+
+
+
+ Get VML drawing for this sheet (aka 'legacy' drawig)
+
+ if true, then a new VML drawing part
+ is Created
+ the VML drawing of null if the drawing was not found and
+ autoCreate=false
+
+
+
+ Returns the sheet's comments object if there is one, or null if not
+
+ create a new comments table if it does not
+ exist
+
+
+
+
+ Return a master shared formula by index
+
+ shared group index
+ a CT_CellFormula bean holding shared formula or
+ null if not found
+
+
+
+ when a cell with a 'master' shared formula is removed, the next
+ cell in the range becomes the master
+
+ The cell that is removed
+ in use, if one exists
+
+
+
+ Provide access to the CT_Worksheet bean holding this sheet's data
+
+ the CT_Worksheet bean holding this sheet's data
+
+
+
+ Adds a merged region of cells on a sheet.
+
+ region to merge
+ index of this region
+ if region contains fewer
+ than 2 cells
+ if region intersects
+ with an existing merged region or multi-cell array formula on
+ this sheet
+
+
+
+ Adds a merged region of cells (hence those cells form one).
+ Skips validation.It is possible to create overlapping merged regions
+ or create a merged region that intersects a multi-cell array formula
+ with this formula, which may result in a corrupt workbook.
+
+ region to merge
+ index of this region
+ if region contains fewer
+ than 2 cells
+
+
+
+ Verify that merged regions do not intersect multi-cell array
+ formulas and no merged regions intersect another merged region
+ in this sheet.
+
+
+
+
+ Adjusts the column width to fit the contents.
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ Processing.
+
+ the column index
+
+
+
+ Adjusts the column width to fit the contents.
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per column, at the end of your
+ Processing.
+
+ the column index
+ whether to use the contents of merged cells
+ when calculating the width of the column
+
+
+
+ Adjusts the row height to fit the contents.
+ This process can be relatively slow on large sheets, so this should
+ normally only be called once per row, at the end of your
+ Processing.
+
+ the row index
+
+
+
+ Adjusts the row height to fit the contents. This process can be
+ relatively slow on large sheets, so this should normally only be
+ called once per row, at the end of your Processing. You can specify
+ whether the content of merged cells should be considered or
+ ignored. Default is to ignore merged cells.
+
+ the row index
+ whether to use the contents of merged
+ cells when calculating the height of the row
+
+
+
+ Return the sheet's existing Drawing, or null if there isn't yet one.
+ Use to Get or create
+
+ a SpreadsheetML Drawing
+
+
+
+ Create a new SpreadsheetML Drawing. If this sheet already
+ Contains a Drawing - return that.
+
+ a SpreadsheetML Drawing
+
+
+
+ Creates a split (freezepane). Any existing freezepane or split
+ pane is overwritten.
+
+ Horizonatal position of split.
+ Vertical position of split.
+
+
+
+ Creates a split (freezepane). Any existing freezepane or split pane
+ is overwritten. If both colSplit and rowSplit are zero then the
+ existing freeze pane is Removed
+
+ Horizonatal position of split.
+ Vertical position of split.
+ Left column visible in right pane.
+ Top row visible in bottom pane
+
+
+
+ Create a new row within the sheet and return the high level
+ representation. See
+
+ row number
+ High level object representing a
+ row in the sheet
+
+
+
+ Create a new column within the sheet and return the high level
+ representation. See
+
+ column number
+ High level object representing a
+ column in the sheet
+
+
+
+ Creates a split pane. Any existing freezepane or split pane is
+ overwritten.
+
+ Horizonatal position of split (in 1/20th
+ of a point).
+ Vertical position of split (in 1/20th of
+ a point).
+ Left column visible in right pane.
+ Top row visible in bottom pane
+ Active pane. One of: PANE_LOWER_RIGHT,
+ PANE_UPPER_RIGHT, PANE_LOWER_LEFT, PANE_UPPER_LEFT
+
+
+
+ Returns cell comment for the specified row and column
+
+ The row.
+ The column.
+ cell comment or null if not found
+
+
+
+ Returns cell comment for the specified location
+
+ cell location
+ return cell comment or null if not found
+
+
+
+ Returns all cell comments on this sheet.
+
+ return A Dictionary of each Comment in the sheet, keyed on
+ the cell address where the comment is located.
+
+
+
+ Get a Hyperlink in this sheet anchored at row, column
+
+
+
+ return hyperlink if there is a hyperlink anchored at row,
+ column; otherwise returns null
+
+
+
+ Get a Hyperlink in this sheet located in a cell specified
+ by {code addr}
+
+ The address of the cell containing the
+ hyperlink
+ return hyperlink if there is a hyperlink anchored at
+ {@code addr}; otherwise returns {@code null}
+
+
+
+ Get a list of Hyperlinks in this sheet
+
+
+
+
+
+ Get the actual column width (in units of 1/256th of a character width)
+
+ the column to set (0-based)
+ the width in units of 1/256th of a character width
+
+
+
+ Get the actual column width in pixels
+ Please note, that this method works correctly only for workbooks
+ with the default font size(Calibri 11pt for .xlsx).
+
+
+
+
+
+
+ Gets the size of the margin in inches.
+
+ which margin to get
+ the size of the margin
+
+
+
+
+ Sets the size of the margin in inches.
+
+ which margin to get
+ the size of the margin
+
+
+
+
+
+
+
+ the merged region at the specified index
+ if this worksheet
+ does not contain merged regions
+
+
+
+ Enables sheet protection and Sets the password for the sheet.
+ Also Sets some attributes on the { @link CT_SheetProtection }
+ that correspond to the default values used by Excel
+
+ password to set for protection. Pass null
+ to remove protection
+
+
+
+ Sets the sheet password.
+
+ if null, the password will be removed
+ if null, the password will be set as XOR
+ password (Excel 2010 and earlier)otherwise the given algorithm is
+ used for calculating the hash password (Excel 2013)
+
+
+
+ Validate the password against the stored hash, the hashing method
+ will be determined by the existing password attributes
+
+
+ true, if the hashes match (... though original password
+ may differ ...)
+
+
+
+ Returns the logical row ( 0-based). If you ask for a row that is
+ not defined you get a null. This is to say row 4 represents the
+ fifth row on a sheet.
+
+ row to get
+ representing the rownumber or null
+ if its not defined on the sheet
+
+
+
+ Returns the logical column ( 0-based). If you ask for a column that is
+ not defined you get a null. This is to say column 4 represents the
+ fifth column on a sheet.
+
+ column to get
+ representing the columnnumber or null
+ if its not defined on the sheet
+
+
+
+ Group between (0 based) columns
+
+
+
+
+
+
+ Determines if there is a page break at the indicated column
+
+
+
+
+
+
+ Get the hidden state for a given column.
+
+ the column to set (0-based)
+ hidden - false if the column is visible
+
+
+
+ Tests if there is a page break at the indicated row
+
+ index of the row to test
+ true if there is a page break at the indicated row
+
+
+
+ Sets a page break at the indicated row Breaks occur above the
+ specified row and left of the specified column inclusive. For
+ example, sheet.SetColumnBreak(2); breaks the sheet into two parts
+ with columns A,B,C in the first and D,E,... in the second.
+ Simuilar, sheet.SetRowBreak(2); breaks the sheet into two parts
+ with first three rows (rownum=1...3) in the first part and rows
+ starting with rownum=4 in the second.
+
+ the row to break, inclusive
+
+
+
+ Removes a page break at the indicated column
+
+
+
+
+
+ Removes a merged region of cells (hence letting them free)
+
+
+
+
+
+ Removes a number of merged regions of cells (hence letting them
+ free) This method can be used to bulk-remove merged regions in a
+ way much faster than calling RemoveMergedRegion() for every single
+ merged region.
+
+ A Set of the regions to unmerge
+
+
+
+ Remove a row from this sheet. All cells Contained in the row are
+ Removed as well
+
+ the row to Remove.
+
+
+
+
+ Remove a column from this sheet. All cells Contained in the column are
+ Removed as well
+
+ the column to Remove.
+
+
+
+
+ Removes the page break at the indicated row
+
+
+
+
+
+ Sets a page break at the indicated column. Breaks occur above the
+ specified row and left of the specified column inclusive. For
+ example, sheet.SetColumnBreak(2); breaks the sheet into two parts
+ with columns A,B,C in the first and D,E,... in the second.
+ Simuilar, sheet.SetRowBreak(2); breaks the sheet into two parts
+ with first three rows (rownum=1...3) in the first part and rows
+ starting with rownum=4 in the second.
+
+ the column to break, inclusive
+
+
+
+ Get the visibility state for a given column.
+
+ the column to get (0-based)
+ the visiblity state of the column
+
+
+
+ Set the width (in units of 1/256th of a character width)
+
+ The maximum column width for an individual cell is 255
+ characters. This value represents the number of characters that can
+ be displayed in a cell that is formatted with the standard font
+ (first font in the workbook).
+
+
+ Character width is defined as the maximum digit width of the
+ numbers
+
+ 0, 1, 2, ... 9
+
+ as rendered using the default
+ font (first font in the workbook). Unless you are using a very
+ special font, the default character is '0' (zero), this is true for
+ Arial (default font font in HSSF) and Calibri (default font in
+ XSSF)
+
+
+ Please note, that the width set by this method includes 4
+ pixels of margin pAdding (two on each side), plus 1 pixel pAdding
+ for the gridlines (Section 3.3.1.12 of the OOXML spec). This
+ results is a slightly less value of visible characters than passed
+ to this method (approx. 1/2 of a character).
+
+
+ To compute
+ the actual number of visible characters, Excel uses the following
+ formula (Section 3.3.1.12 of the OOXML spec):
+
+
+ width = TRuncate([{Number of Visible Characters} *
+ {Maximum Digit Width} + {5 pixel pAdding}]/{Maximum Digit Width}*256)/256
+
+
+ Using the Calibri font as an example, the maximum digit width
+ of 11 point font size is 7 pixels (at 96 dpi). If you set a column
+ width to be eight characters wide, e.g.
+
+ SetColumnWidth(columnIndex, 8*256)
+
+ , then the actual value of visible characters (the value Shown in
+ Excel) is derived from the following equation:
+
+ TRuncate([numChars*7+5]/7*256)/256 = 8;
+
+ which gives
+
+ 7.29
+ .
+
+
+ the column to set (0-based)
+ the width in units of 1/256th of a character
+ width
+ if width more than 255*256 (the
+ maximum column width in Excel is 255 characters)
+
+
+
+ group the row It is possible for collapsed to be false and yet
+ still have the rows in question hidden. This can be achieved by
+ having a lower outline level collapsed, thus hiding all the child
+ rows. Note that in this case, if the lowest level were expanded,
+ the middle level would remain collapsed.
+
+ the row involved, 0 based
+ bool value for collapse
+
+
+
+ Sets the zoom magnification for the sheet. The zoom is expressed
+ as a fraction. For example to express a zoom of 75% use 3 for the
+ numerator and 4 for the denominator.
+
+ The numerator for the zoom
+ magnification.
+ The denominator for the zoom
+ magnification.
+
+
+
+ Window zoom magnification for current view representing percent
+ values. Valid values range from 10 to 400. Horizontal &
+ Vertical scale toGether. For example:
+
+ 10 - 10%
+ 20 - 20%
+ ...
+ 100 - 100%
+ ...
+ 400 - 400%
+
+ Current view can be Normal, Page Layout, or Page Break Preview.
+
+ window zoom magnification
+ if scale is invalid
+
+
+
+ copyRows rows from srcRows to this sheet starting at destStartRow
+ Additionally copies merged regions that are completely defined in
+ these rows (ie. merged 2 cells on a row to be shifted).
+
+ the rows to copy. Formulas will be offset by
+ the difference in the row number of the first row in srcRows and
+ destStartRow (even if srcRows are from a different sheet).
+ the row in this sheet to paste the first
+ row of srcRows the remainder of srcRows will be pasted below
+ destStartRow per the cell copy policy
+ is the cell copy policy, which can be used to
+ merge the source and destination when the source is blank, copy
+ styles only, paste as value, etc
+
+
+
+
+ Copies rows between srcStartRow and srcEndRow to the same sheet,
+ starting at destStartRow Convenience function for
+ Equivalent to
+ copyRows(getRows(srcStartRow, srcEndRow, false), destStartRow, cellCopyPolicy)
+
+ the index of the first row to copy the
+ cells from in this sheet
+ the index of the last row to copy the cells
+ from in this sheet
+ the index of the first row to copy the
+ cells to in this sheet
+ the policy to use to determine how
+ cells are copied
+
+
+
+ Shifts rows between startRow and endRow n number of rows. If you
+ use a negative number, it will shift rows up. Code ensures that
+ rows don't wrap around.
+ Calls ShiftRows(startRow, endRow, n, false, false);
+
+ Additionally Shifts merged regions that are completely defined in
+ these rows (ie. merged 2 cells on a row to be Shifted).
+
+
+ the row to start Shifting
+ the row to end Shifting
+ the number of rows to shift
+
+
+
+ Shifts columns between startColumn and endColumn n number of columns. If you
+ use a negative number, it will shift columns left. Code ensures that
+ columns don't wrap around.
+ Calls ShiftColumns(startColumn, endColumn, n, false, false);
+
+ Additionally Shifts merged regions that are completely defined in
+ these columns (ie. merged 2 cells on a column to be Shifted).
+
+
+ the column to start Shifting
+ the column to end Shifting
+ the number of column to shift
+
+
+
+ Shifts rows between startRow and endRow n number of rows. If you
+ use a negative number, it will shift rows up. Code ensures that
+ rows don't wrap around
+
+ Additionally Shifts merged regions thatare completely defined in
+ these rows (ie. merged 2 cells on a row to be Shifted).
+
+
+ the row to start Shifting
+ the row to end Shifting
+ the number of rows to shift
+ whether to copy the row height during
+ the shift
+ whether to set the original
+ row's height to the default
+
+
+
+ Shifts columns between startColumn and endColumn n number of columns. If you
+ use a negative number, it will shift columns left. Code ensures that
+ columns don't wrap around
+
+ Additionally Shifts merged regions thatare completely defined in
+ these columns (ie. merged 2 cells on a column to be Shifted).
+
+
+ the column to start Shifting
+ the column to end Shifting
+ the number of columns to shift
+ whether to copy the column width during
+ the shift
+ whether to set the original
+ column's width to the default
+
+
+
+ Returns the CellStyle that applies to the given (0 based) column,
+ or null if no style has been set for that column
+
+
+
+
+
+
+ Tie a range of cell toGether so that they can be collapsed
+ or expanded
+
+ start row (0-based)
+ end row (0-based)
+
+
+
+
+
+ the zero based row index to find from
+
+
+
+
+ Ungroup a range of rows that were previously groupped
+
+ start row (0-based)
+ end row (0-based)
+
+
+
+ Register a hyperlink in the collection of hyperlinks on this sheet
+
+ the link to add
+
+
+
+ Removes a hyperlink in the collection of hyperlinks on this sheet
+
+ row index
+ column index
+
+
+
+ Enable sheet protection
+
+
+
+
+ Disable sheet protection
+
+
+
+
+ Enable or disable Autofilters locking. This does not modify sheet
+ protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Deleting columns locking. This does not modify
+ sheet protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Deleting rows locking. This does not modify
+ sheet protection status. To enforce this un-/locking, call
+
+
+
+
+
+
+ Enable or disable Formatting cells locking. This does not modify
+ sheet protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Formatting columns locking. This does not modify
+ sheet protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Formatting rows locking. This does not modify
+ sheet protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Inserting columns locking. This does not modify
+ sheet protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Inserting hyperlinks locking. This does not
+ modify sheet protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Inserting rows locking. This does not modify
+ sheet protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Pivot Tables locking. This does not modify sheet
+ protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Sort locking. This does not modify sheet
+ protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Objects locking. This does not modify sheet
+ protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Scenarios locking. This does not modify sheet
+ protection status. To enforce this un-/locking, call
+ or
+
+
+
+
+
+ Enable or disable Selection of locked cells locking. This does not
+ modify sheet protection status. To enforce this un-/locking, call
+
+
+
+
+
+
+ Enable or disable Selection of unlocked cells locking. This does
+ not modify sheet protection status. To enforce this un-/locking,
+ call or
+
+
+
+
+
+ Creates a new Table, and associates it with this Sheet
+
+
+
+
+
+ Returns any tables associated with this Sheet
+
+
+
+
+
+ Set background color of the sheet tab
+
+ the indexed color to set, must be a
+ constant from
+
+
+
+ Copy the source column to the target column. If the target column
+ exists, the new copied column will be inserted before the
+ existing one
+
+ source index
+ target index
+ the new copied column object
+
+
+
+ This method will destroy the List object
+ without affecting the cells, formulas, styles, etc contained in the
+ sheet. It isuseful for when you've just created an IColumn to do
+ some manipulation on and don't need it anymore, and don't want to
+ leave it around in the sheet.
+ to destroy
+ If is
+ null or if it doesn't belong to this
+
+
+
+ This method will destroy the object without
+ affecting the cells, formulas, styles, etc contained in the sheet.
+ It isuseful for when you've just created an IColumn to do some
+ manipulation on and don't need it anymore, and don't want to leave
+ it around in the sheet.
+
+ to destroy
+ If is
+ null or if it doesn't belong to this
+
+
+
+ Create a pivot table using the AreaReference range on sourceSheet,
+ at the given position. If the source reference contains a sheet
+ name, it must match the sourceSheet
+
+ location of pivot data
+ A reference to the top left cell where the
+ pivot table will start
+ The sheet containing the source data, if
+ the source reference doesn't contain a sheet name
+ The pivot table
+ if source references a sheet
+ different than sourceSheet
+
+
+
+ Create a pivot table using the AreaReference range, at the given
+ position. If the source reference contains a sheet name, that sheet
+ is used, otherwise this sheet is assumed as the source sheet.
+
+ location of pivot data
+ A reference to the top left cell where the
+ pivot table will start
+ The pivot table
+
+
+
+ Create a pivot table using the Name range reference on sourceSheet,
+ at the given position. If the source reference contains a sheet
+ name, it must match the sourceSheet
+
+ location of pivot data
+ A reference to the top left cell where the
+ pivot table will start
+ The sheet containing the source data,
+ if the source reference doesn't contain a sheet name
+ The pivot table
+
+
+
+
+ Create a pivot table using the Name range, at the given position.
+ If the source reference contains a sheet name, that sheet is used,
+ otherwise this sheet is assumed as the source sheet.
+
+ location of pivot data
+ A reference to the top left cell where the
+ pivot table will start
+ The pivot table
+
+
+
+ Create a pivot table using the Table, at the given position. Tables
+ are required to have a sheet reference, so no additional logic
+ around reference sheet is needed.
+
+ location of pivot data
+ A reference to the top left cell where the
+ pivot table will start
+ The pivot table
+
+
+
+ Returns all the pivot tables for this Sheet
+
+
+
+
+
+ Add ignored errors (usually to suppress them in the UI of a
+ consuming application).
+
+ Cell
+ Types of error to ignore there.
+
+
+
+ Ignore errors across a range of cells.
+
+ Range of cells.
+ Types of error to ignore there.
+
+
+
+ Returns the errors currently being ignored and the ranges where
+ they are ignored.
+
+ Map of error type to the range(s) where they are ignored.
+
+
+
+ Copies comment from one cell to another
+
+ Cell with a comment to copy
+ Cell to paste the comment to
+ Copied comment
+
+
+
+ Read hyperlink relations, link them with CT_Hyperlink beans in this
+ worksheet and Initialize the internal array of XSSFHyperlink objects
+
+
+
+
+
+ Create a new CT_Worksheet instance with all values set to defaults
+
+ a new instance
+
+
+
+ Adds a merged region of cells (hence those cells form one).
+
+ region (rowfrom/colfrom-rowto/colto) to merge
+ whether to validate merged region
+ index of this region
+ if region intersects
+ with a multi-cell array formula or if region intersects with an
+ existing region on this sheet
+ if region contains fewer
+ than 2 cells
+
+
+
+ Verify that the candidate region does not intersect with an
+ existing multi-cell array formula in this sheet
+
+
+ if candidate region
+ intersects an existing array formula in this sheet
+
+
+
+ Verify that none of the merged regions intersect a multi-cell array
+ formula in this sheet
+
+
+
+
+ Verify that candidate region does not intersect with an existing
+ merged region in this sheet
+
+
+ if candidate region
+ intersects an existing merged region in this sheet
+
+
+
+ Verify that no merged regions intersect another merged
+ region in this sheet.
+
+ if at least one region
+ intersects with another merged region in this sheet
+
+
+
+ returns all rows between startRow and endRow, inclusive. Rows
+ between startRow and endRow that haven't been created are not
+ included in result unless createRowIfMissing is true
+
+ the first row number in this
+ sheet to return
+ the last row number in this
+ sheet to return
+
+
+ if startRowNum and endRowNum
+ are not in ascending order
+
+
+
+ Ensure CT_Worksheet.CT_SheetPr.CT_OutlinePr
+
+
+
+
+
+ Do not leave the width attribute undefined (see #52186).
+
+
+
+
+
+
+
+ the zero based row index to collapse
+
+
+
+
+
+ the zero based row index to find from
+
+
+
+
+
+
+ the zero based row index to expand
+
+
+
+
+
+ the zero based row index to find from
+
+
+
+
+
+
+ the zero based row index to find from
+
+
+
+
+ Return the default sheet view. This is the last one if the sheet's
+ views, according to sec. 3.3.1.83 of the OOXML spec: "A single
+ sheet view defInition. When more than 1 sheet view is defined in
+ the file, it means that when opening the workbook, each sheet view
+ corresponds to a separate window within the spreadsheet
+ application, where each window is Showing the particular sheet.
+ Containing the same workbookViewId value, the last sheetView
+ defInition is loaded, and the others are discarded. When multiple
+ windows are viewing the same sheet, multiple sheetView elements
+ (with corresponding workbookView entries) are saved."
+
+
+
+
+
+ Also Creates cells if they don't exist
+
+
+
+
+
+
+ Creates an empty XSSFPivotTable and Sets up all its relationships
+ including: pivotCacheDefInition, pivotCacheRecords
+
+ a pivotTable
+
+
+
+ Create a pivot table using the AreaReference or named/table range
+ on sourceSheet, at the given position. If the source reference
+ contains a sheet name, it must match the sourceSheet.
+
+ A reference to the top left cell where the
+ pivot table will start
+ The sheet containing the source data,
+ if the source reference doesn't contain a sheet name
+
+ The pivot table
+
+
+
+
+
+ In EMU
+
+
+ XSSF Conditional Formattings
+
+
+ Office 2010 Conditional Formatting extensions namespace
+
+
+ A factory method allowing to create a conditional formatting rule
+ with a cell comparison operator
+ TODO - formulas Containing cell references are currently not Parsed properly
+
+ @param comparisonOperation - a constant value from
+ {@link NPOI.hssf.record.CFRuleRecord.ComparisonOperator}:
+
+ - BETWEEN
+ - NOT_BETWEEN
+ - EQUAL
+ - NOT_EQUAL
+ - GT
+ - LT
+ - GE
+ - LE
+
+
+ @param formula1 - formula for the valued, Compared with the cell
+ @param formula2 - second formula (only used with
+ {@link NPOI.ss.usermodel.ComparisonOperator#BETWEEN}) and
+ {@link NPOI.ss.usermodel.ComparisonOperator#NOT_BETWEEN} operations)
+
+
+
+ A factory method allowing the creation of conditional formatting
+ rules using an Icon Set / Multi-State formatting.
+ The thresholds for it will be created, but will be empty
+ and require configuring with
+ {@link XSSFConditionalFormattingRule#getMultiStateFormatting()}
+ then
+ {@link XSSFIconMultiStateFormatting#getThresholds()}
+
+
+
+
+
+ Gets Conditional Formatting object at a particular index
+
+ @param index
+ of the Conditional Formatting object to fetch
+ @return Conditional Formatting object
+
+
+ @return number of Conditional Formatting objects of the sheet
+
+
+ Removes a Conditional Formatting object by index
+ @param index of a Conditional Formatting object to remove
+
+
+ Represents a shape with a predefined geometry in a SpreadsheetML Drawing.
+ Possible shape types are defined in {@link NPOI.SS.UserModel.ShapeTypes}
+
+
+ List of the paragraphs that make up the text in this shape
+
+
+ A default instance of CTShape used for creating new shapes.
+
+
+ Xml bean that stores properties of this shape
+
+
+ Prototype with the default structure of a new auto-shape.
+
+
+ Returns the simple shape id.
+ @return id of the simple shape
+
+
+ Returns the simple shape name.
+ @return name of the simple shape
+
+
+ Returns the text from all paragraphs in the shape. Paragraphs are Separated by new lines.
+
+ @return text Contained within this shape or empty string
+
+
+
+
+
+ Returns a string Containing an appropriate prefix for an auto-numbering bullet
+ @param scheme the auto-numbering scheme used by the bullet
+ @param value the value of the bullet
+ @return appropriate prefix for an auto-numbering bullet
+
+
+ Convert an integer to its alpha equivalent e.g. 1 = A, 2 = B, 27 = AA etc
+
+
+ Convert an integer to its roman equivalent e.g. 1 = I, 9 = IX etc
+
+
+ Clear all text from this shape
+
+
+ Set a single paragraph of text on the shape. Note this will replace all existing paragraphs Created on the shape.
+ @param text string representing the paragraph text
+
+
+ Set a single paragraph of text on the shape. Note this will replace all existing paragraphs Created on the shape.
+ @param str rich text string representing the paragraph text
+
+
+ Returns a collection of the XSSFTextParagraphs that are attached to this shape
+
+ @return text paragraphs in this shape
+
+
+ Add a new paragraph run to this shape
+
+ @return Created paragraph run
+
+
+ Add a new paragraph run to this shape, Set to the provided string
+
+ @return Created paragraph run
+
+
+ Add a new paragraph run to this shape, Set to the provided rich text string
+
+ @return Created paragraph run
+
+
+ Returns the type of horizontal overflow for the text.
+
+ @return the type of horizontal overflow
+
+
+ Returns the type of vertical overflow for the text.
+
+ @return the type of vertical overflow
+
+
+ Returns the type of vertical alignment for the text within the shape.
+
+ @return the type of vertical alignment
+
+
+ Gets the vertical orientation of the text
+
+ @return vertical orientation of the text
+
+
+ Returns the distance (in points) between the bottom of the text frame
+ and the bottom of the inscribed rectangle of the shape that Contains the text.
+
+ @return the bottom inset in points
+
+
+ Returns the distance (in points) between the left edge of the text frame
+ and the left edge of the inscribed rectangle of the shape that Contains
+ the text.
+
+ @return the left inset in points
+
+
+ Returns the distance (in points) between the right edge of the
+ text frame and the right edge of the inscribed rectangle of the shape
+ that Contains the text.
+
+ @return the right inset in points
+
+
+ Returns the distance (in points) between the top of the text frame
+ and the top of the inscribed rectangle of the shape that Contains the text.
+
+ @return the top inset in points
+
+
+ @return whether to wrap words within the bounding rectangle
+
+
+
+ Specifies that a shape should be auto-fit to fully contain the text described within it.
+ Auto-fitting is when text within a shape is scaled in order to contain all the text inside
+
+ @param value type of autofit
+ @return type of autofit
+
+
+ Gets the shape type, one of the constants defined in {@link NPOI.SS.UserModel.ShapeTypes}.
+
+ @return the shape type
+ @see NPOI.SS.UserModel.ShapeTypes
+
+
+ org.Openxmlformats.schemas.spreadsheetml.x2006.main.CTRPrElt to
+ org.Openxmlformats.schemas.Drawingml.x2006.main.CTFont adapter
+
+
+
+ This class : the Table Part (Open Office XML Part 4:
+ chapter 3.5.1)
+
+ This implementation works under the assumption that a table Contains mappings to a subtree of an XML.
+ The root element of this subtree an occur multiple times (one for each row of the table). The child nodes
+ of the root element can be only attributes or element with maxOccurs=1 property set
+
+
+ @author Roberto Manicardi
+
+
+ Checks if this Table element Contains even a single mapping to the map identified by id
+ @param id the XSSFMap ID
+ @return true if the Table element contain mappings
+
+
+
+ Calculates the xpath of the root element for the table. This will be the common part
+ of all the mapping's xpaths
+
+ @return the xpath of the table's root element
+
+
+ Note this list is static - once read, it does not notice later changes to the underlying column structures
+ @return List of XSSFXmlColumnPr
+
+
+ @return the name of the Table, if set
+
+
+ Get the area reference for the cells which this table covers. The area
+ includes header rows and totals rows.
+
+ Does not track updates to underlying changes to CTTable To synchronize
+ with changes to the underlying CTTable, call {@link #updateReferences()}.
+
+ @return the area of the table
+ @see "Open Office XML Part 4: chapter 3.5.1.2, attribute ref"
+
+
+ Set the area reference for the cells which this table covers. The area
+ includes includes header rows and totals rows. Automatically synchronizes
+ any changes by calling {@link #updateHeaders()}.
+
+ Note: The area's width should be identical to the amount of columns in
+ the table or the table may be invalid. All header rows, totals rows and
+ at least one data row must fit inside the area. Updating the area with
+ this method does not create or remove any columns and does not change any
+ cell values.
+
+ @see "Open Office XML Part 4: chapter 3.5.1.2, attribute ref"
+
+
+ @return the display name of the Table, if set
+
+
+ @return the number of mapped table columns (see Open Office XML Part 4: chapter 3.5.1.4)
+
+
+
+ 0 for no totals rows, 1 for totals row shown.
+ Values > 1 are not currently used by Excel up through 2016, and the OOXML spec
+ doesn't define how they would be implemented.
+
+
+
+
+ 0 for no header rows, 1 for table headers shown.
+ Values > 1 might be used by Excel for pivot tables?
+
+
+
+ @return The reference for the cell in the top-left part of the table
+ (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref)
+
+ To synchronize with changes to the underlying CTTable,
+ call {@link #updateReferences()}.
+
+
+ @return The reference for the cell in the bottom-right part of the table
+ (see Open Office XML Part 4: chapter 3.5.1.2, attribute ref)
+
+ Does not track updates to underlying changes to CTTable
+ To synchronize with changes to the underlying CTTable,
+ call {@link #updateReferences()}.
+
+
+ @since POI 3.15 beta 3
+
+
+ Clears the cached values set by {@link #getStartCellReference()}
+ and {@link #getEndCellReference()}.
+ The next call to {@link #getStartCellReference()} and
+ {@link #getEndCellReference()} will synchronize the
+ cell references with the underlying CTTable.
+ Thus, {@link #updateReferences()} is inexpensive.
+
+ @since POI 3.15 beta 3
+
+
+ @return the total number of rows in the selection. (Note: in this version autofiltering is ignored)
+ Returns 0 if the start or end cell references are not set.
+
+ To synchronize with changes to the underlying CTTable,
+ call {@link #updateReferences()}.
+
+
+ Synchronize table headers with cell values in the parent sheet.
+ Headers must be in sync, otherwise Excel will display a
+ "Found unreadable content" message on startup.
+
+ If calling both {@link #updateReferences()} and
+ {@link #updateHeaders()}, {@link #updateReferences()}
+ should be called first.
+
+
+ Gets the relative column index of a column in this table having the header name column.
+ The column index is relative to the left-most column in the table, 0-indexed.
+ Returns -1 if column is not a header name in table.
+
+ Column Header names are case-insensitive
+
+ Note: this function caches column names for performance. To flush the cache (because columns
+ have been moved or column headers have been changed), {@link #updateHeaders()} must be called.
+
+ @since 3.15 beta 2
+
+
+
+ Note this list is static - once read, it does not notice later changes to the underlying column structures
+
+
+
+
+
+ This is misleading. The Spec indicates this is true if the totals row
+ hasever been shown, not whether or not it is currently displayed.
+
+
+
+
+ Get the table which contains this column
+
+ the table containing this column
+
+
+ Represents a text box in a SpreadsheetML Drawing.
+
+ @author Yegor Kozlov
+
+
+ Represents a paragraph of text within the Containing text body.
+ The paragraph is the highest level text separation mechanism.
+
+
+ Add a new run of text
+
+ @return a new run of text
+
+
+ Insert a line break
+
+ @return text run representing this line break ('\n')
+
+
+ get or set the alignment that is to be applied to the paragraph.
+ Possible values for this include left, right, centered, justified and distributed,
+ If this attribute is omitted, then a value of left is implied.
+ @return alignment that is applied to the paragraph
+
+
+ Determines where vertically on a line of text the actual words are positioned. This deals
+ with vertical placement of the characters with respect to the baselines. For instance
+ having text anchored to the top baseline, anchored to the bottom baseline, centered in
+ between, etc.
+ If this attribute is omitted, then a value of baseline is implied.
+ @return alignment that is applied to the paragraph
+
+
+ @return the font to be used on bullet characters within a given paragraph
+
+
+ @return the character to be used in place of the standard bullet point
+
+
+
+ @return the color of bullet characters within a given paragraph.
+ A null value means to use the text font color.
+
+
+
+
+ @return the indent applied to the first line of text in the paragraph.
+
+
+ Specifies the left margin of the paragraph. This is specified in Addition to the text body
+ inset and applies only to this text paragraph. That is the text body inset and the LeftMargin
+ attributes are Additive with respect to the text position.
+
+ @param value the left margin of the paragraph, -1 to clear the margin and use the default of 0.
+
+
+ Specifies the right margin of the paragraph. This is specified in Addition to the text body
+ inset and applies only to this text paragraph. That is the text body inset and the marR
+ attributes are Additive with respect to the text position.
+
+ @param value the right margin of the paragraph, -1 to clear the margin and use the default of 0.
+
+
+
+ @return the default size for a tab character within this paragraph in points
+
+
+ Add a single tab stop to be used on a line of text when there are one or more tab characters
+ present within the text.
+
+ @param value the position of the tab stop relative to the left margin
+
+
+
+
+
+ Specifies the particular level text properties that this paragraph will follow.
+ The value for this attribute formats the text according to the corresponding level
+ paragraph properties defined in the list of styles associated with the body of text
+ that this paragraph belongs to (therefore in the parent shape).
+
+ Note that the closest properties object to the text is used, therefore if there is
+ a conflict between the text paragraph properties and the list style properties for
+ this level then the text paragraph properties will take precedence.
+
+ Returns the level of text properties that this paragraph will follow.
+
+ @return the text level of this paragraph (0-based). Default is 0.
+
+
+ Returns whether this paragraph has bullets
+
+
+ Set or unset this paragraph as a bullet point
+
+ @param flag whether text in this paragraph has bullets
+
+
+ Set this paragraph as an automatic numbered bullet point
+
+ @param scheme type of auto-numbering
+ @param startAt the number that will start number for a given sequence of automatically
+ numbered bullets (1-based).
+
+
+ Set this paragraph as an automatic numbered bullet point
+
+ @param scheme type of auto-numbering
+
+
+ Returns whether this paragraph has automatic numbered bullets
+
+
+ Returns the starting number if this paragraph has automatic numbered bullets, otherwise returns 0
+
+
+ Returns the auto number scheme if this paragraph has automatic numbered bullets, otherwise returns ListAutoNumber.ARABIC_PLAIN
+
+
+ Represents a run of text within the Containing text body. The run element is the
+ lowest level text separation mechanism within a text body.
+
+
+ @return font size in points or -1 if font size is not Set.
+
+
+
+ @return the spacing between characters within a text Run,
+ If this attribute is omitted then a value of 0 or no adjustment is assumed.
+
+
+ Specifies the typeface, or name of the font that is to be used for this text Run.
+
+ @param typeface the font to apply to this text Run.
+ The value of null unsets the Typeface attribute from the underlying xml.
+
+
+ @return font family or null if not Set
+
+
+ get or set whether a run of text will be formatted as strikethrough text. Default is false.
+
+
+ get or set whether a run of text will be formatted as a superscript text. Default is false.
+ Default base line offset is 30%
+
+
+ Set the baseline for both the superscript and subscript fonts.
+
+ The size is specified using a percentage.
+ Positive values indicate superscript, negative values indicate subscript.
+
+
+ @param baselineOffset
+
+
+ get or set whether a run of text will be formatted as a superscript text. Default is false.
+ Default base line offset is -25%.
+
+
+ @return whether a run of text will be formatted as a superscript text. Default is false.
+
+
+ get or set whether this run of text is formatted as bold text
+
+
+ get or set whether this run of text is formatted as italic text
+
+
+ get or set whether this run of text is formatted as underlined text
+
+
+ Create a new XSSFVBAPart node
+
+
+ Construct XSSFVBAPart from a package part
+
+ @param part the package part holding the VBA data,
+ @param rel the package relationship holding this part
+
+
+ Like *PictureData, VBA objects store the actual content in the part
+ directly without keeping a copy like all others therefore we need to
+ handle them differently.
+
+
+ Represents a SpreadsheetML VML Drawing.
+
+
+ In Excel 2007 VML Drawings are used to describe properties of cell comments,
+ although the spec says that VML is deprecated:
+
+
+ The VML format is a legacy format originally introduced with Office 2000 and is included and fully defined
+ in this Standard for backwards compatibility reasons. The DrawingML format is a newer and richer format
+ Created with the goal of eventually replacing any uses of VML in the Office Open XML formats. VML should be
+ considered a deprecated format included in Office Open XML for legacy reasons only and new applications that
+ need a file format for Drawings are strongly encouraged to use preferentially DrawingML
+
+
+
+ Warning - Excel is known to Put invalid XML into these files!
+ For example, >br< without being closed or escaped crops up.
+
+
+ See 6.4 VML - SpreadsheetML Drawing in Office Open XML Part 4 - Markup Language Reference.pdf
+
+ @author Yegor Kozlov
+
+
+ regexp to parse shape ids, in VML they have weird form of id="_x0000_s1026"
+
+
+ Create a new SpreadsheetML Drawing
+
+ @see XSSFSheet#CreateDrawingPatriarch()
+
+
+ Construct a SpreadsheetML Drawing from a namespace part
+
+ @param part the namespace part holding the Drawing data,
+ the content type must be application/vnd.Openxmlformats-officedocument.Drawing+xml
+ @param rel the namespace relationship holding this Drawing,
+ the relationship type must be http://schemas.Openxmlformats.org/officeDocument/2006/relationships/drawing
+
+
+ Initialize a new Speadsheet VML Drawing
+
+
+ Find a shape with ClientData of type "NOTE" and the specified row and column
+
+ @return the comment shape or null
+
+
+ High level representation of a SpreadsheetML workbook. This is the first object most users
+ will construct whether they are Reading or writing a workbook. It is also the
+ top level object for creating new sheets/etc.
+
+
+ Width of one character of the default font in pixels. Same for Calibry and Arial.
+
+
+ Excel silently tRuncates long sheet names to 31 chars.
+ This constant is used to ensure uniqueness in the first 31 chars
+
+
+ Extended windows meta file
+
+
+ Windows Meta File
+
+
+ Mac PICT format
+
+
+ JPEG format
+
+
+ PNG format
+
+
+ Device independent bitmap
+
+
+ Images formats supported by XSSF but not by HSSF
+
+
+ The underlying XML bean
+
+
+ this holds the XSSFSheet objects attached to this workbook
+
+
+ this holds the XSSFName objects attached to this workbook, keyed by lower-case name
+
+
+ this holds the XSSFName objects attached to this workbook
+
+
+ shared string table - a cache of strings in this workbook
+
+
+ A collection of shared objects used for styling content,
+ e.g. fonts, cell styles, colors, etc.
+
+
+ The locator of user-defined functions.
+ By default includes functions from the Excel Analysis Toolpack
+
+
+ TODO
+
+
+ External Links, for referencing names or cells in other workbooks.
+
+
+ A collection of custom XML mappings
+
+
+ Used to keep track of the data formatter so that all
+ CreateDataFormatter calls return the same one for a given
+ book. This ensures that updates from one places is visible
+ someplace else.
+
+
+ The policy to apply in the event of missing or
+ blank cells when fetching from a row.
+ See {@link NPOI.ss.usermodel.Row.MissingCellPolicy}
+
+
+ array of pictures for this workbook
+
+
+ cached instance of XSSFCreationHelper for this workbook
+ @see {@link #getCreationHelper()}
+
+
+ List of all pivot tables in workbook
+
+
+ Create a new SpreadsheetML workbook.
+
+
+ Create a new SpreadsheetML workbook.
+ @param workbookType The type of workbook to make (.xlsx or .xlsm).
+
+
+ Constructs a XSSFWorkbook object given a OpenXML4J Package object,
+ see http://poi.apache.org/oxml4j/.
+
+ Once you have finished working with the Workbook, you should close the package
+ by calling pkg.close, to avoid leaving file handles open.
+
+ Creating a XSSFWorkbook from a file-backed OPC Package has a lower memory
+ footprint than an InputStream backed one.
+
+ @param pkg the OpenXML4J OPC Package object.
+
+
+ Constructs a XSSFWorkbook object, by buffering the whole stream into memory
+ and then opening an {@link OPCPackage} object for it.
+
+ Using an {@link InputStream} requires more memory than using a File, so
+ if a {@link File} is available then you should instead do something like
+
+ OPCPackage pkg = OPCPackage.open(path);
+ XSSFWorkbook wb = new XSSFWorkbook(pkg);
+ // work with the wb object
+ ......
+ pkg.close(); // gracefully closes the underlying zip file
+
+
+
+
+
+ Not normally to be called externally, but possibly to be overridden to avoid
+ the DOM based parse of large sheets (see examples).
+
+
+ Create a new CT_Workbook with all values Set to default
+
+
+ Create a new SpreadsheetML namespace and Setup the default minimal content
+
+
+ Return the underlying XML bean
+
+ @return the underlying CT_Workbook bean
+
+
+ Adds a picture to the workbook.
+
+ @param pictureData The bytes of the picture
+ @param format The format of the picture.
+
+ @return the index to this picture (0 based), the Added picture can be obtained from {@link #getAllPictures()} .
+ @see Workbook#PICTURE_TYPE_EMF
+ @see Workbook#PICTURE_TYPE_WMF
+ @see Workbook#PICTURE_TYPE_PICT
+ @see Workbook#PICTURE_TYPE_JPEG
+ @see Workbook#PICTURE_TYPE_PNG
+ @see Workbook#PICTURE_TYPE_DIB
+ @see #getAllPictures()
+
+
+ Adds a picture to the workbook.
+
+ @param is The sream to read image from
+ @param format The format of the picture.
+
+ @return the index to this picture (0 based), the Added picture can be obtained from {@link #getAllPictures()} .
+ @see Workbook#PICTURE_TYPE_EMF
+ @see Workbook#PICTURE_TYPE_WMF
+ @see Workbook#PICTURE_TYPE_PICT
+ @see Workbook#PICTURE_TYPE_JPEG
+ @see Workbook#PICTURE_TYPE_PNG
+ @see Workbook#PICTURE_TYPE_DIB
+ @see #getAllPictures()
+
+
+ Create an XSSFSheet from an existing sheet in the XSSFWorkbook.
+ The Cloned sheet is a deep copy of the original.
+
+ @param sheetNum The index of the sheet to clone
+ @return XSSFSheet representing the Cloned sheet.
+ @throws ArgumentException if the sheet index in invalid
+ @throws POIXMLException if there were errors when cloning
+
+
+ Create an XSSFSheet from an existing sheet in the XSSFWorkbook.
+ The cloned sheet is a deep copy of the original but with a new given
+ name.
+
+ @param sheetNum The index of the sheet to clone
+ @param newName The name to set for the newly created sheet
+ @return XSSFSheet representing the cloned sheet.
+ @throws IllegalArgumentException if the sheet index or the sheet
+ name is invalid
+ @throws POIXMLException if there were errors when cloning
+
+
+ @since 3.14-Beta1
+
+
+ Generate a valid sheet name based on the existing one. Used when cloning sheets.
+
+ @param srcName the original sheet name to
+ @return clone sheet name
+
+
+
+ Create a new XSSFCellStyle and add it to the workbook's style table
+
+ the new XSSFCellStyle object
+
+
+
+ Returns the workbook's data format table (a factory for creating data format strings).
+
+ the XSSFDataFormat object
+
+
+
+ Create a new Font and add it to the workbook's font table
+
+
+
+
+ Create an XSSFSheet for this workbook, Adds it to the sheets and returns
+ the high level representation. Use this to create new sheets.
+
+ @return XSSFSheet representing the new sheet.
+
+
+ Create a new sheet for this Workbook and return the high level representation.
+ Use this to create new sheets.
+
+
+ Note that Excel allows sheet names up to 31 chars in length but other applications
+ (such as OpenOffice) allow more. Some versions of Excel crash with names longer than 31 chars,
+ others - tRuncate such names to 31 character.
+
+
+ POI's SpreadsheetAPI silently tRuncates the input argument to 31 characters.
+ Example:
+
+
+ Sheet sheet = workbook.CreateSheet("My very long sheet name which is longer than 31 chars"); // will be tRuncated
+ assert 31 == sheet.SheetName.Length;
+ assert "My very long sheet name which i" == sheet.SheetName;
+
+
+
+ Except the 31-character constraint, Excel applies some other rules:
+
+ Sheet name MUST be unique in the workbook and MUST NOT contain the any of the following characters:
+
+ - 0x0000
+ - 0x0003
+ - colon (:)
+ - backslash (\)
+ - asterisk (*)
+ - question mark (?)
+ - forward slash (/)
+ - opening square bracket ([)
+ - closing square bracket (])
+
+ The string MUST NOT begin or end with the single quote (') character.
+
+
+
+ See {@link org.apache.poi.ss.util.WorkbookUtil#createSafeSheetName(String nameProposal)}
+ for a safe way to create valid names
+
+ @param sheetname sheetname to set for the sheet.
+ @return Sheet representing the new sheet.
+ @throws IllegalArgumentException if the name is null or invalid
+ or workbook already contains a sheet with this name
+ @see org.apache.poi.ss.util.WorkbookUtil#createSafeSheetName(String nameProposal)
+
+
+ Finds a font that matches the one with the supplied attributes
+
+
+ Finds a font that matches the one with the supplied attributes
+
+
+ Convenience method to Get the active sheet. The active sheet is is the sheet
+ which is currently displayed when the workbook is viewed in Excel.
+ 'Selected' sheet(s) is a distinct concept.
+
+
+ Gets all pictures from the Workbook.
+
+ @return the list of pictures (a list of {@link XSSFPictureData} objects.)
+ @see #AddPicture(byte[], int)
+
+
+ Get the cell style object at the given index
+
+ @param idx index within the set of styles
+ @return XSSFCellStyle object at the index
+
+
+ Get the font at the given index number
+
+ @param idx index number
+ @return XSSFFont at the index
+
+
+
+ Get the first named range with the given name.
+ Note: names of named ranges are not unique as they are scoped by sheet.
+ {@link #getNames(String name)} returns all named ranges with the given name.
+
+ named range name
+ return XSSFName with the given name. null is returned no named range could be found.
+
+
+
+ Get the named ranges with the given name.
+ Note:Excel named ranges are case-insensitive and
+ this method performs a case-insensitive search.
+
+ named range name
+ return list of XSSFNames with the given name. An empty list if no named ranges could be found
+
+
+
+ Get a list of all the named ranges in the workbook.
+
+ return list of XSSFNames in the workbook
+
+
+ Gets the named range index by his name
+ Note:Excel named ranges are case-insensitive and
+ this method performs a case-insensitive search.
+
+ @param name named range name
+ @return named range index
+
+
+ Get the number of styles the workbook Contains
+
+ @return count of cell styles
+
+
+ Get the number of fonts in the this workbook
+
+ @return number of fonts
+
+
+ Get the number of named ranges in the this workbook
+
+ @return number of named ranges
+
+
+ Get the number of worksheets in the this workbook
+
+ @return number of worksheets
+
+
+ Retrieves the reference for the printarea of the specified sheet, the sheet name is Appended to the reference even if it was not specified.
+ @param sheetIndex Zero-based sheet index (0 Represents the first sheet to keep consistent with java)
+ @return String Null if no print area has been defined
+
+
+ Get sheet with the given name (case insensitive match)
+
+ @param name of the sheet
+ @return XSSFSheet with the name provided or null if it does not exist
+
+
+
+
+ Returns the index of the sheet by his name (case insensitive match)
+
+ the sheet name
+ index of the sheet (0 based) or -1 if not found
+
+
+ Returns the index of the given sheet
+
+ @param sheet the sheet to look up
+ @return index of the sheet (0 based). -1 if not found
+
+
+ Get the sheet name
+
+ @param sheetIx Number
+ @return Sheet name
+
+
+ Allows foreach loops:
+
+ XSSFWorkbook wb = new XSSFWorkbook(package);
+ for(XSSFSheet sheet : wb){
+
+ }
+
+
+
+ Are we a normal workbook (.xlsx), or a
+ macro enabled workbook (.xlsm)?
+
+
+ As {@link #removeName(String)} is not necessarily unique
+ (name + sheet index is unique), this method is more accurate.
+
+ @param name the name to remove.
+
+
+ Delete the printarea for the sheet specified
+
+ @param sheetIndex 0-based sheet index (0 = First Sheet)
+
+
+ Removes sheet at the given index.
+
+ Care must be taken if the Removed sheet is the currently active or only selected sheet in
+ the workbook. There are a few situations when Excel must have a selection and/or active
+ sheet. (For example when printing - see Bug 40414).
+
+ This method Makes sure that if the Removed sheet was active, another sheet will become
+ active in its place. Furthermore, if the Removed sheet was the only selected sheet, another
+ sheet will become selected. The newly active/selected sheet will have the same index, or
+ one less if the Removed sheet was the last in the workbook.
+
+ @param index of the sheet (0-based)
+
+
+ Gracefully remove references to the sheet being deleted
+
+ @param index the 0-based index of the sheet to delete
+
+
+ Retrieves the current policy on what to do when
+ Getting missing or blank cells from a row.
+ The default is to return blank and null cells.
+ {@link MissingCellPolicy}
+
+
+ Validate sheet index
+
+ @param index the index to validate
+ @throws ArgumentException if the index is out of range (index
+ < 0 || index >= NumberOfSheets).
+
+
+ Gets the first tab that is displayed in the list of tabs in excel.
+
+ @return integer that Contains the index to the active sheet in this book view.
+
+
+
+ For the Convenience of Java Programmers maintaining pointers.
+ @see #setPrintArea(int, String)
+ @param sheetIndex Zero-based sheet index (0 = First Sheet)
+ @param startColumn Column to begin printarea
+ @param endColumn Column to end the printarea
+ @param startRow Row to begin the printarea
+ @param endRow Row to end the printarea
+
+
+ Generates a NameRecord to represent a built-in region
+
+ @return a new NameRecord
+ @throws ArgumentException if sheetNumber is invalid
+ @throws POIXMLException if such a name already exists in the workbook
+
+
+ We only Set one sheet as selected for compatibility with HSSF.
+
+
+ Set the sheet name.
+
+ @param sheetIndex sheet number (0 based)
+ @param sheetname the new sheet name
+ @throws ArgumentException if the name is null or invalid
+ or workbook already Contains a sheet with this name
+ @see {@link #CreateSheet(String)}
+ @see {@link NPOI.ss.util.WorkbookUtil#CreateSafeSheetName(String nameProposal)}
+ for a safe way to create valid names
+
+
+ Sets the order of appearance for a given sheet.
+
+ @param sheetname the name of the sheet to reorder
+ @param pos the position that we want to insert the sheet into (0 based)
+
+
+ update sheet-scoped named ranges in this workbook after changing the sheet order
+ of a sheet at oldIndex to newIndex.
+ Sheets between these indices will move left or right by 1.
+
+ @param oldIndex the original index of the re-ordered sheet
+ @param newIndex the new index of the re-ordered sheet
+
+
+ marshal named ranges from the {@link #namedRanges} collection to the underlying CT_Workbook bean
+
+
+
+ Write the document to the specified stream, and optionally leave the stream open without closing it.
+
+ the stream you wish to write the xlsx to
+ leave stream open or not
+
+
+ Returns SharedStringsTable - the cache of strings for this workbook
+
+ @return the shared string table
+
+
+ Return a object representing a collection of shared objects used for styling content,
+ e.g. fonts, cell styles, colors, etc.
+
+
+ Returns the Theme of current workbook.
+
+
+ Returns an object that handles instantiating concrete
+ classes of the various instances for XSSF.
+
+
+ Determines whether a workbook Contains the provided sheet name.
+ For the purpose of comparison, long names are tRuncated to 31 chars.
+
+ @param name the name to Test (case insensitive match)
+ @param excludeSheetIdx the sheet to exclude from the check or -1 to include all sheets in the Check.
+ @return true if the sheet Contains the name, false otherwise.
+
+
+
+ Gets a bool value that indicates whether the date systems used in the workbook starts in 1904.
+ The default value is false, meaning that the workbook uses the 1900 date system,
+ where 1/1/1900 is the first day in the system.
+
+ True if the date systems used in the workbook starts in 1904
+
+
+ Get the document's embedded files.
+
+
+ Check whether a sheet is hidden.
+
+ Note that a sheet could instead be Set to be very hidden, which is different
+ ({@link #isSheetVeryHidden(int)})
+
+ @param sheetIx Number
+ @return true if sheet is hidden
+
+
+ Check whether a sheet is very hidden.
+
+ This is different from the normal hidden status
+ ({@link #isSheetHidden(int)})
+
+ @param sheetIx sheet index to check
+ @return true if sheet is very hidden
+
+
+ Sets the visible state of this sheet.
+
+ Calling setSheetHidden(sheetIndex, true) is equivalent to
+ setSheetHidden(sheetIndex, Workbook.SHEET_STATE_HIDDEN).
+
+ Calling setSheetHidden(sheetIndex, false) is equivalent to
+ setSheetHidden(sheetIndex, Workbook.SHEET_STATE_VISIBLE).
+
+
+ @param sheetIx the 0-based index of the sheet
+ @param hidden whether this sheet is hidden
+ @see #setSheetHidden(int, int)
+
+
+ Hide or unhide a sheet.
+
+
+ - 0 - visible.
+ - 1 - hidden.
+ - 2 - very hidden.
+
+ @param sheetIx the sheet index (0-based)
+ @param state one of the following Workbook constants:
+ Workbook.SHEET_STATE_VISIBLE,
+ Workbook.SHEET_STATE_HIDDEN, or
+ Workbook.SHEET_STATE_VERY_HIDDEN.
+ @throws ArgumentException if the supplied sheet index or state is invalid
+
+
+
+ Hide or unhide a sheet.
+
+ The sheet number
+ 0 for not hidden, 1 for hidden, 2 for very hidden
+
+
+ Fired when a formula is deleted from this workbook,
+ for example when calling cell.SetCellFormula(null)
+
+ @see XSSFCell#setCellFormula(String)
+
+
+ Return the CalculationChain object for this workbook
+
+ The calculation chain object specifies the order in which the cells in a workbook were last calculated
+
+
+ @return the CalculationChain object or null if not defined
+
+
+ * Returns the list of {@link ExternalLinksTable} object for this workbook
+ *
+ * The external links table specifies details of named ranges etc
+ * that are referenced from other workbooks, along with the last seen
+ * values of what they point to.
+ *
+ * Note that Excel uses index 0 for the current workbook, so the first
+ * External Links in a formula would be '[1]Foo' which corresponds to
+ * entry 0 in this list.
+
+ * @return the ExternalLinksTable list, which may be empty
+
+
+
+ @return a collection of custom XML mappings defined in this workbook
+
+
+
+ @return the helper class used to query the custom XML mapping defined in this workbook
+
+
+ Adds the External Link Table part and relations required to allow formulas
+ referencing the specified external workbook to be added to this one. Allows
+ formulas such as "[MyOtherWorkbook.xlsx]Sheet3!$A$5" to be added to the
+ file, for workbooks not already linked / referenced.
+
+ @param name The name the workbook will be referenced as in formulas
+ @param workbook The open workbook to fetch the link required information from
+
+
+ Specifies a bool value that indicates whether structure of workbook is locked.
+ A value true indicates the structure of the workbook is locked. Worksheets in the workbook can't be Moved,
+ deleted, hidden, unhidden, or Renamed, and new worksheets can't be inserted.
+ A value of false indicates the structure of the workbook is not locked.
+
+ @return true if structure of workbook is locked
+
+
+ Specifies a bool value that indicates whether the windows that comprise the workbook are locked.
+ A value of true indicates the workbook windows are locked. Windows are the same size and position each time the
+ workbook is opened.
+ A value of false indicates the workbook windows are not locked.
+
+ @return true if windows that comprise the workbook are locked
+
+
+ Specifies a bool value that indicates whether the workbook is locked for revisions.
+
+ @return true if the workbook is locked for revisions.
+
+
+ Locks the structure of workbook.
+
+
+ Unlocks the structure of workbook.
+
+
+ Locks the windows that comprise the workbook.
+
+
+ Unlocks the windows that comprise the workbook.
+
+
+ Locks the workbook for revisions.
+
+
+ Unlocks the workbook for revisions.
+
+
+ Remove Pivot Tables and PivotCaches from the workbooka
+
+
+
+ Returns the locator of user-defined functions.
+
+ The default instance : the built-in functions with the Excel Analysis Tool Pack.
+ To Set / Evaluate custom functions you need to register them as follows:
+
+
+
+
+ @return wrapped instance of UDFFinder that allows seeking functions both by index and name
+
+
+ Register a new toolpack in this workbook.
+
+ @param toopack the toolpack to register
+
+
+ Whether the application shall perform a full recalculation when the workbook is opened.
+
+ Typically you want to force formula recalculation when you modify cell formulas or values
+ of a workbook previously Created by Excel. When Set to true, this flag will tell Excel
+ that it needs to recalculate all formulas in the workbook the next time the file is opened.
+
+
+ Note, that recalculation updates cached formula results and, thus, modifies the workbook.
+ Depending on the version, Excel may prompt you with "Do you want to save the Changes in filename?"
+ on close.
+
+
+ @param value true if the application will perform a full recalculation of
+ workbook values when the workbook is opened
+ @since 3.8
+
+
+ Whether Excel will be asked to recalculate all formulas when the workbook is opened.
+
+ @since 3.8
+
+
+
+ Returns the spreadsheet version (EXCLE2007) of this workbook
+
+
+
+ Returns the data table with the given name (case insensitive).
+
+ @param name the data table name (case-insensitive)
+ @return The Data table in the workbook named name, or null if no table is named name.
+ @since 3.15 beta 2
+
+
+ Add pivotCache to the workbook
+
+
+ Adds a vbaProject.bin file to the workbook. This will change the workbook
+ type if necessary.
+
+ @throws IOException
+
+
+ Adds a vbaProject.bin file taken from another, given workbook to this one.
+ @throws IOException
+ @throws InvalidFormatException
+
+
+ This is a seriously sick fix for the fact that some .xlsx
+ files contain raw bits of HTML, without being escaped
+ or properly turned into XML.
+ The result is that they contain things like >br<,
+ which breaks the XML parsing.
+ This very sick InputStream wrapper attempts to spot
+ these go past, and fix them.
+ Only works for UTF-8 and US-ASCII based streams!
+ It should only be used where experience Shows the problem
+ can occur...
+
+
+ Warning - doesn't fix!
+
+
+ Reads into the buffer from the spare bytes
+
+
+ We don't support .xlsb files, sorry
+
+
+
+ Updated named ranges
+
+
+
+
+
+ Update formulas.
+
+
+
+
+
+
+ Update the formulas in specified row using the formula shifting
+ policy specified by shifter
+
+ the row to update the formulas on
+ the formula shifting policy
+
+
+
+ Shift a formula using the supplied FormulaShifter
+
+ the row of the cell this formula belongs to.
+ Used to get a reference to the parent workbook.
+ the formula to shift
+ the FormulaShifter object that operates on
+ the Parsed formula tokens
+ the Shifted formula if the formula was changed, null if
+ the formula wasn't modified
+
+
+
+ Update the formulas in specified column using the formula shifting
+ policy specified by shifter
+
+ the column to update the formulas on
+ the formula shifting policy
+
+
+
+ Shift a formula using the supplied FormulaShifter
+
+ the row of the cell this formula belongs to.
+ Used to get a reference to the parent workbook.
+ the formula to shift
+ the FormulaShifter object that operates on
+ the Parsed formula tokens
+ the Shifted formula if the formula was changed, null if
+ the formula wasn't modified
+
+
+
+ Shift the Hyperlink anchors(not the hyperlink text, even if the hyperlink is of type LINK_DOCUMENT and refers to a cell that was shifted). Hyperlinks do not track the content they point to.
+
+
+
+
+
+
+ Sets default font, size for text in the document.
+
+
+
+
+ Helper class to extract text from an OOXML Word file
+
+
+ Should we also fetch the hyperlinks, when fetching
+ the text content? Default is to only output the
+ hyperlink label, and not the contents
+
+
+ Base class for XWPF paragraphs
+
+ This class isn't used ...
+
+
+ Decorator class for XWPFParagraph allowing to add comments
+ found in paragraph to its text
+
+ @author Yury Batrakov (batrakov at gmail.com)
+
+
+
+ A .docx file can have no headers/footers, the same header/footer
+ on each page, odd/even page footers, and optionally also
+ a different header/footer on the first page.
+ This class handles sorting out what there is, and giving you
+ the right headers and footers for the document.
+
+
+ Figures out the policy for the given document,
+ and Creates any header and footer objects
+ as required.
+
+
+ Figures out the policy for the given document,
+ and Creates any header and footer objects
+ as required.
+
+
+ MB 24 May 2010. Created this overloaded buildHdrFtr() method because testing demonstrated
+ that the XWPFFooter or XWPFHeader object returned by calls to the CreateHeader(int, XWPFParagraph[])
+ and CreateFooter(int, XWPFParagraph[]) methods or the GetXXXXXHeader/Footer methods where
+ headers or footers had been Added to a document since it had been Created/opened, returned
+ an object that Contained no XWPFParagraph objects even if the header/footer itself did contain
+ text. The reason was that this line of code; CTHdrFtr ftr = CTHdrFtr.Factory.NewInstance();
+ Created a brand new instance of the CTHDRFtr class which was then populated with data when
+ it should have recovered the CTHdrFtr object encapsulated within the XWPFHeaderFooter object
+ that had previoulsy been instantiated in the CreateHeader(int, XWPFParagraph[]) or
+ CreateFooter(int, XWPFParagraph[]) methods.
+
+
+ Returns the odd page header. This is
+ also the same as the default one...
+
+
+ Returns the odd page footer. This is
+ also the same as the default one...
+
+
+ Get the header that applies to the given
+ (1 based) page.
+ @param pageNumber The one based page number
+
+
+ Get this section header for the given type
+
+ @param type of header to return
+ @return {@link XWPFHeader} object
+
+
+ Get the footer that applies to the given
+ (1 based) page.
+ @param pageNumber The one based page number
+
+
+ Get this section footer for the given type
+
+ @param type of footer to return
+ @return {@link XWPFFooter} object
+
+
+ Base decorator class for XWPFParagraph
+
+
+ Experimental abstract class that is a base for XWPFSDT and XWPFSDTCell
+
+ WARNING - APIs expected to change rapidly.
+
+ These classes have so far been built only for Read-only Processing.
+
+
+ @return first SDT Title
+
+
+ @return first SDT Tag
+
+
+ @return the content object
+
+
+ @return null
+
+
+ @return document part
+
+
+ @return partType
+
+
+ @return element type
+
+
+
+ 9 Jan 2010
+
+
+ // TODO insert Javadoc here!
+
+ @author epp
+
+
+
+ The different kinds of {@link IBody} that exist
+
+
+ Specifies all types of borders which can be specified for WordProcessingML
+ objects which have a border. Borders can be Separated into two types:
+
+ - Line borders: which specify a pattern to be used when Drawing a line around the
+ specified object.
+
+ - Art borders: which specify a repeated image to be used
+ when Drawing a border around the specified object. Line borders may be
+ specified on any object which allows a border, however, art borders may only
+ be used as a border at the page level - the borders under the pgBorders
+ element
+
+
+ @author Gisella Bronzetti
+
+
+ Specifies a line border consisting of a single line around the parent
+ object.
+
+
+ specifies an art border consisting of a repeated image of an apple
+
+
+ specifies an art border consisting of a repeated image of a shell pattern
+
+
+ specifies an art border consisting of a repeated image of a baby pacifier
+
+
+ specifies an art border consisting of a repeated image of a baby rattle
+
+
+ specifies an art border consisting of a repeated image of a set of
+ balloons
+
+
+ specifies an art border consisting of a repeated image of a hot air
+ balloon
+
+
+ specifies an art border consisting of a repeating image of a black and
+ white background.
+
+
+ specifies an art border consisting of a repeating image of a black dot on
+ a white background.
+
+
+ specifies an art border consisting of a repeating image of a black and
+ white background
+
+
+ specifies an art border consisting of a repeating image of a black and
+ white background.
+
+
+ specifies an art border consisting of a repeating image of a black and
+ white background.
+
+
+ specifies an art border consisting of a repeating image of a white dot on
+ a black background.
+
+
+ specifies an art border consisting of a repeating image of a black and
+ white background.
+
+
+ specifies an art border consisting of a repeating image of a black and
+ white background.
+
+
+ specifies an art border consisting of a repeating image of a black and
+ white background
+
+
+ specifies an art border consisting of a repeating image of a black and
+ white background
+
+
+ specifies an art border consisting of a repeated image of bats
+
+
+ specifies an art border consisting of repeating images of birds
+
+
+ specifies an art border consisting of a repeated image of birds flying
+
+
+ specifies an art border consisting of a repeated image of a cabin
+
+
+ specifies an art border consisting of a repeated image of a piece of cake
+
+
+ specifies an art border consisting of a repeated image of candy corn
+
+
+ specifies an art border consisting of a repeated image of a knot work
+ pattern
+
+
+ specifies an art border consisting of a banner.
+
+ if the border is on the left or right, no border is displayed.
+
+
+
+ specifies an art border consisting of a repeating image of a chain link
+ pattern.
+
+
+ specifies an art border consisting of a repeated image of a champagne
+ bottle
+
+
+ specifies an art border consisting of repeating images of a compass
+
+
+ specifies an art border consisting of a repeating image of a colored
+ pattern.
+
+
+ specifies an art border consisting of a repeated image of a checkerboard
+
+
+ specifies an art border consisting of a repeated image of a christmas
+ tree
+
+
+ specifies an art border consisting of repeating images of lines and
+ circles
+
+
+ specifies an art border consisting of a repeated image of a rectangular
+ pattern
+
+
+ specifies an art border consisting of a repeated image of a wave
+
+
+ specifies an art border consisting of a repeated image of a clock
+
+
+ specifies an art border consisting of repeating images of a compass
+
+
+ specifies an art border consisting of a repeated image of confetti
+
+
+ specifies an art border consisting of a repeated image of confetti
+
+
+ specifies an art border consisting of a repeated image of confetti
+
+
+ specifies an art border consisting of a repeated image of confetti
+ streamers
+
+
+ specifies an art border consisting of a repeated image of confetti
+
+
+ specifies an art border consisting of a repeated image
+
+
+ specifies an art border consisting of a dashed line
+
+
+ specifies an art border consisting of a dotted line
+
+
+ specifies an art border consisting of a repeated image of a maze-like
+ pattern
+
+
+ specifies an art border consisting of a repeated image of a butterfly
+
+
+ specifies an art border consisting of a repeated image of a fish
+
+
+ specifies an art border consisting of repeating images of insects.
+
+
+ specifies an art border consisting of a repeated image of a ladybug
+
+
+ specifies an art border consisting of repeating images of a cross-stitch
+ pattern
+
+
+ specifies an art border consisting of a repeated image of cupid
+
+
+ Specifies the Set of possible restart locations which may be used as to
+ determine the next available line when a break's type attribute has a value
+ of textWrapping.
+
+ @author Gisella Bronzetti
+
+
+ Specifies that the text wrapping break shall advance the text to the next
+ line in the WordProcessingML document, regardless of its position left to
+ right or the presence of any floating objects which intersect with the
+ line,
+
+ This is the Setting for a typical line break in a document.
+
+
+ Specifies that the text wrapping break shall behave as follows:
+
+ - If this line is broken into multiple regions (a floating object in
+ the center of the page has text wrapping on both sides:
+
+ - If this is the leftmost region of text flow on this line, advance
+ the text to the next position on the line
+ - Otherwise, treat this as a text wrapping break of type all.
+
+
+ - If this line is not broken into multiple regions, then treat this
+ break as a text wrapping break of type none.
+
+ If the parent paragraph is right to left, then these behaviors are
+ also reversed.
+
+
+
+ Specifies that the text wrapping break shall advance the text to the next
+ line in the WordProcessingML document which spans the full width of the
+ line.
+
+
+ Specifies the possible types of break characters in a WordProcessingML
+ document.
+ The break type determines the next location where text shall be
+ placed After this manual break is applied to the text contents
+
+ @author Gisella Bronzetti
+
+
+ Specifies that the current break shall restart itself on the next page of
+ the document when the document is displayed in page view.
+
+
+ Specifies that the current break shall restart itself on the next column
+ available on the current page when the document is displayed in page
+ view.
+
+ If the current section is not divided into columns, or the column break
+ occurs in the last column on the current page when displayed, then the
+ restart location for text shall be the next page in the document.
+
+
+
+ Specifies that the current break shall restart itself on the next line in
+ the document when the document is displayed in page view.
+ The determine of the next line shall be done subject to the value of the clear
+ attribute on the specified break character.
+
+
+ Extended windows meta file
+
+
+ Windows Meta File
+
+
+ Mac PICT format
+
+
+ JPEG format
+
+
+ PNG format
+
+
+ Device independent bitmap
+
+
+ GIF image format
+
+
+ Tag Image File (.tiff)
+
+
+ Encapsulated Postscript (.eps)
+
+
+ Windows Bitmap (.bmp)
+
+
+ WordPerfect graphics (.wpg)
+
+
+ Scalable Vector Graphics (.svg)
+
+
+ An IBody represents the different parts of the document which
+ can contain collections of Paragraphs and Tables. It provides a
+ common way to work with these and their contents.
+ Typically, this is something like a XWPFDocument, or one of
+ the parts in it like XWPFHeader, XWPFFooter, XWPFTableCell
+
+
+
+ returns the Part, to which the body belongs, which you need for Adding relationship to other parts
+ Actually it is needed of the class XWPFTableCell. Because you have to know to which part the tableCell
+ belongs.
+ @return the Part, to which the body belongs
+
+
+ Get the PartType of the body, for example
+ DOCUMENT, HEADER, FOOTER, FOOTNOTE,
+ @return the PartType of the body
+
+
+ Returns an Iterator with paragraphs and tables,
+ in the order that they occur in the text.
+
+
+ Returns the paragraph(s) that holds
+ the text of the header or footer.
+
+
+ Return the table(s) that holds the text
+ of the IBodyPart, for complex cases
+ where a paragraph isn't used.
+
+
+ if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer
+ the method will return this paragraph
+ if there is no corresponding {@link XWPFParagraph} the method will return null
+ @param p is instance of CTP and is searching for an XWPFParagraph
+ @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer
+ XWPFParagraph with the correspondig CTP p
+
+
+ if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header
+ the method will return this table
+ if there is no corresponding {@link XWPFTable} the method will return null
+ @param ctTable
+
+
+ Returns the paragraph that of position pos
+
+
+ Returns the table at position pos
+
+
+ inserts a new paragraph at position of the cursor
+ @param cursor
+
+
+ inserts a new Table at the cursor position.
+ @param cursor
+
+
+ inserts a new Table at position pos
+ @param pos
+ @param table
+
+
+ returns the TableCell to which the Table belongs
+ @param cell
+
+
+ Return XWPFDocument
+
+
+ 9 Jan 2010
+ @author Philipp Epp
+
+
+
+
+ Simple interface describing both {@link XWPFParagraph}
+ and {@link XWPFSDT}
+
+
+ Common interface for things that can occur
+ where a run (text with common stylings) can,
+ eg {@link XWPFRun} or {@link XWPFSDT}.
+ More methods to follow shortly!
+
+
+ Experimental interface to offer rudimentary Read-only Processing of
+ of the contentblock of an SDT/ContentControl.
+
+
+
+ WARNING - APIs expected to change rapidly
+
+
+ Interface for anything that can be within an STD:
+ {@link XWPFRun}, {@link XWPFTable}, {@link XWPFParagraph},
+ {@link XWPFSDT} etc
+
+
+ Specifies the logic which shall be used to calculate the line spacing of the
+ parent object when it is displayed in the document.
+
+ @author Gisella Bronzetti
+
+
+ Specifies that the line spacing of the parent object shall be
+ automatically determined by the size of its contents, with no
+ predetermined minimum or maximum size.
+
+
+ Specifies that the height of the line shall be exactly the value
+ specified, regardless of the size of the contents If the contents are too
+ large for the specified height, then they shall be clipped as necessary.
+
+
+ Specifies that the height of the line shall be at least the value
+ specified, but may be expanded to fit its content as needed.
+
+
+ Specifies all types of alignment which are available to be applied to objects in a
+ WordProcessingML document
+
+ @author Yegor Kozlov
+
+
+ * postion of a character in a paragrapho
+ * 1st RunPositon
+ * 2nd TextPosition
+ * 3rd CharacterPosition
+ *
+ *
+
+
+ Specifies all types of vertical alignment which are available to be applied to of all text
+ on each line displayed within a paragraph.
+
+ @author Gisella Bronzetti
+
+
+ Specifies that all text in the parent object shall be
+ aligned to the top of each character when displayed
+
+
+ Specifies that all text in the parent object shall be
+ aligned to the center of each character when displayed.
+
+
+ Specifies that all text in the parent object shall be
+ aligned to the baseline of each character when displayed.
+
+
+ Specifies that all text in the parent object shall be
+ aligned to the bottom of each character when displayed.
+
+
+ Specifies that all text in the parent object shall be
+ aligned automatically when displayed.
+
+
+ saves the begin and end position of a text in a Paragraph
+
+
+
+ The index of the start run
+
+
+
+
+ The index of the start CT_Text
+
+
+
+
+ The index of the start text character
+
+
+
+
+ the index of the end CT_Text
+
+
+
+
+ the index of the end text character
+
+
+
+ Specifies the types of patterns which may be used to create the underline
+ applied beneath the text in a Run.
+
+ @author Gisella Bronzetti
+
+
+ Specifies an underline consisting of a single line beneath all characters
+ in this Run.
+
+
+ Specifies an underline consisting of a single line beneath all non-space
+ characters in the Run. There shall be no underline beneath any space
+ character (breaking or non-breaking).
+
+
+ Specifies an underline consisting of two lines beneath all characters in
+ this run
+
+
+ Specifies an underline consisting of a single thick line beneath all
+ characters in this Run.
+
+
+ Specifies an underline consisting of a series of dot characters beneath
+ all characters in this Run.
+
+
+ Specifies an underline consisting of a series of thick dot characters
+ beneath all characters in this Run.
+
+
+ Specifies an underline consisting of a dashed line beneath all characters
+ in this Run.
+
+
+ Specifies an underline consisting of a series of thick dashes beneath all
+ characters in this Run.
+
+
+ Specifies an underline consisting of long dashed characters beneath all
+ characters in this Run.
+
+
+ Specifies an underline consisting of thick long dashed characters beneath
+ all characters in this Run.
+
+
+ Specifies an underline consisting of a series of dash, dot characters
+ beneath all characters in this Run.
+
+
+ Specifies an underline consisting of a series of thick dash, dot
+ characters beneath all characters in this Run.
+
+
+ Specifies an underline consisting of a series of dash, dot, dot
+ characters beneath all characters in this Run.
+
+
+ Specifies an underline consisting of a series of thick dash, dot, dot
+ characters beneath all characters in this Run.
+
+
+ Specifies an underline consisting of a single wavy line beneath all
+ characters in this Run.
+
+
+ Specifies an underline consisting of a single thick wavy line beneath all
+ characters in this Run.
+
+
+ Specifies an underline consisting of a pair of wavy lines beneath all
+ characters in this Run.
+
+
+ Specifies no underline beneath this Run.
+
+
+ Specifies possible values for the alignment of the contents of this run in
+ relation to the default appearance of the Run's text. This allows the text to
+ be repositioned as subscript or superscript without altering the font size of
+ the run properties.
+
+ @author Gisella Bronzetti
+
+
+ Specifies that the text in the parent run shall be located at the
+ baseline and presented in the same size as surrounding text.
+
+
+ Specifies that this text should be subscript. This Setting shall lower
+ the text in this run below the baseline and change it to a smaller size,
+ if a smaller size is available.
+
+
+ Specifies that this text should be superscript. This Setting shall raise
+ the text in this run above the baseline and change it to a smaller size,
+ if a smaller size is available.
+
+
+ @author Philipp Epp
+
+
+
+
+ Abstract Numbering Definition Type
+
+
+
+
+ Numbering Definition Type
+
+
+
+
+ Single Level Numbering Definition
+
+
+
+
+ Multilevel Numbering Definition
+
+
+
+
+ Hybrid Multilevel Numbering Definition
+
+
+
+
+ Numbering Format
+
+
+
+
+ Decimal Numbers
+
+
+
+
+ Uppercase Roman Numerals
+
+
+
+
+ Lowercase Roman Numerals
+
+
+
+
+ Uppercase Latin Alphabet
+
+
+
+
+ Lowercase Latin Alphabet
+
+
+
+
+ Ordinal
+
+
+
+
+ Cardinal Text
+
+
+
+
+ Ordinal Text
+
+
+
+
+ Hexadecimal Numbering
+
+
+
+
+ Chicago Manual of Style
+
+
+
+
+ Ideographs
+
+
+
+
+ Japanese Counting System
+
+
+
+
+ AIUEO Order Hiragana
+
+
+
+
+ Iroha Ordered Katakana
+
+
+
+
+ Double Byte Arabic Numerals
+
+
+
+
+ Single Byte Arabic Numerals
+
+
+
+
+ Japanese Legal Numbering
+
+
+
+
+ Japanese Digital Ten Thousand Counting System
+
+
+
+
+ Decimal Numbers Enclosed in a Circle
+
+
+
+
+ Double Byte Arabic Numerals Alternate
+
+
+
+
+ Full-Width AIUEO Order Hiragana
+
+
+
+
+ Full-Width Iroha Ordered Katakana
+
+
+
+
+ Initial Zero Arabic Numerals
+
+
+
+
+ Bullet
+
+
+
+
+ Korean Ganada Numbering
+
+
+
+
+ Korean Chosung Numbering
+
+
+
+
+ Decimal Numbers Followed by a Period
+
+
+
+
+ Decimal Numbers Enclosed in Parenthesis
+
+
+
+
+ Decimal Numbers Enclosed in a Circle
+
+
+
+
+ Ideographs Enclosed in a Circle
+
+
+
+
+ Traditional Ideograph Format
+
+
+
+
+ Zodiac Ideograph Format
+
+
+
+
+ Traditional Zodiac Ideograph Format
+
+
+
+
+ Taiwanese Counting System
+
+
+
+
+ Traditional Legal Ideograph Format
+
+
+
+
+ Taiwanese Counting Thousand System
+
+
+
+
+ Taiwanese Digital Counting System
+
+
+
+
+ Chinese Counting System
+
+
+
+
+ Chinese Legal Simplified Format
+
+
+
+
+ Chinese Counting Thousand System
+
+
+
+
+ Korean Digital Counting System
+
+
+
+
+ Korean Counting System
+
+
+
+
+ Korean Legal Numbering
+
+
+
+
+ Korean Digital Counting System Alternate
+
+
+
+
+ Vietnamese Numerals
+
+
+
+
+ Lowercase Russian Alphabet
+
+
+
+
+ Uppercase Russian Alphabet
+
+
+
+
+ No Numbering
+
+
+
+
+ Number With Dashes
+
+
+
+
+ Hebrew Numerals
+
+
+
+
+ Hebrew Alphabet
+
+
+
+
+ Arabic Alphabet
+
+
+
+
+ Arabic Abjad Numerals
+
+
+
+
+ Hindi Vowels
+
+
+
+
+ Hindi Consonants
+
+
+
+
+ Hindi Numbers
+
+
+
+
+ Hindi Counting System
+
+
+
+
+ Thai Letters
+
+
+
+
+ Thai Numerals
+
+
+
+
+ Thai Counting System
+
+
+
+ Sketch of XWPF comment class
+
+
+ Get the Part to which the comment belongs, which you need for adding
+ relationships to other parts
+
+ @return {@link POIXMLDocumentPart} that contains the comment.
+ @see org.apache.poi.xwpf.usermodel.IBody#getPart()
+
+
+ Get the part type {@link BodyType} of the comment.
+
+ @return The {@link BodyType} value.
+ @see org.apache.poi.xwpf.usermodel.IBody#getPartType()
+
+
+ Gets the body elements ({@link IBodyElement}) of the comment.
+
+ @return List of body elements.
+
+
+ Returns the paragraph(s) that holds the text of the comment.
+
+
+ Get the list of {@link XWPFTable}s in the comment.
+
+ @return List of tables
+
+
+ Get the {@link XWPFDocument} the comment is part of.
+
+ @see org.apache.poi.xwpf.usermodel.IBody#getXWPFDocument()
+
+
+ Gets the underlying CT_Comment object for the comment.
+
+ @return CT_Comment object
+
+
+ The owning object for this comment
+
+ @return The {@link XWPFComments} object that contains this comment.
+
+
+ Get a unique identifier for the current comment. The restrictions on the
+ id attribute, if any, are defined by the parent XML element. If this
+ attribute is omitted, then the document is non-conformant.
+
+ @return string id
+
+
+ Get the author of the current comment
+
+ @return author of the current comment
+
+
+ Specifies the author for the current comment If this attribute is
+ omitted, then no author shall be associated with the parent annotation
+ type.
+
+ @param author author of the current comment
+
+
+ Get the initials of the author of the current comment
+
+ @return initials the initials of the author of the current comment
+
+
+ Specifies the initials of the author of the current comment
+
+ @param initials the initials of the author of the current comment
+
+
+ Get the date information of the current comment
+
+ @return the date information for the current comment.
+
+
+ Specifies the date information for the current comment. If this attribute
+ is omitted, then no date information shall be associated with the parent
+ annotation type.
+
+ @param date the date information for the current comment.
+
+
+ Construct XWPFComments from a package part
+
+ @param part the package part holding the data of the footnotes,
+
+
+ Construct XWPFComments from scratch for a new document.
+
+
+ read comments form an existing package
+
+
+ Adds a picture to the comments.
+
+ @param is The stream to read image from
+ @param format The format of the picture, see {@link Document}
+ @return the index to this picture (0 based), the added picture can be
+ obtained from {@link #getAllPictures()} .
+ @throws InvalidFormatException If the format of the picture is not known.
+ @throws IOException If reading the picture-data from the stream fails.
+ @see #addPictureData(InputStream, PictureType)
+
+
+ Adds a picture to the comments.
+
+ @param pictureData The picture data
+ @param format The format of the picture, see {@link Document}
+ @return the index to this picture (0 based), the added picture can be
+ obtained from {@link #getAllPictures()} .
+ @throws InvalidFormatException If the format of the picture is not known.
+
+
+ save and commit comments
+
+
+ Gets the underlying CTComments object for the comments.
+
+ @return CTComments object
+
+
+ set a new comments
+
+
+ Get the list of {@link XWPFComment} in the Comments part.
+
+
+ Get the specified comment by position
+
+ @param pos Array position of the comment
+
+
+ Get the specified comment by comment id
+
+ @param id comment id
+ @return the specified comment
+
+
+ Get the specified comment by ctComment
+
+
+ Create a new comment and add it to the document.
+
+ @param cid comment Id
+
+
+ Remove the specified comment if present.
+
+ @param pos Array position of the comment to be removed
+ @return True if the comment was removed.
+
+
+ Default Paragraph style, from which other styles will override
+ TODO Share logic with {@link XWPFParagraph} which also uses CTPPr
+
+
+ Default Character Run style, from which other styles will override
+ TODO Share logic with {@link XWPFRun} which also uses CTRPr
+
+
+ High(ish) level class for working with .docx files.
+
+ This class tries to hide some of the complexity
+ of the underlying file format, but as it's not a
+ mature and stable API yet, certain parts of the
+ XML structure come through. You'll therefore almost
+ certainly need to refer to the OOXML specifications
+ from
+ http://www.ecma-international.org/publications/standards/Ecma-376.htm
+ at some point in your use.
+
+
+ Keeps track on all id-values used in this document and included parts, like headers, footers, etc.
+
+
+ Handles the joy of different headers/footers for different pages
+
+
+ Create a new WordProcessingML package and Setup the default minimal content
+
+
+ Create a new CT_Document with all values Set to default
+
+
+ Returns the low level document base object
+
+
+ Sets columns on document base object
+
+
+ Sets Text Direction of Document
+
+
+ returns an Iterator with paragraphs and tables
+ @see NPOI.XWPF.UserModel.IBody#getBodyElements()
+
+
+ @see NPOI.XWPF.UserModel.IBody#getParagraphs()
+
+
+ @see NPOI.XWPF.UserModel.IBody#getTables()
+
+
+ @see NPOI.XWPF.UserModel.IBody#getTableArray(int)
+
+
+
+ @return the list of footers
+
+
+
+ @return the list of headers
+
+
+ Get Comments
+
+ @return comments
+
+
+ Get the document part that's defined as the
+ given relationship of the core document.
+
+
+ Returns the policy on headers and footers, which
+ also provides a way to Get at them.
+
+
+ Create a header of the given type
+
+ @param type {@link HeaderFooterType} enum
+ @return object of type {@link XWPFHeader}
+
+
+ Create a footer of the given type
+
+ @param type {@link HeaderFooterType} enum
+ @return object of type {@link XWPFFooter}
+
+
+ Return the {@link CTSectPr} object that corresponds with the
+ last section in this document.
+
+ @return {@link CTSectPr} object
+
+
+ Returns the styles object used
+
+
+ Get the document's embedded files.
+
+
+ Finds that for example the 2nd entry in the body list is the 1st paragraph
+
+
+ Look up the paragraph at the specified position in the body elemnts list
+ and return this paragraphs position in the paragraphs list
+
+ @param pos
+ The position of the relevant paragraph in the body elements
+ list
+ @return the position of the paragraph in the paragraphs list, if there is
+ a paragraph at the position in the bodyelements list. Else it
+ will return -1
+
+
+
+ Get with the position of a table in the bodyelement array list
+ the position of this table in the table array list
+ @param pos position of the table in the bodyelement array list
+ @return if there is a table at the position in the bodyelement array list,
+ else it will return null.
+
+
+ Add a new paragraph at position of the cursor. The cursor must be on the
+ {@link org.apache.xmlbeans.XmlCursor.TokenType#START} tag of an subelement
+ of the documents body. When this method is done, the cursor passed as
+ parameter points to the {@link org.apache.xmlbeans.XmlCursor.TokenType#END}
+ of the newly inserted paragraph.
+
+ @param cursor
+ @return the {@link XWPFParagraph} object representing the newly inserted
+ CTP object
+
+
+ verifies that cursor is on the right position
+ @param cursor
+
+
+ Get the position of the paragraph, within the list
+ of all the body elements.
+ @param p The paragraph to find
+ @return The location, or -1 if the paragraph couldn't be found
+
+
+ Get the position of the table, within the list of
+ all the body elements.
+ @param t The table to find
+ @return The location, or -1 if the table couldn't be found
+
+
+ Commit and saves the document
+
+
+ Gets the index of the relation we're trying to create
+ @param relation
+ @return i
+
+
+ Appends a new paragraph to this document
+ @return a new paragraph
+
+
+ Creates an empty comments for the document if one does not already exist
+
+ @return comments
+
+
+ Creates an empty numbering if one does not already exist and Sets the numbering member
+ @return numbering
+
+
+ Creates an empty styles for the document if one does not already exist
+ @return styles
+
+
+ Creates an empty footnotes element for the document if one does not already exist
+ @return footnotes
+
+
+
+ Create a new footnote and add it to the document.
+
+
+ The new note will have one paragraph with the style "FootnoteText"
+ and one run containing the required footnote reference with the
+ style "FootnoteReference".
+
+ New XWPFFootnote.
+
+
+
+ Remove the specified footnote if present.
+
+
+
+
+
+ remove a BodyElement from bodyElements array list
+ @param pos
+ @return true if removing was successfully, else return false
+
+
+ copies content of a paragraph to a existing paragraph in the list paragraphs at position pos
+ @param paragraph
+ @param pos
+
+
+ @return the LastParagraph of the document
+
+
+ Create an empty table with one row and one column as default.
+ @return a new table
+
+
+ Create an empty table with a number of rows and cols specified
+ @param rows
+ @param cols
+ @return table
+
+
+
+ Create a Table of Contents (TOC) at the end of the document.
+ Please set paragraphs style to "Heading{#}" and document
+ styles for TOC .
+ Otherwise, it renders an empty one.
+
+
+
+ Replace content of table in array tables at position pos with a
+ @param pos
+ @param table
+
+
+ Verifies that the documentProtection tag in settings.xml file
+ specifies that the protection is enforced (w:enforcement="1")
+
+ sample snippet from settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+
+
+ @return true if documentProtection is enforced with option any
+
+
+ Verifies that the documentProtection tag in Settings.xml file
+ specifies that the protection is enforced (w:enforcement="1")
+ and that the kind of protection is ReadOnly (w:edit="readOnly")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+
+
+ @return true if documentProtection is enforced with option ReadOnly
+
+
+ Verifies that the documentProtection tag in Settings.xml file
+ specifies that the protection is enforced (w:enforcement="1")
+ and that the kind of protection is forms (w:edit="forms")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="forms" w:enforcement="1"/>
+
+
+ @return true if documentProtection is enforced with option forms
+
+
+ Verifies that the documentProtection tag in Settings.xml file
+ specifies that the protection is enforced (w:enforcement="1")
+ and that the kind of protection is comments (w:edit="comments")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="comments" w:enforcement="1"/>
+
+
+ @return true if documentProtection is enforced with option comments
+
+
+ Verifies that the documentProtection tag in Settings.xml file
+ specifies that the protection is enforced (w:enforcement="1")
+ and that the kind of protection is trackedChanges (w:edit="trackedChanges")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="trackedChanges" w:enforcement="1"/>
+
+
+ @return true if documentProtection is enforced with option trackedChanges
+
+
+ Enforces the ReadOnly protection.
+ In the documentProtection tag inside Settings.xml file,
+ it Sets the value of enforcement to "1" (w:enforcement="1")
+ and the value of edit to ReadOnly (w:edit="readOnly")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+
+
+
+ Enforces the readOnly protection with a password.
+
+ sample snippet from settings.xml
+
+ <w:documentProtection w:edit="readOnly" w:enforcement="1"
+ w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
+ w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
+ w:cryptSpinCount="100000" w:hash="..." w:salt="...."
+ />
+
+
+ @param password the plaintext password, if null no password will be applied
+ @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported.
+ if null, it will default default to sha1
+
+
+ Enforce the Filling Forms protection.
+ In the documentProtection tag inside Settings.xml file,
+ it Sets the value of enforcement to "1" (w:enforcement="1")
+ and the value of edit to forms (w:edit="forms")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="forms" w:enforcement="1"/>
+
+
+
+ Enforce the Filling Forms protection.
+
+ sample snippet from settings.xml
+
+ <w:documentProtection w:edit="forms" w:enforcement="1"
+ w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
+ w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
+ w:cryptSpinCount="100000" w:hash="..." w:salt="...."
+ />
+
+
+ @param password the plaintext password, if null no password will be applied
+ @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported.
+ if null, it will default default to sha1
+
+
+ Enforce the Comments protection.
+ In the documentProtection tag inside Settings.xml file,
+ it Sets the value of enforcement to "1" (w:enforcement="1")
+ and the value of edit to comments (w:edit="comments")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="comments" w:enforcement="1"/>
+
+
+
+ Enforce the Comments protection.
+
+ sample snippet from settings.xml
+
+ <w:documentProtection w:edit="comments" w:enforcement="1"
+ w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
+ w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
+ w:cryptSpinCount="100000" w:hash="..." w:salt="...."
+ />
+
+
+ @param password the plaintext password, if null no password will be applied
+ @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported.
+ if null, it will default default to sha1
+
+
+ Enforce the Tracked Changes protection.
+ In the documentProtection tag inside Settings.xml file,
+ it Sets the value of enforcement to "1" (w:enforcement="1")
+ and the value of edit to trackedChanges (w:edit="trackedChanges")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="trackedChanges" w:enforcement="1"/>
+
+
+
+ Enforce the Tracked Changes protection.
+
+ sample snippet from settings.xml
+
+ <w:documentProtection w:edit="trackedChanges" w:enforcement="1"
+ w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
+ w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
+ w:cryptSpinCount="100000" w:hash="..." w:salt="...."
+ />
+
+
+ @param password the plaintext password, if null no password will be applied
+ @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported.
+ if null, it will default default to sha1
+
+
+ Validates the existing password
+
+ @param password
+ @return true, only if password was set and equals, false otherwise
+
+
+ Remove protection enforcement.
+ In the documentProtection tag inside Settings.xml file
+ it Sets the value of enforcement to "0" (w:enforcement="0")
+
+
+ Enforces fields update on document open (in Word).
+ In the settings.xml file
+ sets the updateSettings value to true (w:updateSettings w:val="true")
+
+ NOTICES:
+
+ - Causing Word to ask on open: "This document contains fields that may refer to other files. Do you want to update the fields in this document?"
+ (if "Update automatic links at open" is enabled)
+ - Flag is removed after saving with changes in Word
+
+
+
+ Check if revision tracking is turned on.
+
+ @return true if revision tracking is turned on
+
+
+ inserts an existing XWPFTable to the arrays bodyElements and tables
+ @param pos
+ @param table
+
+
+ Returns all Pictures, which are referenced from the document itself.
+ @return a {@link List} of {@link XWPFPictureData}. The returned {@link List} is unmodifiable. Use #a
+
+
+ @return all Pictures in this package
+
+
+ Get the next free ImageNumber
+ @param format
+ @return the next free ImageNumber
+ @throws InvalidFormatException
+
+
+ returns the PictureData by blipID
+ @param blipID
+ @return XWPFPictureData of a specificID
+
+
+ GetNumbering
+ @return numbering
+
+
+ Get Styles
+ @return styles for this document
+
+
+ Get the paragraph with the CTP class p
+
+ @param p
+ @return the paragraph with the CTP class p
+
+
+ Get a table by its CTTbl-Object
+ @param ctTbl
+ @see NPOI.XWPF.UserModel.IBody#getTable(org.Openxmlformats.schemas.wordProcessingml.x2006.main.CTTbl)
+ @return a table by its CTTbl-Object or null
+
+
+
+ Change orientation of a Word file
+
+
+ https://stackoverflow.com/questions/26483837/landscape-and-portrait-pages-in-the-same-word-document-using-apache-poi-xwpf-in
+
+
+ Returns the paragraph that of position pos
+ @see NPOI.XWPF.UserModel.IBody#getParagraphArray(int)
+
+
+ returns the Part, to which the body belongs, which you need for Adding relationship to other parts
+ Actually it is needed of the class XWPFTableCell. Because you have to know to which part the tableCell
+ belongs.
+ @see NPOI.XWPF.UserModel.IBody#getPart()
+
+
+ Get the PartType of the body, for example
+ DOCUMENT, HEADER, FOOTER, FOOTNOTE,
+
+ @see NPOI.XWPF.UserModel.IBody#getPartType()
+
+
+ Get the TableCell which belongs to the TableCell
+ @param cell
+
+
+ @author Yegor Kozlov
+
+
+ @since POI 3.14-Beta1
+
+
+ @since POI 3.14-Beta1
+
+
+ A run of text which is part of a field, such as Title
+ of Page number or Author.
+ Any given Field may be made up of multiple of these.
+
+
+ Sketch of XWPF footer class
+
+
+ save and Commit footer
+
+
+ Get the PartType of the body
+ @see NPOI.XWPF.UserModel.IBody#getPartType()
+
+
+
+
+
+ position in table array
+ The table at position pos
+
+
+
+ inserts an existing XWPFTable to the arrays bodyElements and tables
+
+
+
+
+
+ if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header
+ the method will return this table
+ if there is no corresponding {@link XWPFTable} the method will return null
+ @param ctTable
+ @see NPOI.XWPF.UserModel.IBody#getTable(CTTbl ctTable)
+
+
+ if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer
+ the method will return this paragraph
+ if there is no corresponding {@link XWPFParagraph} the method will return null
+ @param p is instance of CTP and is searching for an XWPFParagraph
+ @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer
+ XWPFParagraph with the correspondig CTP p
+ @see NPOI.XWPF.UserModel.IBody#getParagraph(CTP p)
+
+
+
+ Returns the paragraph that holds the text of the header or footer.
+
+
+
+
+
+
+ Get the TableCell which belongs to the TableCell
+
+
+
+
+
+ verifies that cursor is on the right position
+ @param cursor
+
+
+ Appends a new {@link XWPFParagraph} to this footnote.
+
+ @return The new {@link XWPFParagraph}
+
+
+ Ensure that the specified paragraph has a reference marker for this
+ footnote by adding a footnote reference if one is not found.
+ This method is for the first paragraph in the footnote, not
+ paragraphs that will refer to the footnote. For references to
+ the footnote, use {@link XWPFParagraph#addFootnoteReference(XWPFFootnote)}.
+
+ The first run of the first paragraph in a footnote should
+ contain a {@link CTFtnEdnRef} object.
+
+ @param p The {@link XWPFParagraph} to ensure
+
+
+ Appends a new {@link XWPFTable} to this footnote
+
+ @return The new {@link XWPFTable}
+
+
+ Appends a new {@link XWPFTable} to this footnote
+ @param rows Number of rows to initialize the table with
+ @param cols Number of columns to initialize the table with
+ @return the new {@link XWPFTable} with the specified number of rows and columns
+
+
+
+ @param cursor
+ @return the inserted table
+ @see NPOI.XWPF.UserModel.IBody#insertNewTbl(XmlCursor cursor)
+
+
+ add a new paragraph at position of the cursor
+ @param cursor
+ @return the inserted paragraph
+ @see NPOI.XWPF.UserModel.IBody#insertNewParagraph(XmlCursor cursor)
+
+
+ add a new table to the end of the footnote
+ @param table
+ @return the Added XWPFTable
+
+
+ add a new paragraph to the end of the footnote
+ @param paragraph
+ @return the Added XWPFParagraph
+
+
+ @see NPOI.XWPF.UserModel.IBody#getXWPFDocument()
+
+
+ returns the Part, to which the body belongs, which you need for Adding relationship to other parts
+ @see NPOI.XWPF.UserModel.IBody#getPart()
+
+
+ Get the PartType of the body
+ @see NPOI.XWPF.UserModel.IBody#getPartType()
+
+
+ Looks After the collection of Footnotes for a document
+
+ @author Mike McEuen (mceuen@hp.com)
+
+
+ Construct XWPFFootnotes from a package part
+
+ @param part the package part holding the data of the footnotes,
+ @param rel the package relationship of type "http://schemas.Openxmlformats.org/officeDocument/2006/relationships/footnotes"
+
+
+ Construct XWPFFootnotes from scratch for a new document.
+
+
+ Read document
+
+
+ Sets the ctFootnotes
+ @param footnotes
+
+
+ add an XWPFFootnote to the document
+ @param footnote
+ @throws IOException
+
+
+ add a footnote to the document
+ @param note
+ @throws IOException
+
+
+
+ Create a new footnote and add it to the document.
+
+
+ The new note will have one paragraph with the style "FootnoteText"
+ and one run containing the required footnote reference with the
+ style "FootnoteReference".
+
+ New XWPFFootnote
+
+
+
+ Remove the specified footnote if present.
+
+
+
+
+
+ @see NPOI.XWPF.UserModel.IBody#getPart()
+
+
+ Sketch of XWPF header class
+
+
+
+ Save and commit footer
+
+
+
+
+ Read the document
+
+
+
+
+ Get the PartType of the body
+
+
+
+ Parent of XWPF headers and footers
+
+
+ Returns the paragraph(s) that holds
+ the text of the header or footer.
+ Normally there is only the one paragraph, but
+ there could be more in certain cases, or
+ a table.
+
+
+ Return the table(s) that holds the text
+ of the header or footer, for complex cases
+ where a paragraph isn't used.
+ Normally there's just one paragraph, but some
+ complex headers/footers have a table or two
+ in Addition.
+
+
+ Returns the textual content of the header/footer,
+ by flattening out the text of its paragraph(s)
+
+
+ Set a new headerFooter
+
+
+ if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header
+ the method will return this table
+ if there is no corresponding {@link XWPFTable} the method will return null
+ @param ctTable
+
+
+ if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer
+ the method will return this paragraph
+ if there is no corresponding {@link XWPFParagraph} the method will return null
+ @param p is instance of CTP and is searching for an XWPFParagraph
+ @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer
+ XWPFParagraph with the correspondig CTP p
+
+
+ Returns the paragraph that holds
+ the text of the header or footer.
+
+
+ Get a List of all Paragraphs
+ @return a list of {@link XWPFParagraph}
+
+
+ Get all Pictures in this package
+ @return all Pictures in this package
+
+
+ Adds a picture to the document.
+
+ @param pictureData The picture data
+ @param format The format of the picture.
+
+ @return the index to this picture (0 based), the Added picture can be obtained from {@link #getAllPictures()} .
+ @throws InvalidFormatException
+
+
+ Adds a picture to the document.
+
+ @param is The stream to read image from
+ @param format The format of the picture.
+
+ @return the index to this picture (0 based), the Added picture can be obtained from {@link #getAllPictures()} .
+ @throws InvalidFormatException
+ @
+
+
+ returns the PictureData by blipID
+ @param blipID
+ @return XWPFPictureData of a specificID
+ @throws Exception
+
+
+ Adds a new paragraph at the end of the header or footer
+
+ @return new {@link XWPFParagraph} object
+
+
+ Adds a new table at the end of the header or footer
+
+ @param rows - number of rows in the table
+ @param cols - number of columns in the table
+ @return new {@link XWPFTable} object
+
+
+ Removes a specific paragraph from this header / footer
+
+ @param paragraph - {@link XWPFParagraph} object to remove
+
+
+ Removes a specific table from this header / footer
+
+ @param table - {@link XWPFTable} object to remove
+
+
+ Clears all paragraphs and tables from this header / footer
+
+
+ verifies that cursor is on the right position
+ @param cursor
+
+
+ Returns the table at position pos
+ @see NPOI.XWPF.UserModel.IBody#getTableArray(int)
+
+
+ inserts an existing XWPFTable to the arrays bodyElements and tables
+ @param pos
+ @param table
+
+
+ Get the TableCell which belongs to the TableCell
+ @param cell
+
+
+ returns the Part, to which the body belongs, which you need for Adding relationship to other parts
+ @see NPOI.XWPF.UserModel.IBody#getPart()
+
+
+ * Sketch of XWPF hyperlink class
+ *
+ * @author Yury Batrakov (batrakov at gmail.com)
+ *
+
+
+ A run of text with a Hyperlink applied to it.
+ Any given Hyperlink may be made up of multiple of these.
+
+
+ Returns the ID of the hyperlink, if one is Set.
+
+
+ If this Hyperlink is an external reference hyperlink,
+ return the object for it.
+
+
+ checks whether specific LatentStyleID is a latentStyle
+
+
+ TODO Bring more of the logic over from XWPFParagraph
+
+
+ @author Philipp Epp
+
+
+
+ create a new styles object with an existing document
+
+
+ create a new XWPFNumbering object for use in a new document
+
+
+ read numbering form an existing package
+
+
+ save and Commit numbering
+
+
+ Sets the ctNumbering
+ @param numbering
+
+
+ Checks whether number with numID exists
+ @param numID
+ @return bool true if num exist, false if num not exist
+
+
+ add a new number to the numbering document
+ @param num
+
+
+ Add a new num with an abstractNumID
+ @return return NumId of the Added num
+
+
+ Add a new num with an abstractNumID and a numID
+ @param abstractNumID
+ @param numID
+
+
+ Get Num by NumID
+ @param numID
+ @return abstractNum with NumId if no Num exists with that NumID
+ null will be returned
+
+
+ Get AbstractNum by abstractNumID
+ @param abstractNumID
+ @return abstractNum with abstractNumId if no abstractNum exists with that abstractNumID
+ null will be returned
+
+
+ Compare AbstractNum with abstractNums of this numbering document.
+ If the content of abstractNum Equals with an abstractNum of the List in numbering
+ the Bigint Value of it will be returned.
+ If no equal abstractNum is existing null will be returned
+
+ @param abstractNum
+ @return Bigint
+
+
+ add a new AbstractNum and return its AbstractNumID
+ @param abstractNum
+
+
+
+ Add a new AbstractNum
+
+
+ @author antony liu
+
+
+ remove an existing abstractNum
+ @param abstractNumID
+ @return true if abstractNum with abstractNumID exists in NumberingArray,
+ false if abstractNum with abstractNumID not exists
+
+
+ return the abstractNumID
+ If the AbstractNumID not exists
+ return null
+ @param numID
+ @return abstractNumID
+
+
+ A Paragraph within a Document, Table, Header etc.
+
+ A paragraph has a lot of styling information, but the
+ actual text (possibly along with more styling) is held on
+ the child {@link XWPFRun}s.
+
+
+ For access to the document's hyperlink, comments, tables etc
+
+
+ Identifies (in order) the parts of the paragraph /
+ sub-paragraph that correspond to character text
+ runs, and builds the appropriate runs for these.
+
+
+
+ Return the textual content of the paragraph, including text from pictures
+ and std element in it.
+
+
+ Return styleID of the paragraph if style exist for this paragraph
+ if not, null will be returned
+ @return styleID as String
+
+
+ If style exist for this paragraph
+ NumId of the paragraph will be returned.
+ If style not exist null will be returned
+ @return NumID as Bigint
+
+
+
+ setNumILvl of Paragraph
+
+
+
+
+
+ Returns Ilvl of the numeric style for this paragraph.
+
+
+
+
+
+ Returns numbering format for this paragraph, eg bullet or lowerLetter.
+
+
+
+
+
+ Returns the text that should be used around the paragraph level numbers.
+
+
+
+
+ Gets the numstartOverride for the paragraph numbering for this paragraph.
+
+
+
+
+
+ SetNumID of Paragraph
+
+
+
+
+
+ Set NumID and level of Paragraph
+
+
+
+
+
+
+ Returns the text of the paragraph, but not of any objects in the paragraph
+
+
+
+
+ Returns any text from any suitable pictures in the paragraph
+
+
+
+
+ Returns the footnote text of the paragraph
+
+
+
+
+ Returns the paragraph alignment which shall be applied to text in this paragraph.
+
+
+
+
+ The raw alignment value
+
+
+
+ Returns the text vertical alignment which shall be applied to text in
+ this paragraph.
+
+ If the line height (before any Added spacing) is larger than one or more
+ characters on the line, all characters will be aligned to each other as
+ specified by this element.
+
+
+ If this element is omitted on a given paragraph, its value is determined
+ by the Setting previously Set at any level of the style hierarchy (i.e.
+ that previous Setting remains unChanged). If this Setting is never
+ specified in the style hierarchy, then the vertical alignment of all
+ characters on the line shall be automatically determined by the consumer.
+
+
+ @return the vertical alignment of this paragraph.
+
+
+
+ the top border for the paragraph
+
+
+
+
+ Specifies the border which shall be displayed below a Set of
+ paragraphs which have the same Set of paragraph border Settings.
+
+ the bottom border for the paragraph
+
+
+
+ Specifies the border which shall be displayed on the left side of the
+ page around the specified paragraph.
+
+ the left border for the paragraph
+
+
+ Specifies the border which shall be displayed on the right side of the
+ page around the specified paragraph.
+
+ @return ParagraphBorder - the right border for the paragraph
+ @see #setBorderRight(Borders)
+ @see Borders for a list of all possible borders
+
+
+ Specifies the border which shall be displayed between each paragraph in a
+ Set of paragraphs which have the same Set of paragraph border Settings.
+
+ @return ParagraphBorder - the between border for the paragraph
+ @see #setBorderBetween(Borders)
+ @see Borders for a list of all possible borders
+
+
+ Specifies that when rendering this document in a paginated
+ view, the contents of this paragraph are rendered on the start of a new
+ page in the document.
+
+ If this element is omitted on a given paragraph,
+ its value is determined by the Setting previously Set at any level of the
+ style hierarchy (i.e. that previous Setting remains unChanged). If this
+ Setting is never specified in the style hierarchy, then this property
+ shall not be applied. Since the paragraph is specified to start on a new
+ page, it begins page two even though it could have fit on page one.
+
+
+ @return bool - if page break is Set
+
+
+ Specifies the spacing that should be Added After the last line in this
+ paragraph in the document in absolute units.
+
+ @return int - value representing the spacing After the paragraph
+
+
+ Specifies the spacing that should be Added After the last line in this
+ paragraph in the document in absolute units.
+
+ @return int - value representing the spacing After the paragraph
+ @see #setSpacingAfterLines(int)
+
+
+ Specifies the spacing that should be Added above the first line in this
+ paragraph in the document in absolute units.
+
+ @return the spacing that should be Added above the first line
+ @see #setSpacingBefore(int)
+
+
+ Specifies the spacing that should be Added before the first line in this paragraph in the
+ document in line units.
+ The value of this attribute is specified in one hundredths of a line.
+
+ @return the spacing that should be Added before the first line in this paragraph
+ @see #setSpacingBeforeLines(int)
+
+
+
+ Specifies how the spacing between lines is calculated as stored in the
+ line attribute. If this attribute is omitted, then it shall be assumed to
+ be of a value auto if a line attribute value is present.
+
+
+
+
+ Return the spacing between lines of a paragraph. The units of the return value depends on the
+ . If AUTO, the return value is in lines, otherwise the return
+ value is in points
+
+ a double specifying points or lines.
+
+
+
+ Return the spacing between lines of a paragraph. The units of the return value depends on the
+ {@link LineSpacingRule}. If AUTO, the return value is in lines, otherwise the return
+ value is in points
+
+ @return a double specifying points or lines.
+
+
+ Sets the spacing between lines in a paragraph
+
+ @param spacing - A double specifying spacing in lines.
+
+
+ Sets the spacing between lines in a paragraph
+
+ @param spacing - A double specifying spacing in inches or lines. If rule is
+ AUTO, then spacing is in lines. Otherwise spacing is in points.
+ @param rule - {@link LineSpacingRule} indicating how spacing is interpreted. If
+ AUTO, then spacing value is in lines, and the height depends on the
+ font size. If AT_LEAST, then spacing value is in inches, and is the
+ minimum size of the line. If the line height is taller, then the
+ line expands to match. If EXACT, then spacing is the exact line
+ height. If the text is taller than the line height, then it is
+ clipped at the top.
+
+
+ Specifies the indentation which shall be placed between the left text
+ margin for this paragraph and the left edge of that paragraph's content
+ in a left to right paragraph, and the right text margin and the right
+ edge of that paragraph's text in a right to left paragraph
+
+ If this attribute is omitted, its value shall be assumed to be zero.
+ Negative values are defined such that the text is Moved past the text margin,
+ positive values Move the text inside the text margin.
+
+
+ @return indentation or null if indentation is not Set
+
+
+ Specifies the indentation which shall be placed between the right text
+ margin for this paragraph and the right edge of that paragraph's content
+ in a left to right paragraph, and the right text margin and the right
+ edge of that paragraph's text in a right to left paragraph
+
+ If this attribute is omitted, its value shall be assumed to be zero.
+ Negative values are defined such that the text is Moved past the text margin,
+ positive values Move the text inside the text margin.
+
+
+ @return indentation or null if indentation is not Set
+
+
+ Specifies the indentation which shall be Removed from the first line of
+ the parent paragraph, by moving the indentation on the first line back
+ towards the beginning of the direction of text flow.
+ This indentation is
+ specified relative to the paragraph indentation which is specified for
+ all other lines in the parent paragraph.
+ The firstLine and hanging
+ attributes are mutually exclusive, if both are specified, then the
+ firstLine value is ignored.
+
+ @return indentation or null if indentation is not Set
+
+
+ Specifies the Additional indentation which shall be applied to the first
+ line of the parent paragraph. This Additional indentation is specified
+ relative to the paragraph indentation which is specified for all other
+ lines in the parent paragraph.
+ The firstLine and hanging attributes are
+ mutually exclusive, if both are specified, then the firstLine value is
+ ignored.
+ If the firstLineChars attribute is also specified, then this
+ value is ignored.
+ If this attribute is omitted, then its value shall be
+ assumed to be zero (if needed).
+
+ @return indentation or null if indentation is not Set
+
+
+ This element specifies whether a consumer shall break Latin text which
+ exceeds the text extents of a line by breaking the word across two lines
+ (breaking on the character level) or by moving the word to the following
+ line (breaking on the word level).
+
+ @return bool
+
+
+ @return the style of the paragraph
+
+
+ Get a copy of the currently used CTPBrd, if none is used, return
+ a new instance.
+
+
+ Get a copy of the currently used CTSpacing, if none is used,
+ return a new instance.
+
+
+ Get a copy of the currently used CTPInd, if none is used, return
+ a new instance.
+
+
+ Get a copy of the currently used CTPPr, if none is used, return
+ a new instance.
+
+
+ add a new run at the end of the position of
+ the content of parameter run
+ @param run
+
+
+
+ Replace text inside each run (cross run is not supported yet)
+
+ target text
+ replacement text
+
+
+
+ this methods parse the paragraph and search for the string searched.
+ If it finds the string, it will return true and the position of the String will be saved in the parameter startPos.
+
+
+
+
+
+
+ Appends a new run to this paragraph
+
+ @return a new text run
+
+
+ Appends a new OMath to this paragraph
+
+ @return a new text run
+
+
+
+ insert a new Run in RunArray
+
+ The position at which the new run should be added.
+ the inserted run or null if the given pos is out of bounds.
+
+
+ Get a Text
+ @param segment
+
+
+ Removes a Run at the position pos in the paragraph
+ @param pos
+ @return true if the run was Removed
+
+
+ returns the type of the BodyElement Paragraph
+ @see NPOI.XWPF.UserModel.IBodyElement#getElementType()
+
+
+ returns the part of the bodyElement
+ @see NPOI.XWPF.UserModel.IBody#getPart()
+
+
+ returns the partType of the bodyPart which owns the bodyElement
+
+ @see NPOI.XWPF.UserModel.IBody#getPartType()
+
+
+ Adds a new Run to the Paragraph
+
+ @param r
+
+
+ return the XWPFRun-Element which owns the CTR Run-Element
+
+ @param r
+
+
+
+ Appends a new hyperlink run to this paragraph
+
+ a new hyperlink run
+
+
+
+
+ Add a new run with a reference to the specified footnote. The footnote reference run will have the style name "FootnoteReference".
+
+ Footnote to which to add a reference.
+
+
+ @author Philipp Epp
+
+
+ Link Picture with PictureData
+ @param rel
+
+
+ Return the underlying CTPicture bean that holds all properties for this picture
+
+ @return the underlying CTPicture bean
+
+
+ Get the PictureData of the Picture, if present.
+ Note - not all kinds of picture have data
+
+
+
+ Returns the width of the picture (in points).
+
+
+
+
+ Returns the depth of the picture (in points).
+
+
+
+
+ Raw picture data, normally attached to a WordProcessingML Drawing. As a rule, pictures are stored in the /word/media/ part of a WordProcessingML package.
+
+
+ @author Philipp Epp
+
+
+
+ Relationships for each known picture type
+
+
+ Create a new XWPFGraphicData node
+
+
+
+ Construct XWPFPictureData from a package part
+
+ @param part the package part holding the Drawing data,
+ @param rel the package relationship holding this Drawing,
+ the relationship type must be http://schemas.Openxmlformats.org/officeDocument/2006/relationships/image
+
+
+ Gets the picture data as a byte array.
+
+ Note, that this call might be expensive since all the picture data is copied into a temporary byte array.
+ You can grab the picture data directly from the underlying package part as follows:
+
+
+ InputStream is1 = GetPackagePart().InputStream;
+
+
+ @return the Picture data.
+
+
+ Returns the file name of the image, eg image7.jpg . The original filename
+ isn't always available, but if it can be found it's likely to be in the
+ CTDrawing
+
+
+ Suggests a file extension for this image.
+ @return the file extension.
+
+
+ Return an integer constant that specifies type of this picture
+
+ @return an integer constant that specifies type of this picture
+ @see NPOI.XWPF.UserModel.PictureTypeEMF
+ @see NPOI.XWPF.UserModel.PictureTypeWMF
+ @see NPOI.XWPF.UserModel.PictureTypePICT
+ @see NPOI.XWPF.UserModel.PictureTypeJPEG
+ @see NPOI.XWPF.UserModel.PictureTypePNG
+ @see NPOI.XWPF.UserModel.PictureTypeDIB
+
+
+ *PictureData objects store the actual content in the part directly without keeping a
+ copy like all others therefore we need to handle them differently.
+
+
+ @author Yegor Kozlov
+
+
+ A map to lookup POIXMLRelation by its relation type
+
+
+ Supported image formats
+
+
+ Get POIXMLRelation by relation type
+
+ @param rel relation type, for example,
+ http://schemas.openxmlformats.org/officeDocument/2006/relationships/image
+ @return registered POIXMLRelation or null if not found
+
+
+ @see [MS-OI29500] Run Fonts
+
+
+ XWPFrun.object defines a region of text with a common Set of properties
+
+ @author Yegor Kozlov
+ @author Gregg Morris (gregg dot morris at gmail dot com) - added getColor(), setColor()
+
+
+ @param r the CT_R bean which holds the run.attributes
+ @param p the parent paragraph
+
+
+ @deprecated Use {@link XWPFRun#XWPFRun(CTR, IRunBody)}
+
+
+ Get the currently used CT_R object
+ @return CT_R object
+
+
+ Get the currently referenced paragraph/SDT object
+ @return current parent
+
+
+ Get the currently referenced paragraph, or null if a SDT object
+ @deprecated use {@link XWPFRun#getParent()} instead
+
+
+ @return The {@link XWPFDocument} instance, this run.belongs to, or
+ null if parent structure (paragraph > document) is not properly Set.
+
+
+ For isBold, isItalic etc
+
+
+ Whether the bold property shall be applied to all non-complex script
+ characters in the contents of this run.when displayed in a document.
+
+ This formatting property is a toggle property, which specifies that its
+ behavior differs between its use within a style defInition and its use as
+ direct formatting. When used as part of a style defInition, Setting this
+ property shall toggle the current state of that property as specified up
+ to this point in the hierarchy (i.e. applied to not applied, and vice
+ versa). Setting it to false (or an equivalent) shall
+ result in the current Setting remaining unChanged. However, when used as
+ direct formatting, Setting this property to true or false shall Set the
+ absolute state of the resulting property.
+
+
+ If this element is not present, the default value is to leave the
+ formatting applied at previous level in the style hierarchy. If this
+ element is never applied in the style hierarchy, then bold shall not be
+ applied to non-complex script characters.
+
+
+ @param value true if the bold property is applied to
+ this run
+
+
+ Get text color. The returned value is a string in the hex form "RRGGBB".
+
+
+ Set text color.
+ @param rgbStr - the desired color, in the hex form "RRGGBB".
+
+
+ Return the string content of this text run
+
+ @return the text of this text run.or null if not Set
+
+
+ Returns text embedded in pictures
+
+
+
+ Sets the text of this text run
+
+ the literal text which shall be displayed in the document
+
+
+
+ Sets the text of this text run.in the
+
+ the literal text which shall be displayed in the document
+ position in the text array (NB: 0 based)
+
+
+ Whether the italic property should be applied to all non-complex script
+ characters in the contents of this run.when displayed in a document.
+
+ @return true if the italic property is applied
+
+
+ Specifies that the contents of this run.should be displayed along with an
+ underline appearing directly below the character heigh
+
+ @return the Underline pattern Applyed to this run
+ @see UnderlinePatterns
+
+
+ Get the CTUnderline for the run.
+ @param create Create a new underline if necessary
+ @return The underline, or null create is false and there is no underline.
+
+
+
+ insert text at start index in the run
+
+ insert text
+ start index of the insertion in the run text
+
+
+ Specifies that the contents of this run.shall be displayed with a single
+ horizontal line through the center of the line.
+
+ @return true if the strike property is applied
+
+
+ Specifies that the contents of this run.shall be displayed with a single
+ horizontal line through the center of the line.
+
+ This formatting property is a toggle property, which specifies that its
+ behavior differs between its use within a style defInition and its use as
+ direct formatting. When used as part of a style defInition, Setting this
+ property shall toggle the current state of that property as specified up
+ to this point in the hierarchy (i.e. applied to not applied, and vice
+ versa). Setting it to false (or an equivalent) shall result in the
+ current Setting remaining unChanged. However, when used as direct
+ formatting, Setting this property to true or false shall Set the absolute
+ state of the resulting property.
+
+
+ If this element is not present, the default value is to leave the
+ formatting applied at previous level in the style hierarchy. If this
+ element is never applied in the style hierarchy, then strikethrough shall
+ not be applied to the contents of this run.
+
+
+ @param value true if the strike property is applied to
+ this run
+
+
+ Specifies that the contents of this run shall be displayed with a double
+ horizontal line through the center of the line.
+
+ @return true if the double strike property is applied
+
+
+ Specifies the alignment which shall be applied to the contents of this
+ run.in relation to the default appearance of the run.s text.
+ This allows the text to be repositioned as subscript or superscript without
+ altering the font size of the run.properties.
+
+ @return VerticalAlign
+ @see VerticalAlign all possible value that could be Applyed to this run
+
+
+ Specifies the fonts which shall be used to display the text contents of
+ this run. Specifies a font which shall be used to format all characters
+ in the ASCII range (0 - 127) within the parent run
+
+ @return a string representing the font family
+
+
+ Gets the font family for the specified font char range.
+ If fcr is null, the font char range "ascii" is used
+
+ @param fcr the font char range, defaults to "ansi"
+ @return a string representing the font famil
+
+
+ Specifies the fonts which shall be used to display the text contents of
+ this run. The default handling for fcr == null is to overwrite the
+ ascii font char range with the given font family and also set all not
+ specified font ranges
+
+ @param fontFamily
+ @param fcr FontCharRange or null for default handling
+
+
+ Specifies the font size which shall be applied to all non complex script
+ characters in the contents of this run.when displayed.
+
+ @return value representing the font size
+
+
+ This element specifies the amount by which text shall be raised or
+ lowered for this run.in relation to the default baseline of the
+ surrounding non-positioned text. This allows the text to be repositioned
+ without altering the font size of the contents.
+
+ If the val attribute is positive, then the parent run.shall be raised
+ above the baseline of the surrounding text by the specified number of
+ half-points. If the val attribute is negative, then the parent run.shall
+ be lowered below the baseline of the surrounding text by the specified
+ number of half-points.
+ *
+ If this element is not present, the default value is to leave the
+ formatting applied at previous level in the style hierarchy. If this
+ element is never applied in the style hierarchy, then the text shall not
+ be raised or lowered relative to the default baseline location for the
+ contents of this run.
+
+ @return a big integer representing the amount of text shall be "moved"
+
+
+
+
+
+ Specifies that a break shall be placed at the current location in the run
+ content.
+ A break is a special character which is used to override the
+ normal line breaking that would be performed based on the normal layout
+ of the document's contents.
+ @see #AddCarriageReturn()
+
+
+ Specifies that a break shall be placed at the current location in the run
+ content.
+ A break is a special character which is used to override the
+ normal line breaking that would be performed based on the normal layout
+ of the document's contents.
+
+ The behavior of this break character (the
+ location where text shall be restarted After this break) shall be
+ determined by its type values.
+
+ @see BreakType
+
+
+ Specifies that a break shall be placed at the current location in the run
+ content. A break is a special character which is used to override the
+ normal line breaking that would be performed based on the normal layout
+ of the document's contents.
+
+ The behavior of this break character (the
+ location where text shall be restarted After this break) shall be
+ determined by its type (in this case is BreakType.TEXT_WRAPPING as default) and clear attribute values.
+
+ @see BreakClear
+
+
+ Specifies that a tab shall be placed at the current location in
+ the run content.
+
+
+ Specifies that a carriage return shall be placed at the
+ current location in the run.content.
+ A carriage return is used to end the current line of text in
+ WordProcess.
+ The behavior of a carriage return in run.content shall be
+ identical to a break character with null type and clear attributes, which
+ shall end the current line and find the next available line on which to
+ continue.
+ The carriage return character forced the following text to be
+ restarted on the next available line in the document.
+
+
+ Adds a picture to the run. This method handles
+ attaching the picture data to the overall file.
+
+ @see NPOI.XWPF.UserModel.Document#PICTURE_TYPE_EMF
+ @see NPOI.XWPF.UserModel.Document#PICTURE_TYPE_WMF
+ @see NPOI.XWPF.UserModel.Document#PICTURE_TYPE_PICT
+ @see NPOI.XWPF.UserModel.Document#PICTURE_TYPE_JPEG
+ @see NPOI.XWPF.UserModel.Document#PICTURE_TYPE_PNG
+ @see NPOI.XWPF.UserModel.Document#PICTURE_TYPE_DIB
+
+ @param pictureData The raw picture data
+ @param pictureType The type of the picture, eg {@link Document#PICTURE_TYPE_JPEG}
+ @param width width in EMUs. To convert to / from points use {@link org.apache.poi.util.Units}
+ @param height height in EMUs. To convert to / from points use {@link org.apache.poi.util.Units}
+ @throws NPOI.Openxml4j.exceptions.InvalidFormatException
+ @throws IOException
+
+
+ Returns the embedded pictures of the run. These
+ are pictures which reference an external,
+ embedded picture image such as a .png or .jpg
+
+
+
+ Return this run's style ID. If this run has no style (no run properties or properties without a style), an empty string is returned.
+
+
+
+
+ Add the xml:spaces="preserve" attribute if the string has leading or trailing white spaces
+
+ @param xs the string to check
+
+
+ Returns the string version of the text, with tabs and
+ carriage returns in place of their xml equivalents.
+
+
+ Experimental class to offer rudimentary Read-only Processing of
+ of StructuredDocumentTags/ContentControl
+
+
+
+ WARNING - APIs expected to change rapidly
+
+
+
+ Experimental class to offer rudimentary Read-only Processing of
+ of StructuredDocumentTags/ContentControl that can appear
+ in a table row as if a table cell.
+
+ These can contain one or more cells or other SDTs within them.
+
+ WARNING - APIs expected to change rapidly
+
+
+ Experimental class to offer rudimentary Read-only Processing of
+ of the contentblock of an SDT/ContentControl.
+
+
+
+ WARNING - APIs expected to change rapidly
+
+
+
+ Experimental class to offer rudimentary Read-only Processing of
+ of the XWPFSDTCellContent.
+
+ WARNING - APIs expected to change rapidly
+
+
+ In the zoom tag inside Settings.xml file
+ it Sets the value of zoom
+ @return percentage as an integer of zoom level
+
+
+
+ Set zoom. In the zoom tag inside settings.xml file it sets the value of zoom
+
+
+
+ sample snippet from Settings.xml
+
+ <w:zoom w:percent="50" />
+
+
+
+ Verifies the documentProtection tag inside settings.xml file
+ if the protection is enforced (w:enforcement="1")
+
+
+ sample snippet from settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+
+
+ @return true if documentProtection is enforced with option any
+
+
+ Verifies the documentProtection tag inside Settings.xml file
+ if the protection is enforced (w:enforcement="1")
+ and if the kind of protection Equals to passed (STDocProtect.Enum editValue)
+
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+
+
+ @return true if documentProtection is enforced with option ReadOnly
+
+
+ Enforces the protection with the option specified by passed editValue.
+
+ In the documentProtection tag inside Settings.xml file
+ it Sets the value of enforcement to "1" (w:enforcement="1")
+ and the value of edit to the passed editValue (w:edit="[passed editValue]")
+
+ sample snippet from Settings.xml
+
+ <w:settings ... >
+ <w:documentProtection w:edit="[passed editValue]" w:enforcement="1"/>
+
+
+
+ Enforces the protection with the option specified by passed editValue and password.
+
+ sample snippet from settings.xml
+
+ <w:documentProtection w:edit="[passed editValue]" w:enforcement="1"
+ w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
+ w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
+ w:cryptSpinCount="100000" w:hash="..." w:salt="...."
+ />
+
+
+ @param editValue the protection type
+ @param password the plaintext password, if null no password will be applied
+ @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported.
+ if null, it will default default to sha1
+
+
+ Validates the existing password
+
+ @param password
+ @return true, only if password was set and equals, false otherwise
+
+
+ Removes protection enforcement.
+ In the documentProtection tag inside Settings.xml file
+ it Sets the value of enforcement to "0" (w:enforcement="0")
+
+
+ Enforces fields update on document open (in Word).
+ In the settings.xml file
+ sets the updateSettings value to true (w:updateSettings w:val="true")
+
+ NOTICES:
+
+ - Causing Word to ask on open: "This document contains fields that may refer to other files. Do you want to update the fields in this document?"
+ (if "Update automatic links at open" is enabled)
+ - Flag is removed after saving with changes in Word
+
+
+
+ get or set revision tracking
+
+
+ @author Philipp Epp
+
+
+
+ constructor
+ @param style
+
+
+ constructor
+ @param style
+ @param styles
+
+
+ Get StyleID of the style
+ @return styleID StyleID of the style
+
+
+ Get Type of the Style
+ @return ctType
+
+
+ Set style
+ @param style
+
+
+ Get ctStyle
+ @return ctStyle
+
+
+ Get styles
+ @return styles the styles to which this style belongs
+
+
+ Get StyleID of the linked Style
+
+
+ Get StyleID of the next style
+
+
+ Compares the names of the Styles
+ @param compStyle
+
+
+ Holds details of built-in, default and user styles, which
+ apply to tables / paragraphs / lists etc.
+ Text within one of those with custom stylings has the style
+ information stored in the {@link XWPFRun}
+
+
+ Construct XWPFStyles from a package part
+
+ @param part the package part holding the data of the styles,
+ @param rel the package relationship of type "http://schemas.Openxmlformats.org/officeDocument/2006/relationships/styles"
+
+
+ Construct XWPFStyles from scratch for a new document.
+
+
+ Read document
+
+
+ Sets the ctStyles
+ @param styles
+
+
+ Checks whether style with styleID exist
+ @param styleID styleID of the Style in the style-Document
+ @return true if style exist, false if style not exist
+
+
+ add a style to the document
+ @param style
+ @throws IOException
+
+
+ get style by a styleID
+ @param styleID styleID of the searched style
+ @return style
+
+
+ get the style with the specified name, if any.
+ @param styleName The name of the style to get, e.g., "Heading 1"
+ @return style
+
+
+ Get the styles which are related to the parameter style and their relatives
+ this method can be used to copy all styles from one document to another document
+ @param style
+ @return a list of all styles which were used by this method
+
+
+ Get the styles which are related to parameter style
+ @param style
+ @return all Styles of the parameterList
+
+
+ Sets the default spelling language on ctStyles DocDefaults parameter
+ @param strSpellingLanguage
+
+
+ Sets the default East Asia spelling language on ctStyles DocDefaults parameter
+ @param strEastAsia
+
+
+ Sets the default font on ctStyles DocDefaults parameter
+ TODO Replace this with specific Setters for each type, possibly
+ on XWPFDefaultRunStyle
+
+
+ Get the style with the same name
+ if this style is not existing, return null
+
+
+ Get the default style which applies text runs in the document
+
+
+ Get the default paragraph style which applies to the document
+
+
+ Get the definition of all the Latent Styles
+
+
+ Sketch of XWPFTable class. Only table's text is being hold.
+ Specifies the contents of a table present in the document. A table is a set
+ of paragraphs (and other block-level content) arranged in rows and columns.
+
+
+ @return ctTbl object
+
+
+
+ add a new column for each row in this table
+
+
+ create a new XWPFTableRow object with as many cells as the number of columns defined in that moment
+
+ @return tableRow
+
+
+ @param pos - index of the row
+ @return the row at the position specified or null if no rows is defined or if the position is greather than the max size of rows array
+
+
+ @return width value
+
+
+ @return number of rows in table
+
+
+ Get the StyleID of the table
+ @return style-ID of the table
+
+
+ add a new Row to the table
+
+ @param row the row which should be Added
+
+
+ add a new Row to the table
+ at position pos
+ @param row the row which should be Added
+
+
+ inserts a new tablerow
+ @param pos
+ @return the inserted row
+
+
+ Remove a row at position pos from the table
+ @param pos position the Row in the Table
+
+
+ returns the type of the BodyElement Table
+ @see NPOI.XWPF.UserModel.IBodyElement#getElementType()
+
+
+ returns the part of the bodyElement
+ @see NPOI.XWPF.UserModel.IBody#getPart()
+
+
+ returns the partType of the bodyPart which owns the bodyElement
+ @see NPOI.XWPF.UserModel.IBody#getPartType()
+
+
+ returns the XWPFRow which belongs to the CTRow row
+ if this row is not existing in the table null will be returned
+
+
+ Represents a Cell within a {@link XWPFTable}. The
+ Cell is the thing that holds the actual content (paragraphs etc)
+
+
+ If a table cell does not include at least one block-level element, then this document shall be considered corrupt
+
+
+ returns an Iterator with paragraphs and tables
+ @see NPOI.XWPF.UserModel.IBody#getBodyElements()
+
+
+ returns a list of paragraphs
+
+
+ Add a Paragraph to this Table Cell
+ @return The paragraph which was Added
+
+
+ add a Paragraph to this TableCell
+ @param p the paragaph which has to be Added
+
+
+ Removes a paragraph of this tablecell
+ @param pos
+
+
+ if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this table
+ the method will return this paragraph
+ if there is no corresponding {@link XWPFParagraph} the method will return null
+ @param p is instance of CTP and is searching for an XWPFParagraph
+ @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this table
+ XWPFParagraph with the correspondig CTP p
+
+
+
+ Add bottom border to cell
+
+ Border Style
+ Border Width
+ Border Spacing Measurement
+ Border Color
+
+
+
+ Add top border to cell
+
+ Border Style
+ Border Width
+ Border Spacing Measurement
+ Border Color
+
+
+
+ Add left border to cell
+
+ Border Style
+ Border Width
+ Border Spacing Measurement
+ Border Color
+
+
+
+ Add right border to cell
+
+ Border Style
+ Border Width
+
+ Border Color
+
+
+
+ Creates border with parameters
+
+ Border Style
+ Border Width
+ Border Spacing Measurement
+ Border Color
+ CT_Border object
+
+
+ Set cell color. This sets some associated values; for finer control
+ you may want to access these elements individually.
+ @param rgbStr - the desired cell color, in the hex form "RRGGBB".
+
+
+ Get cell color. Note that this method only returns the "fill" value.
+ @return RGB string of cell color
+
+
+ Set the vertical alignment of the cell.
+ @param vAlign - the desired alignment enum value
+
+
+ Get the vertical alignment of the cell.
+ @return the cell alignment enum value or null if no vertical alignment is set
+
+
+ add a new paragraph at position of the cursor
+ @param cursor
+ @return the inserted paragraph
+
+
+ verifies that cursor is on the right position
+
+
+ @see NPOI.XWPF.UserModel.IBody#getParagraphArray(int)
+
+
+ Get the to which the TableCell belongs
+
+ @see NPOI.XWPF.UserModel.IBody#getPart()
+
+
+ @see NPOI.XWPF.UserModel.IBody#getPartType()
+
+
+ Get a table by its CTTbl-Object
+ @see NPOI.XWPF.UserModel.IBody#getTable(org.Openxmlformats.schemas.wordProcessingml.x2006.main.CTTbl)
+
+
+ @see NPOI.XWPF.UserModel.IBody#getTableArray(int)
+
+
+ @see NPOI.XWPF.UserModel.IBody#getTables()
+
+
+ inserts an existing XWPFTable to the arrays bodyElements and tables
+ @see NPOI.XWPF.UserModel.IBody#insertTable(int, NPOI.XWPF.UserModel.XWPFTable)
+
+
+ extracts all text recursively through embedded tables and embedded SDTs
+
+
+ Get the TableCell which belongs to the TableCell
+
+
+ A row within an {@link XWPFTable}. Rows mostly just have
+ sizings and stylings, the interesting content lives inside
+ the child {@link XWPFTableCell}s
+
+
+ create a new XWPFTableCell and add it to the tableCell-list of this tableRow
+ @return the newly Created XWPFTableCell
+
+
+ Adds a new TableCell at the end of this tableRow
+
+
+ This element specifies the height of the current table row within the
+ current table. This height shall be used to determine the resulting
+ height of the table row, which may be absolute or relative (depending on
+ its attribute values). If omitted, then the table row shall automatically
+ resize its height to the height required by its contents (the equivalent
+ of an hRule value of auto).
+
+ @return height
+
+
+ create and return a list of all XWPFTableCell
+ who belongs to this row
+ @return a list of {@link XWPFTableCell}
+
+
+ create and return a list of all XWPFTableCell
+ who belongs to this row
+ @return a list of {@link XWPFTableCell}
+
+
+ returns the XWPFTableCell which belongs to the CTTC cell
+ if there is no XWPFTableCell which belongs to the parameter CTTc cell null will be returned
+
+
+ Return true if the "can't split row" value is true. The logic for this
+ attribute is a little unusual: a TRUE value means DON'T allow rows to
+ split, FALSE means allow rows to split.
+ @return true if rows can't be split, false otherwise.
+
+
+ Controls whether to allow this table row to split across pages.
+ The logic for this attribute is a little unusual: a true value means
+ DON'T allow rows to split, false means allow rows to split.
+
+ @param split - if true, don't allow row to be split. If false, allow
+ row to be split.
+
+
+ Return true if a table's header row should be repeated at the top of a
+ table split across pages. NOTE - Word will not repeat a table row unless
+ all preceding rows of the table are also repeated. This function returns
+ false if the row will not be repeated even if the repeat tag is present
+ for this row.
+
+ @return true if table's header row should be repeated at the top of each
+ page of table, false otherwise.
+ This attribute controls whether to repeat a table's header row at the top
+ of a table split across pages. NOTE - for a row to be repeated, all preceding
+ rows in the table must also be repeated.
+
+ @param repeat - if TRUE, repeat header row at the top of each page of table;
+ if FALSE, don't repeat header row.
+
+
+ This attribute controls whether to repeat a table's header row at the top
+ of a table split across pages. NOTE - for a row to be repeated, all preceding
+ rows in the table must also be repeated.
+
+ @param repeat - if TRUE, repeat header row at the top of each page of table;
+ if FALSE, don't repeat header row.
+
+
+
+ Create Accent
+
+
+
+
+
+ Create n-ary Operator Object
+
+
+
+
+
+ Subscript Object
+
+
+
+
+
+ Superscript Object
+
+
+
+
+
+ Fraction Object
+
+
+
+
+
+ Radical Object
+
+
+
+
+
+ Accent
+ This element specifies the accent function, consisting of a base
+ and a combining diacritical mark. If accPr is
+ omitted, the default accent is U+0302 (COMBINING CIRCUMFLEX ACCENT).
+
+
+
+
+ Single char or UTF, like: ̃
+
+
+
+
+ This tag, which is an abbreviation for “element”, serves several functions (18 total) including that of the base
+ argument of a mathematical object or function, the elements in an array, and the elements in boxes.If all
+ subelements are omitted, this element specifies the presence of an empty argument.
+
+
+
+
+ Fraction Object
+ This element specifies the fraction object, consisting of a numerator and denominator separated by a fraction
+ bar.The fraction bar can be horizontal or diagonal, depending on the fraction properties.The fraction object is
+ also used to represent the stack function, which places one element above another, with no fraction bar.
+
+
+
+
+ This element specifies the properties of the fraction object f. Properties of the Fraction object include the type
+ or style of the fraction.The fraction bar can be horizontal or diagonal, depending on the fraction properties.The
+ fraction object is also used to represent the stack function, which places one element above another, with no
+ fraction bar.
+
+
+
+
+ This element specifies the numerator of the Fraction object f
+
+
+
+
+ This element specifies the denominator of a fraction
+
+
+
+
+ n-ary Operator Object
+ This element specifies an n-ary object, consisting of an n-ary object, a base (or operand), and optional upper and
+ lower limits
+
+
+
+
+ This tag, which is an abbreviation for “element”, serves several functions (18 total) including that of the base
+ argument of a mathematical object or function, the elements in an array, and the elements in boxes.If all
+ subelements are omitted, this element specifies the presence of an empty argument.
+
+
+
+
+ This element specifies the subscript of the Pre-Sub-Superscript object sPre
+
+
+
+
+ This element specifies the superscript of the superscript object sSup.
+
+
+
+
+ Get Nary symbol
+
+
+
+
+ Sets ∑ char
+
+
+
+
+ Sets ⋃ char
+
+
+
+
+ Sets ∫ char
+
+
+
+
+ Sets ⋀ char
+
+
+
+
+ Radical Object
+ This element specifies the radical object, consisting of a radical, a base e, and an optional degree deg. [Example:
+ Example of rad are √𝑥
+
+
+
+
+ This element specifies the degree in the mathematical radical. This element is optional. When omitted, the
+ square root function, as in √𝑥, is assumed.
+
+
+
+
+ Radical expression element.
+
+
+
+ For isBold, isItalic etc
+
+
+
+ Specifies the fonts which shall be used to display the text contents of
+ this run.The default handling for fcr == null is to overwrite the
+ ascii font char range with the given font family and also set all not
+ specified font ranges
+
+ fontFamily
+ FontCharRange or null for default handling
+
+
+
+ Gets the font family for the specified font char range.
+ If fcr is null, the font char range "ascii" is used
+ Please use "Cambria Math"(set as default) font otherwise MS Word
+ don't open file, LibreOffice Writer open it normaly.
+ I think this is MS Word bug, because this is not standart.
+
+ the font char range, defaults to "ansi"
+ a string representing the font famil
+
+
+
+ Sets the text of this text run
+
+ the literal text which shall be displayed in the document
+
+
+
+ Sets the text of this text run.in the
+
+ the literal text which shall be displayed in the document
+ position in the text array (NB: 0 based)
+
+
+
+ Add the xml:spaces="preserve" attribute if the string has leading or trailing white spaces
+
+ the string to check
+
+
+
+ Subscript Object
+ his element specifies the subscript object sSub, which consists of a base e and a reduced-size scr placed below
+ and to the right, as in Xn
+
+
+
+
+ This tag, which is an abbreviation for “element”, serves several functions (18 total) including that of the base
+ argument of a mathematical object or function, the elements in an array, and the elements in boxes.If all
+ subelements are omitted, this element specifies the presence of an empty argument.
+
+
+
+
+ This element specifies the subscript of the Pre-Sub-Superscript object sPre
+
+
+
+
+ Subscript Object
+ his element specifies the subscript object sSub, which consists of a base e and a reduced-size scr placed below
+ and to the right, as in Xn
+
+
+
+
+ This tag, which is an abbreviation for “element”, serves several functions (18 total) including that of the base
+ argument of a mathematical object or function, the elements in an array, and the elements in boxes.If all
+ subelements are omitted, this element specifies the presence of an empty argument.
+
+
+
+
+ This element specifies the Superscript of the Pre-Sub-Superscript object sPre
+
+
+
+
diff --git a/bin/NPOI.OpenXml4Net.dll b/bin/NPOI.OpenXml4Net.dll
new file mode 100644
index 0000000..76fdac9
Binary files /dev/null and b/bin/NPOI.OpenXml4Net.dll differ
diff --git a/bin/NPOI.OpenXml4Net.xml b/bin/NPOI.OpenXml4Net.xml
new file mode 100644
index 0000000..7ff50bc
--- /dev/null
+++ b/bin/NPOI.OpenXml4Net.xml
@@ -0,0 +1,3211 @@
+
+
+
+ NPOI.OpenXml4Net
+
+
+
+ Specifies the location where the X.509 certificate that is used in signing is stored.
+
+ @author Julien Chable
+
+
+ The certificate is embedded in its own PackagePart.
+
+
+ The certificate is embedded in the SignaturePart that is created for the signature being added.
+
+
+ The certificate in not embedded in the package.
+
+
+ Open Packaging Convention content types (see Annex F : Standard Namespaces
+ and Content Types).
+
+ @author CDubettier define some constants, Julien Chable
+
+
+ Core Properties part.
+
+
+ Digital Signature Certificate part.
+
+
+ Digital Signature Origin part.
+
+
+ Digital Signature XML Signature part.
+
+
+ Relationships part.
+
+
+ Custom XML part.
+
+
+ Plain old xml. Note - OOXML uses application/xml, and not text/xml!
+
+
+ TIFF image format.
+
+ @see
+ http://partners.adobe.com/public/developer/tiff/index.html#spec
+
+
+ Pict image format.
+
+ @see
+ http://developer.apple.com/documentation/mac/QuickDraw/QuickDraw-2.html
+
+
+ XML file.
+
+
+ Specifies the encryption option for parts in a Package.
+
+ @author Julien Chable
+ @version 0.1
+
+
+ No encryption.
+
+
+
+ Type in Type/Subtype.
+
+
+ Subtype
+
+
+ Parameters
+
+
+ Media type compiled pattern for parameters.
+
+
+ Media type compiled pattern, with parameters.
+
+
+ Pattern to match on just the parameters part, to work
+ around the Java Regexp group capture behaviour
+
+
+ Constructor. Check the input with the RFC 2616 grammar.
+
+ @param contentType
+ The content type to store.
+ @throws InvalidFormatException
+ If the specified content type is not valid with RFC 2616.
+
+
+ Get the subtype.
+
+ @return The subtype of this content type.
+
+
+ Get the type.
+
+ @return The type of this content type.
+
+
+ Does this content type have any parameters associated with it?
+
+
+ Return the parameter keys
+
+
+ Gets the value associated to the specified key.
+
+ @param key
+ The key of the key/value pair.
+ @return The value associated to the specified key.
+
+
+ Manage package content types ([Content_Types].xml part).
+
+ @author Julien Chable
+ @version 1.0
+
+
+ Content type part name.
+
+
+ Content type namespace
+
+
+ Reference to the package using this content type manager.
+
+
+
+ Override content type tree.
+
+
+ Constructor. Parses the content of the specified input stream.
+
+ @param in
+ If different of null then the content types part is
+ retrieve and parse.
+ @throws InvalidFormatException
+ If the content types part content is not valid.
+
+
+ Build association extention-> content type (will be stored in
+ [Content_Types].xml) for example ContentType="image/png" Extension="png"
+
+ [M2.8]: When adding a new part to a package, the package implementer
+ shall ensure that a content type for that part is specified in the
+ Content Types stream; the package implementer shall perform the steps
+ described in §9.1.2.3:
+
+ 1. Get the extension from the part name by taking the substring to the
+ right of the rightmost occurrence of the dot character (.) from the
+ rightmost segment.
+
+ 2. If a part name has no extension, a corresponding Override element
+ shall be added to the Content Types stream.
+
+ 3. Compare the resulting extension with the values specified for the
+ Extension attributes of the Default elements in the Content Types stream.
+ The comparison shall be case-insensitive ASCII.
+
+ 4. If there is a Default element with a matching Extension attribute,
+ then the content type of the new part shall be compared with the value of
+ the ContentType attribute. The comparison might be case-sensitive and
+ include every character regardless of the role it plays in the
+ content-type grammar of RFC 2616, or it might follow the grammar of RFC
+ 2616.
+
+ a. If the content types match, no further action is required.
+
+ b. If the content types do not match, a new Override element shall be
+ added to the Content Types stream. .
+
+ 5. If there is no Default element with a matching Extension attribute, a
+ new Default element or Override element shall be added to the Content
+ Types stream.
+
+
+
+ Add an override content type for a specific part.
+
+ @param partName
+ Name of the part.
+ @param contentType
+ Content type of the part.
+
+
+ Add a content type associated with the specified extension.
+
+ @param extension
+ The part name extension to bind to a content type.
+ @param contentType
+ The content type associated with the specified extension.
+
+
+
+ Delete a content type based on the specified part name. If the specified
+ part name is register with an override content type, then this content
+ type is remove, else the content type is remove in the default content
+ type list if it exists and if no part is associated with it yet.
+
+ Check rule M2.4: The package implementer shall require that the Content
+ Types stream contain one of the following for every part in the package:
+ One matching Default element One matching Override element Both a
+ matching Default element and a matching Override element, in which case
+ the Override element takes precedence.
+
+ @param partName
+ The part URI associated with the override content type to
+ delete.
+ @exception InvalidOperationException
+ Throws if
+
+
+ Check if the specified content type is already register.
+
+ @param contentType
+ The content type to check.
+ @return true if the specified content type is already
+ register, then false.
+
+
+ Get the content type for the specified part, if any.
+
+ Rule [M2.9]: To get the content type of a part, the package implementer
+ shall perform the steps described in §9.1.2.4:
+
+ 1. Compare the part name with the values specified for the PartName
+ attribute of the Override elements. The comparison shall be
+ case-insensitive ASCII.
+
+ 2. If there is an Override element with a matching PartName attribute,
+ return the value of its ContentType attribute. No further action is
+ required.
+
+ 3. If there is no Override element with a matching PartName attribute,
+ then a. Get the extension from the part name by taking the substring to
+ the right of the rightmost occurrence of the dot character (.) from the
+ rightmost segment. b. Check the Default elements of the Content Types
+ stream, comparing the extension with the value of the Extension
+ attribute. The comparison shall be case-insensitive ASCII.
+
+ 4. If there is a Default element with a matching Extension attribute,
+ return the value of its ContentType attribute. No further action is
+ required.
+
+ 5. If neither Override nor Default elements with matching attributes are
+ found for the specified part name, the implementation shall not map this
+ part name to a part.
+
+ @param partName
+ The URI part to check.
+ @return The content type associated with the URI (in case of an override
+ content type) or the extension (in case of default content type),
+ else null.
+
+ @exception OpenXml4NetRuntimeException
+ Throws if the content type manager is not able to find the
+ content from an existing part.
+
+
+ Clear all content types.
+
+
+ Clear all override content types.
+
+
+
+ Parse the content types part.
+
+ @throws InvalidFormatException
+ Throws if the content type doesn't exist or the XML format is
+ invalid.
+
+
+ Save the contents type part.
+
+ @param outStream
+ The output stream use to save the XML content of the content
+ types part.
+ @return true if the operation success, else false.
+
+
+ Use to Append specific type XML elements, use by the save() method.
+
+ @param root
+ XML parent element use to Append this override type element.
+ @param entry
+ The values to Append.
+ @see #save(java.io.OutputStream)
+
+
+ Use to Append default types XML elements, use by the save() metid.
+
+ @param root
+ XML parent element use to Append this default type element.
+ @param entry
+ The values to Append.
+ @see #save(java.io.OutputStream)
+
+
+ Specific implementation of the save method. Call by the save() method,
+ call before exiting.
+
+ @param out
+ The output stream use to write the content type XML.
+
+
+ Provide useful method to manage file.
+
+ @author Julien Chable
+ @version 0.1
+
+
+ Get the directory part of the specified file path.
+
+ @param f
+ File to process.
+ @return The directory path from the specified
+
+
+ Copy a file.
+
+ @param in
+ The source file.
+ @param out
+ The target location.
+ @throws IOException
+ If an I/O error occur.
+
+
+ Get file name from the specified File object.
+
+
+ Default marshaller that specified that the part is responsible to marshall its content.
+
+ @author Julien Chable
+ @version 1.0
+ @see PartMarshaller
+
+
+ Save part in the output stream by using the save() method of the part.
+
+ @throws OpenXml4NetException
+ If any error occur.
+
+
+ Package properties marshaller.
+
+ @author CDubet, Julien Chable
+
+
+ Marshall package core properties to an XML document. Always return
+ true.
+
+
+ Add category property element if needed.
+
+
+ Add content status property element if needed.
+
+
+ Add content type property element if needed.
+
+
+ Add created property element if needed.
+
+
+ Add creator property element if needed.
+
+
+ Add description property element if needed.
+
+
+ Add identifier property element if needed.
+
+
+ Add keywords property element if needed.
+
+
+ Add language property element if needed.
+
+
+ Add 'last modified by' property if needed.
+
+
+ Add 'last printed' property if needed.
+
+
+
+ Add modified property element if needed.
+
+
+ Add revision property if needed.
+
+
+ Add subject property if needed.
+
+
+ Add title property if needed.
+
+
+ Package core properties marshaller specialized for zipped package.
+
+ @author Julien Chable
+
+
+ Zip part marshaller. This marshaller is use to save any part in a zip stream.
+
+ @author Julien Chable
+
+
+ Save the specified part.
+
+ @throws OpenXml4NetException
+ Throws if an internal exception is thrown.
+
+
+ Save relationships into the part.
+
+ @param rels
+ The relationships collection to marshall.
+ @param relPartName
+ Part name of the relationship part to marshall.
+ @param zos
+ Zip output stream in which to save the XML content of the
+ relationships serialization.
+
+
+ Storage for the part data.
+
+
+ Constructor.
+
+ @param pack
+ The owner package.
+ @param partName
+ The part name.
+ @param contentType
+ The content type.
+ @throws InvalidFormatException
+ If the specified URI is not OPC compliant.
+
+
+ Constructor.
+
+ @param pack
+ The owner package.
+ @param partName
+ The part name.
+ @param contentType
+ The content type.
+ @param loadRelationships
+ Specify if the relationships will be loaded.
+ @throws InvalidFormatException
+ If the specified URI is not OPC compliant.
+
+
+ Close this stream and flush the content.
+ @see #flush()
+
+
+ Flush this output stream. This method is called by the close() method.
+ Warning : don't call this method for output consistency.
+ @see #close()
+
+
+ Represents the core properties part of a package.
+
+ @author Julien Chable
+ @version 1.0
+
+
+ Constructor.
+
+ @param pack
+ Container package.
+ @param partName
+ Name of this part.
+ @throws InvalidFormatException
+ Throws if the content is invalid.
+
+
+ A categorization of the content of this package.
+
+ [Example: Example values for this property might include: Resume, Letter,
+ Financial Forecast, Proposal, Technical Presentation, and so on. This
+ value might be used by an application's user interface to facilitate
+ navigation of a large Set of documents. end example]
+
+
+ The status of the content.
+
+ [Example: Values might include "Draft", "Reviewed", and "Final". end
+ example]
+
+
+ The type of content represented, generally defined by a specific use and
+ intended audience.
+
+ [Example: Values might include "Whitepaper", "Security Bulletin", and
+ "Exam". end example] [Note: This property is distinct from MIME content
+ types as defined in RFC 2616. end note]
+
+
+ Date of creation of the resource.
+
+
+ An entity primarily responsible for making the content of the resource.
+
+
+ An explanation of the content of the resource.
+
+ [Example: Values might include an abstract, table of contents, reference
+ to a graphical representation of content, and a free-text account of the
+ content. end example]
+
+
+ An unambiguous reference to the resource within a given context.
+
+
+ A delimited Set of keywords to support searching and indexing. This is
+ typically a list of terms that are not available elsewhere in the
+ properties.
+
+
+ The language of the intellectual content of the resource.
+
+ [Note: IETF RFC 3066 provides guidance on encoding to represent
+ languages. end note]
+
+
+ The user who performed the last modification. The identification is
+ environment-specific.
+
+ [Example: A name, email address, or employee ID. end example] It is
+ recommended that this value be as concise as possible.
+
+
+ The date and time of the last printing.
+
+
+ Date on which the resource was changed.
+
+
+ The revision number.
+
+ [Example: This value might indicate the number of saves or revisions,
+ provided the application updates it after each revision. end example]
+
+
+ The topic of the content of the resource.
+
+
+ The name given to the resource.
+
+
+ The version number. This value is Set by the user or by the application.
+
+
+ Get the category property.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getCategoryProperty()
+
+
+ Get content status.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getContentStatusProperty()
+
+
+ Get content type.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getContentTypeProperty()
+
+
+ Get created date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getCreatedProperty()
+
+
+ Get created date formated into a String.
+
+ @return A string representation of the created date.
+
+
+ Get creator.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getCreatorProperty()
+
+
+ Get description.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getDescriptionProperty()
+
+
+ Get identifier.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getIdentifierProperty()
+
+
+ Get keywords.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getKeywordsProperty()
+
+
+ Get the language.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getLanguageProperty()
+
+
+ Get the author of last modifications.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getLastModifiedByProperty()
+
+
+ Get last printed date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getLastPrintedProperty()
+
+
+ Get last printed date formated into a String.
+
+ @return A string representation of the last printed date.
+
+
+ Get modified date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getModifiedProperty()
+
+
+ Get modified date formated into a String.
+
+ @return A string representation of the modified date.
+
+
+ Get revision.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getRevisionProperty()
+
+
+ Get subject.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getSubjectProperty()
+
+
+ Get title.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getTitleProperty()
+
+
+ Get version.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#getVersionProperty()
+
+
+ Set the category.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setCategoryProperty(java.lang.String)
+
+
+ Set the content status.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setContentStatusProperty(java.lang.String)
+
+
+ Set the content type.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setContentTypeProperty(java.lang.String)
+
+
+ Set the created date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setCreatedProperty(org.apache.poi.OpenXml4Net.util.Nullable)
+
+
+ Set the created date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setCreatedProperty(org.apache.poi.OpenXml4Net.util.Nullable)
+
+
+ Set the creator.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setCreatorProperty(java.lang.String)
+
+
+ Set the description.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setDescriptionProperty(java.lang.String)
+
+
+ Set identifier.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setIdentifierProperty(java.lang.String)
+
+
+ Set keywords.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setKeywordsProperty(java.lang.String)
+
+
+ Set language.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setLanguageProperty(java.lang.String)
+
+
+ Set last modifications author.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setLastModifiedByProperty(java.lang.String)
+
+
+ Set last printed date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setLastPrintedProperty(org.apache.poi.OpenXml4Net.util.Nullable)
+
+
+ Set last printed date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setLastPrintedProperty(org.apache.poi.OpenXml4Net.util.Nullable)
+
+
+ Set last modification date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setModifiedProperty(org.apache.poi.OpenXml4Net.util.Nullable)
+
+
+ Set last modification date.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setModifiedProperty(org.apache.poi.OpenXml4Net.util.Nullable)
+
+
+ Set revision.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setRevisionProperty(java.lang.String)
+
+
+ Set subject.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setSubjectProperty(java.lang.String)
+
+
+ Set title.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setTitleProperty(java.lang.String)
+
+
+ Set version.
+
+ @see org.apache.poi.OpenXml4Net.opc.PackageProperties#setVersionProperty(java.lang.String)
+
+
+ Convert a strig value into a String
+
+
+ Convert a string value represented a date into a DateTime?.
+
+ @throws InvalidFormatException
+ Throws if the date format isnot valid.
+
+
+ Convert a DateTime? into a String.
+
+ @param d
+ The Date to convert.
+ @return The formated date or null.
+ @see java.util.SimpleDateFormat
+
+
+ Object implemented this interface are considered as part marshaller. A part
+ marshaller is responsible to marshall a part in order to be save in a
+ package.
+
+ @author Julien Chable
+ @version 0.1
+
+
+ Save the content of the package in the stream
+
+ @param part
+ Part to marshall.
+ @param out
+ The output stream into which the part will be marshall.
+ @return false if any marshall error occurs, else true
+ @throws OpenXml4NetException
+ Throws only if any other exceptions are thrown by inner
+ methods.
+
+
+ Object implemented this interface are considered as part unmarshaller. A part
+ unmarshaller is responsible to unmarshall a part in order to load it from a
+ package.
+
+ @author Julien Chable
+ @version 0.1
+
+
+ Save the content of the package in the stream
+
+ @param in
+ The input stream from which the part will be unmarshall.
+ @return The part freshly unmarshall from the input stream.
+ @throws OpenXml4NetException
+ Throws only if any other exceptions are thrown by inner
+ methods.
+
+
+ Package properties unmarshaller.
+
+ @author Julien Chable
+ @version 1.0
+
+
+
+ Context needed for the unmarshall process of a part. This class is immutable.
+
+ @author Julien Chable
+ @version 1.0
+
+
+ Constructor.
+
+ @param targetPackage
+ Container.
+ @param partName
+ Name of the part to unmarshall.
+
+
+ @return the container
+
+
+ @return the partName
+
+
+ @return the zipEntry
+
+
+ Zip implementation of the ContentTypeManager.
+
+ @author Julien Chable
+ @version 1.0
+ @see ContentTypeManager
+
+
+ Delegate constructor to the super constructor.
+
+ @param in
+ The input stream to parse to fill internal content type
+ collections.
+ @throws InvalidFormatException
+ If the content types part content is not valid.
+
+
+ Forward slash use to convert part name between OPC and zip item naming
+ conventions.
+
+
+ Buffer to read data from file. Use big buffer to improve performaces. the
+ InputStream class is reading only 8192 bytes per read call (default value
+ set by sun)
+
+
+ Prevent this class to be instancied.
+
+
+ Retrieve the zip entry of the core properties part.
+
+ @throws OpenXml4NetException
+ Throws if internal error occurs.
+
+
+ Retrieve the Zip entry of the content types part.
+
+
+ Convert a zip name into an OPC name by adding a leading forward slash to
+ the specified item name.
+
+ @param zipItemName
+ Zip item name to convert.
+ @return An OPC compliant name.
+
+
+ Convert an OPC item name into a zip item name by removing any leading
+ forward slash if it exist.
+
+ @param opcItemName
+ The OPC item name to convert.
+ @return A zip item name without any leading slashes.
+
+
+ Convert an OPC item name into a zip URI by removing any leading forward
+ slash if it exist.
+
+ @param opcItemName
+ The OPC item name to convert.
+ @return A zip URI without any leading slashes.
+
+
+ Verifies that the given stream starts with a Zip structure.
+
+ Warning - this will consume the first few bytes of the stream,
+ you should push-back or reset the stream after use!
+
+
+ Opens the specified stream as a secure zip
+
+ @param stream
+ The stream to open.
+ @return The zip stream freshly open.
+
+
+ Opens the specified file as a zip, or returns null if no such file exists
+
+ @param file
+ The file to open.
+ @return The zip archive freshly open.
+
+
+ Retrieve and open a zip file with the specified path.
+
+ @param path
+ The file path.
+ @return The zip archive freshly open.
+
+
+ Represents a container that can store multiple data objects.
+
+ @author Julien Chable, CDubet
+ @version 0.1
+
+
+ Logger.
+
+
+ Default package access.
+
+
+ Package access.
+
+
+ Package parts collection.
+
+
+ Package relationships.
+
+
+ Part marshallers by content type.
+
+
+ Default part marshaller.
+
+
+ Part unmarshallers by content type.
+
+
+ Core package properties.
+
+
+ Manage parts content types of this package.
+
+
+ Flag if a modification is done to the document.
+
+
+ File path of this package.
+
+
+ Output stream for writing this package.
+
+
+ Constructor.
+
+ @param access
+ Package access.
+
+
+ Initialize the package instance.
+
+
+ Open a package with read/write permission.
+
+ @param path
+ The document path.
+ @return A Package object, else null.
+ @throws InvalidFormatException
+ If the specified file doesn't exist, and a parsing error
+ occur.
+
+
+ Open a package with read/write permission.
+
+ @param file
+ The file to open.
+ @return A Package object, else null.
+ @throws InvalidFormatException
+ If the specified file doesn't exist, and a parsing error
+ occur.
+
+
+ Open an user provided {@link ZipEntrySource} with read-only permission.
+ This method can be used to stream data into POI.
+ Opposed to other open variants, the data is read as-is, e.g. there aren't
+ any zip-bomb protection put in place.
+
+ @param zipEntry the custom source
+ @return A Package object
+ @ if a parsing error occur.
+
+
+ Open a package.
+
+ @param path
+ The document path.
+ @param access
+ PackageBase access.
+ @return A PackageBase object, else null.
+ @throws InvalidFormatException
+ If the specified file doesn't exist, and a parsing error
+ occur.
+ @throws InvalidOperationException If the zip file cannot be opened.
+ @throws InvalidFormatException if the package is not valid.
+
+
+ Open a package.
+
+ @param file
+ The file to open.
+ @param access
+ PackageBase access.
+ @return A PackageBase object, else null.
+ @throws InvalidFormatException
+ If the specified file doesn't exist, and a parsing error
+ occur.
+
+
+ Open a package.
+
+ Note - uses quite a bit more memory than {@link #open(String)}, which
+ doesn't need to hold the whole zip file in memory, and can take advantage
+ of native methods
+
+ @param in
+ The InputStream to read the package from
+ @return A PackageBase object
+
+
+ Opens a package if it exists, else it Creates one.
+
+ @param file
+ The file to open or to Create.
+ @return A newly Created package if the specified file does not exist,
+ else the package extract from the file.
+ @throws InvalidFormatException
+ Throws if the specified file exist and is not valid.
+
+
+ Creates a new package.
+
+ @param file
+ Path of the document.
+ @return A newly Created PackageBase ready to use.
+
+
+ Flush the package : save all.
+
+ @see #close()
+
+
+ Close the package and save its content.
+
+ @throws IOException
+ If an IO exception occur during the saving process.
+
+
+ Close the package WITHOUT saving its content. Reinitialize this package
+ and cancel all changes done to it.
+
+
+
+ Add a thumbnail to the package. This method is provided to make easier
+ the addition of a thumbnail in a package. You can do the same work by
+ using the traditionnal relationship and part mechanism.
+
+ path The full path to the image file.
+
+
+
+ Add a thumbnail to the package. This method is provided to make easier
+ the addition of a thumbnail in a package. You can do the same work by
+ using the traditionnal relationship and part mechanism.
+
+
+
+
+
+ Throws an exception if the package access mode is in read only mode
+ (PackageAccess.Read).
+
+ @throws InvalidOperationException
+ Throws if a writing operation is done on a read only package.
+ @see org.apache.poi.OpenXml4Net.opc.PackageAccess
+
+
+ Throws an exception if the package access mode is in write only mode
+ (PackageAccess.Write). This method is call when other methods need write
+ right.
+
+ @throws InvalidOperationException if a read operation is done on a write only package.
+ @see org.apache.poi.OpenXml4Net.opc.PackageAccess
+
+
+ Retrieves or Creates if none exists, core package property part.
+
+ @return The PackageProperties part of this package.
+
+
+ Retrieve a part identified by its name.
+
+ @param PartName
+ Part name of the part to retrieve.
+ @return The part with the specified name, else null.
+
+
+ Retrieve parts by content type.
+
+ @param contentType
+ The content type criteria.
+ @return All part associated to the specified content type.
+
+
+ Retrieve parts by relationship type.
+
+ @param relationshipType
+ Relationship type.
+ @return All parts which are the target of a relationship with the
+ specified type, if the method can't retrieve relationships from
+ the package, then return null.
+
+
+ Retrieve parts by name
+
+ @param namePattern
+ The pattern for matching the names
+ @return All parts associated to the specified content type, sorted
+ in alphanumerically by the part-name
+
+
+ Get the target part from the specified relationship.
+
+ @param partRel
+ The part relationship uses to retrieve the part.
+
+
+ Load the parts of the archive if it has not been done yet. The
+ relationships of each part are not loaded.
+
+ Note - Rule M4.1 states that there may only ever be one Core
+ Properties Part, but Office produced files will sometimes
+ have multiple! As Office ignores all but the first, we relax
+ Compliance with Rule M4.1, and ignore all others silently too.
+
+ @return All this package's parts.
+ @throws InvalidFormatException if the package is not valid.
+
+
+ Create and Add a part, with the specified name and content type, to the
+ package.
+
+ @param PartName
+ Part name.
+ @param contentType
+ Part content type.
+ @return The newly Created part.
+ @throws InvalidFormatException
+ If rule M1.12 is not verified : Packages shall not contain
+ equivalent part names and package implementers shall neither
+ Create nor recognize packages with equivalent part names.
+ @see #CreatePartImpl(PackagePartName, String, bool)
+
+
+ Create and Add a part, with the specified name and content type, to the
+ package. For general purpose, prefer the overload version of this method
+ without the 'loadRelationships' parameter.
+
+ @param PartName
+ Part name.
+ @param contentType
+ Part content type.
+ @param loadRelationships
+ Specify if the existing relationship part, if any, logically
+ associated to the newly Created part will be loaded.
+ @return The newly Created part.
+ @throws InvalidFormatException
+ If rule M1.12 is not verified : Packages shall not contain
+ equivalent part names and package implementers shall neither
+ Create nor recognize packages with equivalent part names.
+ @see {@link#CreatePartImpl(URI, String)}
+
+
+ Add a part to the package.
+
+ @param PartName
+ Part name of the part to Create.
+ @param contentType
+ type associated with the file
+ @param content
+ the contents to Add. In order to have faster operation in
+ document merge, the data are stored in memory not on a hard
+ disk
+
+ @return The new part.
+ @see #CreatePart(PackagePartName, String)
+
+
+ Add the specified part to the package. If a part already exists in the
+ package with the same name as the one specified, then we replace the old
+ part by the specified part.
+
+ @param part
+ The part to add (or replace).
+ @return The part added to the package, the same as the one specified.
+ @throws InvalidOperationException
+ If rule M1.12 is not verified : Packages shall not contain
+ equivalent part names and package implementers shall neither
+ create nor recognize packages with equivalent part names.
+
+
+ Remove the specified part in this package. If this part is relationship
+ part, then delete all relationships in the source part.
+
+ @param part
+ The part to Remove. If null, skip the action.
+ @see #RemovePart(PackagePartName)
+
+
+ Remove a part in this package. If this part is relationship part, then
+ delete all relationships in the source part.
+
+ @param PartName
+ The part name of the part to Remove.
+
+
+ Remove a part from this package as well as its relationship part, if one
+ exists, and all parts listed in the relationship part. Be aware that this
+ do not delete relationships which target the specified part.
+
+ @param PartName
+ The name of the part to delete.
+ @throws InvalidFormatException
+ Throws if the associated relationship part of the specified
+ part is not valid.
+
+
+ Delete the part with the specified name and its associated relationships
+ part if one exists. Prefer the use of this method to delete a part in the
+ package, compare to the Remove() methods that don't Remove associated
+ relationships part.
+
+ @param PartName
+ Name of the part to delete
+
+
+ Delete the part with the specified name and all part listed in its
+ associated relationships part if one exists. This process is recursively
+ apply to all parts in the relationships part of the specified part.
+ Prefer the use of this method to delete a part in the package, compare to
+ the Remove() methods that don't Remove associated relationships part.
+
+ @param PartName
+ Name of the part to delete
+
+
+ Check if a part already exists in this package from its name.
+
+ @param PartName
+ Part name to check.
+ @return true if the part is logically Added to this package, else
+ false.
+
+
+ Add a relationship to the package (except relationships part).
+
+ Check rule M4.1 : The format designer shall specify and the format
+ producer shall Create at most one core properties relationship for a
+ package. A format consumer shall consider more than one core properties
+ relationship for a package to be an error. If present, the relationship
+ shall target the Core Properties part.
+
+ Check rule M1.25: The Relationships part shall not have relationships to
+ any other part. Package implementers shall enforce this requirement upon
+ the attempt to Create such a relationship and shall treat any such
+ relationship as invalid.
+
+ @param targetPartName
+ Target part name.
+ @param targetMode
+ Target mode, either Internal or External.
+ @param relationshipType
+ Relationship type.
+ @param relID
+ ID of the relationship.
+ @see PackageRelationshipTypes
+
+
+ Add a package relationship.
+
+ @param targetPartName
+ Target part name.
+ @param targetMode
+ Target mode, either Internal or External.
+ @param relationshipType
+ Relationship type.
+ @see PackageRelationshipTypes
+
+
+ Adds an external relationship to a part (except relationships part).
+
+ The targets of external relationships are not subject to the same
+ validity checks that internal ones are, as the contents is potentially
+ any file, URL or similar.
+
+ @param target
+ External target of the relationship
+ @param relationshipType
+ Type of relationship.
+ @return The newly Created and Added relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#AddExternalRelationship(java.lang.String,
+ java.lang.String)
+
+
+ Adds an external relationship to a part (except relationships part).
+
+ The targets of external relationships are not subject to the same
+ validity checks that internal ones are, as the contents is potentially
+ any file, URL or similar.
+
+ @param target
+ External target of the relationship
+ @param relationshipType
+ Type of relationship.
+ @param id
+ Relationship unique id.
+ @return The newly Created and Added relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#AddExternalRelationship(java.lang.String,
+ java.lang.String)
+
+
+ Delete a relationship from this package.
+
+ @param id
+ Id of the relationship to delete.
+
+
+ Retrieves all package relationships.
+
+ @return All package relationships of this package.
+ @throws InvalidOperationException if a read operation is done on a write only package.
+ @see #GetRelationshipsHelper(String)
+
+
+ Retrieves all relationships with the specified type.
+
+ @param relationshipType
+ The filter specifying the relationship type.
+ @return All relationships with the specified relationship type.
+
+
+ Retrieves all relationships with specified id (normally just ine because
+ a relationship id is supposed to be unique).
+
+ @param id
+ Id of the wanted relationship.
+
+
+ Clear package relationships.
+
+
+ Ensure that the relationships collection is not null.
+
+
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#GetRelationship(java.lang.String)
+
+
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#hasRelationships()
+
+
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#isRelationshipExists(org.apache.poi.OpenXml4Net.opc.PackageRelationship)
+
+
+ Add a marshaller.
+
+ @param contentType
+ The content type to bind to the specified marshaller.
+ @param marshaller
+ The marshaller to register with the specified content type.
+
+
+ Add an unmarshaller.
+
+ @param contentType
+ The content type to bind to the specified unmarshaller.
+ @param unmarshaller
+ The unmarshaller to register with the specified content type.
+
+
+ Remove a marshaller by its content type.
+
+ @param contentType
+ The content type associated with the marshaller to Remove.
+
+
+ Remove an unmarshaller by its content type.
+
+ @param contentType
+ The content type associated with the unmarshaller to Remove.
+
+
+ Get the package access mode.
+
+ @return the packageAccess The current package access.
+
+
+ Validates the package compliance with the OPC specifications.
+
+ @return true if the package is valid else false
+
+
+ Save the document in the specified file.
+
+ @param targetFile
+ Destination file.
+ @throws IOException
+ Throws if an IO exception occur.
+ @see #save(OutputStream)
+
+
+ Save the document in the specified output stream.
+
+ @param outputStream
+ The stream to save the package.
+ @see #saveImpl(OutputStream)
+
+
+ Core method to Create a package part. This method must be implemented by
+ the subclass.
+
+ @param PartName
+ URI of the part to Create.
+ @param contentType
+ Content type of the part to Create.
+ @return The newly Created package part.
+
+
+ Core method to delete a package part. This method must be implemented by
+ the subclass.
+
+ @param PartName
+ The URI of the part to delete.
+
+
+ Flush the package but not save.
+
+
+ Close the package and cause a save of the package.
+
+
+
+ Close the package without saving the document. Discard all changes made
+ to this package.
+
+
+ Save the package into the specified output stream.
+
+ @param outputStream
+ The output stream use to save this package.
+
+
+ Get the package part mapped to the specified URI.
+
+ @param PartName
+ The URI of the part to retrieve.
+ @return The package part located by the specified URI, else null.
+
+
+ Get all parts link to the package.
+
+ @return A list of the part owned by the package.
+
+
+ Replace a content type in this package.
+
+
+ A typical scneario to call this method is to rename a template file to the main format, e.g.
+ ".dotx" to ".docx"
+ ".dotm" to ".docm"
+ ".xltx" to ".xlsx"
+ ".xltm" to ".xlsm"
+ ".potx" to ".pptx"
+ ".potm" to ".pptm"
+
+ For example, a code converting a .xlsm macro workbook to .xlsx would look as follows:
+
+
+
+ OPCPackage pkg = OPCPackage.open(new FileInputStream("macro-workbook.xlsm"));
+ pkg.replaceContentType(
+ "application/vnd.ms-excel.sheet.macroEnabled.main+xml",
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml");
+
+ FileOutputStream out = new FileOutputStream("workbook.xlsx");
+ pkg.save(out);
+ out.close();
+
+
+
+
+ @param oldContentType the content type to be replaced
+ @param newContentType the replacement
+ @return whether replacement was succesfull
+ @since POI-3.8
+
+
+ Add the specified part, and register its content type with the content
+ type manager.
+
+ @param part
+ The part to add.
+
+
+ Remove the specified part, and clear its content type from the content
+ type manager.
+
+ @param partName
+ The part name of the part to remove.
+
+
+ Specifies package access.
+
+ @author Julien Chable
+ @version 1.0
+
+
+ Read only. Write not authorized.
+
+
+ Write only. Read not authorized.
+
+
+ Read and Write mode.
+
+
+ Open Packaging Convention namespaces URI.
+
+ @author Julien Chable
+ @version 1.0
+
+
+ Dublin Core Terms URI.
+
+
+ Dublin Core namespace URI.
+
+
+ Content Types.
+
+
+ Core Properties.
+
+
+ Digital Signatures.
+
+
+ Relationships.
+
+
+ Markup Compatibility.
+
+
+ Provides a base class for parts stored in a Package.
+
+ @author Julien Chable
+ @version 0.9
+
+
+ This part's container.
+
+
+ The part name. (required by the specification [M1.1])
+
+
+ The type of content of this part. (required by the specification [M1.2])
+
+
+ Flag to know if this part is a relationship.
+
+
+ Flag to know if this part has been logically deleted.
+
+
+ This part's relationships.
+
+
+ Constructor.
+
+ @param pack
+ Parent package.
+ @param partName
+ The part name, relative to the parent Package root.
+ @param contentType
+ The content type.
+ @throws InvalidFormatException
+ If the specified URI is not valid.
+
+
+ Constructor.
+
+ @param pack
+ Parent package.
+ @param partName
+ The part name, relative to the parent Package root.
+ @param contentType
+ The content type.
+ @param loadRelationships
+ Specify if the relationships will be loaded
+ @throws InvalidFormatException
+ If the specified URI is not valid.
+
+
+ Constructor.
+
+ @param pack
+ Parent package.
+ @param partName
+ The part name, relative to the parent Package root.
+ @param contentType
+ The Multipurpose Internet Mail Extensions (MIME) content type
+ of the part's data stream.
+
+
+
+ Check if the new part was already added before via PackagePart.addRelationship()
+
+ to find the relationship for
+ The existing relationship, or null if there isn't yet one
+
+
+ Adds an external relationship to a part (except relationships part).
+
+ The targets of external relationships are not subject to the same
+ validity checks that internal ones are, as the contents is potentially
+ any file, URL or similar.
+
+ @param target
+ External target of the relationship
+ @param relationshipType
+ Type of relationship.
+ @return The newly created and added relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#addExternalRelationship(java.lang.String,
+ java.lang.String)
+
+
+ Adds an external relationship to a part (except relationships part).
+
+ The targets of external relationships are not subject to the same
+ validity checks that internal ones are, as the contents is potentially
+ any file, URL or similar.
+
+ @param target
+ External target of the relationship
+ @param relationshipType
+ Type of relationship.
+ @param id
+ Relationship unique id.
+ @return The newly created and added relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#addExternalRelationship(java.lang.String,
+ java.lang.String)
+
+
+ Add a relationship to a part (except relationships part).
+
+ @param targetPartName
+ Name of the target part. This one must be relative to the
+ source root directory of the part.
+ @param targetMode
+ Mode [Internal|External].
+ @param relationshipType
+ Type of relationship.
+ @return The newly created and added relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#AddRelationship(org.apache.poi.OpenXml4Net.opc.PackagePartName,
+ org.apache.poi.OpenXml4Net.opc.TargetMode, java.lang.String)
+
+
+ Add a relationship to a part (except relationships part).
+
+ Check rule M1.25: The Relationships part shall not have relationships to
+ any other part. Package implementers shall enforce this requirement upon
+ the attempt to create such a relationship and shall treat any such
+ relationship as invalid.
+
+ @param targetPartName
+ Name of the target part. This one must be relative to the
+ source root directory of the part.
+ @param targetMode
+ Mode [Internal|External].
+ @param relationshipType
+ Type of relationship.
+ @param id
+ Relationship unique id.
+ @return The newly created and added relationship
+
+ @throws InvalidFormatException
+ If the URI point to a relationship part URI.
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#AddRelationship(org.apache.poi.OpenXml4Net.opc.PackagePartName,
+ org.apache.poi.OpenXml4Net.opc.TargetMode, java.lang.String, java.lang.String)
+
+
+ Add a relationship to a part (except relationships part).
+
+ @param targetURI
+ URI the target part. Must be relative to the source root
+ directory of the part.
+ @param targetMode
+ Mode [Internal|External].
+ @param relationshipType
+ Type of relationship.
+ @return The newly created and added relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#AddRelationship(org.apache.poi.OpenXml4Net.opc.PackagePartName,
+ org.apache.poi.OpenXml4Net.opc.TargetMode, java.lang.String)
+
+
+ Add a relationship to a part (except relationships part).
+
+ Check rule M1.25: The Relationships part shall not have relationships to
+ any other part. Package implementers shall enforce this requirement upon
+ the attempt to create such a relationship and shall treat any such
+ relationship as invalid.
+
+ @param targetURI
+ URI of the target part. Must be relative to the source root
+ directory of the part.
+ @param targetMode
+ Mode [Internal|External].
+ @param relationshipType
+ Type of relationship.
+ @param id
+ Relationship unique id.
+ @return The newly created and added relationship
+
+ @throws InvalidFormatException
+ If the URI point to a relationship part URI.
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#AddRelationship(org.apache.poi.OpenXml4Net.opc.PackagePartName,
+ org.apache.poi.OpenXml4Net.opc.TargetMode, java.lang.String, java.lang.String)
+
+
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#clearRelationships()
+
+
+ Delete the relationship specified by its id.
+
+ @param id
+ The ID identified the part to delete.
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#removeRelationship(java.lang.String)
+
+
+ Retrieve all the relationships attached to this part.
+
+ @return This part's relationships.
+ @throws OpenXml4NetException
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#getRelationships()
+
+
+ Retrieves a package relationship from its id.
+
+ @param id
+ ID of the package relationship to retrieve.
+ @return The package relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#getRelationship(java.lang.String)
+
+
+ Retrieve all relationships attached to this part which have the specified
+ type.
+
+ @param relationshipType
+ Relationship type filter.
+ @return All relationships from this part that have the specified type.
+ @throws InvalidFormatException
+ If an error occurs while parsing the part.
+ @throws InvalidOperationException
+ If the package is open in write only mode.
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#getRelationshipsByType(java.lang.String)
+
+
+ Implementation of the getRelationships method().
+
+ @param filter
+ Relationship type filter. If null then the filter is
+ disabled and return all the relationships.
+ @return All relationships from this part that have the specified type.
+ @throws InvalidFormatException
+ Throws if an error occurs during parsing the relationships
+ part.
+ @throws InvalidOperationException
+ Throws if the package is open en write only mode.
+ @see #getRelationshipsByType(String)
+
+
+ Knows if the part have any relationships.
+
+ @return true if the part have at least one relationship else
+ false.
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#hasRelationships()
+
+
+ Checks if the specified relationship is part of this package part.
+
+ @param rel
+ The relationship to check.
+ @return true if the specified relationship exists in this part,
+ else returns false
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#isRelationshipExists(org.apache.poi.OpenXml4Net.opc.PackageRelationship)
+
+
+ Get the PackagePart that is the target of a relationship.
+
+ @param rel A relationship from this part to another one
+ @return The target part of the relationship
+
+
+ Get the input stream of this part to read its content.
+
+ @return The input stream of the content of this part, else
+ null.
+
+
+ Get the output stream of this part. If the part is originally embedded in
+ Zip package, it'll be transform intot a MemoryPackagePart in
+ order to write inside (the standard Java API doesn't allow to write in
+ the file)
+
+ @see org.apache.poi.openxml4j.opc.internal.MemoryPackagePart
+
+
+ Throws an exception if this package part is a relationship part.
+
+ @throws InvalidOperationException
+ If this part is a relationship part.
+
+
+ Ensure the package relationships collection instance is built.
+
+ @throws InvalidFormatException
+ Throws if
+
+
+ @return the uri
+
+
+ @return the contentType
+
+
+ @return The Content Type, including parameters, of the part
+
+
+ @return true if this part is a relationship
+
+
+ @return true if this part has been logically deleted
+
+
+ @return The length of the part in bytes, or -1 if not known
+
+
+ Compare based on the package part name, using a natural sort order
+
+
+ Abtract method that get the input stream of this part.
+
+ @exception IOException
+ Throws if an IO Exception occur in the implementation
+ method.
+
+
+ Abstract method that get the output stream of this part.
+
+
+ Save the content of this part and the associated relationships part (if
+ this part own at least one relationship) into the specified output
+ stream.
+
+ @param zos
+ Output stream to save this part.
+ @throws OpenXml4NetException
+ If any exception occur.
+
+
+ Load the content of this part.
+
+ @param ios
+ The input stream of the content to load.
+ @return true if the content has been successfully loaded, else
+ false.
+ @throws InvalidFormatException
+ Throws if the content format is invalid.
+
+
+ Close this part : flush this part, close the input stream and output
+ stream. After this method call, the part must be available for packaging.
+
+
+ Flush the content of this part. If the input stream and/or output stream
+ as in a waiting state to read or write, the must to empty their
+ respective buffer.
+
+
+ Allows sub-classes to clean up before new data is added.
+
+
+ A package part collection.
+
+ @author Julien Chable
+ @version 0.1
+
+
+ Arraylist use to store this collection part names as string for rule
+ M1.11 optimized checking.
+
+
+ Check rule [M1.11]: a package implementer shall neither create nor
+ recognize a part with a part name derived from another part name by
+ Appending segments to it.
+
+ @exception InvalidOperationException
+ Throws if you try to add a part with a name derived from
+ another part name.
+
+
+ An immutable Open Packaging Convention compliant part name.
+
+ @author Julien Chable
+
+ @see http://www.ietf.org/rfc/rfc3986.txt
+
+
+ Part name stored as an URI.
+
+
+ Reserved characters for sub delimitations.
+
+
+
+ Authorized reserved characters for pChar.
+
+
+ Flag to know if this part name is from a relationship part name.
+
+
+ Constructor. Makes a ValidPartName object from a java.net.URI
+
+ @param uri
+ The URI to validate and to transform into ValidPartName.
+ @param checkConformance
+ Flag to specify if the contructor have to validate the OPC
+ conformance. Must be always true except for
+ special URI like '/' which is needed for internal use by
+ OpenXml4Net but is not valid.
+ @throws InvalidFormatException
+ Throw if the specified part name is not conform to Open
+ Packaging Convention specifications.
+ @see java.net.URI
+
+
+ Constructor. Makes a ValidPartName object from a String part name.
+
+ @param partName
+ Part name to valid and to create.
+ @param checkConformance
+ Flag to specify if the contructor have to validate the OPC
+ conformance. Must be always true except for
+ special URI like '/' which is needed for internal use by
+ OpenXml4Net but is not valid.
+ @throws InvalidFormatException
+ Throw if the specified part name is not conform to Open
+ Packaging Convention specifications.
+
+
+ Check if the specified part name is a relationship part name.
+
+ @param partUri
+ The URI to check.
+ @return true if this part name respect the relationship
+ part naming convention else false.
+
+
+ Know if this part name is a relationship part name.
+
+ @return true if this part name respect the relationship
+ part naming convention else false.
+
+
+ Throws an exception (of any kind) if the specified part name does not
+ follow the Open Packaging Convention specifications naming rules.
+
+ @param partUri
+ The part name to check.
+ @throws Exception
+ Throws if the part name is invalid.
+
+
+ Throws an exception if the specified URI is empty. [M1.1]
+
+ @param partURI
+ Part URI to check.
+ @throws InvalidFormatException
+ If the specified URI is empty.
+
+
+ Throws an exception if the part name has empty segments. [M1.3]
+
+ Throws an exception if a segment any characters other than pchar
+ characters. [M1.6]
+
+ Throws an exception if a segment contain percent-encoded forward slash
+ ('/'), or backward slash ('\') characters. [M1.7]
+
+ Throws an exception if a segment contain percent-encoded unreserved
+ characters. [M1.8]
+
+ Throws an exception if the specified part name's segments end with a dot
+ ('.') character. [M1.9]
+
+ Throws an exception if a segment doesn't include at least one non-dot
+ character. [M1.10]
+
+ @param partUri
+ The part name to check.
+ @throws InvalidFormatException
+ if the specified URI contain an empty segments or if one the
+ segments contained in the part name, ends with a dot ('.')
+ character.
+
+
+ Throws an exception if a segment any characters other than pchar
+ characters. [M1.6]
+
+ Throws an exception if a segment contain percent-encoded forward slash
+ ('/'), or backward slash ('\') characters. [M1.7]
+
+ Throws an exception if a segment contain percent-encoded unreserved
+ characters. [M1.8]
+
+ @param segment
+ The segment to check
+
+
+ Throws an exception if the specified part name doesn't start with a
+ forward slash character '/'. [M1.4]
+
+ @param partUri
+ The part name to check.
+ @throws InvalidFormatException
+ If the specified part name doesn't start with a forward slash
+ character '/'.
+
+
+ Throws an exception if the specified part name ends with a forwar slash
+ character '/'. [M1.5]
+
+ @param partUri
+ The part name to check.
+ @throws InvalidFormatException
+ If the specified part name ends with a forwar slash character
+ '/'.
+
+
+ Throws an exception if the specified URI is absolute.
+
+ @param partUri
+ The URI to check.
+ @throws InvalidFormatException
+ Throws if the specified URI is absolute.
+
+
+ Compare two part name following the rule M1.12 :
+
+ Part name equivalence is determined by comparing part names as
+ case-insensitive ASCII strings. Packages shall not contain equivalent
+ part names and package implementers shall neither create nor recognize
+ packages with equivalent part names. [M1.12]
+
+
+ Retrieves the extension of the part name if any. If there is no extension
+ returns an empty String. Example : '/document/content.xml' => 'xml'
+
+ @return The extension of the part name.
+
+
+ Get this part name.
+
+ @return The name of this part name.
+
+
+ Part name equivalence is determined by comparing part names as
+ case-insensitive ASCII strings. Packages shall not contain equivalent
+ part names and package implementers shall neither create nor recognize
+ packages with equivalent part names. [M1.12]
+
+
+ Part name property getter.
+
+ @return This part name URI.
+
+
+
+
+ Represents the core properties of an OPC package.
+
+ @author Julien Chable
+ @version 1.0
+ @see org.apache.poi.OpenXml4Net.opc.OPCPackage
+
+
+ Set the category of the content of this package.
+
+
+ Set the category of the content of this package.
+
+
+ Set the status of the content.
+
+
+ Get the status of the content.
+
+
+ Get the type of content represented, generally defined by a specific use
+ and intended audience.
+
+
+ Set the type of content represented, generally defined by a specific use
+ and intended audience.
+
+
+ Get the date of creation of the resource.
+
+
+ Set the date of creation of the resource.
+
+
+ Set the date of creation of the resource.
+
+
+ Get the entity primarily responsible for making the content of the
+ resource.
+
+
+ Set the entity primarily responsible for making the content of the
+ resource.
+
+
+ Get the explanation of the content of the resource.
+
+
+ Set the explanation of the content of the resource.
+
+
+ Get an unambiguous reference to the resource within a given context.
+
+
+ Set an unambiguous reference to the resource within a given context.
+
+
+ Get a delimited Set of keywords to support searching and indexing. This
+ is typically a list of terms that are not available elsewhere in the
+ properties
+
+
+ Set a delimited Set of keywords to support searching and indexing. This
+ is typically a list of terms that are not available elsewhere in the
+ properties
+
+
+ Get the language of the intellectual content of the resource.
+
+
+ Set the language of the intellectual content of the resource.
+
+
+ Get the user who performed the last modification.
+
+
+ Set the user who performed the last modification.
+
+
+ Get the date and time of the last printing.
+
+
+ Set the date and time of the last printing.
+
+
+ Set the date and time of the last printing.
+
+
+ Get the date on which the resource was changed.
+
+
+ Set the date on which the resource was changed.
+
+
+ Set the date on which the resource was changed.
+
+
+ Get the revision number.
+
+
+ Set the revision number.
+
+
+ Get the topic of the content of the resource.
+
+
+ Set the topic of the content of the resource.
+
+
+ Get the name given to the resource.
+
+
+ Set the name given to the resource.
+
+
+ Get the version number.
+
+
+ Set the version number.
+
+
+ A part relationship.
+
+ @author Julien Chable
+ @version 1.0
+
+
+ Relation id.
+
+
+ Reference to the package.
+
+
+ Relationship type
+
+
+ Part of this relationship source
+
+
+ Targeting mode [Internal|External]
+
+
+ Target URI
+
+
+ Constructor.
+
+ @param pkg
+ @param sourcePart
+ @param targetUri
+ @param targetMode
+ @param relationshipType
+ @param id
+
+
+ @return the container
+
+
+ @return the id
+
+
+ @return the relationshipType
+
+
+ @return the source
+
+
+
+ @return URL of the source part of this relationship
+
+
+ public URI getSourceUri(){ }
+
+ @return the targetMode
+
+
+ @return the targetUri
+
+
+ Represents a collection of PackageRelationship elements that are owned by a
+ given PackagePart or the Package.
+
+ @author Julien Chable, CDubettier
+ @version 0.1
+
+
+ Package relationships ordered by ID.
+
+
+ A lookup of internal relationships to avoid
+
+
+ This relationshipPart.
+
+
+ Source part.
+
+
+ This part name.
+
+
+ Reference to the package.
+
+
+ The ID number of the next rID# to generate, or -1
+ if that is still to be determined.
+
+
+ Constructor.
+
+
+ Copy constructor.
+
+ This collection will contain only elements from the specified collection
+ for which the type is compatible with the specified relationship type
+ filter.
+
+ @param coll
+ Collection to import.
+ @param filter
+ Relationship type filter.
+
+
+ Constructor.
+
+
+ Constructor.
+
+ @throws InvalidFormatException
+ Throws if the format of the content part is invalid.
+
+ @throws InvalidOperationException
+ Throws if the specified part is a relationship part.
+
+
+ Constructor. Parse the existing package relationship part if one exists.
+
+ @param container
+ The parent package.
+ @param part
+ The part that own this relationships collection. If null
+ then this part is considered as the package root.
+ @throws InvalidFormatException
+ If an error occurs during the parsing of the relatinships
+ part fo the specified part.
+
+
+ Get the relationship part name of the specified part.
+
+ @param part
+ The part .
+ @return The relationship part name of the specified part. Be careful,
+ only the correct name is returned, this method does not check if
+ the part really exist in a package !
+ @throws InvalidOperationException
+ Throws if the specified part is a relationship part.
+
+
+ Add the specified relationship to the collection.
+
+ @param relPart
+ The relationship to add.
+
+
+ Add a relationship to the collection.
+
+ @param targetUri
+ Target URI.
+ @param targetMode
+ The target mode : INTERNAL or EXTERNAL
+ @param relationshipType
+ Relationship type.
+ @param id
+ Relationship ID.
+ @return The newly created relationship.
+ @see PackageAccess
+
+
+ Remove a relationship by its ID.
+
+ @param id
+ The relationship ID to Remove.
+
+
+ Remove a relationship by its reference.
+
+ @param rel
+ The relationship to delete.
+
+
+ Retrieves a relationship by its index in the collection.
+
+ @param index
+ Must be a value between [0-relationships_count-1]
+
+
+ Retrieves a package relationship based on its id.
+
+ @param id
+ ID of the package relationship to retrieve.
+ @return The package relationship identified by the specified id.
+
+
+ Get the numbe rof relationships in the collection.
+
+
+ Parse the relationship part and add all relationship in this collection.
+
+ @param relPart
+ The package part to parse.
+ @throws InvalidFormatException
+ Throws if the relationship part is invalid.
+
+
+ Retrieves all relations with the specified type.
+
+ @param typeFilter
+ Relationship type filter. If null then all
+ relationships are returned.
+ @return All relationships of the type specified by the filter.
+
+
+ Get this collection's iterator.
+
+
+ Get an iterator of a collection with all relationship with the specified
+ type.
+
+ @param typeFilter
+ Type filter.
+ @return An iterator to a collection containing all relationships with the
+ specified type contain in this collection.
+
+
+ Clear all relationships.
+
+
+ Relationship types.
+
+ @author Julien Chable
+ @version 0.2
+
+
+ Core properties relationship type.
+
+
+ The standard specifies a source relations ship for the Core File Properties part as follows:
+ http://schemas.openxmlformats.org/officedocument/2006/relationships/metadata/core-properties.
+
+
+ Office uses the following source relationship for the Core File Properties part:
+ http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties.
+
+ See 2.1.33 Part 1 Section 15.2.11.1, Core File Properties Part in [MS-OE376].pdf
+
+
+ Core properties relationship type as defiend in ECMA 376.
+
+
+ Digital signature relationship type.
+
+
+ Digital signature certificate relationship type.
+
+
+ Digital signature origin relationship type.
+
+
+ Thumbnail relationship type.
+
+
+ Extended properties relationship type.
+
+
+ Extended properties relationship type for strict ooxml.
+
+
+ Custom properties relationship type.
+
+
+ Core document relationship type.
+
+
+ Core document relationship type for strict ooxml.
+
+
+ Custom XML relationship type.
+
+
+ Image type.
+
+
+ Hyperlink type.
+
+
+ Style type.
+
+
+ External Link to another Document
+
+
+ Visio 2010 VSDX equivalent of package {@link #CORE_DOCUMENT}
+
+
+ Helper for part and pack Uri.
+
+ @author Julien Chable, CDubet, Kim Ung
+ @version 0.1
+
+
+ Package root Uri.
+
+
+ Extension name of a relationship part.
+
+
+ Segment name of a relationship part.
+
+
+ Segment name of the package properties folder.
+
+
+ Core package properties art name.
+
+
+ Forward slash Uri separator.
+
+
+ Forward slash Uri separator.
+
+
+ Package relationships part Uri
+
+
+ Package relationships part name.
+
+
+ Core properties part Uri.
+
+
+ Core properties partname.
+
+
+ Root package Uri.
+
+
+ Root package part name.
+
+
+ Gets the Uri for the package root.
+
+ @return Uri of the package root.
+
+
+ Know if the specified Uri is a relationship part name.
+
+ @param partUri
+ Uri to check.
+ @return true if the Uri false.
+
+
+ Get file name from the specified Uri.
+
+
+ Get the file name without the trailing extension.
+
+
+ Get the directory path from the specified Uri.
+
+
+ Combine two URIs.
+
+ @param prefix the prefix Uri
+ @param suffix the suffix Uri
+
+ @return the Combined Uri
+
+
+ Combine a string Uri with a prefix and a suffix.
+
+
+ Fully relativize the source part Uri against the target part Uri.
+
+ @param sourceURI
+ The source part Uri.
+ @param targetURI
+ The target part Uri.
+ @return A fully relativize part name Uri ('word/media/image1.gif',
+ '/word/document.xml' => 'media/image1.gif') else
+ null.
+
+
+ Fully relativize the source part URI against the target part URI.
+
+ @param sourceURI
+ The source part URI.
+ @param targetURI
+ The target part URI.
+ @return A fully relativize part name URI ('word/media/image1.gif',
+ '/word/document.xml' => 'media/image1.gif') else
+ null.
+
+
+ Resolve a source uri against a target.
+
+ @param sourcePartUri
+ The source Uri.
+ @param targetUri
+ The target Uri.
+ @return The resolved Uri.
+
+
+ Get Uri from a string path.
+
+
+ Get the source part Uri from a specified relationships part.
+
+ @param relationshipPartUri
+ The relationship part use to retrieve the source part.
+ @return The source part Uri from the specified relationships part.
+
+
+ Create an OPC compliant part name by throwing an exception if the Uri is
+ not valid.
+
+ @param partUri
+ The part name Uri to validate.
+ @return A valid part name object, else null.
+ @throws InvalidFormatException
+ Throws if the specified Uri is not OPC compliant.
+
+
+ Create an OPC compliant part name.
+
+ @param partName
+ The part name to validate.
+ @return The correspondant part name if valid, else null.
+ @throws InvalidFormatException
+ Throws if the specified part name is not OPC compliant.
+ @see #CreatePartName(Uri)
+
+
+ Create an OPC compliant part name by resolving it using a base part.
+
+ @param partName
+ The part name to validate.
+ @param relativePart
+ The relative base part.
+ @return The correspondant part name if valid, else null.
+ @throws InvalidFormatException
+ Throws if the specified part name is not OPC compliant.
+ @see #CreatePartName(Uri)
+
+
+ Create an OPC compliant part name by resolving it using a base part.
+
+ @param partName
+ The part name Uri to validate.
+ @param relativePart
+ The relative base part.
+ @return The correspondant part name if valid, else null.
+ @throws InvalidFormatException
+ Throws if the specified part name is not OPC compliant.
+ @see #CreatePartName(Uri)
+
+
+ Validate a part Uri by returning a bool.
+ ([M1.1],[M1.3],[M1.4],[M1.5],[M1.6])
+
+ (OPC Specifications 8.1.1 Part names) :
+
+ Part Name Syntax
+
+ The part name grammar is defined as follows:
+
+ part_name = 1*( "/" segment )
+
+ segment = 1*( pchar )
+
+
+ (pchar is defined in RFC 3986)
+
+ @param partUri
+ The Uri to validate.
+ @return true if the Uri is valid to the OPC Specifications, else
+ false
+
+ @see #CreatePartName(Uri)
+
+
+ Decode a Uri by converting all percent encoded character into a String
+ character.
+
+ @param uri
+ The Uri to decode.
+ @return The specified Uri in a String with converted percent encoded
+ characters.
+
+
+
+
+ Build a part name where the relationship should be stored ((ex
+ /word/document.xml -> /word/_rels/document.xml.rels)
+
+ @param partName
+ Source part Uri
+ @return the full path (as Uri) of the relation file
+ @throws InvalidOperationException
+ Throws if the specified Uri is a relationshp part.
+
+
+ Add a relationship to a part (except relationships part).
+
+ @param targetPartName
+ Name of the target part. This one must be relative to the
+ source root directory of the part.
+ @param targetMode
+ Mode [Internal|External].
+ @param relationshipType
+ Type of relationship.
+ @return The newly created and added relationship
+
+
+ * Add a relationship to a part (except relationships part).
+
+ * Check rule M1.25: The Relationships part shall not have relationships to
+ * any other part. Package implementers shall enforce this requirement upon
+ * the attempt to create such a relationship and shall treat any such
+ * relationship as invalid.
+ *
+ * @param targetPartName
+ * Name of the target part. This one must be relative to the
+ * source root directory of the part.
+ * @param targetMode
+ * Mode [Internal|External].
+ * @param relationshipType
+ * Type of relationship.
+ * @param id
+ * Relationship unique id.
+ * @return The newly created and added relationship
+ *
+ * @throws InvalidFormatException
+ * If the URI point to a relationship part URI.
+
+
+ Adds an external relationship to a part
+ (except relationships part).
+
+ The targets of external relationships are not
+ subject to the same validity checks that internal
+ ones are, as the contents is potentially
+ any file, URL or similar.
+
+ @param target External target of the relationship
+ @param relationshipType Type of relationship.
+ @return The newly created and added relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#addExternalRelationship(java.lang.String, java.lang.String)
+
+
+ Adds an external relationship to a part
+ (except relationships part).
+
+ The targets of external relationships are not
+ subject to the same validity checks that internal
+ ones are, as the contents is potentially
+ any file, URL or similar.
+
+ @param target External target of the relationship
+ @param relationshipType Type of relationship.
+ @param id Relationship unique id.
+ @return The newly created and added relationship
+ @see org.apache.poi.OpenXml4Net.opc.RelationshipSource#addExternalRelationship(java.lang.String, java.lang.String)
+
+
+ Delete all the relationships attached to this.
+
+
+ Delete the relationship specified by its id.
+
+ @param id
+ The ID identified the part to delete.
+
+
+ Retrieve all the relationships attached to this.
+
+ @return This part's relationships.
+ @throws OpenXml4NetException
+
+
+ Retrieves a package relationship from its id.
+
+ @param id
+ ID of the package relationship to retrieve.
+ @return The package relationship
+
+
+ Retrieve all relationships attached to this part which have the specified
+ type.
+
+ @param relationshipType
+ Relationship type filter.
+ @return All relationships from this part that have the specified type.
+ @throws InvalidFormatException
+ If an error occurs while parsing the part.
+ @throws InvalidOperationException
+ If the package is open in write only mode.
+
+
+ Knows if the part have any relationships.
+
+ @return true if the part have at least one relationship else
+ false.
+
+
+ Checks if the specified relationship is part of this package part.
+
+ @param rel
+ The relationship to check.
+ @return true if the specified relationship exists in this part,
+ else returns false
+
+
+ Turning the DOM4j object in the specified output stream.
+
+ @param xmlContent
+ The XML document.
+ @param outStream
+ The Stream in which the XML document will be written.
+ @return true if the xml is successfully written in the stream,
+ else false.
+
+
+ Copy the input stream into the output stream.
+
+ @param inStream
+ The source stream.
+ @param outStream
+ The destination stream.
+ @return true if the operation succeed, else return false.
+
+
+ Specifies whether the target of a PackageRelationship is inside or outside a
+ Package.
+
+ @author Julien Chable
+ @version 1.0
+
+
+ The relationship references a resource that is external to the package.
+
+
+ The relationship references a part that is inside the package.
+
+
+ Physical zip package.
+
+ @author Julien Chable
+
+
+ Zip archive, as either a file on disk,
+ or a stream
+
+
+ Constructor. Creates a new ZipPackage.
+
+
+ Constructor. Operation not supported.
+
+ @param in
+ Zip input stream to load.
+ @param access
+
+
+ Constructor. Opens a Zip based Open XML document from a file.
+
+ @param path
+ The path of the file to open or create.
+ @param access
+ The package access mode.
+ @throws InvalidOperationException If the zip file cannot be opened.
+
+
+ Constructor. Opens a Zip based Open XML document from a File.
+
+ @param file
+ The file to open or create.
+ @param access
+ The package access mode.
+ @throws InvalidOperationException If the zip file cannot be opened.
+
+
+ Constructor. Opens a Zip based Open XML document from
+ a custom ZipEntrySource, typically an open archive
+ from another system
+
+ @param zipEntry
+ Zip data to load.
+ @param access
+ The package access mode.
+
+
+ Retrieves the parts from this package. We assume that the package has not
+ been yet inspect to retrieve all the parts, this method will open the
+ archive and look for all parts contain inside it. If the package part
+ list is not empty, it will be emptied.
+
+ @return All parts contain in this package.
+ @throws InvalidFormatException if the package is not valid.
+
+
+ Builds a PackagePartName for the given ZipEntry,
+ or null if it's the content types / invalid part
+
+
+ Create a new MemoryPackagePart from the specified URI and content type
+
+
+ aram partName The part URI.
+
+ @param contentType
+ The part content type.
+ @return The newly created zip package part, else null.
+
+
+ Delete a part from the package
+
+ @throws ArgumentException
+ Throws if the part URI is nulll or invalid.
+
+
+ Flush the package. Do nothing.
+
+
+ Close and save the package.
+
+ @see #close()
+
+
+ Create a unique identifier to be use as a temp file name.
+
+ @return A unique identifier use to be use as a temp file name.
+
+
+ Close the package without saving the document. Discard all the changes
+ made to this package.
+
+
+ Implement the getPart() method to retrieve a part from its URI in the
+ current package
+
+
+ @see #getPart(PackageRelationship)
+
+
+ Save this package into the specified stream
+
+
+ @param outputStream
+ The stream use to save this package.
+
+ @see #save(OutputStream)
+
+
+ Get the zip archive
+
+ @return The zip archive.
+
+
+ Zip implementation of a PackagePart.
+
+ @author Julien Chable
+ @version 1.0
+ @see PackagePart
+
+
+ The zip entry corresponding to this part.
+
+
+ Constructor.
+
+ @param container
+ The container package.
+ @param partName
+ Part name.
+ @param contentType
+ Content type.
+ @throws InvalidFormatException
+ Throws if the content of this part invalid.
+
+
+ Constructor.
+
+ @param container
+ The container package.
+ @param zipEntry
+ The zip entry corresponding to this part.
+ @param partName
+ The part name.
+ @param contentType
+ Content type.
+ @throws InvalidFormatException
+ Throws if the content of this part is invalid.
+
+
+ Get the zip entry of this part.
+
+ @return The zip entry in the zip structure coresponding to this part.
+
+
+ Implementation of the getInputStream() which return the inputStream of
+ this part zip entry.
+
+ @return Input stream of this part zip entry.
+
+
+ An Interface to make getting the different bits
+ of a Zip File easy.
+ Allows you to get at the ZipEntries, without
+ needing to worry about ZipFile vs ZipInputStream
+ being annoyingly very different.
+
+
+ Returns an Enumeration of all the Entries
+
+
+ Returns an InputStream of the decompressed
+ data that makes up the entry
+
+
+ Indicates we are done with reading, and
+ resources may be freed
+
+
+ Has close been called already?
+
+
+ A ZipEntrySource wrapper around a ZipFile.
+ Should be as low in terms of memory as a
+ normal ZipFile implementation is.
+
+
+ Provides a way to get at all the ZipEntries
+ from a ZipInputStream, as many times as required.
+ Allows a ZipInputStream to be treated much like
+ a ZipFile, for a price in terms of memory.
+ Be sure to call {@link #close()} as soon as you're
+ done, to free up that memory!
+
+
+ Reads all the entries from the ZipInputStream
+ into memory, and closes the source stream.
+ We'll then eat lots of memory, but be able to
+ work with the entries at-will.
+
+
+ Why oh why oh why are Iterator and Enumeration
+ still not compatible?
+
+
+ So we can close the real zip entry and still
+ effectively work with it.
+ Holds the (decompressed!) data in memory, so
+ close this as soon as you can!
+
+
+ Sets the ratio between de- and inflated bytes to detect zipbomb.
+ It defaults to 1% (= 0.01d), i.e. when the compression is better than
+ 1% for any given read package part, the parsing will fail indicating a
+ Zip-Bomb.
+
+ @param ratio the ratio between de- and inflated bytes to detect zipbomb
+
+
+ Returns the current minimum compression rate that is used.
+
+ See setMinInflateRatio() for details.
+
+ @return The min accepted compression-ratio.
+
+
+ Sets the maximum file size of a single zip entry. It defaults to 4GB,
+ i.e. the 32-bit zip format maximum.
+
+ This can be used to limit memory consumption and protect against
+ security vulnerabilities when documents are provided by users.
+
+ @param maxEntrySize the max. file size of a single zip entry
+
+
+ Returns the current maximum allowed uncompressed file size.
+
+ See setMaxEntrySize() for details.
+
+ @return The max accepted uncompressed file size.
+
+
+
+ This exception is thrown when we try to open a file that doesn't
+ seem to actually be an OOXML (Office Open XML) file After all
+
+
+ This exception is thrown when we are given an ODF-based file
+ (eg OpenOffice .ods) instead of an actually OOXML (Office Open XML) file
+
+
+ This exception is thrown when we are given an OLE2-based file
+ (eg Excel .xls) instead of an actually OOXML (Office Open XML) file
+
+
+ Namespace URI to use to represent that there is no Namespace.
+
+ Defined by the Namespace specification to be "".
+
+ @see
+ Namespaces in XML, 5.2 Namespace Defaulting
+
+
+ Prefix to use to represent the default XML Namespace.
+
+ Defined by the XML specification to be "".
+
+ @see
+ Namespaces in XML, 3. Qualified Names
+
+
+ The official XML Namespace name URI.
+
+ Defined by the XML specification to be
+ "{@code http://www.w3.org/XML/1998/namespace}".
+
+ @see
+ Namespaces in XML, 3. Qualified Names
+
+
+
+ The official XML attribute used for specifying XML Namespace
+ declarations, {@link #XMLNS_ATTRIBUTE
+ XMLConstants.XMLNS_ATTRIBUTE}, Namespace name URI.
+
+ Defined by the XML specification to be
+ "{@code http://www.w3.org/2000/xmlns/}".
+
+ @see
+ Namespaces in XML, 3. Qualified Names
+ @see
+ Namespaces in XML Errata
+
+
+ The official XML attribute used for specifying XML Namespace
+ declarations.
+
+ It is NOT valid to use as a
+ prefix. Defined by the XML specification to be
+ "{@code xmlns}".
+
+ @see
+ Namespaces in XML, 3. Qualified Names
+
+
+
+ W3C XML Schema Instance Namespace URI.
+
+ Defined to be "{@code http://www.w3.org/2001/XMLSchema-instance}".
+
+ @see
+ XML Schema Part 1:
+ Structures, 2.6 Schema-Related Markup in Documents Being Validated
+
+
+ W3C XPath Datatype Namespace URI.
+
+ Defined to be "{@code http://www.w3.org/2003/11/xpath-datatypes}".
+
+ @see XQuery 1.0 and XPath 2.0 Data Model
+
+
+
+ RELAX NG Namespace URI.
+
+ Defined to be "{@code http://relaxng.org/ns/structure/1.0}".
+
+ @see RELAX NG Specification
+
+
+
diff --git a/bin/NPOI.OpenXmlFormats.dll b/bin/NPOI.OpenXmlFormats.dll
new file mode 100644
index 0000000..71c37a8
Binary files /dev/null and b/bin/NPOI.OpenXmlFormats.dll differ
diff --git a/bin/NPOI.OpenXmlFormats.xml b/bin/NPOI.OpenXmlFormats.xml
new file mode 100644
index 0000000..6ed6d69
--- /dev/null
+++ b/bin/NPOI.OpenXmlFormats.xml
@@ -0,0 +1,5008 @@
+
+
+
+ NPOI.OpenXmlFormats
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CT_Inline class constructor
+
+
+
+
+ CT_Anchor class constructor
+
+
+
+
+ CT_WrapSquare class constructor
+
+
+
+
+ CT_WrapThrough class constructor
+
+
+
+
+ CT_WrapPath class constructor
+
+
+
+
+ CT_WrapTight class constructor
+
+
+
+
+ CT_WrapTopBottom class constructor
+
+
+
+
+ CT_Encryption class constructor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CT_KeyEncryptors class constructor
+
+
+
+
+ Add new Run
+
+
+
+
+
+ Add new Accent
+
+
+
+
+
+ Add new n-ary Operator
+
+
+
+
+
+ Add new Subscript
+
+
+
+
+
+ Add new Superscript
+
+
+
+
+
+ Add new Fraction
+
+
+
+
+
+ Add new Radical
+
+
+
+
+
+ CT_MathPr class constructor
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ CT_RPR class constructor
+
+
+
+
+ CT_R class constructor
+
+
+
+
+ CT_AccPr class constructor
+
+
+
+
+ CT_Acc class constructor
+
+
+
+
+ CT_OMathArg class constructor
+
+
+
+
+ CT_OMathArgPr class constructor
+
+
+
+
+ CT_BarPr class constructor
+
+
+
+
+ CT_Bar class constructor
+
+
+
+
+ CT_BoxPr class constructor
+
+
+
+
+ CT_Box class constructor
+
+
+
+
+ CT_BorderBoxPr class constructor
+
+
+
+
+ CT_BorderBox class constructor
+
+
+
+
+ CT_DPr class constructor
+
+
+
+
+ CT_D class constructor
+
+
+
+
+ CT_EqArrPr class constructor
+
+
+
+
+ CT_EqArr class constructor
+
+
+
+
+ CT_FPr class constructor
+
+
+
+
+ CT_F class constructor
+
+
+
+
+ CT_FuncPr class constructor
+
+
+
+
+ CT_Func class constructor
+
+
+
+
+ CT_GroupChrPr class constructor
+
+
+
+
+ CT_GroupChr class constructor
+
+
+
+
+ CT_LimLowPr class constructor
+
+
+
+
+ CT_LimLow class constructor
+
+
+
+
+ CT_LimUppPr class constructor
+
+
+
+
+ CT_LimUpp class constructor
+
+
+
+
+ CT_MCPr class constructor
+
+
+
+
+ CT_MC class constructor
+
+
+
+
+ CT_MCS class constructor
+
+
+
+
+ CT_MPr class constructor
+
+
+
+
+ CT_MR class constructor
+
+
+
+
+ CT_M class constructor
+
+
+
+
+ CT_NaryPr class constructor
+
+
+
+
+ CT_Nary class constructor
+
+
+
+
+ CT_PhantPr class constructor
+
+
+
+
+ CT_Phant class constructor
+
+
+
+
+ CT_RadPr class constructor
+
+
+
+
+ CT_Rad class constructor
+
+
+
+
+ CT_SPrePr class constructor
+
+
+
+
+ CT_SPre class constructor
+
+
+
+
+ CT_SSubPr class constructor
+
+
+
+
+ CT_SSub class constructor
+
+
+
+
+ CT_SSubSupPr class constructor
+
+
+
+
+ CT_SSubSup class constructor
+
+
+
+
+ CT_SSupPr class constructor
+
+
+
+
+ CT_SSup class constructor
+
+
+
+
+ CT_OMathParaPr class constructor
+
+
+
+
+ CT_OMathPara class constructor
+
+
+
+
+ CT_OMath class constructor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Rich Text Phonetic Run
+
+
+
+
+ Properties of the Rich Text Phonetic Run
+
+
+
+
+ Rich Text Run container.
+
+
+
+
+ Run Properties
+
+
+
+
+ Text
+
+
+
+
+ Properties of Rich Text Run.
+
+
+
+
+ Rich Text Run
+
+
+
+
+ Phonetic Run
+
+
+
+
+ Phonetic Properties
+
+
+
+
+ Holds the Column Width and its Formatting
+
+
+
+
+ Checks if is adjacent or intersecting with
+ current column and can be combined with it. If that is the case -
+ will modify current to have
+ and of both columns.
+
+ to combine with
+ Thrown if
+ cannot be combined with current
+
+
+
+
+ Checks if is adjacent or intersecting with
+ current column and can be combined with it.
+
+ to check
+ true if is adjacent or
+ intersecting and have equal properties with current
+ ; false otherwise
+
+
+
+ For ease of use of columns in NPOI break up s
+ that span over multiple physical columns into individual
+ s for each physical column.
+
+
+
+
+
+
+ Broken up by the method
+ s are combined into spans
+
+
+
+
+ An index of the last non-empty cell in the row
+
+
+
+
+ On/Off Value
+
+
+
+
+ On/Off Value
+
+
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+ True
+
+
+
+
+ False
+
+
+
+
+ Long Hexadecimal Number
+
+
+
+
+ Four Digit Hexadecimal Number Value
+
+
+
+
+ Two Digit Hexadecimal Number
+
+
+
+
+ Two Digit Hexadecimal Number Value
+
+
+
+
+ Two Digit Hexadecimal Number
+
+
+
+
+ Two Digit Hexadecimal Number Value
+
+
+
+
+ Decimal Number Value
+
+
+
+
+ Decimal Number
+
+
+
+
+ Measurement in Twentieths of a Point
+
+
+
+
+ Measurement in Twentieths of a Point
+
+
+
+
+ Signed Measurement in Twentieths of a Point
+
+
+
+
+ Signed Measurement in Twentieths of a Point
+
+
+
+
+ Measurement in Pixels
+
+
+
+
+ Measurement in Pixels
+
+
+
+
+ Half Point Measurement
+
+
+
+
+ Half Point Measurement
+
+
+
+
+ Signed Measurement in Half-Points
+
+
+
+
+ Signed Measurement in Half-Points
+
+
+
+
+ Name of Script Function
+
+
+
+
+ Script Subroutine Name Value
+
+
+
+
+ String
+
+
+
+
+ String Value
+
+
+
+
+ Language Reference
+
+
+
+
+ Language Code
+
+
+
+
+ 128-Bit GUID
+
+
+
+
+ GUID Value
+
+
+
+
+ Paragraph
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Text Expansion/Compression Percentage
+
+
+
+
+ Text Expansion/Compression Value
+
+
+
+
+ Text Highlight Colors
+
+
+
+
+ Highlighting Color
+
+
+
+
+ Color Value
+
+
+
+
+ Run Content Color
+
+
+
+
+ Run Content Theme Color
+
+
+
+
+ Run Content Theme Color Tint
+
+
+
+
+ Run Content Theme Color Shade
+
+
+
+
+ Underline Style
+
+
+
+
+ Underline Style value
+
+
+
+
+ Underline Color
+
+
+
+
+ Underline Theme Color
+
+
+
+
+ Underline Theme Color Tint
+
+
+
+
+ Underline Theme Color Shade
+
+
+
+
+ Underline Patterns
+
+
+
+
+ Single Underline
+
+
+
+
+ Underline Non-Space Characters Only
+
+
+
+
+ Double Underline
+
+
+
+
+ Thick Underline
+
+
+
+
+ Dotted Underline
+
+
+
+
+ Thick Dotted Underline
+
+
+
+
+ Dashed Underline
+
+
+
+
+ Thick Dashed Underline
+
+
+
+
+ Long Dashed Underline
+
+
+
+
+ Thick Long Dashed Underline
+
+
+
+
+ Dash-Dot Underline
+
+
+
+
+ Thick Dash-Dot Underline
+
+
+
+
+ Dash-Dot-Dot Underline
+
+
+
+
+ Thick Dash-Dot-Dot Underline
+
+
+
+
+ Wave Underline
+
+
+
+
+ Heavy Wave Underline
+
+
+
+
+ Double Wave Underline
+
+
+
+
+ No Underline
+
+
+
+
+ Animated Text Effects
+
+
+
+
+ Animated Text Effect Type
+
+
+
+
+ Blinking Background Animation
+
+
+
+
+ Colored Lights Animation
+
+
+
+
+ Black Dashed Line Animation
+
+
+
+
+ Marching Red Ants
+
+
+
+
+ Shimmer Animation
+
+
+
+
+ Sparkling Lights Animation
+
+
+
+
+ No Animation
+
+
+
+
+ Border Style
+
+
+
+
+ Border Style
+
+
+
+
+ Border Color
+
+
+
+
+ Border Theme Color
+
+
+
+
+ Border Theme Color Tint
+
+
+
+
+ Border Theme Color Shade
+
+
+
+
+ Border Width
+
+ ST_EighthPointMeasure
+
+
+
+ Border Spacing Measurement
+
+
+
+
+ Border Shadow
+
+
+
+
+ Create Frame Effect
+
+
+
+
+ Border Styles
+
+
+
+
+ No Border
+
+
+
+
+ No Border
+
+
+
+
+ Single Line Border
+
+
+
+
+ Single Line Border
+
+
+
+
+ Double Line Border
+
+
+
+
+ Dotted Line Border
+
+
+
+
+ Dashed Line Border
+
+
+
+
+ Dot Dash Line Border
+
+
+
+
+ Dot Dot Dash Line Border
+
+
+
+
+ Triple Line Border
+
+
+
+
+
+ Thick, Thin Line Border
+
+
+
+
+ Thin, Thick, Thin Line Border
+
+
+
+
+ Thin, Thick Line Border
+
+
+
+
+ Thick, Thin Line Border
+
+
+
+
+ Thin, Thick, Thin Line Border
+
+
+
+
+ Thin, Thick Line Border
+
+
+
+
+ Thick, Thin Line Border
+
+
+
+
+ Thin, Thick, Thin Line Border
+
+
+
+
+ Wavy Line Border
+
+
+
+
+ Double Wave Line Border
+
+
+
+
+ Dashed Line Border
+
+
+
+
+ Dash Dot Strokes Line Border
+
+
+
+
+ 3D Embossed Line Border
+
+
+
+
+ 3D Engraved Line Border
+
+
+
+
+ Outset Line Border
+
+
+
+
+ Inset Line Border
+
+
+
+
+ Apples Art Border
+
+
+
+
+ Arched Scallops Art Border
+
+
+
+
+ Baby Pacifier Art Border
+
+
+
+
+ Baby Rattle Art Border
+
+
+
+
+ Three Color Balloons Art Border
+
+
+
+
+ Hot Air Balloons Art Border
+
+
+
+
+ Black Dash Art Border
+
+
+
+
+ Black Dot Art Border
+
+
+
+
+ Black Square Art Border
+
+
+
+
+ Thin Line Art Border
+
+
+
+
+ White Dash Art Border
+
+
+
+
+ White Dot Art Border
+
+
+
+
+ White Square Art Border
+
+
+
+
+ Wide Inline Art Border
+
+
+
+
+ Wide Midline Art Border
+
+
+
+
+
+
+
+
+
+ Wide Outline Art Border
+
+
+
+
+ Bats Art Border
+
+
+
+
+ Birds Art Border
+
+
+
+
+ Cabin Art Border
+
+
+
+
+ Cake Art Border
+
+
+
+
+ Candy Corn Art Border
+
+
+
+
+ Knot Work Art Border
+
+
+
+
+ Certificate Banner Art Border
+
+
+
+
+ Chain Link Art Border
+
+
+
+
+ Champagne Bottle Art Border
+
+
+
+
+ Black and White Bar Art Border
+
+
+
+
+ Color Checked Bar Art Border
+
+
+
+
+ Checkerboard Art Border
+
+
+
+
+ Christmas Tree Art Border
+
+
+
+
+ Circles And Lines Art Border
+
+
+
+
+ Circles and Rectangles Art Border
+
+
+
+
+ Wave Art Border
+
+
+
+
+ Clocks Art Border
+
+
+
+
+ Compass Art Border
+
+
+
+
+ Confetti Art Border
+
+
+
+
+ Confetti Art Border
+
+
+
+
+ Confetti Art Border
+
+
+
+
+ Confetti Streamers Art Border
+
+
+
+
+ Confetti Art Border
+
+
+
+
+ Corner Triangle Art Border
+
+
+
+
+ Dashed Line Art Border
+
+
+
+
+ Dotted Line Art Border
+
+
+
+
+ Maze Art Border
+
+
+
+
+ Butterfly Art Border
+
+
+
+
+ Fish Art Border
+
+
+
+
+ Insects Art Border
+
+
+
+
+ Ladybug Art Border
+
+
+
+
+ Cross-stitch Art Border
+
+
+
+
+ Cupid Art Border
+
+
+
+
+ Archway Art Border
+
+
+
+
+ Color Archway Art Border
+
+
+
+
+ Blocks Art Border
+
+
+
+
+ Gray Diamond Art Border
+
+
+
+
+ Double D Art Border
+
+
+
+
+ Diamond Art Border
+
+
+
+
+ Earth Art Border
+
+
+
+
+ Earth Art Border
+
+
+
+
+ Shadowed Square Art Border
+
+
+
+
+ Shadowed Square Art Border
+
+
+
+
+ Painted Egg Art Border
+
+
+
+
+ Fans Art Border
+
+
+
+
+ Film Reel Art Border
+
+
+
+
+ Firecracker Art Border
+
+
+
+
+ Flowers Art Border
+
+
+
+
+ Daisy Art Border
+
+
+
+
+ Flowers Art Border
+
+
+
+
+ Flowers Art Border
+
+
+
+
+ Pansy Art Border
+
+
+
+
+ Red Rose Art Border
+
+
+
+
+ Roses Art Border
+
+
+
+
+ Flowers in a Teacup Art Border
+
+
+
+
+ Small Flower Art Border
+
+
+
+
+ Gems Art Border
+
+
+
+
+ Gingerbread Man Art Border
+
+
+
+
+ Triangle Gradient Art Border
+
+
+
+
+ Handmade Art Border
+
+
+
+
+ Handmade Art Border
+
+
+
+
+ Heart-Shaped Balloon Art Border
+
+
+
+
+ Gray Heart Art Border
+
+
+
+
+ Hearts Art Border
+
+
+
+
+ Pattern Art Border
+
+
+
+
+ Holly Art Border
+
+
+
+
+ House Art Border
+
+
+
+
+ Circular Art Border
+
+
+
+
+ Ice Cream Cone Art Border
+
+
+
+
+ Light Bulb Art Border
+
+
+
+
+ Light Bulb Art Border
+
+
+
+
+ Light Bulb Art Border
+
+
+
+
+ Map Pins Art Border
+
+
+
+
+ Maple Leaf Art Border
+
+
+
+
+ Muffin Art Border
+
+
+
+
+ Marquee Art Border
+
+
+
+
+ Marquee Art Border
+
+
+
+
+ Moon Art Border
+
+
+
+
+ Mosaic Art Border
+
+
+
+
+ Musical Note Art Border
+
+
+
+
+ Patterned Art Border
+
+
+
+
+ Oval Art Border
+
+
+
+
+ Package Art Border
+
+
+
+
+ Black Palm Tree Art Border
+
+
+
+
+ Color Palm Tree Art Border
+
+
+
+
+ Paper Clip Art Border
+
+
+
+
+ Papyrus Art Border
+
+
+
+
+ Party Favor Art Border
+
+
+
+
+ Party Glass Art Border
+
+
+
+
+ Pencils Art Border
+
+
+
+
+ Character Art Border
+
+
+
+
+ Waving Character Border
+
+
+
+
+ Character With Hat Art Border
+
+
+
+
+ Poinsettia Art Border
+
+
+
+
+ Postage Stamp Art Border
+
+
+
+
+ Pumpkin Art Border
+
+
+
+
+ Push Pin Art Border
+
+
+
+
+ Push Pin Art Border
+
+
+
+
+ Pyramid Art Border
+
+
+
+
+ Pyramid Art Border
+
+
+
+
+ Quadrants Art Border
+
+
+
+
+ Rings Art Border
+
+
+
+
+ Safari Art Border
+
+
+
+
+ Saw tooth Art Border
+
+
+
+
+ Gray Saw tooth Art Border
+
+
+
+
+ Scared Cat Art Border
+
+
+
+
+ Umbrella Art Border
+
+
+
+
+ Shadowed Squares Art Border
+
+
+
+
+ Shark Tooth Art Border
+
+
+
+
+ Bird Tracks Art Border
+
+
+
+
+ Rocket Art Border
+
+
+
+
+ Snowflake Art Border
+
+
+
+
+ Snowflake Art Border
+
+
+
+
+ Sombrero Art Border
+
+
+
+
+ Southwest-themed Art Border
+
+
+
+
+ Stars Art Border
+
+
+
+
+ Stars On Top Art Border
+
+
+
+
+ 3-D Stars Art Border
+
+
+
+
+ Stars Art Border
+
+
+
+
+ Stars With Shadows Art Border
+
+
+
+
+ Sun Art Border
+
+
+
+
+ Whirligig Art Border
+
+
+
+
+ Torn Paper Art Border
+
+
+
+
+ Black Torn Paper Art Border
+
+
+
+
+ Tree Art Border
+
+
+
+
+ Triangle Art Border
+
+
+
+
+ Triangles Art Border
+
+
+
+
+ Tribal Art Border One
+
+
+
+
+ Tribal Art Border Two
+
+
+
+
+ Tribal Art Border Three
+
+
+
+
+ Tribal Art Border Four
+
+
+
+
+ Tribal Art Border Five
+
+
+
+
+ Tribal Art Border Six
+
+
+
+
+ Twisted Lines Art Border
+
+
+
+
+ Twisted Lines Art Border
+
+
+
+
+ Vine Art Border
+
+
+
+
+ Wavy Line Art Border
+
+
+
+
+ Weaving Angles Art Border
+
+
+
+
+ Weaving Braid Art Border
+
+
+
+
+ Weaving Ribbon Art Border
+
+
+
+
+ Weaving Strips Art Border
+
+
+
+
+ White Flowers Art Border
+
+
+
+
+ Woodwork Art Border
+
+
+
+
+ Crisscross Art Border
+
+
+
+
+ Triangle Art Border
+
+
+
+
+ Zigzag Art Border
+
+
+
+
+ Zigzag stitch
+
+
+
+
diff --git a/bin/Newtonsoft.Json.dll b/bin/Newtonsoft.Json.dll
new file mode 100644
index 0000000..341d08f
Binary files /dev/null and b/bin/Newtonsoft.Json.dll differ
diff --git a/bin/Newtonsoft.Json.xml b/bin/Newtonsoft.Json.xml
new file mode 100644
index 0000000..2c981ab
--- /dev/null
+++ b/bin/Newtonsoft.Json.xml
@@ -0,0 +1,11363 @@
+
+
+
+ Newtonsoft.Json
+
+
+
+
+ Represents a BSON Oid (object id).
+
+
+
+
+ Gets or sets the value of the Oid.
+
+ The value of the Oid.
+
+
+
+ Initializes a new instance of the class.
+
+ The Oid value.
+
+
+
+ Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data.
+
+
+
+
+ Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary.
+
+
+ true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the root object will be read as a JSON array.
+
+
+ true if the root object will be read as a JSON array; otherwise, false.
+
+
+
+
+ Gets or sets the used when reading values from BSON.
+
+ The used when reading values from BSON.
+
+
+
+ Initializes a new instance of the class.
+
+ The containing the BSON data to read.
+
+
+
+ Initializes a new instance of the class.
+
+ The containing the BSON data to read.
+
+
+
+ Initializes a new instance of the class.
+
+ The containing the BSON data to read.
+ if set to true the root object will be read as a JSON array.
+ The used when reading values from BSON.
+
+
+
+ Initializes a new instance of the class.
+
+ The containing the BSON data to read.
+ if set to true the root object will be read as a JSON array.
+ The used when reading values from BSON.
+
+
+
+ Reads the next JSON token from the underlying .
+
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Changes the reader's state to .
+ If is set to true, the underlying is also closed.
+
+
+
+
+ Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data.
+
+
+
+
+ Gets or sets the used when writing values to BSON.
+ When set to no conversion will occur.
+
+ The used when writing values to BSON.
+
+
+
+ Initializes a new instance of the class.
+
+ The to write to.
+
+
+
+ Initializes a new instance of the class.
+
+ The to write to.
+
+
+
+ Flushes whatever is in the buffer to the underlying and also flushes the underlying stream.
+
+
+
+
+ Writes the end.
+
+ The token.
+
+
+
+ Writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Closes this writer.
+ If is set to true, the underlying is also closed.
+ If is set to true, the JSON is auto-completed.
+
+
+
+
+ Writes a value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+ The value to write.
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value.
+
+ The [] value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value that represents a BSON object id.
+
+ The Object ID value to write.
+
+
+
+ Writes a BSON regex.
+
+ The regex pattern.
+ The regex options.
+
+
+
+ Specifies how constructors are used when initializing objects during deserialization by the .
+
+
+
+
+ First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor.
+
+
+
+
+ Json.NET will use a non-public default constructor before falling back to a parameterized constructor.
+
+
+
+
+ Converts a binary value to and from a base 64 string value.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from JSON and BSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Creates a custom object.
+
+ The object type to convert.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Creates an object which will then be populated by the serializer.
+
+ Type of the object.
+ The created object.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this can write JSON.
+
+
+ true if this can write JSON; otherwise, false.
+
+
+
+
+ Converts a to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true if this instance can convert the specified value type; otherwise, false.
+
+
+
+
+ Converts a to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true if this instance can convert the specified value type; otherwise, false.
+
+
+
+
+ Provides a base class for converting a to and from JSON.
+
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a F# discriminated union type to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts an Entity Framework to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts an to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this can write JSON.
+
+
+ true if this can write JSON; otherwise, false.
+
+
+
+
+ Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z").
+
+
+
+
+ Gets or sets the date time styles used when converting a date to and from JSON.
+
+ The date time styles used when converting a date to and from JSON.
+
+
+
+ Gets or sets the date time format used when converting a date to and from JSON.
+
+ The date time format used when converting a date to and from JSON.
+
+
+
+ Gets or sets the culture used when converting a date to and from JSON.
+
+ The culture used when converting a date to and from JSON.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)).
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing property value of the JSON that is being converted.
+ The calling serializer.
+ The object value.
+
+
+
+ Converts a to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from JSON and BSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts an to and from its name string value.
+
+
+
+
+ Gets or sets a value indicating whether the written enum text should be camel case.
+ The default value is false.
+
+ true if the written enum text will be camel case; otherwise, false.
+
+
+
+ Gets or sets the naming strategy used to resolve how enum text is written.
+
+ The naming strategy used to resolve how enum text is written.
+
+
+
+ Gets or sets a value indicating whether integer values are allowed when serializing and deserializing.
+ The default value is true.
+
+ true if integers are allowed when serializing and deserializing; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ true if the written enum text will be camel case; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+ The naming strategy used to resolve how enum text is written.
+ true if integers are allowed when serializing and deserializing; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+ The of the used to write enum text.
+
+
+
+ Initializes a new instance of the class.
+
+ The of the used to write enum text.
+
+ The parameter list to use when constructing the described by .
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The of the used to write enum text.
+
+ The parameter list to use when constructing the described by .
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+ true if integers are allowed when serializing and deserializing; otherwise, false.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts a to and from Unix epoch time
+
+
+
+
+ Gets or sets a value indicating whether the dates before Unix epoch
+ should converted to and from JSON.
+
+
+ true to allow converting dates before Unix epoch to and from JSON;
+ false to throw an exception when a date being converted to or from JSON
+ occurred before Unix epoch. The default value is false.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ true to allow converting dates before Unix epoch to and from JSON;
+ false to throw an exception when a date being converted to or from JSON
+ occurred before Unix epoch. The default value is false.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing property value of the JSON that is being converted.
+ The calling serializer.
+ The object value.
+
+
+
+ Converts a to and from a string (e.g. "1.2.3.4").
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing property value of the JSON that is being converted.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Converts XML to and from JSON.
+
+
+
+
+ Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements.
+
+ The name of the deserialized root element.
+
+
+
+ Gets or sets a value to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+ true if the array attribute is written to the XML; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether to write the root JSON object.
+
+ true if the JSON root object is omitted; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether to encode special characters when converting JSON to XML.
+ If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify
+ XML namespaces, attributes or processing directives. Instead special characters are encoded and written
+ as part of the XML element name.
+
+ true if special characters are encoded; otherwise, false.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The calling serializer.
+ The value.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Checks if the is a namespace attribute.
+
+ Attribute name to test.
+ The attribute name prefix if it has one, otherwise an empty string.
+ true if attribute name is for a namespace attribute, otherwise false.
+
+
+
+ Determines whether this instance can convert the specified value type.
+
+ Type of the value.
+
+ true if this instance can convert the specified value type; otherwise, false.
+
+
+
+
+ Specifies how dates are formatted when writing JSON text.
+
+
+
+
+ Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z".
+
+
+
+
+ Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/".
+
+
+
+
+ Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text.
+
+
+
+
+ Date formatted strings are not parsed to a date type and are read as strings.
+
+
+
+
+ Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to .
+
+
+
+
+ Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to .
+
+
+
+
+ Specifies how to treat the time value when converting between string and .
+
+
+
+
+ Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time.
+
+
+
+
+ Treat as a UTC. If the object represents a local time, it is converted to a UTC.
+
+
+
+
+ Treat as a local time if a is being converted to a string.
+ If a string is being converted to , convert to a local time if a time zone is specified.
+
+
+
+
+ Time zone information should be preserved when converting.
+
+
+
+
+ The default JSON name table implementation.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a string containing the same characters as the specified range of characters in the given array.
+
+ The character array containing the name to find.
+ The zero-based index into the array specifying the first character of the name.
+ The number of characters in the name.
+ A string containing the same characters as the specified range of characters in the given array.
+
+
+
+ Adds the specified string into name table.
+
+ The string to add.
+ This method is not thread-safe.
+ The resolved string.
+
+
+
+ Specifies default value handling options for the .
+
+
+
+
+
+
+
+
+ Include members where the member value is the same as the member's default value when serializing objects.
+ Included members are written to JSON. Has no effect when deserializing.
+
+
+
+
+ Ignore members where the member value is the same as the member's default value when serializing objects
+ so that it is not written to JSON.
+ This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers,
+ decimals and floating point numbers; and false for booleans). The default value ignored can be changed by
+ placing the on the property.
+
+
+
+
+ Members with a default value but no JSON will be set to their default value when deserializing.
+
+
+
+
+ Ignore members where the member value is the same as the member's default value when serializing objects
+ and set members to their default value when deserializing.
+
+
+
+
+ Specifies float format handling options when writing special floating point numbers, e.g. ,
+ and with .
+
+
+
+
+ Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity".
+
+
+
+
+ Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity.
+ Note that this will produce non-valid JSON.
+
+
+
+
+ Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property.
+
+
+
+
+ Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+
+
+
+
+ Floating point numbers are parsed to .
+
+
+
+
+ Floating point numbers are parsed to .
+
+
+
+
+ Specifies formatting options for the .
+
+
+
+
+ No special formatting is applied. This is the default.
+
+
+
+
+ Causes child objects to be indented according to the and settings.
+
+
+
+
+ Provides an interface for using pooled arrays.
+
+ The array type content.
+
+
+
+ Rent an array from the pool. This array must be returned when it is no longer needed.
+
+ The minimum required length of the array. The returned array may be longer.
+ The rented array from the pool. This array must be returned when it is no longer needed.
+
+
+
+ Return an array to the pool.
+
+ The array that is being returned.
+
+
+
+ Provides an interface to enable a class to return line and position information.
+
+
+
+
+ Gets a value indicating whether the class can return line information.
+
+
+ true if and can be provided; otherwise, false.
+
+
+
+
+ Gets the current line number.
+
+ The current line number or 0 if no line information is available (for example, when returns false).
+
+
+
+ Gets the current line position.
+
+ The current line position or 0 if no line information is available (for example, when returns false).
+
+
+
+ Instructs the how to serialize the collection.
+
+
+
+
+ Gets or sets a value indicating whether null items are allowed in the collection.
+
+ true if null items are allowed in the collection; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with a flag indicating whether the array can contain null items.
+
+ A flag indicating whether the array can contain null items.
+
+
+
+ Initializes a new instance of the class with the specified container Id.
+
+ The container Id.
+
+
+
+ Instructs the to use the specified constructor when deserializing that object.
+
+
+
+
+ Instructs the how to serialize the object.
+
+
+
+
+ Gets or sets the id.
+
+ The id.
+
+
+
+ Gets or sets the title.
+
+ The title.
+
+
+
+ Gets or sets the description.
+
+ The description.
+
+
+
+ Gets or sets the collection's items converter.
+
+ The collection's items converter.
+
+
+
+ The parameter list to use when constructing the described by .
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+ [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
+
+
+
+
+
+ Gets or sets the of the .
+
+ The of the .
+
+
+
+ The parameter list to use when constructing the described by .
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+ [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
+
+
+
+
+
+ Gets or sets a value that indicates whether to preserve object references.
+
+
+ true to keep object reference; otherwise, false. The default is false.
+
+
+
+
+ Gets or sets a value that indicates whether to preserve collection's items references.
+
+
+ true to keep collection's items object references; otherwise, false. The default is false.
+
+
+
+
+ Gets or sets the reference loop handling used when serializing the collection's items.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the type name handling used when serializing the collection's items.
+
+ The type name handling.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified container Id.
+
+ The container Id.
+
+
+
+ Provides methods for converting between .NET types and JSON types.
+
+
+
+
+
+
+
+ Gets or sets a function that creates default .
+ Default settings are automatically used by serialization methods on ,
+ and and on .
+ To serialize without using any default settings create a with
+ .
+
+
+
+
+ Represents JavaScript's boolean value true as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's boolean value false as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's null as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's undefined as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's positive infinity as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's negative infinity as a string. This field is read-only.
+
+
+
+
+ Represents JavaScript's NaN as a string. This field is read-only.
+
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation using the specified.
+
+ The value to convert.
+ The format the date will be converted to.
+ The time zone handling when the date is converted to a string.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation using the specified.
+
+ The value to convert.
+ The format the date will be converted to.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ The string delimiter character.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ The string delimiter character.
+ The string escape handling.
+ A JSON string representation of the .
+
+
+
+ Converts the to its JSON string representation.
+
+ The value to convert.
+ A JSON string representation of the .
+
+
+
+ Serializes the specified object to a JSON string.
+
+ The object to serialize.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using formatting.
+
+ The object to serialize.
+ Indicates how the output should be formatted.
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a collection of .
+
+ The object to serialize.
+ A collection of converters used while serializing.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using formatting and a collection of .
+
+ The object to serialize.
+ Indicates how the output should be formatted.
+ A collection of converters used while serializing.
+ A JSON string representation of the object.
+
+
+
+ Serializes the specified object to a JSON string using .
+
+ The object to serialize.
+ The used to serialize the object.
+ If this is null, default serialization settings will be used.
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a type, formatting and .
+
+ The object to serialize.
+ The used to serialize the object.
+ If this is null, default serialization settings will be used.
+
+ The type of the value being serialized.
+ This parameter is used when is to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using formatting and .
+
+ The object to serialize.
+ Indicates how the output should be formatted.
+ The used to serialize the object.
+ If this is null, default serialization settings will be used.
+
+ A JSON string representation of the object.
+
+
+
+
+ Serializes the specified object to a JSON string using a type, formatting and .
+
+ The object to serialize.
+ Indicates how the output should be formatted.
+ The used to serialize the object.
+ If this is null, default serialization settings will be used.
+
+ The type of the value being serialized.
+ This parameter is used when is to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+
+
+ A JSON string representation of the object.
+
+
+
+
+ Deserializes the JSON to a .NET object.
+
+ The JSON to deserialize.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to a .NET object using .
+
+ The JSON to deserialize.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type.
+
+ The JSON to deserialize.
+ The of object being deserialized.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type.
+
+ The type of the object to deserialize to.
+ The JSON to deserialize.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the given anonymous type.
+
+
+ The anonymous type to deserialize to. This can't be specified
+ traditionally and must be inferred from the anonymous type passed
+ as a parameter.
+
+ The JSON to deserialize.
+ The anonymous type object.
+ The deserialized anonymous type from the JSON string.
+
+
+
+ Deserializes the JSON to the given anonymous type using .
+
+
+ The anonymous type to deserialize to. This can't be specified
+ traditionally and must be inferred from the anonymous type passed
+ as a parameter.
+
+ The JSON to deserialize.
+ The anonymous type object.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+ The deserialized anonymous type from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using a collection of .
+
+ The type of the object to deserialize to.
+ The JSON to deserialize.
+ Converters to use while deserializing.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using .
+
+ The type of the object to deserialize to.
+ The object to deserialize.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using a collection of .
+
+ The JSON to deserialize.
+ The type of the object to deserialize.
+ Converters to use while deserializing.
+ The deserialized object from the JSON string.
+
+
+
+ Deserializes the JSON to the specified .NET type using .
+
+ The JSON to deserialize.
+ The type of the object to deserialize to.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+ The deserialized object from the JSON string.
+
+
+
+ Populates the object with values from the JSON string.
+
+ The JSON to populate values from.
+ The target object to populate values onto.
+
+
+
+ Populates the object with values from the JSON string using .
+
+ The JSON to populate values from.
+ The target object to populate values onto.
+
+ The used to deserialize the object.
+ If this is null, default serialization settings will be used.
+
+
+
+
+ Serializes the to a JSON string.
+
+ The node to serialize.
+ A JSON string of the .
+
+
+
+ Serializes the to a JSON string using formatting.
+
+ The node to serialize.
+ Indicates how the output should be formatted.
+ A JSON string of the .
+
+
+
+ Serializes the to a JSON string using formatting and omits the root object if is true.
+
+ The node to serialize.
+ Indicates how the output should be formatted.
+ Omits writing the root object.
+ A JSON string of the .
+
+
+
+ Deserializes the from a JSON string.
+
+ The JSON string.
+ The deserialized .
+
+
+
+ Deserializes the from a JSON string nested in a root element specified by .
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+ The deserialized .
+
+
+
+ Deserializes the from a JSON string nested in a root element specified by
+ and writes a Json.NET array attribute for collections.
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+
+ A value to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+ The deserialized .
+
+
+
+ Deserializes the from a JSON string nested in a root element specified by ,
+ writes a Json.NET array attribute for collections, and encodes special characters.
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+
+ A value to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+
+ A value to indicate whether to encode special characters when converting JSON to XML.
+ If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify
+ XML namespaces, attributes or processing directives. Instead special characters are encoded and written
+ as part of the XML element name.
+
+ The deserialized .
+
+
+
+ Serializes the to a JSON string.
+
+ The node to convert to JSON.
+ A JSON string of the .
+
+
+
+ Serializes the to a JSON string using formatting.
+
+ The node to convert to JSON.
+ Indicates how the output should be formatted.
+ A JSON string of the .
+
+
+
+ Serializes the to a JSON string using formatting and omits the root object if is true.
+
+ The node to serialize.
+ Indicates how the output should be formatted.
+ Omits writing the root object.
+ A JSON string of the .
+
+
+
+ Deserializes the from a JSON string.
+
+ The JSON string.
+ The deserialized .
+
+
+
+ Deserializes the from a JSON string nested in a root element specified by .
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+ The deserialized .
+
+
+
+ Deserializes the from a JSON string nested in a root element specified by
+ and writes a Json.NET array attribute for collections.
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+
+ A value to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+ The deserialized .
+
+
+
+ Deserializes the from a JSON string nested in a root element specified by ,
+ writes a Json.NET array attribute for collections, and encodes special characters.
+
+ The JSON string.
+ The name of the root element to append when deserializing.
+
+ A value to indicate whether to write the Json.NET array attribute.
+ This attribute helps preserve arrays when converting the written XML back to JSON.
+
+
+ A value to indicate whether to encode special characters when converting JSON to XML.
+ If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify
+ XML namespaces, attributes or processing directives. Instead special characters are encoded and written
+ as part of the XML element name.
+
+ The deserialized .
+
+
+
+ Converts an object to and from JSON.
+
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Gets a value indicating whether this can read JSON.
+
+ true if this can read JSON; otherwise, false.
+
+
+
+ Gets a value indicating whether this can write JSON.
+
+ true if this can write JSON; otherwise, false.
+
+
+
+ Converts an object to and from JSON.
+
+ The object type to convert.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Writes the JSON representation of the object.
+
+ The to write to.
+ The value.
+ The calling serializer.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read.
+ The calling serializer.
+ The object value.
+
+
+
+ Reads the JSON representation of the object.
+
+ The to read from.
+ Type of the object.
+ The existing value of object being read. If there is no existing value then null will be used.
+ The existing value has a value.
+ The calling serializer.
+ The object value.
+
+
+
+ Determines whether this instance can convert the specified object type.
+
+ Type of the object.
+
+ true if this instance can convert the specified object type; otherwise, false.
+
+
+
+
+ Instructs the to use the specified when serializing the member or class.
+
+
+
+
+ Gets the of the .
+
+ The of the .
+
+
+
+ The parameter list to use when constructing the described by .
+ If null, the default constructor is used.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the .
+
+
+
+ Initializes a new instance of the class.
+
+ Type of the .
+ Parameter list to use when constructing the . Can be null.
+
+
+
+ Represents a collection of .
+
+
+
+
+ Instructs the how to serialize the collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified container Id.
+
+ The container Id.
+
+
+
+ The exception thrown when an error occurs during JSON serialization or deserialization.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or null if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Instructs the to deserialize properties with no matching class member into the specified collection
+ and write values during serialization.
+
+
+
+
+ Gets or sets a value that indicates whether to write extension data when serializing the object.
+
+
+ true to write extension data when serializing the object; otherwise, false. The default is true.
+
+
+
+
+ Gets or sets a value that indicates whether to read extension data when deserializing the object.
+
+
+ true to read extension data when deserializing the object; otherwise, false. The default is true.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Instructs the not to serialize the public field or public read/write property value.
+
+
+
+
+ Base class for a table of atomized string objects.
+
+
+
+
+ Gets a string containing the same characters as the specified range of characters in the given array.
+
+ The character array containing the name to find.
+ The zero-based index into the array specifying the first character of the name.
+ The number of characters in the name.
+ A string containing the same characters as the specified range of characters in the given array.
+
+
+
+ Instructs the how to serialize the object.
+
+
+
+
+ Gets or sets the member serialization.
+
+ The member serialization.
+
+
+
+ Gets or sets the missing member handling used when deserializing this object.
+
+ The missing member handling.
+
+
+
+ Gets or sets how the object's properties with null values are handled during serialization and deserialization.
+
+ How the object's properties with null values are handled during serialization and deserialization.
+
+
+
+ Gets or sets a value that indicates whether the object's properties are required.
+
+
+ A value indicating whether the object's properties are required.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified member serialization.
+
+ The member serialization.
+
+
+
+ Initializes a new instance of the class with the specified container Id.
+
+ The container Id.
+
+
+
+ Instructs the to always serialize the member with the specified name.
+
+
+
+
+ Gets or sets the type used when serializing the property's collection items.
+
+ The collection's items type.
+
+
+
+ The parameter list to use when constructing the described by .
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+ [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
+
+
+
+
+
+ Gets or sets the of the .
+
+ The of the .
+
+
+
+ The parameter list to use when constructing the described by .
+ If null, the default constructor is used.
+ When non-null, there must be a constructor defined in the that exactly matches the number,
+ order, and type of these parameters.
+
+
+
+ [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
+
+
+
+
+
+ Gets or sets the null value handling used when serializing this property.
+
+ The null value handling.
+
+
+
+ Gets or sets the default value handling used when serializing this property.
+
+ The default value handling.
+
+
+
+ Gets or sets the reference loop handling used when serializing this property.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the object creation handling used when deserializing this property.
+
+ The object creation handling.
+
+
+
+ Gets or sets the type name handling used when serializing this property.
+
+ The type name handling.
+
+
+
+ Gets or sets whether this property's value is serialized as a reference.
+
+ Whether this property's value is serialized as a reference.
+
+
+
+ Gets or sets the order of serialization of a member.
+
+ The numeric order of serialization.
+
+
+
+ Gets or sets a value indicating whether this property is required.
+
+
+ A value indicating whether this property is required.
+
+
+
+
+ Gets or sets the name of the property.
+
+ The name of the property.
+
+
+
+ Gets or sets the reference loop handling used when serializing the property's collection items.
+
+ The collection's items reference loop handling.
+
+
+
+ Gets or sets the type name handling used when serializing the property's collection items.
+
+ The collection's items type name handling.
+
+
+
+ Gets or sets whether this property's collection items are serialized as a reference.
+
+ Whether this property's collection items are serialized as a reference.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified name.
+
+ Name of the property.
+
+
+
+ Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+
+
+
+
+ Asynchronously reads the next JSON token from the source.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns true if the next token was read successfully; false if there are no more tokens to read.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously skips the children of the current token.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously reads the next JSON token from the source as a [].
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the []. This result will be null at the end of an array.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously reads the next JSON token from the source as a .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the . This result will be null at the end of an array.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Specifies the state of the reader.
+
+
+
+
+ A read method has not been called.
+
+
+
+
+ The end of the file has been reached successfully.
+
+
+
+
+ Reader is at a property.
+
+
+
+
+ Reader is at the start of an object.
+
+
+
+
+ Reader is in an object.
+
+
+
+
+ Reader is at the start of an array.
+
+
+
+
+ Reader is in an array.
+
+
+
+
+ The method has been called.
+
+
+
+
+ Reader has just read a value.
+
+
+
+
+ Reader is at the start of a constructor.
+
+
+
+
+ Reader is in a constructor.
+
+
+
+
+ An error occurred that prevents the read operation from continuing.
+
+
+
+
+ The end of the file has been reached successfully.
+
+
+
+
+ Gets the current reader state.
+
+ The current reader state.
+
+
+
+ Gets or sets a value indicating whether the source should be closed when this reader is closed.
+
+
+ true to close the source when this reader is closed; otherwise false. The default is true.
+
+
+
+
+ Gets or sets a value indicating whether multiple pieces of JSON content can
+ be read from a continuous stream without erroring.
+
+
+ true to support reading multiple pieces of JSON content; otherwise false.
+ The default is false.
+
+
+
+
+ Gets the quotation mark character used to enclose the value of a string.
+
+
+
+
+ Gets or sets how time zones are handled when reading JSON.
+
+
+
+
+ Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
+
+
+
+
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+
+
+
+
+ Gets or sets how custom date formatted strings are parsed when reading JSON.
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a .
+ A null value means there is no maximum.
+ The default value is 64.
+
+
+
+
+ Gets the type of the current JSON token.
+
+
+
+
+ Gets the text value of the current JSON token.
+
+
+
+
+ Gets the .NET type for the current JSON token.
+
+
+
+
+ Gets the depth of the current token in the JSON document.
+
+ The depth of the current token in the JSON document.
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Gets or sets the culture used when reading JSON. Defaults to .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Reads the next JSON token from the source.
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+ Reads the next JSON token from the source as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the source as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the source as a [].
+
+ A [] or null if the next JSON token is null. This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the source as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the source as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the source as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the source as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the source as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Skips the children of the current token.
+
+
+
+
+ Sets the current token.
+
+ The new token.
+
+
+
+ Sets the current token and value.
+
+ The new token.
+ The value.
+
+
+
+ Sets the current token and value.
+
+ The new token.
+ The value.
+ A flag indicating whether the position index inside an array should be updated.
+
+
+
+ Sets the state based on current token type.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Changes the reader's state to .
+ If is set to true, the source is also closed.
+
+
+
+
+ The exception thrown when an error occurs while reading JSON text.
+
+
+
+
+ Gets the line number indicating where the error occurred.
+
+ The line number indicating where the error occurred.
+
+
+
+ Gets the line position indicating where the error occurred.
+
+ The line position indicating where the error occurred.
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or null if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Initializes a new instance of the class
+ with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The path to the JSON where the error occurred.
+ The line number indicating where the error occurred.
+ The line position indicating where the error occurred.
+ The exception that is the cause of the current exception, or null if no inner exception is specified.
+
+
+
+ Instructs the to always serialize the member, and to require that the member has a value.
+
+
+
+
+ The exception thrown when an error occurs during JSON serialization or deserialization.
+
+
+
+
+ Gets the line number indicating where the error occurred.
+
+ The line number indicating where the error occurred.
+
+
+
+ Gets the line position indicating where the error occurred.
+
+ The line position indicating where the error occurred.
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or null if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Initializes a new instance of the class
+ with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The path to the JSON where the error occurred.
+ The line number indicating where the error occurred.
+ The line position indicating where the error occurred.
+ The exception that is the cause of the current exception, or null if no inner exception is specified.
+
+
+
+ Serializes and deserializes objects into and from the JSON format.
+ The enables you to control how objects are encoded into JSON.
+
+
+
+
+ Occurs when the errors during serialization and deserialization.
+
+
+
+
+ Gets or sets the used by the serializer when resolving references.
+
+
+
+
+ Gets or sets the used by the serializer when resolving type names.
+
+
+
+
+ Gets or sets the used by the serializer when resolving type names.
+
+
+
+
+ Gets or sets the used by the serializer when writing trace messages.
+
+ The trace writer.
+
+
+
+ Gets or sets the equality comparer used by the serializer when comparing references.
+
+ The equality comparer.
+
+
+
+ Gets or sets how type name writing and reading is handled by the serializer.
+ The default value is .
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+ when deserializing with a value other than .
+
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ The default value is .
+
+ The type name assembly format.
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ The default value is .
+
+ The type name assembly format.
+
+
+
+ Gets or sets how object references are preserved by the serializer.
+ The default value is .
+
+
+
+
+ Gets or sets how reference loops (e.g. a class referencing itself) is handled.
+ The default value is .
+
+
+
+
+ Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how null values are handled during serialization and deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how default values are handled during serialization and deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how objects are created during deserialization.
+ The default value is .
+
+ The object creation handling.
+
+
+
+ Gets or sets how constructors are used during deserialization.
+ The default value is .
+
+ The constructor handling.
+
+
+
+ Gets or sets how metadata properties are used during deserialization.
+ The default value is .
+
+ The metadata properties handling.
+
+
+
+ Gets a collection that will be used during serialization.
+
+ Collection that will be used during serialization.
+
+
+
+ Gets or sets the contract resolver used by the serializer when
+ serializing .NET objects to JSON and vice versa.
+
+
+
+
+ Gets or sets the used by the serializer when invoking serialization callback methods.
+
+ The context.
+
+
+
+ Indicates how JSON text output is formatted.
+ The default value is .
+
+
+
+
+ Gets or sets how dates are written to JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how time zones are handled during serialization and deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
+ The default value is .
+
+
+
+
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how special floating point numbers, e.g. ,
+ and ,
+ are written as JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how strings are escaped when writing JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how and values are formatted when writing JSON text,
+ and the expected date format when reading JSON text.
+ The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK".
+
+
+
+
+ Gets or sets the culture used when reading JSON.
+ The default value is .
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a .
+ A null value means there is no maximum.
+ The default value is 64.
+
+
+
+
+ Gets a value indicating whether there will be a check for additional JSON content after deserializing an object.
+ The default value is false.
+
+
+ true if there will be a check for additional JSON content after deserializing an object; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Creates a new instance.
+ The will not use default settings
+ from .
+
+
+ A new instance.
+ The will not use default settings
+ from .
+
+
+
+
+ Creates a new instance using the specified .
+ The will not use default settings
+ from .
+
+ The settings to be applied to the .
+
+ A new instance using the specified .
+ The will not use default settings
+ from .
+
+
+
+
+ Creates a new instance.
+ The will use default settings
+ from .
+
+
+ A new instance.
+ The will use default settings
+ from .
+
+
+
+
+ Creates a new instance using the specified .
+ The will use default settings
+ from as well as the specified .
+
+ The settings to be applied to the .
+
+ A new instance using the specified .
+ The will use default settings
+ from as well as the specified .
+
+
+
+
+ Populates the JSON values onto the target object.
+
+ The that contains the JSON structure to read values from.
+ The target object to populate values onto.
+
+
+
+ Populates the JSON values onto the target object.
+
+ The that contains the JSON structure to read values from.
+ The target object to populate values onto.
+
+
+
+ Deserializes the JSON structure contained by the specified .
+
+ The that contains the JSON structure to deserialize.
+ The being deserialized.
+
+
+
+ Deserializes the JSON structure contained by the specified
+ into an instance of the specified type.
+
+ The containing the object.
+ The of object being deserialized.
+ The instance of being deserialized.
+
+
+
+ Deserializes the JSON structure contained by the specified
+ into an instance of the specified type.
+
+ The containing the object.
+ The type of the object to deserialize.
+ The instance of being deserialized.
+
+
+
+ Deserializes the JSON structure contained by the specified
+ into an instance of the specified type.
+
+ The containing the object.
+ The of object being deserialized.
+ The instance of being deserialized.
+
+
+
+ Serializes the specified and writes the JSON structure
+ using the specified .
+
+ The used to write the JSON structure.
+ The to serialize.
+
+
+
+ Serializes the specified and writes the JSON structure
+ using the specified .
+
+ The used to write the JSON structure.
+ The to serialize.
+
+ The type of the value being serialized.
+ This parameter is used when is to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+
+
+
+
+ Serializes the specified and writes the JSON structure
+ using the specified .
+
+ The used to write the JSON structure.
+ The to serialize.
+
+ The type of the value being serialized.
+ This parameter is used when is Auto to write out the type name if the type of the value does not match.
+ Specifying the type is optional.
+
+
+
+
+ Serializes the specified and writes the JSON structure
+ using the specified .
+
+ The used to write the JSON structure.
+ The to serialize.
+
+
+
+ Specifies the settings on a object.
+
+
+
+
+ Gets or sets how reference loops (e.g. a class referencing itself) are handled.
+ The default value is .
+
+ Reference loop handling.
+
+
+
+ Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
+ The default value is .
+
+ Missing member handling.
+
+
+
+ Gets or sets how objects are created during deserialization.
+ The default value is .
+
+ The object creation handling.
+
+
+
+ Gets or sets how null values are handled during serialization and deserialization.
+ The default value is .
+
+ Null value handling.
+
+
+
+ Gets or sets how default values are handled during serialization and deserialization.
+ The default value is .
+
+ The default value handling.
+
+
+
+ Gets or sets a collection that will be used during serialization.
+
+ The converters.
+
+
+
+ Gets or sets how object references are preserved by the serializer.
+ The default value is .
+
+ The preserve references handling.
+
+
+
+ Gets or sets how type name writing and reading is handled by the serializer.
+ The default value is .
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+ when deserializing with a value other than .
+
+ The type name handling.
+
+
+
+ Gets or sets how metadata properties are used during deserialization.
+ The default value is .
+
+ The metadata properties handling.
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ The default value is .
+
+ The type name assembly format.
+
+
+
+ Gets or sets how a type name assembly is written and resolved by the serializer.
+ The default value is .
+
+ The type name assembly format.
+
+
+
+ Gets or sets how constructors are used during deserialization.
+ The default value is .
+
+ The constructor handling.
+
+
+
+ Gets or sets the contract resolver used by the serializer when
+ serializing .NET objects to JSON and vice versa.
+
+ The contract resolver.
+
+
+
+ Gets or sets the equality comparer used by the serializer when comparing references.
+
+ The equality comparer.
+
+
+
+ Gets or sets the used by the serializer when resolving references.
+
+ The reference resolver.
+
+
+
+ Gets or sets a function that creates the used by the serializer when resolving references.
+
+ A function that creates the used by the serializer when resolving references.
+
+
+
+ Gets or sets the used by the serializer when writing trace messages.
+
+ The trace writer.
+
+
+
+ Gets or sets the used by the serializer when resolving type names.
+
+ The binder.
+
+
+
+ Gets or sets the used by the serializer when resolving type names.
+
+ The binder.
+
+
+
+ Gets or sets the error handler called during serialization and deserialization.
+
+ The error handler called during serialization and deserialization.
+
+
+
+ Gets or sets the used by the serializer when invoking serialization callback methods.
+
+ The context.
+
+
+
+ Gets or sets how and values are formatted when writing JSON text,
+ and the expected date format when reading JSON text.
+ The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK".
+
+
+
+
+ Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a .
+ A null value means there is no maximum.
+ The default value is 64.
+
+
+
+
+ Indicates how JSON text output is formatted.
+ The default value is .
+
+
+
+
+ Gets or sets how dates are written to JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how time zones are handled during serialization and deserialization.
+ The default value is .
+
+
+
+
+ Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON.
+ The default value is .
+
+
+
+
+ Gets or sets how special floating point numbers, e.g. ,
+ and ,
+ are written as JSON.
+ The default value is .
+
+
+
+
+ Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets how strings are escaped when writing JSON text.
+ The default value is .
+
+
+
+
+ Gets or sets the culture used when reading JSON.
+ The default value is .
+
+
+
+
+ Gets a value indicating whether there will be a check for additional content after deserializing an object.
+ The default value is false.
+
+
+ true if there will be a check for additional content after deserializing an object; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ using values copied from the passed in .
+
+
+
+
+ Represents a reader that provides fast, non-cached, forward-only access to JSON text data.
+
+
+
+
+ Asynchronously reads the next JSON token from the source.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns true if the next token was read successfully; false if there are no more tokens to read.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously reads the next JSON token from the source as a [].
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the []. This result will be null at the end of an array.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously reads the next JSON token from the source as a of .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the of . This result will be null at the end of an array.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously reads the next JSON token from the source as a .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous read. The
+ property returns the . This result will be null at the end of an array.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Initializes a new instance of the class with the specified .
+
+ The containing the JSON data to read.
+
+
+
+ Gets or sets the reader's property name table.
+
+
+
+
+ Gets or sets the reader's character buffer pool.
+
+
+
+
+ Reads the next JSON token from the underlying .
+
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a [].
+
+ A [] or null if the next JSON token is null. This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Changes the reader's state to .
+ If is set to true, the underlying is also closed.
+
+
+
+
+ Gets a value indicating whether the class can return line information.
+
+
+ true if and can be provided; otherwise, false.
+
+
+
+
+ Gets the current line number.
+
+
+ The current line number or 0 if no line information is available (for example, returns false).
+
+
+
+
+ Gets the current line position.
+
+
+ The current line position or 0 if no line information is available (for example, returns false).
+
+
+
+
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the JSON value delimiter.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the specified end token.
+
+ The end token to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously closes this writer.
+ If is set to true, the destination is also closed.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the end of the current JSON object or array.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes indent characters.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes an indent space.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes raw JSON without changing the writer's state.
+
+ The raw JSON to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a null value.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+ A flag to indicate whether the text should be escaped when it is written as a JSON property name.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the beginning of a JSON array.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the beginning of a JSON object.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the start of a constructor with the given name.
+
+ The name of the constructor.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes an undefined value.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the given white space.
+
+ The string of white space characters.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a [] value.
+
+ The [] value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the end of an array.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the end of a constructor.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes the end of a JSON object.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Asynchronously writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ Derived classes must override this method to get asynchronous behaviour. Otherwise it will
+ execute synchronously, returning an already-completed task.
+
+
+
+ Gets or sets the writer's character array pool.
+
+
+
+
+ Gets or sets how many s to write for each level in the hierarchy when is set to .
+
+
+
+
+ Gets or sets which character to use to quote attribute values.
+
+
+
+
+ Gets or sets which character to use for indenting when is set to .
+
+
+
+
+ Gets or sets a value indicating whether object names will be surrounded with quotes.
+
+
+
+
+ Initializes a new instance of the class using the specified .
+
+ The to write to.
+
+
+
+ Flushes whatever is in the buffer to the underlying and also flushes the underlying .
+
+
+
+
+ Closes this writer.
+ If is set to true, the underlying is also closed.
+ If is set to true, the JSON is auto-completed.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the specified end token.
+
+ The end token to write.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+ A flag to indicate whether the text should be escaped when it is written as a JSON property name.
+
+
+
+ Writes indent characters.
+
+
+
+
+ Writes the JSON value delimiter.
+
+
+
+
+ Writes an indent space.
+
+
+
+
+ Writes a value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+ The value to write.
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value.
+
+ The [] value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes the given white space.
+
+ The string of white space characters.
+
+
+
+ Specifies the type of JSON token.
+
+
+
+
+ This is returned by the if a read method has not been called.
+
+
+
+
+ An object start token.
+
+
+
+
+ An array start token.
+
+
+
+
+ A constructor start token.
+
+
+
+
+ An object property name.
+
+
+
+
+ A comment.
+
+
+
+
+ Raw JSON.
+
+
+
+
+ An integer.
+
+
+
+
+ A float.
+
+
+
+
+ A string.
+
+
+
+
+ A boolean.
+
+
+
+
+ A null token.
+
+
+
+
+ An undefined token.
+
+
+
+
+ An object end token.
+
+
+
+
+ An array end token.
+
+
+
+
+ A constructor end token.
+
+
+
+
+ A Date.
+
+
+
+
+ Byte data.
+
+
+
+
+
+ Represents a reader that provides validation.
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Sets an event handler for receiving schema validation errors.
+
+
+
+
+ Gets the text value of the current JSON token.
+
+
+
+
+
+ Gets the depth of the current token in the JSON document.
+
+ The depth of the current token in the JSON document.
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Gets the quotation mark character used to enclose the value of a string.
+
+
+
+
+
+ Gets the type of the current JSON token.
+
+
+
+
+
+ Gets the .NET type for the current JSON token.
+
+
+
+
+
+ Initializes a new instance of the class that
+ validates the content returned from the given .
+
+ The to read from while validating.
+
+
+
+ Gets or sets the schema.
+
+ The schema.
+
+
+
+ Gets the used to construct this .
+
+ The specified in the constructor.
+
+
+
+ Changes the reader's state to .
+ If is set to true, the underlying is also closed.
+
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of .
+
+
+
+ Reads the next JSON token from the underlying as a [].
+
+
+ A [] or null if the next JSON token is null.
+
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of .
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of .
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of .
+
+
+
+ Reads the next JSON token from the underlying as a .
+
+ A . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of . This method will return null at the end of an array.
+
+
+
+ Reads the next JSON token from the underlying as a of .
+
+ A of .
+
+
+
+ Reads the next JSON token from the underlying .
+
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Asynchronously closes this writer.
+ If is set to true, the destination is also closed.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the specified end token.
+
+ The end token to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes indent characters.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the JSON value delimiter.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes an indent space.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes raw JSON without changing the writer's state.
+
+ The raw JSON to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the end of the current JSON object or array.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the end of an array.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the end of a constructor.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the end of a JSON object.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a null value.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+ A flag to indicate whether the text should be escaped when it is written as a JSON property name.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the beginning of a JSON array.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the start of a constructor with the given name.
+
+ The name of the constructor.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the beginning of a JSON object.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the current token.
+
+ The to read the token from.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the current token.
+
+ The to read the token from.
+ A flag indicating whether the current token's children should be written.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the token and its value.
+
+ The to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the token and its value.
+
+ The to write.
+
+ The value to write.
+ A value is only required for tokens that have an associated value, e.g. the property name for .
+ null can be passed to the method for tokens that don't have a value, e.g. .
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a [] value.
+
+ The [] value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a value.
+
+ The value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes a of value.
+
+ The of value to write.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes an undefined value.
+
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously writes the given white space.
+
+ The string of white space characters.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Asynchronously ets the state of the .
+
+ The being written.
+ The value being written.
+ The token to monitor for cancellation requests. The default value is .
+ A that represents the asynchronous operation.
+ The default behaviour is to execute synchronously, returning an already-completed task. Derived
+ classes can override this behaviour for true asynchronicity.
+
+
+
+ Gets or sets a value indicating whether the destination should be closed when this writer is closed.
+
+
+ true to close the destination when this writer is closed; otherwise false. The default is true.
+
+
+
+
+ Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed.
+
+
+ true to auto-complete the JSON when this writer is closed; otherwise false. The default is true.
+
+
+
+
+ Gets the top.
+
+ The top.
+
+
+
+ Gets the state of the writer.
+
+
+
+
+ Gets the path of the writer.
+
+
+
+
+ Gets or sets a value indicating how JSON text output should be formatted.
+
+
+
+
+ Gets or sets how dates are written to JSON text.
+
+
+
+
+ Gets or sets how time zones are handled when writing JSON text.
+
+
+
+
+ Gets or sets how strings are escaped when writing JSON text.
+
+
+
+
+ Gets or sets how special floating point numbers, e.g. ,
+ and ,
+ are written to JSON text.
+
+
+
+
+ Gets or sets how and values are formatted when writing JSON text.
+
+
+
+
+ Gets or sets the culture used when writing JSON. Defaults to .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Flushes whatever is in the buffer to the destination and also flushes the destination.
+
+
+
+
+ Closes this writer.
+ If is set to true, the destination is also closed.
+ If is set to true, the JSON is auto-completed.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the end of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the end of an array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the end constructor.
+
+
+
+
+ Writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+
+
+
+ Writes the property name of a name/value pair of a JSON object.
+
+ The name of the property.
+ A flag to indicate whether the text should be escaped when it is written as a JSON property name.
+
+
+
+ Writes the end of the current JSON object or array.
+
+
+
+
+ Writes the current token and its children.
+
+ The to read the token from.
+
+
+
+ Writes the current token.
+
+ The to read the token from.
+ A flag indicating whether the current token's children should be written.
+
+
+
+ Writes the token and its value.
+
+ The to write.
+
+ The value to write.
+ A value is only required for tokens that have an associated value, e.g. the property name for .
+ null can be passed to the method for tokens that don't have a value, e.g. .
+
+
+
+
+ Writes the token.
+
+ The to write.
+
+
+
+ Writes the specified end token.
+
+ The end token to write.
+
+
+
+ Writes indent characters.
+
+
+
+
+ Writes the JSON value delimiter.
+
+
+
+
+ Writes an indent space.
+
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON without changing the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes raw JSON where a value is expected and updates the writer's state.
+
+ The raw JSON to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a of value.
+
+ The of value to write.
+
+
+
+ Writes a [] value.
+
+ The [] value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+ An error will raised if the value cannot be written as a single JSON token.
+
+ The value to write.
+
+
+
+ Writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes the given white space.
+
+ The string of white space characters.
+
+
+
+ Releases unmanaged and - optionally - managed resources.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Sets the state of the .
+
+ The being written.
+ The value being written.
+
+
+
+ The exception thrown when an error occurs while writing JSON text.
+
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or null if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Initializes a new instance of the class
+ with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The path to the JSON where the error occurred.
+ The exception that is the cause of the current exception, or null if no inner exception is specified.
+
+
+
+ Specifies how JSON comments are handled when loading JSON.
+
+
+
+
+ Ignore comments.
+
+
+
+
+ Load comments as a with type .
+
+
+
+
+ Specifies how duplicate property names are handled when loading JSON.
+
+
+
+
+ Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used.
+
+
+
+
+ Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used.
+
+
+
+
+ Throw a when a duplicate property is encountered.
+
+
+
+
+ Contains the LINQ to JSON extension methods.
+
+
+
+
+ Returns a collection of tokens that contains the ancestors of every token in the source collection.
+
+ The type of the objects in source, constrained to .
+ An of that contains the source collection.
+ An of that contains the ancestors of every token in the source collection.
+
+
+
+ Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection.
+
+ The type of the objects in source, constrained to .
+ An of that contains the source collection.
+ An of that contains every token in the source collection, the ancestors of every token in the source collection.
+
+
+
+ Returns a collection of tokens that contains the descendants of every token in the source collection.
+
+ The type of the objects in source, constrained to .
+ An of that contains the source collection.
+ An of that contains the descendants of every token in the source collection.
+
+
+
+ Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection.
+
+ The type of the objects in source, constrained to .
+ An of that contains the source collection.
+ An of that contains every token in the source collection, and the descendants of every token in the source collection.
+
+
+
+ Returns a collection of child properties of every object in the source collection.
+
+ An of that contains the source collection.
+ An of that contains the properties of every object in the source collection.
+
+
+
+ Returns a collection of child values of every object in the source collection with the given key.
+
+ An of that contains the source collection.
+ The token key.
+ An of that contains the values of every token in the source collection with the given key.
+
+
+
+ Returns a collection of child values of every object in the source collection.
+
+ An of that contains the source collection.
+ An of that contains the values of every token in the source collection.
+
+
+
+ Returns a collection of converted child values of every object in the source collection with the given key.
+
+ The type to convert the values to.
+ An of that contains the source collection.
+ The token key.
+ An that contains the converted values of every token in the source collection with the given key.
+
+
+
+ Returns a collection of converted child values of every object in the source collection.
+
+ The type to convert the values to.
+ An of that contains the source collection.
+ An that contains the converted values of every token in the source collection.
+
+
+
+ Converts the value.
+
+ The type to convert the value to.
+ A cast as a of .
+ A converted value.
+
+
+
+ Converts the value.
+
+ The source collection type.
+ The type to convert the value to.
+ A cast as a of .
+ A converted value.
+
+
+
+ Returns a collection of child tokens of every array in the source collection.
+
+ The source collection type.
+ An of that contains the source collection.
+ An of that contains the values of every token in the source collection.
+
+
+
+ Returns a collection of converted child tokens of every array in the source collection.
+
+ An of that contains the source collection.
+ The type to convert the values to.
+ The source collection type.
+ An that contains the converted values of every token in the source collection.
+
+
+
+ Returns the input typed as .
+
+ An of that contains the source collection.
+ The input typed as .
+
+
+
+ Returns the input typed as .
+
+ The source collection type.
+ An of that contains the source collection.
+ The input typed as .
+
+
+
+ Represents a collection of objects.
+
+ The type of token.
+
+
+
+ Gets the of with the specified key.
+
+
+
+
+
+ Represents a JSON array.
+
+
+
+
+
+
+
+ Writes this token to a asynchronously.
+
+ A into which this method will write.
+ The token to monitor for cancellation requests.
+ A collection of which will be used when writing the token.
+ A that represents the asynchronous write operation.
+
+
+
+ Asynchronously loads a from a .
+
+ A that will be read for the content of the .
+ If this is null, default load settings will be used.
+ The token to monitor for cancellation requests. The default value is .
+ A representing the asynchronous load. The property contains the JSON that was read from the specified .
+
+
+
+ Asynchronously loads a from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ The token to monitor for cancellation requests. The default value is .
+ A representing the asynchronous load. The property contains the JSON that was read from the specified .
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class with the specified content.
+
+ The contents of the array.
+
+
+
+ Initializes a new instance of the class with the specified content.
+
+ The contents of the array.
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ A that contains the JSON that was read from the specified .
+
+
+
+ Loads an from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A that contains the JSON that was read from the specified .
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ A populated from the string that contains JSON.
+
+
+
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A populated from the string that contains JSON.
+
+
+
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ A with the values of the specified object.
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ The that will be used to read the object.
+ A with the values of the specified object.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Gets the with the specified key.
+
+ The with the specified key.
+
+
+
+ Gets or sets the at the specified index.
+
+
+
+
+
+ Determines the index of a specific item in the .
+
+ The object to locate in the .
+
+ The index of if found in the list; otherwise, -1.
+
+
+
+
+ Inserts an item to the at the specified index.
+
+ The zero-based index at which should be inserted.
+ The object to insert into the .
+
+ is not a valid index in the .
+
+
+
+
+ Removes the item at the specified index.
+
+ The zero-based index of the item to remove.
+
+ is not a valid index in the .
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ A of that can be used to iterate through the collection.
+
+
+
+
+ Adds an item to the .
+
+ The object to add to the .
+
+
+
+ Removes all items from the .
+
+
+
+
+ Determines whether the contains a specific value.
+
+ The object to locate in the .
+
+ true if is found in the ; otherwise, false.
+
+
+
+
+ Copies the elements of the to an array, starting at a particular array index.
+
+ The array.
+ Index of the array.
+
+
+
+ Gets a value indicating whether the is read-only.
+
+ true if the is read-only; otherwise, false.
+
+
+
+ Removes the first occurrence of a specific object from the .
+
+ The object to remove from the .
+
+ true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original .
+
+
+
+
+ Represents a JSON constructor.
+
+
+
+
+ Writes this token to a asynchronously.
+
+ A into which this method will write.
+ The token to monitor for cancellation requests.
+ A collection of which will be used when writing the token.
+ A that represents the asynchronous write operation.
+
+
+
+ Asynchronously loads a from a .
+
+ A that will be read for the content of the .
+ The token to monitor for cancellation requests. The default value is .
+
+ A that represents the asynchronous load. The
+ property returns a that contains the JSON that was read from the specified .
+
+
+
+ Asynchronously loads a from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ The token to monitor for cancellation requests. The default value is .
+
+ A that represents the asynchronous load. The
+ property returns a that contains the JSON that was read from the specified .
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets or sets the name of this constructor.
+
+ The constructor name.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class with the specified name and content.
+
+ The constructor name.
+ The contents of the constructor.
+
+
+
+ Initializes a new instance of the class with the specified name and content.
+
+ The constructor name.
+ The contents of the constructor.
+
+
+
+ Initializes a new instance of the class with the specified name.
+
+ The constructor name.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Gets the with the specified key.
+
+ The with the specified key.
+
+
+
+ Loads a from a .
+
+ A that will be read for the content of the .
+ A that contains the JSON that was read from the specified .
+
+
+
+ Loads a from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A that contains the JSON that was read from the specified .
+
+
+
+ Represents a token that can contain other tokens.
+
+
+
+
+ Occurs when the list changes or an item in the list changes.
+
+
+
+
+ Occurs before an item is added to the collection.
+
+
+
+
+ Occurs when the items list of the collection has changed, or the collection is reset.
+
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Raises the event.
+
+ The instance containing the event data.
+
+
+
+ Raises the event.
+
+ The instance containing the event data.
+
+
+
+ Raises the event.
+
+ The instance containing the event data.
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true if this token has child values; otherwise, false.
+
+
+
+
+ Get the first child token of this token.
+
+
+ A containing the first child token of the .
+
+
+
+
+ Get the last child token of this token.
+
+
+ A containing the last child token of the .
+
+
+
+
+ Returns a collection of the child tokens of this token, in document order.
+
+
+ An of containing the child tokens of this , in document order.
+
+
+
+
+ Returns a collection of the child values of this token, in document order.
+
+ The type to convert the values to.
+
+ A containing the child values of this , in document order.
+
+
+
+
+ Returns a collection of the descendant tokens for this token in document order.
+
+ An of containing the descendant tokens of the .
+
+
+
+ Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order.
+
+ An of containing this token, and all the descendant tokens of the .
+
+
+
+ Adds the specified content as children of this .
+
+ The content to be added.
+
+
+
+ Adds the specified content as the first children of this .
+
+ The content to be added.
+
+
+
+ Creates a that can be used to add tokens to the .
+
+ A that is ready to have content written to it.
+
+
+
+ Replaces the child nodes of this token with the specified content.
+
+ The content.
+
+
+
+ Removes the child nodes from this token.
+
+
+
+
+ Merge the specified content into this .
+
+ The content to be merged.
+
+
+
+ Merge the specified content into this using .
+
+ The content to be merged.
+ The used to merge the content.
+
+
+
+ Gets the count of child JSON tokens.
+
+ The count of child JSON tokens.
+
+
+
+ Represents a collection of objects.
+
+ The type of token.
+
+
+
+ An empty collection of objects.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The enumerable.
+
+
+
+ Returns an enumerator that can be used to iterate through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Gets the of with the specified key.
+
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Determines whether the specified is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Represents a JSON object.
+
+
+
+
+
+
+
+ Writes this token to a asynchronously.
+
+ A into which this method will write.
+ The token to monitor for cancellation requests.
+ A collection of which will be used when writing the token.
+ A that represents the asynchronous write operation.
+
+
+
+ Asynchronously loads a from a .
+
+ A that will be read for the content of the .
+ The token to monitor for cancellation requests. The default value is .
+
+ A that represents the asynchronous load. The
+ property returns a that contains the JSON that was read from the specified .
+
+
+
+ Asynchronously loads a from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ The token to monitor for cancellation requests. The default value is .
+
+ A that represents the asynchronous load. The
+ property returns a that contains the JSON that was read from the specified .
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Occurs when a property value changes.
+
+
+
+
+ Occurs when a property value is changing.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class with the specified content.
+
+ The contents of the object.
+
+
+
+ Initializes a new instance of the class with the specified content.
+
+ The contents of the object.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets an of of this object's properties.
+
+ An of of this object's properties.
+
+
+
+ Gets a with the specified name.
+
+ The property name.
+ A with the specified name or null.
+
+
+
+ Gets the with the specified name.
+ The exact name will be searched for first and if no matching property is found then
+ the will be used to match a property.
+
+ The property name.
+ One of the enumeration values that specifies how the strings will be compared.
+ A matched with the specified name or null.
+
+
+
+ Gets a of of this object's property values.
+
+ A of of this object's property values.
+
+
+
+ Gets the with the specified key.
+
+ The with the specified key.
+
+
+
+ Gets or sets the with the specified property name.
+
+
+
+
+
+ Loads a from a .
+
+ A that will be read for the content of the .
+ A that contains the JSON that was read from the specified .
+
+ is not valid JSON.
+
+
+
+
+ Loads a from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A that contains the JSON that was read from the specified .
+
+ is not valid JSON.
+
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ A populated from the string that contains JSON.
+
+ is not valid JSON.
+
+
+
+
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A populated from the string that contains JSON.
+
+ is not valid JSON.
+
+
+
+
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ A with the values of the specified object.
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ The that will be used to read the object.
+ A with the values of the specified object.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Gets the with the specified property name.
+
+ Name of the property.
+ The with the specified property name.
+
+
+
+ Gets the with the specified property name.
+ The exact property name will be searched for first and if no matching property is found then
+ the will be used to match a property.
+
+ Name of the property.
+ One of the enumeration values that specifies how the strings will be compared.
+ The with the specified property name.
+
+
+
+ Tries to get the with the specified property name.
+ The exact property name will be searched for first and if no matching property is found then
+ the will be used to match a property.
+
+ Name of the property.
+ The value.
+ One of the enumeration values that specifies how the strings will be compared.
+ true if a value was successfully retrieved; otherwise, false.
+
+
+
+ Adds the specified property name.
+
+ Name of the property.
+ The value.
+
+
+
+ Determines whether the JSON object has the specified property name.
+
+ Name of the property.
+ true if the JSON object has the specified property name; otherwise, false.
+
+
+
+ Removes the property with the specified name.
+
+ Name of the property.
+ true if item was successfully removed; otherwise, false.
+
+
+
+ Tries to get the with the specified property name.
+
+ Name of the property.
+ The value.
+ true if a value was successfully retrieved; otherwise, false.
+
+
+
+ Returns an enumerator that can be used to iterate through the collection.
+
+
+ A that can be used to iterate through the collection.
+
+
+
+
+ Raises the event with the provided arguments.
+
+ Name of the property.
+
+
+
+ Raises the event with the provided arguments.
+
+ Name of the property.
+
+
+
+ Returns the responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+
+ The to bind this object.
+
+
+
+
+ Represents a JSON property.
+
+
+
+
+ Writes this token to a asynchronously.
+
+ A into which this method will write.
+ The token to monitor for cancellation requests.
+ A collection of which will be used when writing the token.
+ A that represents the asynchronous write operation.
+
+
+
+ Asynchronously loads a from a .
+
+ A that will be read for the content of the .
+ The token to monitor for cancellation requests. The default value is .
+ A representing the asynchronous creation. The
+ property returns a that contains the JSON that was read from the specified .
+
+
+
+ Asynchronously loads a from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ The token to monitor for cancellation requests. The default value is .
+ A representing the asynchronous creation. The
+ property returns a that contains the JSON that was read from the specified .
+
+
+
+ Gets the container's children tokens.
+
+ The container's children tokens.
+
+
+
+ Gets the property name.
+
+ The property name.
+
+
+
+ Gets or sets the property value.
+
+ The property value.
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Initializes a new instance of the class.
+
+ The property name.
+ The property content.
+
+
+
+ Initializes a new instance of the class.
+
+ The property name.
+ The property content.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Loads a from a .
+
+ A that will be read for the content of the .
+ A that contains the JSON that was read from the specified .
+
+
+
+ Loads a from a .
+
+ A that will be read for the content of the .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A that contains the JSON that was read from the specified .
+
+
+
+ Represents a view of a .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name.
+
+
+
+ When overridden in a derived class, returns whether resetting an object changes its value.
+
+
+ true if resetting the component changes its value; otherwise, false.
+
+ The component to test for reset capability.
+
+
+
+ When overridden in a derived class, gets the current value of the property on a component.
+
+
+ The value of a property for a given component.
+
+ The component with the property for which to retrieve the value.
+
+
+
+ When overridden in a derived class, resets the value for this property of the component to the default value.
+
+ The component with the property value that is to be reset to the default value.
+
+
+
+ When overridden in a derived class, sets the value of the component to a different value.
+
+ The component with the property value that is to be set.
+ The new value.
+
+
+
+ When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted.
+
+
+ true if the property should be persisted; otherwise, false.
+
+ The component with the property to be examined for persistence.
+
+
+
+ When overridden in a derived class, gets the type of the component this property is bound to.
+
+
+ A that represents the type of component this property is bound to.
+ When the or
+
+ methods are invoked, the object specified might be an instance of this type.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether this property is read-only.
+
+
+ true if the property is read-only; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets the type of the property.
+
+
+ A that represents the type of the property.
+
+
+
+
+ Gets the hash code for the name of the member.
+
+
+
+ The hash code for the name of the member.
+
+
+
+
+ Represents a raw JSON string.
+
+
+
+
+ Asynchronously creates an instance of with the content of the reader's current token.
+
+ The reader.
+ The token to monitor for cancellation requests. The default value is .
+ A representing the asynchronous creation. The
+ property returns an instance of with the content of the reader's current token.
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class.
+
+ The raw json.
+
+
+
+ Creates an instance of with the content of the reader's current token.
+
+ The reader.
+ An instance of with the content of the reader's current token.
+
+
+
+ Specifies the settings used when cloning JSON.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a flag that indicates whether to copy annotations when cloning a .
+ The default value is true.
+
+
+ A flag that indicates whether to copy annotations when cloning a .
+
+
+
+
+ Specifies the settings used when loading JSON.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets how JSON comments are handled when loading JSON.
+ The default value is .
+
+ The JSON comment handling.
+
+
+
+ Gets or sets how JSON line info is handled when loading JSON.
+ The default value is .
+
+ The JSON line info handling.
+
+
+
+ Gets or sets how duplicate property names in JSON objects are handled when loading JSON.
+ The default value is .
+
+ The JSON duplicate property name handling.
+
+
+
+ Specifies the settings used when merging JSON.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the method used when merging JSON arrays.
+
+ The method used when merging JSON arrays.
+
+
+
+ Gets or sets how null value properties are merged.
+
+ How null value properties are merged.
+
+
+
+ Gets or sets the comparison used to match property names while merging.
+ The exact property name will be searched for first and if no matching property is found then
+ the will be used to match a property.
+
+ The comparison used to match property names while merging.
+
+
+
+ Specifies the settings used when selecting JSON.
+
+
+
+
+ Gets or sets a timeout that will be used when executing regular expressions.
+
+ The timeout that will be used when executing regular expressions.
+
+
+
+ Gets or sets a flag that indicates whether an error should be thrown if
+ no tokens are found when evaluating part of the expression.
+
+
+ A flag that indicates whether an error should be thrown if
+ no tokens are found when evaluating part of the expression.
+
+
+
+
+ Represents an abstract JSON token.
+
+
+
+
+ Writes this token to a asynchronously.
+
+ A into which this method will write.
+ The token to monitor for cancellation requests.
+ A collection of which will be used when writing the token.
+ A that represents the asynchronous write operation.
+
+
+
+ Writes this token to a asynchronously.
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+ A that represents the asynchronous write operation.
+
+
+
+ Asynchronously creates a from a .
+
+ An positioned at the token to read into this .
+ The token to monitor for cancellation requests. The default value is .
+
+ A that represents the asynchronous creation. The
+ property returns a that contains
+ the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Asynchronously creates a from a .
+
+ An positioned at the token to read into this .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ The token to monitor for cancellation requests. The default value is .
+
+ A that represents the asynchronous creation. The
+ property returns a that contains
+ the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Asynchronously creates a from a .
+
+ A positioned at the token to read into this .
+ The token to monitor for cancellation requests. The default value is .
+
+ A that represents the asynchronous creation. The
+ property returns a that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Asynchronously creates a from a .
+
+ A positioned at the token to read into this .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ The token to monitor for cancellation requests. The default value is .
+
+ A that represents the asynchronous creation. The
+ property returns a that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Gets a comparer that can compare two tokens for value equality.
+
+ A that can compare two nodes for value equality.
+
+
+
+ Gets or sets the parent.
+
+ The parent.
+
+
+
+ Gets the root of this .
+
+ The root of this .
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true if this token has child values; otherwise, false.
+
+
+
+
+ Compares the values of two tokens, including the values of all descendant tokens.
+
+ The first to compare.
+ The second to compare.
+ true if the tokens are equal; otherwise false.
+
+
+
+ Gets the next sibling token of this node.
+
+ The that contains the next sibling token.
+
+
+
+ Gets the previous sibling token of this node.
+
+ The that contains the previous sibling token.
+
+
+
+ Gets the path of the JSON token.
+
+
+
+
+ Adds the specified content immediately after this token.
+
+ A content object that contains simple content or a collection of content objects to be added after this token.
+
+
+
+ Adds the specified content immediately before this token.
+
+ A content object that contains simple content or a collection of content objects to be added before this token.
+
+
+
+ Returns a collection of the ancestor tokens of this token.
+
+ A collection of the ancestor tokens of this token.
+
+
+
+ Returns a collection of tokens that contain this token, and the ancestors of this token.
+
+ A collection of tokens that contain this token, and the ancestors of this token.
+
+
+
+ Returns a collection of the sibling tokens after this token, in document order.
+
+ A collection of the sibling tokens after this tokens, in document order.
+
+
+
+ Returns a collection of the sibling tokens before this token, in document order.
+
+ A collection of the sibling tokens before this token, in document order.
+
+
+
+ Gets the with the specified key.
+
+ The with the specified key.
+
+
+
+ Gets the with the specified key converted to the specified type.
+
+ The type to convert the token to.
+ The token key.
+ The converted token value.
+
+
+
+ Get the first child token of this token.
+
+ A containing the first child token of the .
+
+
+
+ Get the last child token of this token.
+
+ A containing the last child token of the .
+
+
+
+ Returns a collection of the child tokens of this token, in document order.
+
+ An of containing the child tokens of this , in document order.
+
+
+
+ Returns a collection of the child tokens of this token, in document order, filtered by the specified type.
+
+ The type to filter the child tokens on.
+ A containing the child tokens of this , in document order.
+
+
+
+ Returns a collection of the child values of this token, in document order.
+
+ The type to convert the values to.
+ A containing the child values of this , in document order.
+
+
+
+ Removes this token from its parent.
+
+
+
+
+ Replaces this token with the specified token.
+
+ The value.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of which will be used when writing the token.
+
+
+
+ Returns the indented JSON for this token.
+
+
+ ToString() returns a non-JSON string value for tokens with a type of .
+ If you want the JSON for all token types then you should use .
+
+
+ The indented JSON for this token.
+
+
+
+
+ Returns the JSON for this token using the given formatting and converters.
+
+ Indicates how the output should be formatted.
+ A collection of s which will be used when writing the token.
+ The JSON for this token using the given formatting and converters.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to [].
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to of .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an explicit conversion from to .
+
+ The value.
+ The result of the conversion.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from [] to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Performs an implicit conversion from of to .
+
+ The value to create a from.
+ The initialized with the specified value.
+
+
+
+ Creates a for this token.
+
+ A that can be used to read this token and its descendants.
+
+
+
+ Creates a from an object.
+
+ The object that will be used to create .
+ A with the value of the specified object.
+
+
+
+ Creates a from an object using the specified .
+
+ The object that will be used to create .
+ The that will be used when reading the object.
+ A with the value of the specified object.
+
+
+
+ Creates an instance of the specified .NET type from the .
+
+ The object type that the token will be deserialized to.
+ The new object created from the JSON value.
+
+
+
+ Creates an instance of the specified .NET type from the .
+
+ The object type that the token will be deserialized to.
+ The new object created from the JSON value.
+
+
+
+ Creates an instance of the specified .NET type from the using the specified .
+
+ The object type that the token will be deserialized to.
+ The that will be used when creating the object.
+ The new object created from the JSON value.
+
+
+
+ Creates an instance of the specified .NET type from the using the specified .
+
+ The object type that the token will be deserialized to.
+ The that will be used when creating the object.
+ The new object created from the JSON value.
+
+
+
+ Creates a from a .
+
+ A positioned at the token to read into this .
+
+ A that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Creates a from a .
+
+ An positioned at the token to read into this .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+
+ A that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ A populated from the string that contains JSON.
+
+
+
+ Load a from a string that contains JSON.
+
+ A that contains JSON.
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+ A populated from the string that contains JSON.
+
+
+
+ Creates a from a .
+
+ A positioned at the token to read into this .
+ The used to load the JSON.
+ If this is null, default load settings will be used.
+
+ A that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Creates a from a .
+
+ A positioned at the token to read into this .
+
+ A that contains the token and its descendant tokens
+ that were read from the reader. The runtime type of the token is determined
+ by the token type of the first token encountered in the reader.
+
+
+
+
+ Selects a using a JSONPath expression. Selects the token that matches the object path.
+
+
+ A that contains a JSONPath expression.
+
+ A , or null.
+
+
+
+ Selects a using a JSONPath expression. Selects the token that matches the object path.
+
+
+ A that contains a JSONPath expression.
+
+ A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.
+ A .
+
+
+
+ Selects a using a JSONPath expression. Selects the token that matches the object path.
+
+
+ A that contains a JSONPath expression.
+
+ The used to select tokens.
+ A .
+
+
+
+ Selects a collection of elements using a JSONPath expression.
+
+
+ A that contains a JSONPath expression.
+
+ An of that contains the selected elements.
+
+
+
+ Selects a collection of elements using a JSONPath expression.
+
+
+ A that contains a JSONPath expression.
+
+ A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression.
+ An of that contains the selected elements.
+
+
+
+ Selects a collection of elements using a JSONPath expression.
+
+
+ A that contains a JSONPath expression.
+
+ The used to select tokens.
+ An of that contains the selected elements.
+
+
+
+ Returns the responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+
+ The to bind this object.
+
+
+
+
+ Returns the responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+
+ The to bind this object.
+
+
+
+
+ Creates a new instance of the . All child tokens are recursively cloned.
+
+ A new instance of the .
+
+
+
+ Creates a new instance of the . All child tokens are recursively cloned.
+
+ A object to configure cloning settings.
+ A new instance of the .
+
+
+
+ Adds an object to the annotation list of this .
+
+ The annotation to add.
+
+
+
+ Get the first annotation object of the specified type from this .
+
+ The type of the annotation to retrieve.
+ The first annotation object that matches the specified type, or null if no annotation is of the specified type.
+
+
+
+ Gets the first annotation object of the specified type from this .
+
+ The of the annotation to retrieve.
+ The first annotation object that matches the specified type, or null if no annotation is of the specified type.
+
+
+
+ Gets a collection of annotations of the specified type for this .
+
+ The type of the annotations to retrieve.
+ An that contains the annotations for this .
+
+
+
+ Gets a collection of annotations of the specified type for this .
+
+ The of the annotations to retrieve.
+ An of that contains the annotations that match the specified type for this .
+
+
+
+ Removes the annotations of the specified type from this .
+
+ The type of annotations to remove.
+
+
+
+ Removes the annotations of the specified type from this .
+
+ The of annotations to remove.
+
+
+
+ Compares tokens to determine whether they are equal.
+
+
+
+
+ Determines whether the specified objects are equal.
+
+ The first object of type to compare.
+ The second object of type to compare.
+
+ true if the specified objects are equal; otherwise, false.
+
+
+
+
+ Returns a hash code for the specified object.
+
+ The for which a hash code is to be returned.
+ A hash code for the specified object.
+ The type of is a reference type and is null.
+
+
+
+ Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data.
+
+
+
+
+ Gets the at the reader's current position.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The token to read from.
+
+
+
+ Initializes a new instance of the class.
+
+ The token to read from.
+ The initial path of the token. It is prepended to the returned .
+
+
+
+ Reads the next JSON token from the underlying .
+
+
+ true if the next token was read successfully; false if there are no more tokens to read.
+
+
+
+
+ Gets the path of the current JSON token.
+
+
+
+
+ Specifies the type of token.
+
+
+
+
+ No token type has been set.
+
+
+
+
+ A JSON object.
+
+
+
+
+ A JSON array.
+
+
+
+
+ A JSON constructor.
+
+
+
+
+ A JSON object property.
+
+
+
+
+ A comment.
+
+
+
+
+ An integer value.
+
+
+
+
+ A float value.
+
+
+
+
+ A string value.
+
+
+
+
+ A boolean value.
+
+
+
+
+ A null value.
+
+
+
+
+ An undefined value.
+
+
+
+
+ A date value.
+
+
+
+
+ A raw JSON value.
+
+
+
+
+ A collection of bytes value.
+
+
+
+
+ A Guid value.
+
+
+
+
+ A Uri value.
+
+
+
+
+ A TimeSpan value.
+
+
+
+
+ Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
+
+
+
+
+ Gets the at the writer's current position.
+
+
+
+
+ Gets the token being written.
+
+ The token being written.
+
+
+
+ Initializes a new instance of the class writing to the given .
+
+ The container being written to.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Flushes whatever is in the buffer to the underlying .
+
+
+
+
+ Closes this writer.
+ If is set to true, the JSON is auto-completed.
+
+
+ Setting to true has no additional effect, since the underlying is a type that cannot be closed.
+
+
+
+
+ Writes the beginning of a JSON object.
+
+
+
+
+ Writes the beginning of a JSON array.
+
+
+
+
+ Writes the start of a constructor with the given name.
+
+ The name of the constructor.
+
+
+
+ Writes the end.
+
+ The token.
+
+
+
+ Writes the property name of a name/value pair on a JSON object.
+
+ The name of the property.
+
+
+
+ Writes a value.
+ An error will be raised if the value cannot be written as a single JSON token.
+
+ The value to write.
+
+
+
+ Writes a null value.
+
+
+
+
+ Writes an undefined value.
+
+
+
+
+ Writes raw JSON.
+
+ The raw JSON to write.
+
+
+
+ Writes a comment /*...*/ containing the specified text.
+
+ Text to place inside the comment.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a [] value.
+
+ The [] value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Writes a value.
+
+ The value to write.
+
+
+
+ Represents a value in JSON (string, integer, date, etc).
+
+
+
+
+ Writes this token to a asynchronously.
+
+ A into which this method will write.
+ The token to monitor for cancellation requests.
+ A collection of which will be used when writing the token.
+ A that represents the asynchronous write operation.
+
+
+
+ Initializes a new instance of the class from another object.
+
+ A object to copy from.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Initializes a new instance of the class with the given value.
+
+ The value.
+
+
+
+ Gets a value indicating whether this token has child tokens.
+
+
+ true if this token has child values; otherwise, false.
+
+
+
+
+ Creates a comment with the given value.
+
+ The value.
+ A comment with the given value.
+
+
+
+ Creates a string with the given value.
+
+ The value.
+ A string with the given value.
+
+
+
+ Creates a null value.
+
+ A null value.
+
+
+
+ Creates a undefined value.
+
+ A undefined value.
+
+
+
+ Gets the node type for this .
+
+ The type.
+
+
+
+ Gets or sets the underlying token value.
+
+ The underlying token value.
+
+
+
+ Writes this token to a .
+
+ A into which this method will write.
+ A collection of s which will be used when writing the token.
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+
+ true if the current object is equal to the parameter; otherwise, false.
+
+ An object to compare with this object.
+
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+
+ true if the specified is equal to the current ; otherwise, false.
+
+
+
+
+ Serves as a hash function for a particular type.
+
+
+ A hash code for the current .
+
+
+
+
+ Returns a that represents this instance.
+
+
+ ToString() returns a non-JSON string value for tokens with a type of .
+ If you want the JSON for all token types then you should use .
+
+
+ A that represents this instance.
+
+
+
+
+ Returns a that represents this instance.
+
+ The format.
+
+ A that represents this instance.
+
+
+
+
+ Returns a that represents this instance.
+
+ The format provider.
+
+ A that represents this instance.
+
+
+
+
+ Returns a that represents this instance.
+
+ The format.
+ The format provider.
+
+ A that represents this instance.
+
+
+
+
+ Returns the responsible for binding operations performed on this object.
+
+ The expression tree representation of the runtime value.
+
+ The to bind this object.
+
+
+
+
+ Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
+
+ An object to compare with this instance.
+
+ A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings:
+ Value
+ Meaning
+ Less than zero
+ This instance is less than .
+ Zero
+ This instance is equal to .
+ Greater than zero
+ This instance is greater than .
+
+
+ is not of the same type as this instance.
+
+
+
+
+ Specifies how line information is handled when loading JSON.
+
+
+
+
+ Ignore line information.
+
+
+
+
+ Load line information.
+
+
+
+
+ Specifies how JSON arrays are merged together.
+
+
+
+ Concatenate arrays.
+
+
+ Union arrays, skipping items that already exist.
+
+
+ Replace all array items.
+
+
+ Merge array items together, matched by index.
+
+
+
+ Specifies how null value properties are merged.
+
+
+
+
+ The content's null value properties will be ignored during merging.
+
+
+
+
+ The content's null value properties will be merged.
+
+
+
+
+ Specifies the member serialization options for the .
+
+
+
+
+ All public members are serialized by default. Members can be excluded using or .
+ This is the default member serialization mode.
+
+
+
+
+ Only members marked with or are serialized.
+ This member serialization mode can also be set by marking the class with .
+
+
+
+
+ All public and private fields are serialized. Members can be excluded using or .
+ This member serialization mode can also be set by marking the class with
+ and setting IgnoreSerializableAttribute on to false.
+
+
+
+
+ Specifies metadata property handling options for the .
+
+
+
+
+ Read metadata properties located at the start of a JSON object.
+
+
+
+
+ Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance.
+
+
+
+
+ Do not try to read metadata properties.
+
+
+
+
+ Specifies missing member handling options for the .
+
+
+
+
+ Ignore a missing member and do not attempt to deserialize it.
+
+
+
+
+ Throw a when a missing member is encountered during deserialization.
+
+
+
+
+ Specifies null value handling options for the .
+
+
+
+
+
+
+
+
+ Include null values when serializing and deserializing objects.
+
+
+
+
+ Ignore null values when serializing and deserializing objects.
+
+
+
+
+ Specifies how object creation is handled by the .
+
+
+
+
+ Reuse existing objects, create new objects when needed.
+
+
+
+
+ Only reuse existing objects.
+
+
+
+
+ Always create new objects.
+
+
+
+
+ Specifies reference handling options for the .
+ Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement .
+
+
+
+
+
+
+
+ Do not preserve references when serializing types.
+
+
+
+
+ Preserve references when serializing into a JSON object structure.
+
+
+
+
+ Preserve references when serializing into a JSON array structure.
+
+
+
+
+ Preserve references when serializing.
+
+
+
+
+ Specifies reference loop handling options for the .
+
+
+
+
+ Throw a when a loop is encountered.
+
+
+
+
+ Ignore loop references and do not serialize.
+
+
+
+
+ Serialize loop references.
+
+
+
+
+ Indicating whether a property is required.
+
+
+
+
+ The property is not required. The default state.
+
+
+
+
+ The property must be defined in JSON but can be a null value.
+
+
+
+
+ The property must be defined in JSON and cannot be a null value.
+
+
+
+
+ The property is not required but it cannot be a null value.
+
+
+
+
+
+ Contains the JSON schema extension methods.
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+
+ Determines whether the is valid.
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+ The source to test.
+ The schema to test with.
+
+ true if the specified is valid; otherwise, false.
+
+
+
+
+
+ Determines whether the is valid.
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+ The source to test.
+ The schema to test with.
+ When this method returns, contains any error messages generated while validating.
+
+ true if the specified is valid; otherwise, false.
+
+
+
+
+
+ Validates the specified .
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+ The source to test.
+ The schema to test with.
+
+
+
+
+ Validates the specified .
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+ The source to test.
+ The schema to test with.
+ The validation event handler.
+
+
+
+
+ An in-memory representation of a JSON Schema.
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets or sets the id.
+
+
+
+
+ Gets or sets the title.
+
+
+
+
+ Gets or sets whether the object is required.
+
+
+
+
+ Gets or sets whether the object is read-only.
+
+
+
+
+ Gets or sets whether the object is visible to users.
+
+
+
+
+ Gets or sets whether the object is transient.
+
+
+
+
+ Gets or sets the description of the object.
+
+
+
+
+ Gets or sets the types of values allowed by the object.
+
+ The type.
+
+
+
+ Gets or sets the pattern.
+
+ The pattern.
+
+
+
+ Gets or sets the minimum length.
+
+ The minimum length.
+
+
+
+ Gets or sets the maximum length.
+
+ The maximum length.
+
+
+
+ Gets or sets a number that the value should be divisible by.
+
+ A number that the value should be divisible by.
+
+
+
+ Gets or sets the minimum.
+
+ The minimum.
+
+
+
+ Gets or sets the maximum.
+
+ The maximum.
+
+
+
+ Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute ().
+
+ A flag indicating whether the value can not equal the number defined by the minimum attribute ().
+
+
+
+ Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute ().
+
+ A flag indicating whether the value can not equal the number defined by the maximum attribute ().
+
+
+
+ Gets or sets the minimum number of items.
+
+ The minimum number of items.
+
+
+
+ Gets or sets the maximum number of items.
+
+ The maximum number of items.
+
+
+
+ Gets or sets the of items.
+
+ The of items.
+
+
+
+ Gets or sets a value indicating whether items in an array are validated using the instance at their array position from .
+
+
+ true if items are validated using their array position; otherwise, false.
+
+
+
+
+ Gets or sets the of additional items.
+
+ The of additional items.
+
+
+
+ Gets or sets a value indicating whether additional items are allowed.
+
+
+ true if additional items are allowed; otherwise, false.
+
+
+
+
+ Gets or sets whether the array items must be unique.
+
+
+
+
+ Gets or sets the of properties.
+
+ The of properties.
+
+
+
+ Gets or sets the of additional properties.
+
+ The of additional properties.
+
+
+
+ Gets or sets the pattern properties.
+
+ The pattern properties.
+
+
+
+ Gets or sets a value indicating whether additional properties are allowed.
+
+
+ true if additional properties are allowed; otherwise, false.
+
+
+
+
+ Gets or sets the required property if this property is present.
+
+ The required property if this property is present.
+
+
+
+ Gets or sets the a collection of valid enum values allowed.
+
+ A collection of valid enum values allowed.
+
+
+
+ Gets or sets disallowed types.
+
+ The disallowed types.
+
+
+
+ Gets or sets the default value.
+
+ The default value.
+
+
+
+ Gets or sets the collection of that this schema extends.
+
+ The collection of that this schema extends.
+
+
+
+ Gets or sets the format.
+
+ The format.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Reads a from the specified .
+
+ The containing the JSON Schema to read.
+ The object representing the JSON Schema.
+
+
+
+ Reads a from the specified .
+
+ The containing the JSON Schema to read.
+ The to use when resolving schema references.
+ The object representing the JSON Schema.
+
+
+
+ Load a from a string that contains JSON Schema.
+
+ A that contains JSON Schema.
+ A populated from the string that contains JSON Schema.
+
+
+
+ Load a from a string that contains JSON Schema using the specified .
+
+ A that contains JSON Schema.
+ The resolver.
+ A populated from the string that contains JSON Schema.
+
+
+
+ Writes this schema to a .
+
+ A into which this method will write.
+
+
+
+ Writes this schema to a using the specified .
+
+ A into which this method will write.
+ The resolver used.
+
+
+
+ Returns a that represents the current .
+
+
+ A that represents the current .
+
+
+
+
+
+ Returns detailed information about the schema exception.
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets the line number indicating where the error occurred.
+
+ The line number indicating where the error occurred.
+
+
+
+ Gets the line position indicating where the error occurred.
+
+ The line position indicating where the error occurred.
+
+
+
+ Gets the path to the JSON where the error occurred.
+
+ The path to the JSON where the error occurred.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The error message that explains the reason for the exception.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or null if no inner exception is specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+
+ Generates a from a specified .
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets or sets how undefined schemas are handled by the serializer.
+
+
+
+
+ Gets or sets the contract resolver.
+
+ The contract resolver.
+
+
+
+ Generate a from the specified type.
+
+ The type to generate a from.
+ A generated from the specified type.
+
+
+
+ Generate a from the specified type.
+
+ The type to generate a from.
+ The used to resolve schema references.
+ A generated from the specified type.
+
+
+
+ Generate a from the specified type.
+
+ The type to generate a from.
+ Specify whether the generated root will be nullable.
+ A generated from the specified type.
+
+
+
+ Generate a from the specified type.
+
+ The type to generate a from.
+ The used to resolve schema references.
+ Specify whether the generated root will be nullable.
+ A generated from the specified type.
+
+
+
+
+ Resolves from an id.
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets or sets the loaded schemas.
+
+ The loaded schemas.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a for the specified reference.
+
+ The id.
+ A for the specified reference.
+
+
+
+
+ The value types allowed by the .
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ No type specified.
+
+
+
+
+ String type.
+
+
+
+
+ Float type.
+
+
+
+
+ Integer type.
+
+
+
+
+ Boolean type.
+
+
+
+
+ Object type.
+
+
+
+
+ Array type.
+
+
+
+
+ Null type.
+
+
+
+
+ Any type.
+
+
+
+
+
+ Specifies undefined schema Id handling options for the .
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Do not infer a schema Id.
+
+
+
+
+ Use the .NET type name as the schema Id.
+
+
+
+
+ Use the assembly qualified .NET type name as the schema Id.
+
+
+
+
+
+ Returns detailed information related to the .
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ Gets the associated with the validation error.
+
+ The JsonSchemaException associated with the validation error.
+
+
+
+ Gets the path of the JSON location where the validation error occurred.
+
+ The path of the JSON location where the validation error occurred.
+
+
+
+ Gets the text description corresponding to the validation error.
+
+ The text description.
+
+
+
+
+ Represents the callback method that will handle JSON schema validation events and the .
+
+
+ JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details.
+
+
+
+
+
+ A camel case naming strategy.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a .
+
+
+ A flag indicating whether extension data names should be processed.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Resolves member mappings for a type, camel casing property names.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Resolves the contract for a given type.
+
+ The type to resolve a contract for.
+ The contract for a given type.
+
+
+
+ Used by to resolve a for a given .
+
+
+
+
+ Gets a value indicating whether members are being get and set using dynamic code generation.
+ This value is determined by the runtime permissions available.
+
+
+ true if using dynamic code generation; otherwise, false.
+
+
+
+
+ Gets or sets the default members search flags.
+
+ The default members search flags.
+
+
+
+ Gets or sets a value indicating whether compiler generated members should be serialized.
+
+
+ true if serialized compiler generated members; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types.
+
+
+ true if the interface will be ignored when serializing and deserializing types; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types.
+
+
+ true if the attribute will be ignored when serializing and deserializing types; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types.
+
+
+ true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types.
+
+
+ true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false.
+
+
+
+
+ Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized.
+
+ The naming strategy used to resolve how property names and dictionary keys are serialized.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Resolves the contract for a given type.
+
+ The type to resolve a contract for.
+ The contract for a given type.
+
+
+
+ Gets the serializable members for the type.
+
+ The type to get serializable members for.
+ The serializable members for the type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates the constructor parameters.
+
+ The constructor to create properties for.
+ The type's member properties.
+ Properties for the given .
+
+
+
+ Creates a for the given .
+
+ The matching member property.
+ The constructor parameter.
+ A created for the given .
+
+
+
+ Resolves the default for the contract.
+
+ Type of the object.
+ The contract's default .
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates a for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Determines which contract type is created for the given type.
+
+ Type of the object.
+ A for the given type.
+
+
+
+ Creates properties for the given .
+
+ The type to create properties for.
+ /// The member serialization mode for the type.
+ Properties for the given .
+
+
+
+ Creates the used by the serializer to get and set values from a member.
+
+ The member.
+ The used by the serializer to get and set values from a member.
+
+
+
+ Creates a for the given .
+
+ The member's parent .
+ The member to create a for.
+ A created for the given .
+
+
+
+ Resolves the name of the property.
+
+ Name of the property.
+ Resolved name of the property.
+
+
+
+ Resolves the name of the extension data. By default no changes are made to extension data names.
+
+ Name of the extension data.
+ Resolved name of the extension data.
+
+
+
+ Resolves the key of the dictionary. By default is used to resolve dictionary keys.
+
+ Key of the dictionary.
+ Resolved key of the dictionary.
+
+
+
+ Gets the resolved name of the property.
+
+ Name of the property.
+ Name of the property.
+
+
+
+ The default naming strategy. Property names and dictionary keys are unchanged.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ The default serialization binder used when resolving and loading classes from type names.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ When overridden in a derived class, controls the binding of a serialized object to a type.
+
+ Specifies the name of the serialized object.
+ Specifies the name of the serialized object.
+
+ The type of the object the formatter creates a new instance of.
+
+
+
+
+ When overridden in a derived class, controls the binding of a serialized object to a type.
+
+ The type of the object the formatter creates a new instance of.
+ Specifies the name of the serialized object.
+ Specifies the name of the serialized object.
+
+
+
+ Represents a trace writer that writes to the application's instances.
+
+
+
+
+ Gets the that will be used to filter the trace messages passed to the writer.
+ For example a filter level of will exclude messages and include ,
+ and messages.
+
+
+ The that will be used to filter the trace messages passed to the writer.
+
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+ The at which to write this trace.
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Get and set values for a using dynamic methods.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The member info.
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ Provides information surrounding an error.
+
+
+
+
+ Gets the error.
+
+ The error.
+
+
+
+ Gets the original object that caused the error.
+
+ The original object that caused the error.
+
+
+
+ Gets the member that caused the error.
+
+ The member that caused the error.
+
+
+
+ Gets the path of the JSON location where the error occurred.
+
+ The path of the JSON location where the error occurred.
+
+
+
+ Gets or sets a value indicating whether this is handled.
+
+ true if handled; otherwise, false.
+
+
+
+ Provides data for the Error event.
+
+
+
+
+ Gets the current object the error event is being raised against.
+
+ The current object the error event is being raised against.
+
+
+
+ Gets the error context.
+
+ The error context.
+
+
+
+ Initializes a new instance of the class.
+
+ The current object.
+ The error context.
+
+
+
+ Get and set values for a using dynamic methods.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The member info.
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ Provides methods to get attributes.
+
+
+
+
+ Returns a collection of all of the attributes, or an empty collection if there are no attributes.
+
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ A collection of s, or an empty collection.
+
+
+
+ Returns a collection of attributes, identified by type, or an empty collection if there are no attributes.
+
+ The type of the attributes.
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ A collection of s, or an empty collection.
+
+
+
+ Used by to resolve a for a given .
+
+
+
+
+
+
+
+
+ Resolves the contract for a given type.
+
+ The type to resolve a contract for.
+ The contract for a given type.
+
+
+
+ Used to resolve references when serializing and deserializing JSON by the .
+
+
+
+
+ Resolves a reference to its object.
+
+ The serialization context.
+ The reference to resolve.
+ The object that was resolved from the reference.
+
+
+
+ Gets the reference for the specified object.
+
+ The serialization context.
+ The object to get a reference for.
+ The reference to the object.
+
+
+
+ Determines whether the specified object is referenced.
+
+ The serialization context.
+ The object to test for a reference.
+
+ true if the specified object is referenced; otherwise, false.
+
+
+
+
+ Adds a reference to the specified object.
+
+ The serialization context.
+ The reference.
+ The object to reference.
+
+
+
+ Allows users to control class loading and mandate what class to load.
+
+
+
+
+ When implemented, controls the binding of a serialized object to a type.
+
+ Specifies the name of the serialized object.
+ Specifies the name of the serialized object
+ The type of the object the formatter creates a new instance of.
+
+
+
+ When implemented, controls the binding of a serialized object to a type.
+
+ The type of the object the formatter creates a new instance of.
+ Specifies the name of the serialized object.
+ Specifies the name of the serialized object.
+
+
+
+ Represents a trace writer.
+
+
+
+
+ Gets the that will be used to filter the trace messages passed to the writer.
+ For example a filter level of will exclude messages and include ,
+ and messages.
+
+ The that will be used to filter the trace messages passed to the writer.
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+ The at which to write this trace.
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Provides methods to get and set values.
+
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets the of the collection items.
+
+ The of the collection items.
+
+
+
+ Gets a value indicating whether the collection type is a multidimensional array.
+
+ true if the collection type is a multidimensional array; otherwise, false.
+
+
+
+ Gets or sets the function used to create the object. When set this function will override .
+
+ The function used to create the object.
+
+
+
+ Gets a value indicating whether the creator has a parameter with the collection values.
+
+ true if the creator has a parameter with the collection values; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets or sets the default collection items .
+
+ The converter.
+
+
+
+ Gets or sets a value indicating whether the collection items preserve object references.
+
+ true if collection items preserve object references; otherwise, false.
+
+
+
+ Gets or sets the collection item reference loop handling.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the collection item type name handling.
+
+ The type name handling.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Handles serialization callback events.
+
+ The object that raised the callback event.
+ The streaming context.
+
+
+
+ Handles serialization error callback events.
+
+ The object that raised the callback event.
+ The streaming context.
+ The error context.
+
+
+
+ Sets extension data for an object during deserialization.
+
+ The object to set extension data on.
+ The extension data key.
+ The extension data value.
+
+
+
+ Gets extension data for an object during serialization.
+
+ The object to set extension data on.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets the underlying type for the contract.
+
+ The underlying type for the contract.
+
+
+
+ Gets or sets the type created during deserialization.
+
+ The type created during deserialization.
+
+
+
+ Gets or sets whether this type contract is serialized as a reference.
+
+ Whether this type contract is serialized as a reference.
+
+
+
+ Gets or sets the default for this contract.
+
+ The converter.
+
+
+
+ Gets the internally resolved for the contract's type.
+ This converter is used as a fallback converter when no other converter is resolved.
+ Setting will always override this converter.
+
+
+
+
+ Gets or sets all methods called immediately after deserialization of the object.
+
+ The methods called immediately after deserialization of the object.
+
+
+
+ Gets or sets all methods called during deserialization of the object.
+
+ The methods called during deserialization of the object.
+
+
+
+ Gets or sets all methods called after serialization of the object graph.
+
+ The methods called after serialization of the object graph.
+
+
+
+ Gets or sets all methods called before serialization of the object.
+
+ The methods called before serialization of the object.
+
+
+
+ Gets or sets all method called when an error is thrown during the serialization of the object.
+
+ The methods called when an error is thrown during the serialization of the object.
+
+
+
+ Gets or sets the default creator method used to create the object.
+
+ The default creator method used to create the object.
+
+
+
+ Gets or sets a value indicating whether the default creator is non-public.
+
+ true if the default object creator is non-public; otherwise, false.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets or sets the dictionary key resolver.
+
+ The dictionary key resolver.
+
+
+
+ Gets the of the dictionary keys.
+
+ The of the dictionary keys.
+
+
+
+ Gets the of the dictionary values.
+
+ The of the dictionary values.
+
+
+
+ Gets or sets the function used to create the object. When set this function will override .
+
+ The function used to create the object.
+
+
+
+ Gets a value indicating whether the creator has a parameter with the dictionary values.
+
+ true if the creator has a parameter with the dictionary values; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets the object's properties.
+
+ The object's properties.
+
+
+
+ Gets or sets the property name resolver.
+
+ The property name resolver.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets or sets the object constructor.
+
+ The object constructor.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Gets or sets the object member serialization.
+
+ The member object serialization.
+
+
+
+ Gets or sets the missing member handling used when deserializing this object.
+
+ The missing member handling.
+
+
+
+ Gets or sets a value that indicates whether the object's properties are required.
+
+
+ A value indicating whether the object's properties are required.
+
+
+
+
+ Gets or sets how the object's properties with null values are handled during serialization and deserialization.
+
+ How the object's properties with null values are handled during serialization and deserialization.
+
+
+
+ Gets the object's properties.
+
+ The object's properties.
+
+
+
+ Gets a collection of instances that define the parameters used with .
+
+
+
+
+ Gets or sets the function used to create the object. When set this function will override .
+ This function is called with a collection of arguments which are defined by the collection.
+
+ The function used to create the object.
+
+
+
+ Gets or sets the extension data setter.
+
+
+
+
+ Gets or sets the extension data getter.
+
+
+
+
+ Gets or sets the extension data value type.
+
+
+
+
+ Gets or sets the extension data name resolver.
+
+ The extension data name resolver.
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Maps a JSON property to a .NET member or constructor parameter.
+
+
+
+
+ Gets or sets the name of the property.
+
+ The name of the property.
+
+
+
+ Gets or sets the type that declared this property.
+
+ The type that declared this property.
+
+
+
+ Gets or sets the order of serialization of a member.
+
+ The numeric order of serialization.
+
+
+
+ Gets or sets the name of the underlying member or parameter.
+
+ The name of the underlying member or parameter.
+
+
+
+ Gets the that will get and set the during serialization.
+
+ The that will get and set the during serialization.
+
+
+
+ Gets or sets the for this property.
+
+ The for this property.
+
+
+
+ Gets or sets the type of the property.
+
+ The type of the property.
+
+
+
+ Gets or sets the for the property.
+ If set this converter takes precedence over the contract converter for the property type.
+
+ The converter.
+
+
+
+ Gets or sets the member converter.
+
+ The member converter.
+
+
+
+ Gets or sets a value indicating whether this is ignored.
+
+ true if ignored; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether this is readable.
+
+ true if readable; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether this is writable.
+
+ true if writable; otherwise, false.
+
+
+
+ Gets or sets a value indicating whether this has a member attribute.
+
+ true if has a member attribute; otherwise, false.
+
+
+
+ Gets the default value.
+
+ The default value.
+
+
+
+ Gets or sets a value indicating whether this is required.
+
+ A value indicating whether this is required.
+
+
+
+ Gets a value indicating whether has a value specified.
+
+
+
+
+ Gets or sets a value indicating whether this property preserves object references.
+
+
+ true if this instance is reference; otherwise, false.
+
+
+
+
+ Gets or sets the property null value handling.
+
+ The null value handling.
+
+
+
+ Gets or sets the property default value handling.
+
+ The default value handling.
+
+
+
+ Gets or sets the property reference loop handling.
+
+ The reference loop handling.
+
+
+
+ Gets or sets the property object creation handling.
+
+ The object creation handling.
+
+
+
+ Gets or sets or sets the type name handling.
+
+ The type name handling.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be serialized.
+
+ A predicate used to determine whether the property should be serialized.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be deserialized.
+
+ A predicate used to determine whether the property should be deserialized.
+
+
+
+ Gets or sets a predicate used to determine whether the property should be serialized.
+
+ A predicate used to determine whether the property should be serialized.
+
+
+
+ Gets or sets an action used to set whether the property has been deserialized.
+
+ An action used to set whether the property has been deserialized.
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Gets or sets the converter used when serializing the property's collection items.
+
+ The collection's items converter.
+
+
+
+ Gets or sets whether this property's collection items are serialized as a reference.
+
+ Whether this property's collection items are serialized as a reference.
+
+
+
+ Gets or sets the type name handling used when serializing the property's collection items.
+
+ The collection's items type name handling.
+
+
+
+ Gets or sets the reference loop handling used when serializing the property's collection items.
+
+ The collection's items reference loop handling.
+
+
+
+ A collection of objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type.
+
+
+
+ When implemented in a derived class, extracts the key from the specified element.
+
+ The element from which to extract the key.
+ The key for the specified element.
+
+
+
+ Adds a object.
+
+ The property to add to the collection.
+
+
+
+ Gets the closest matching object.
+ First attempts to get an exact case match of and then
+ a case insensitive match.
+
+ Name of the property.
+ A matching property if found.
+
+
+
+ Gets a property by property name.
+
+ The name of the property to get.
+ Type property name string comparison.
+ A matching property if found.
+
+
+
+ Contract details for a used by the .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The underlying type for the contract.
+
+
+
+ Lookup and create an instance of the type described by the argument.
+
+ The type to create.
+ Optional arguments to pass to an initializing constructor of the JsonConverter.
+ If null, the default constructor is used.
+
+
+
+ A kebab case naming strategy.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a .
+
+
+ A flag indicating whether extension data names should be processed.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Represents a trace writer that writes to memory. When the trace message limit is
+ reached then old trace messages will be removed as new messages are added.
+
+
+
+
+ Gets the that will be used to filter the trace messages passed to the writer.
+ For example a filter level of will exclude messages and include ,
+ and messages.
+
+
+ The that will be used to filter the trace messages passed to the writer.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Writes the specified trace level, message and optional exception.
+
+ The at which to write this trace.
+ The trace message.
+ The trace exception. This parameter is optional.
+
+
+
+ Returns an enumeration of the most recent trace messages.
+
+ An enumeration of the most recent trace messages.
+
+
+
+ Returns a of the most recent trace messages.
+
+
+ A of the most recent trace messages.
+
+
+
+
+ A base class for resolving how property names and dictionary keys are serialized.
+
+
+
+
+ A flag indicating whether dictionary keys should be processed.
+ Defaults to false.
+
+
+
+
+ A flag indicating whether extension data names should be processed.
+ Defaults to false.
+
+
+
+
+ A flag indicating whether explicitly specified property names,
+ e.g. a property name customized with a , should be processed.
+ Defaults to false.
+
+
+
+
+ Gets the serialized name for a given property name.
+
+ The initial property name.
+ A flag indicating whether the property has had a name explicitly specified.
+ The serialized property name.
+
+
+
+ Gets the serialized name for a given extension data name.
+
+ The initial extension data name.
+ The serialized extension data name.
+
+
+
+ Gets the serialized key for a given dictionary key.
+
+ The initial dictionary key.
+ The serialized dictionary key.
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Hash code calculation
+
+
+
+
+
+ Object equality implementation
+
+
+
+
+
+
+ Compare to another NamingStrategy
+
+
+
+
+
+
+ Represents a method that constructs an object.
+
+ The object type to create.
+
+
+
+ When applied to a method, specifies that the method is called when an error occurs serializing an object.
+
+
+
+
+ Provides methods to get attributes from a , , or .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The instance to get attributes for. This parameter should be a , , or .
+
+
+
+ Returns a collection of all of the attributes, or an empty collection if there are no attributes.
+
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ A collection of s, or an empty collection.
+
+
+
+ Returns a collection of attributes, identified by type, or an empty collection if there are no attributes.
+
+ The type of the attributes.
+ When true, look up the hierarchy chain for the inherited custom attribute.
+ A collection of s, or an empty collection.
+
+
+
+ Get and set values for a using reflection.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The member info.
+
+
+
+ Sets the value.
+
+ The target to set the value on.
+ The value to set on the target.
+
+
+
+ Gets the value.
+
+ The target to get the value from.
+ The value.
+
+
+
+ A snake case naming strategy.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A flag indicating whether dictionary keys should be processed.
+
+
+ A flag indicating whether explicitly specified property names should be processed,
+ e.g. a property name customized with a .
+
+
+ A flag indicating whether extension data names should be processed.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Resolves the specified property name.
+
+ The property name to resolve.
+ The resolved property name.
+
+
+
+ Specifies how strings are escaped when writing JSON text.
+
+
+
+
+ Only control characters (e.g. newline) are escaped.
+
+
+
+
+ All non-ASCII and control characters (e.g. newline) are escaped.
+
+
+
+
+ HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped.
+
+
+
+
+ Indicates the method that will be used during deserialization for locating and loading assemblies.
+
+
+
+
+ In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly.
+
+
+
+
+ In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly.
+
+
+
+
+ Specifies type name handling options for the .
+
+
+ should be used with caution when your application deserializes JSON from an external source.
+ Incoming types should be validated with a custom
+ when deserializing with a value other than .
+
+
+
+
+ Do not include the .NET type name when serializing types.
+
+
+
+
+ Include the .NET type name when serializing into a JSON object structure.
+
+
+
+
+ Include the .NET type name when serializing into a JSON array structure.
+
+
+
+
+ Always include the .NET type name when serializing.
+
+
+
+
+ Include the .NET type name when the type of the object being serialized is not the same as its declared type.
+ Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON
+ you must specify a root type object with
+ or .
+
+
+
+
+ Determines whether the collection is null or empty.
+
+ The collection.
+
+ true if the collection is null or empty; otherwise, false.
+
+
+
+
+ Adds the elements of the specified collection to the specified generic .
+
+ The list to add to.
+ The collection of elements to add.
+
+
+
+ Converts the value to the specified type. If the value is unable to be converted, the
+ value is checked whether it assignable to the specified type.
+
+ The value to convert.
+ The culture to use when converting.
+ The type to convert or cast the value to.
+
+ The converted type. If conversion was unsuccessful, the initial value
+ is returned if assignable to the target type.
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic that returns a result
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic, but uses one of the arguments for
+ the result.
+
+
+
+
+ Helper method for generating a MetaObject which calls a
+ specific method on Dynamic, but uses one of the arguments for
+ the result.
+
+
+
+
+ Returns a Restrictions object which includes our current restrictions merged
+ with a restriction limiting our type
+
+
+
+
+ Helper class for serializing immutable collections.
+ Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed
+ https://github.com/JamesNK/Newtonsoft.Json/issues/652
+
+
+
+
+ Gets the type of the typed collection's items.
+
+ The type.
+ The type of the typed collection's items.
+
+
+
+ Gets the member's underlying type.
+
+ The member.
+ The underlying type of the member.
+
+
+
+ Determines whether the property is an indexed property.
+
+ The property.
+
+ true if the property is an indexed property; otherwise, false.
+
+
+
+
+ Gets the member's value on the object.
+
+ The member.
+ The target object.
+ The member's value on the object.
+
+
+
+ Sets the member's value on the target object.
+
+ The member.
+ The target.
+ The value.
+
+
+
+ Determines whether the specified MemberInfo can be read.
+
+ The MemberInfo to determine whether can be read.
+ /// if set to true then allow the member to be gotten non-publicly.
+
+ true if the specified MemberInfo can be read; otherwise, false.
+
+
+
+
+ Determines whether the specified MemberInfo can be set.
+
+ The MemberInfo to determine whether can be set.
+ if set to true then allow the member to be set non-publicly.
+ if set to true then allow the member to be set if read-only.
+
+ true if the specified MemberInfo can be set; otherwise, false.
+
+
+
+
+ Builds a string. Unlike this class lets you reuse its internal buffer.
+
+
+
+
+ Determines whether the string is all white space. Empty string will return false.
+
+ The string to test whether it is all white space.
+
+ true if the string is all white space; otherwise, false.
+
+
+
+
+ Specifies the state of the .
+
+
+
+
+ An exception has been thrown, which has left the in an invalid state.
+ You may call the method to put the in the Closed state.
+ Any other method calls result in an being thrown.
+
+
+
+
+ The method has been called.
+
+
+
+
+ An object is being written.
+
+
+
+
+ An array is being written.
+
+
+
+
+ A constructor is being written.
+
+
+
+
+ A property is being written.
+
+
+
+
+ A write method has not been called.
+
+
+
+ Specifies that an output will not be null even if the corresponding type allows it.
+
+
+ Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it.
+
+
+ Initializes the attribute with the specified return value condition.
+
+ The return value condition. If the method returns this value, the associated parameter will not be null.
+
+
+
+ Gets the return value condition.
+
+
+ Specifies that an output may be null even if the corresponding type disallows it.
+
+
+ Specifies that null is allowed as an input even if the corresponding type disallows it.
+
+
+
+ Specifies that the method will not return if the associated Boolean parameter is passed the specified value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to
+ the associated parameter matches this value.
+
+
+
+ Gets the condition parameter value.
+
+
+
diff --git a/bin/SixLabors.Fonts.dll b/bin/SixLabors.Fonts.dll
new file mode 100644
index 0000000..65d5b77
Binary files /dev/null and b/bin/SixLabors.Fonts.dll differ
diff --git a/bin/SixLabors.Fonts.xml b/bin/SixLabors.Fonts.xml
new file mode 100644
index 0000000..4dd735e
--- /dev/null
+++ b/bin/SixLabors.Fonts.xml
@@ -0,0 +1,11499 @@
+
+
+
+ SixLabors.Fonts
+
+
+
+
+ A helper type for avoiding allocations while building arrays.
+
+ The type of item contained in the array.
+
+
+
+ Initializes a new instance of the struct.
+
+ The intitial capacity of the array.
+
+
+
+ Gets or sets the number of items in the array.
+
+
+
+
+ Returns a reference to specified element of the array.
+
+ The index of the element to return.
+ The .
+
+ Thrown when index less than 0 or index greater than or equal to .
+
+
+
+
+ Adds the given item to the array.
+
+ The item to add.
+
+
+
+ Appends a given number of empty items to the array returning
+ the items as a slice.
+
+ The number of items in the slice.
+ Whether to clear the new slice, Defaults to .
+ The .
+
+
+
+ Appends the slice to the array copying the data across.
+
+ The array slice.
+ The .
+
+
+
+ Clears the array.
+ Allocated memory is left intact for future usage.
+
+
+
+
+ Returns the current state of the array as a slice.
+
+ The .
+
+
+
+ Returns the current state of the array as a slice.
+
+ The number of items in the slice.
+ The .
+
+
+
+ Returns the current state of the array as a slice.
+
+ The index at which to begin the slice.
+ The number of items in the slice.
+ The .
+
+
+
+ ArraySlice represents a contiguous region of arbitrary memory similar
+ to and though constrained
+ to arrays.
+ Unlike , it is not a byref-like type.
+
+ The type of item contained in the slice.
+
+
+
+ Initializes a new instance of the struct.
+
+ The underlying data buffer.
+
+
+
+ Initializes a new instance of the struct.
+
+ The underlying data buffer.
+ The offset position in the underlying buffer this slice was created from.
+ The number of items in the slice.
+
+
+
+ Gets an empty
+
+
+
+
+ Gets the offset position in the underlying buffer this slice was created from.
+
+
+
+
+ Gets the number of items in the slice.
+
+
+
+
+ Gets a representing this slice.
+
+
+
+
+ Returns a reference to specified element of the slice.
+
+ The index of the element to return.
+ The .
+
+ Thrown when index less than 0 or index greater than or equal to .
+
+
+
+
+ Defines an implicit conversion of a to a
+
+
+
+
+ Defines an implicit conversion of an array to a
+
+
+
+
+ Copies the contents of this slice into destination span. If the source
+ and destinations overlap, this method behaves as if the original values in
+ a temporary location before the destination is overwritten.
+
+ The slice to copy items into.
+
+ Thrown when the destination slice is shorter than the source Span.
+
+
+
+
+ Fills the contents of this slice with the given value.
+
+
+
+
+ Forms a slice out of the given slice, beginning at 'start', of given length
+
+ The index at which to begin this slice.
+ The desired length for the slice (exclusive).
+
+ Thrown when the specified or end index is not in range (<0 or >Length).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BinaryReader using big-endian encoding.
+
+
+
+
+ Buffer used for temporary storage before conversion into primitives
+
+
+
+
+ Initializes a new instance of the class.
+ Constructs a new binary reader with the given bit converter, reading
+ to the given stream, using the given encoding.
+
+ Stream to read data from
+ if set to true [leave open].
+
+
+
+ Gets the underlying stream of the EndianBinaryReader.
+
+
+
+
+ Seeks within the stream.
+
+ Offset to seek to.
+ Origin of seek operation. If SeekOrigin.Begin, the offset will be set to the start of stream position.
+
+
+
+ Reads a single byte from the stream.
+
+ The byte read
+
+
+
+ Reads a single signed byte from the stream.
+
+ The byte read
+
+
+
+ Reads a 16-bit signed integer from the stream, using the bit converter
+ for this reader. 2 bytes are read.
+
+ The 16-bit integer read
+
+
+
+ Reads a fixed 32-bit value from the stream.
+ 4 bytes are read.
+
+ The 32-bit value read.
+
+
+
+ Reads a 32-bit signed integer from the stream, using the bit converter
+ for this reader. 4 bytes are read.
+
+ The 32-bit integer read
+
+
+
+ Reads a 64-bit signed integer from the stream.
+ 8 bytes are read.
+
+ The 64-bit integer read.
+
+
+
+ Reads a 16-bit unsigned integer from the stream.
+ 2 bytes are read.
+
+ The 16-bit unsigned integer read.
+
+
+
+ Reads a 16-bit unsigned integer from the stream representing an offset position.
+ 2 bytes are read.
+
+ The 16-bit unsigned integer read.
+
+
+
+ Reads array of 16-bit unsigned integers from the stream.
+
+ The length.
+
+ The 16-bit unsigned integer read.
+
+
+
+
+ Reads array of 16-bit unsigned integers from the stream to the buffer.
+
+ The buffer to read to.
+
+
+
+ Reads array or 32-bit unsigned integers from the stream.
+
+ The length.
+
+ The 32-bit unsigned integer read.
+
+
+
+
+ Reads array of 16-bit unsigned integers from the stream.
+
+ The length.
+
+ The 16-bit signed integer read.
+
+
+
+
+ Reads an array of 16-bit signed integers from the stream to the buffer.
+
+ The buffer to read to.
+
+
+
+ Reads a 8-bit unsigned integer from the stream, using the bit converter
+ for this reader. 1 bytes are read.
+
+ The 8-bit unsigned integer read.
+
+
+
+ Reads a 24-bit unsigned integer from the stream, using the bit converter
+ for this reader. 3 bytes are read.
+
+ The 24-bit unsigned integer read.
+
+
+
+ Reads a 32-bit unsigned integer from the stream, using the bit converter
+ for this reader. 4 bytes are read.
+
+ The 32-bit unsigned integer read.
+
+
+
+ Reads a 32-bit unsigned integer from the stream representing an offset position.
+ 4 bytes are read.
+
+ The 32-bit unsigned integer read.
+
+
+
+ Reads the specified number of bytes, returning them in a new byte array.
+ If not enough bytes are available before the end of the stream, this
+ method will return what is available.
+
+ The number of bytes to read.
+ The bytes read.
+
+
+
+ Reads a string of a specific length, which specifies the number of bytes
+ to read from the stream. These bytes are then converted into a string with
+ the encoding for this reader.
+
+ The bytes to read.
+ The encoding.
+
+ The string read from the stream.
+
+
+
+
+ Reads the uint32 string.
+
+ a 4 character long UTF8 encoded string.
+
+
+
+ Reads an offset consuming the given nuber of bytes.
+
+ The offset size in bytes.
+ The 32-bit signed integer representing the offset.
+ Size is not in range.
+
+
+
+ Reads the given number of bytes from the stream, throwing an exception
+ if they can't all be read.
+
+ Buffer to read into.
+ Number of bytes to read.
+
+
+
+ An disposable buffer that is backed by an array pool.
+
+ The type of buffer element.
+
+
+
+ A custom that can wrap of instances
+ and cast them to be for any arbitrary unmanaged value type.
+
+ The value type to use when casting the wrapped instance.
+
+
+
+ The wrapped of instance.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The of instance to wrap.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Options for enabling color font support during layout and rendering.
+
+
+
+
+ Don't try rendering color glyphs at all
+
+
+
+
+ Render using glyphs accessed via Microsoft's COLR/CPAL table extensions to OpenType
+
+
+
+
+ Extension methods for the type.
+
+
+
+
+ Gets a string from the provided buffer data.
+
+ The encoding.
+ The buffer.
+ The string.
+
+
+
+ Base class for exceptions thrown by this library.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error.
+
+
+
+ Exception for detailing missing font families.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name of the missing font family.
+
+
+
+ Initializes a new instance of the class.
+
+ The name of the missing font family.
+
+ The collection of directories that were searched for the font family.
+ Pass an empty collection if font families were not searched in directories.
+
+
+
+
+ Gets the name of the font family that was not found.
+
+
+
+
+ Gets the collection of directories that were unsuccessfully searched for the font family.
+
+
+ If the exception did not originate from the then this property will be empty.
+
+
+
+
+ Helper methods to throw exceptions
+
+
+
+
+ Throws an .
+
+
+
+
+ Throws an .
+
+
+
+
+ Exception for detailing missing font families.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The code point for the glyph we where unable to find.
+
+
+
+ Exception font loading can throw if it encounters invalid data during font loading.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error.
+
+
+
+ Exception font loading can throw if it encounters invalid data during font loading.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error.
+ The table.
+
+
+
+ Gets the table where the error originated.
+
+
+
+
+ Exception font loading can throw if it finds a required table is missing during font loading.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error.
+ The table.
+
+
+
+ Gets the table where the error originated.
+
+
+
+
+
+ Represents a font face with metrics, which is a set of glyphs with a specific style (regular, italic, bold etc).
+
+ The font source is a filesystem path.
+
+
+
+
+
+
+
+ Gets the filesystem path to the font face source.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reads a from the specified stream.
+
+ The file path.
+ a .
+
+
+
+ Defines a particular format for text, including font face, size, and style attributes.
+ This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The font family.
+ The size of the font in PT units.
+
+
+
+ Initializes a new instance of the class.
+
+ The font family.
+ The size of the font in PT units.
+ The font style.
+
+
+
+ Initializes a new instance of the class.
+
+ The prototype.
+ The font style.
+
+
+
+ Initializes a new instance of the class.
+
+ The prototype.
+ The size of the font in PT units.
+ The font style.
+
+
+
+ Initializes a new instance of the class.
+
+ The prototype.
+ The size of the font in PT units.
+
+
+
+ Gets the family.
+
+
+
+
+ Gets the name.
+
+
+
+
+ Gets the size of the font in PT units.
+
+
+
+
+ Gets the font metrics.
+
+
+
+
+ Gets a value indicating whether this is bold.
+
+
+
+
+ Gets a value indicating whether this is italic.
+
+
+
+
+ Gets the requested style.
+
+
+
+
+ Gets the filesystem path to the font family source.
+
+
+ When this method returns, contains the filesystem path to the font family source,
+ if the path exists; otherwise, the default value for the type of the path parameter.
+ This parameter is passed uninitialized.
+
+
+ if the was created via a filesystem path; otherwise, .
+
+
+
+
+ Gets the glyphs for the given codepoint.
+
+ The code point of the character.
+
+ When this method returns, contains the glyphs for the given codepoint if the glyphs
+ are found; otherwise the default value. This parameter is passed uninitialized.
+
+
+ if the face contains glyphs for the specified codepoint; otherwise, .
+
+
+
+
+ Gets the glyphs for the given codepoint.
+
+ The code point of the character.
+ Options for enabling color font support during layout and rendering.
+
+ When this method returns, contains the glyphs for the given codepoint and color support if the glyphs
+ are found; otherwise the default value. This parameter is passed uninitialized.
+
+
+ if the face contains glyphs for the specified codepoint; otherwise, .
+
+
+
+
+ Gets the glyphs for the given codepoint.
+
+ The code point of the character.
+ The text attributes to apply to the glyphs.
+ Options for enabling color font support during layout and rendering.
+
+ When this method returns, contains the glyphs for the given codepoint, attributes, and color support if the glyphs
+ are found; otherwise the default value. This parameter is passed uninitialized.
+
+
+ if the face contains glyphs for the specified codepoint; otherwise, .
+
+
+
+
+ Gets the glyphs for the given codepoint.
+
+ The code point of the character.
+ The text attributes to apply to the glyphs.
+ The layout mode to apply to thte glyphs.
+ Options for enabling color font support during layout and rendering.
+
+ When this method returns, contains the glyphs for the given codepoint, attributes, and color support if the glyphs
+ are found; otherwise the default value. This parameter is passed uninitialized.
+
+
+ if the face contains glyphs for the specified codepoint; otherwise, .
+
+
+
+
+ Gets the glyphs for the given codepoint.
+
+ The code point of the character.
+ The text attributes to apply to the glyphs.
+ The text decorations to apply to the glyphs.
+ The layout mode to apply to thte glyphs.
+ Options for enabling color font support during layout and rendering.
+
+ When this method returns, contains the glyphs for the given codepoint, attributes, and color support if the glyphs
+ are found; otherwise the default value. This parameter is passed uninitialized.
+
+
+ if the face contains glyphs for the specified codepoint; otherwise, .
+
+
+
+
+ Gets the amount, in px units, the glyph should be offset if it is proceeded by
+ the glyph.
+
+ The previous glyph.
+ The current glyph.
+ The DPI (Dots Per Inch) to render/measure the kerning offset at.
+
+ When this method returns, contains the offset, in font units, that should be applied to the
+ glyph, if the offset is found; otherwise the default vector value.
+ This parameter is passed uninitialized.
+
+
+ if the face contains and offset for the glyph combination; otherwise, .
+
+
+
+
+ Represents a collection of font families.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The collection of directories used to search for font families.
+
+ Use this constructor instead of the parameterless constructor if the fonts added to that collection
+ are actually added after searching inside physical file system directories. The message of the
+ will include the searched directories.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension methods for .
+
+
+
+
+ Adds the fonts from the collection to this .
+
+ The font collection.
+ The containing the system fonts.
+
+
+
+ Adds the fonts from the collection to this .
+
+ The font collection.
+ The delegate that defines the conditions of to add into the font collection.
+ The containing the system fonts.
+
+
+
+ Provides basic descriptive metadata for the font.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name table.
+ The os2 table.
+ The head table.
+
+
+
+ Gets the style.
+
+
+
+
+ Gets the name of the font in the invariant culture.
+
+
+
+
+ Gets the name of the font family in the invariant culture.
+
+
+
+
+ Gets the font sub family in the invariant culture.
+
+
+
+
+ Gets the name of the font.
+
+ The culture to load metadata in.
+ The font name.
+
+
+
+ Gets the name of the font family.
+
+ The culture to load metadata in.
+ The font family name.
+
+
+
+ Gets the font sub family.
+
+ The culture to load metadata in.
+ The font sub family name.
+
+
+
+ Gets the name matching the given culture and id.
+ If is passed this method will return the first name matching the id.
+
+ The culture to load metadata in.
+ The name id to match.
+ The name.
+
+
+
+ Reads a from the specified stream.
+
+ The file path.
+ a .
+
+
+
+ Reads a from the specified stream.
+
+ The stream.
+ a .
+
+
+
+ Reads a from the specified stream.
+
+ The reader.
+
+ a .
+
+
+
+
+ Reads all the s from the file at the specified path (typically a .ttc file like simsun.ttc).
+
+ The file path.
+ a .
+
+
+
+ Reads all the s from the specified stream (typically a .ttc file like simsun.ttc).
+
+ The stream to read the font collection from.
+ a .
+
+
+
+ Defines a group of type faces having a similar basic design and certain
+ variations in styles.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The name.
+ The collection.
+ The culture the family was extracted against
+
+
+
+ Gets the name.
+
+
+
+
+ Gets the culture this instance was extracted against.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ if the current left is equal to the
+ parameter; otherwise, .
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ if the current left is unequal to the
+ parameter; otherwise, .
+
+
+
+
+ Create a new instance of the for the named font family with regular styling.
+
+ The size of the font in PT units.
+ The new .
+
+
+
+ Create a new instance of the for the named font family.
+
+ The size of the font in PT units.
+ The font style.
+ The new .
+
+
+
+ Gets the collection of that are currently available.
+
+ The .
+
+
+
+ Gets the collection of filesystem paths to the font family sources.
+
+
+ When this method returns, contains the filesystem paths to the font family sources,
+ if the path exists; otherwise, an empty value for the type of the paths parameter.
+ This parameter is passed uninitialized.
+
+
+ if the was created via filesystem paths; otherwise, .
+
+
+
+
+ Gets the specified font metrics matching the given font style.
+
+ The font style to use when searching for a match.
+
+ When this method returns, contains the metrics associated with the specified name,
+ if the name is found; otherwise, the default value for the type of the metrics parameter.
+ This parameter is passed uninitialized.
+
+
+ if the contains font metrics
+ with the specified name; otherwise, .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a font face with metrics, which is a set of glyphs with a specific style (regular, italic, bold etc).
+
+
+
+
+ Gets the basic description of the face.
+
+
+
+
+ Gets the number of font units per EM square for this face.
+
+
+
+
+ Gets the scale factor that is applied to all glyphs in this face.
+ Calculated as 72 * so that 1pt = 1px.
+
+
+
+
+ Gets the metrics specific to horizontal text.
+
+
+
+
+ Gets the metrics specific to vertical text.
+
+
+
+
+ Gets the recommended horizontal size in font design units for subscripts for this font.
+
+
+
+
+ Gets the recommended vertical size in font design units for subscripts for this font.
+
+
+
+
+ Gets the recommended horizontal offset in font design units for subscripts for this font.
+
+
+
+
+ Gets the recommended vertical offset in font design units for subscripts for this font.
+
+
+
+
+ Gets the recommended horizontal size in font design units for superscripts for this font.
+
+
+
+
+ Gets the recommended vertical size in font design units for superscripts for this font.
+
+
+
+
+ Gets the recommended horizontal offset in font design units for superscripts for this font.
+
+
+
+
+ Gets the recommended vertical offset in font design units for superscripts for this font.
+
+
+
+
+ Gets thickness of the strikeout stroke in font design units.
+
+
+
+
+ Gets the position of the top of the strikeout stroke relative to the baseline in font design units.
+
+
+
+
+ Gets the suggested distance of the top of the underline from the baseline (negative values indicate below baseline).
+
+
+
+
+ Gets the suggested values for the underline thickness. In general, the underline thickness should match the thickness of
+ the underscore character (U+005F LOW LINE), and should also match the strikeout thickness, which is specified in the OS/2 table.
+
+
+
+
+ Gets the italic angle in counter-clockwise degrees from the vertical. Zero for upright text, negative for text that leans to the right (forward).
+
+
+
+
+ Gets the specified glyph id matching the codepoint.
+
+ The codepoint.
+
+ When this method returns, contains the glyph id associated with the specified codepoint,
+ if the codepoint is found; otherwise, 0.
+ This parameter is passed uninitialized.
+
+
+ if the face contains a glyph for the specified codepoint; otherwise, .
+
+
+
+
+ Gets the specified glyph id matching the codepoint pair.
+
+ The codepoint.
+ The next codepoint. Can be null.
+
+ When this method returns, contains the glyph id associated with the specified codepoint,
+ if the codepoint is found; otherwise, 0.
+ This parameter is passed uninitialized.
+
+
+ When this method return, contains a value indicating whether the next codepoint should be skipped.
+
+
+ if the face contains a glyph for the specified codepoint; otherwise, .
+
+
+
+
+ Tries to get the glyph class for a given glyph id.
+ The font needs to have a GDEF table defined.
+
+ The glyph identifier.
+ The glyph class.
+ true, if the glyph class could be retrieved.
+
+
+
+ Tries to get the mark attachment class for a given glyph id.
+ The font needs to have a GDEF table defined.
+
+ The glyph identifier.
+ The mark attachment class.
+ true, if the mark attachment class could be retrieved.
+
+
+
+ Gets the glyph metrics for a given code point.
+
+ The Unicode code point to get the glyph for.
+ The text attributes applied to the glyph.
+ The text decorations applied to the glyph.
+ The layout mode applied to the glyph.
+ Options for enabling color font support during layout and rendering.
+
+ When this method returns, contains the metrics for the given codepoint and color support if the metrics
+ are found; otherwise the default value. This parameter is passed uninitialized.
+
+
+ if the face contains glyph metrics for the specified codepoint; otherwise, .
+
+
+
+
+ Gets the unicode codepoints for which a glyph exists in the font.
+
+ The .
+
+
+
+ Gets the glyph metrics for a given code point and glyph id.
+
+ The Unicode codepoint.
+
+ The previously matched or substituted glyph id for the codepoint in the face.
+ If this value equals 0 the default fallback metrics are returned.
+
+ The text attributes applied to the glyph.
+ The text decorations applied to the glyph.
+ The layout mode applied to the glyph.
+ Options for enabling color font support during layout and rendering.
+ The .
+
+
+
+ Tries to get the GSUB table.
+
+ The GSUB table.
+ true, if the glyph class could be retrieved.
+
+
+
+ Applies any available substitutions to the collection of glyphs.
+
+ The glyph substitution collection.
+
+
+
+ Gets the amount, in font units, the glyph should be offset if it is proceeded by
+ the glyph.
+
+ The previous glyph id.
+ The current glyph id.
+
+ When this method returns, contains the offset, in font units, that should be applied to the
+ glyph, if the offset is found; otherwise the default vector value.
+ This parameter is passed uninitialized.
+
+
+ if the face contains and offset for the glyph combination; otherwise, .
+
+
+
+
+ Applies any available positioning updates to the collection of glyphs.
+
+ The glyph positioning collection.
+
+
+
+ Stores a set of four single precision floating points that represent the location and size of a rectangle.
+
+
+
+
+ Represents a that has X, Y, Width, and Height values set to zero.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The horizontal position of the rectangle.
+ The vertical position of the rectangle.
+ The width of the rectangle.
+ The height of the rectangle.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The which specifies the rectangles point in a two-dimensional plane.
+
+
+ The which specifies the rectangles height and width.
+
+
+
+
+ Gets the x-coordinate of this .
+
+
+
+
+ Gets the y-coordinate of this .
+
+
+
+
+ Gets the width of this .
+
+
+
+
+ Gets the height of this .
+
+
+
+
+ Gets the coordinates of the upper-left corner of the rectangular region represented by this .
+
+
+
+
+ Gets the size of this .
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+
+
+
+ Gets the y-coordinate of the top edge of this .
+
+
+
+
+ Gets the x-coordinate of the right edge of this .
+
+
+
+
+ Gets the y-coordinate of the bottom edge of this .
+
+
+
+
+ Gets the x-coordinate of the left edge of this .
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Creates a new with the specified location and size.
+ The left coordinate of the rectangle.
+ The top coordinate of the rectangle.
+ The right coordinate of the rectangle.
+ The bottom coordinate of the rectangle.
+ The .
+
+
+
+ Returns the center point of the given .
+
+ The rectangle.
+ The .
+
+
+
+ Creates a rectangle that represents the intersection between and
+ . If there is no intersection, an empty rectangle is returned.
+
+ The first rectangle.
+ The second rectangle.
+ The .
+
+
+
+ Creates a new from the given
+ that is inflated by the specified amount.
+
+ The rectangle.
+ The amount to inflate the width by.
+ The amount to inflate the height by.
+ A new .
+
+
+
+ Creates a new by transforming the given rectangle by the given matrix.
+
+ The source rectangle.
+ The transformation matrix.
+ A transformed .
+
+
+
+ Creates a rectangle that represents the union between and .
+
+ The first rectangle.
+ The second rectangle.
+ The .
+
+
+
+ Deconstructs this rectangle into four floats.
+
+ The out value for X.
+ The out value for Y.
+ The out value for the width.
+ The out value for the height.
+
+
+
+ Creates a FontRectangle that represents the intersection between this FontRectangle and the .
+
+ The rectangle.
+ New representing the intersections between the two rectangles.
+
+
+
+ Creates a new inflated by the specified amount.
+
+ The width.
+ The height.
+ New representing the inflated rectangle
+
+
+
+ Creates a new inflated by the specified amount.
+
+ The size.
+ New representing the inflated rectangle
+
+
+
+ Determines if the specified point is contained within the rectangular region defined by
+ this .
+
+ The x-coordinate of the given point.
+ The y-coordinate of the given point.
+ The .
+
+
+
+ Determines if the specified point is contained within the rectangular region defined by this .
+
+ The point.
+ The .
+
+
+
+ Determines if the rectangular region represented by is entirely contained
+ within the rectangular region represented by this .
+
+ The rectangle.
+ The .
+
+
+
+ Determines if the specified intersects the rectangular region defined by
+ this .
+
+ The other rectangle.
+ The .
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The point.
+ New representing the offset rectangle.
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The amount to offset the x-coordinate.
+ The amount to offset the y-coordinate.
+ New representing the inflated rectangle.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The font styles
+
+
+
+
+ Regular
+
+
+
+
+ Bold
+
+
+
+
+ Italic
+
+
+
+
+ Bold and Italic
+
+
+
+
+ A glyph from a particular font face.
+
+
+
+
+ Gets the glyph metrics.
+
+
+
+
+ Calculates the bounding box.
+
+ The glyph layout mode to measure using.
+ The location to calculate from.
+ The DPI (Dots Per Inch) to measure the glyph at.
+ The bounding box
+
+
+
+ Renders the glyph to the render surface relative to a top left origin.
+
+ The surface.
+ The location to render the glyph at.
+ The offset of the glyph vector relative to the top-left position of the glyph advance.
+ The glyph layout mode to render using.
+ The options to render using.
+
+
+
+ Represents the bounds of a for a given .
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The Unicode codepoint for the glyph.
+ The glyph bounds.
+
+
+
+ Gets the Unicode codepoint of the glyph.
+
+
+
+
+ Gets the glyph bounds.
+
+
+
+
+
+
+
+ A glyphs layout and location
+
+
+
+
+ Gets the glyph.
+
+
+
+
+ Gets the codepoint represented by this glyph.
+
+
+
+
+ Gets the location of the glyph box.
+
+
+
+
+ Gets the location to render the glyph at.
+
+
+
+
+ Gets the offset of the glyph vector relative to the top-left position of the glyph advance.
+ For horizontal layout this will always be .
+
+
+
+
+ Gets the width.
+
+
+
+
+ Gets the height.
+
+
+
+
+ Gets the glyph layout mode.
+
+
+
+
+ Gets a value indicating whether this glyph is the first glyph on a new line.
+
+
+
+
+ Gets a value indicating whether the glyph represents a whitespace character.
+
+ The .
+
+
+
+
+
+
+ Provides enumeration for the various layout mode of an individual glyph within a body of text.
+
+
+
+
+ Horizontal.
+
+
+
+
+ Vertical.
+
+
+
+
+ Rotated 90 degrees clockwise.
+
+
+
+
+ Represents a glyph metric from a particular font face.
+
+
+
+
+ Gets the font metrics.
+
+
+
+
+ Gets the Unicode codepoint of the glyph.
+
+
+
+
+ Gets the advance width for horizontal layout, expressed in font units.
+
+
+
+
+ Gets the advance height for vertical layout, expressed in font units.
+
+
+
+
+ Gets the left side bearing for horizontal layout, expressed in font units.
+
+
+
+
+ Gets the right side bearing for horizontal layout, expressed in font units.
+
+
+
+
+ Gets the top side bearing for vertical layout, expressed in font units.
+
+
+
+
+ Gets the bottom side bearing for vertical layout, expressed in font units.
+
+
+
+
+ Gets the bounds, expressed in font units.
+
+
+
+
+ Gets the width, expressed in font units.
+
+
+
+
+ Gets the height, expressed in font units.
+
+
+
+
+ Gets the glyph type.
+
+
+
+
+ Gets the color of this glyph when the is
+
+
+
+
+
+
+
+ Gets the id of the glyph within the font tables.
+
+
+
+
+ Gets the scale factor that is applied to all glyphs in this face.
+ Normally calculated as 72 * so that 1pt = 1px
+ unless the glyph has that apply scaling adjustment.
+
+
+
+
+ Gets or sets the offset in font design units.
+
+
+
+
+ Gets the text run that the glyph belongs to.
+
+
+
+
+ Gets the text attributes applied to the glyph.
+
+
+
+
+ Gets the text decorations applied to the glyph.
+
+
+
+
+ Performs a semi-deep clone (FontMetrics are not cloned) for rendering
+ This allows caching the original in the font metrics.
+
+ The current text run this glyph belongs to.
+ The new .
+
+
+
+ Apply an offset to the glyph.
+
+ The x-offset.
+ The y-offset.
+
+
+
+ Applies an advance to the glyph.
+
+ The x-advance.
+ The y-advance.
+
+
+
+ Sets a new advance width.
+
+ The x-advance.
+
+
+
+ Sets a new advance height.
+
+ The y-advance.
+
+
+
+ Renders the glyph to the render surface in font units relative to a bottom left origin at (0,0)
+
+ The surface renderer.
+ The location representing offset of the glyph outer bounds relative to the origin.
+ The offset of the glyph vector relative to the top-left position of the glyph advance.
+ The glyph layout mode to render using.
+ The options used to influence the rendering of this glyph.
+
+
+
+ Gets a value indicating whether the specified code point should be skipped when rendering.
+
+ The code point.
+ The .
+
+
+
+ Gets a value indicating whether the specified code point should be rendered as a white space only.
+
+ The code point.
+ The .
+
+
+
+ Returns the size to render/measure the glyph based on the given size and resolution in px units.
+
+ The font size in pt units.
+ The DPI (Dots Per Inch) to render/measure the glyph at
+ The .
+
+
+
+ Gets the rotation matrix for the glyph based on the layout mode.
+
+ The glyph layout mode.
+ The.
+
+
+
+ Represents a collection of glyph metrics that are mapped to input codepoints.
+
+
+
+
+ Contains a map the index of a map within the collection, non-sequential codepoint offsets, and their glyph ids, point size, and mtrics.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The text options.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the glyph metrics at the given codepoint offset.
+
+ The zero-based index within the input codepoint collection.
+ The font size in PT units of the font containing this glyph.
+ Whether the glyph is the result of a decomposition substitution.
+
+ When this method returns, contains the glyph metrics associated with the specified offset,
+ if the value is found; otherwise, the default value for the type of the metrics parameter.
+ This parameter is passed uninitialized.
+
+ The metrics.
+
+
+
+ Updates the collection of glyph ids to the metrics collection to overwrite any glyphs that have been previously
+ identified as fallbacks.
+
+ The font face with metrics.
+ The glyph substitution collection.
+ if the metrics collection does not contain any fallbacks; otherwise .
+
+
+
+ Adds the collection of glyph ids to the metrics collection.
+ identified as fallbacks.
+
+ The font face with metrics.
+ The glyph substitution collection.
+ if the metrics collection does not contain any fallbacks; otherwise .
+
+
+
+ Updates the position of the glyph at the specified index.
+
+ The font metrics.
+ The zero-based index of the element.
+
+
+
+ Updates the advanced metrics of the glyphs at the given index and id,
+ adding dx and dy to the current advance.
+
+ The font face with metrics.
+ The zero-based index of the element.
+ The id of the glyph to offset.
+ The delta x-advance.
+ The delta y-advance.
+
+
+
+ Returns a value indicating whether the element at the given index should be processed.
+
+ The font face with metrics.
+ The zero-based index of the elements to position.
+ if the element should be processed; otherwise, .
+
+
+
+ The combined set of properties that uniquely identify the glyph that is to be rendered
+ at a particular size and dpi.
+
+
+
+
+ Gets the name of the Font this glyph belongs to.
+
+
+
+
+ Gets the color details of this glyph.
+
+
+
+
+ Gets the type of this glyph.
+
+
+
+
+ Gets the style of the font this glyph belongs to.
+
+
+
+
+ Gets the id of the glyph within the font tables.
+
+
+
+
+ Gets the codepoint represented by this glyph.
+
+
+
+
+ Gets the rendered point size.
+
+
+
+
+ Gets the dots-per-inch the glyph is to be rendered at.
+
+
+
+
+ Gets the layout mode applied to the glyph.
+
+
+
+
+ Gets the text run that this glyph belongs to.
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents the shaped bounds of a glyph.
+ Uses a class over a struct for ease of use.
+
+
+
+
+ Contains supplementary data that allows the shaping of glyphs.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data to copy properties from.
+ Whether to clear features.
+
+
+
+ Gets or sets the glyph id.
+
+
+
+
+ Gets or sets the leading codepoint.
+
+
+
+
+ Gets or sets the codepoint count represented by this glyph.
+
+
+
+
+ Gets or sets the text direction.
+
+
+
+
+ Gets or sets the text run this glyph belongs to.
+
+
+
+
+ Gets or sets the id of any ligature this glyph is a member of.
+
+
+
+
+ Gets or sets a value indicating whether the glyph is ligated.
+
+
+
+
+ Gets or sets the ligature component index of the glyph.
+
+
+
+
+ Gets or sets the index of any mark attachment.
+
+
+
+
+ Gets or sets the index of any cursive attachment.
+
+
+
+
+ Gets or sets the collection of features.
+
+
+
+
+ Gets or sets the shaping bounds.
+
+
+
+
+ Gets or sets a value indicating whether this glyph is the result of a substitution.
+
+
+
+
+ Gets or sets a value indicating whether this glyph is the result of a decomposition substitution
+
+
+
+
+ Gets or sets the universal shaping information.
+
+
+
+
+ Gets or sets the Indic shaping information.
+
+
+
+
+ Represents information required for universal shaping.
+
+
+
+
+ Represents a collection of glyph indices that are mapped to input codepoints.
+
+
+
+
+ Contains a map the index of a map within the collection, non-sequential codepoint offsets, and their glyph ids.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The text options.
+
+
+
+ Gets the number of glyphs ids contained in the collection.
+ This may be more or less than original input codepoint count (due to substitution process).
+
+
+
+
+
+
+
+ Gets or sets the running id of any ligature glyphs contained withing this collection are a member of.
+
+
+
+
+
+
+
+ Gets the shaping data at the specified position.
+
+ The zero-based index of the elements to get.
+ The zero-based index within the input codepoint collection.
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+ Adds a clone of the glyph shaping data to the collection at the specified offset.
+
+ The data.
+ The zero-based index within the input codepoint collection.
+
+
+
+ Adds the glyph id and the codepoint it represents to the collection.
+
+ The id of the glyph to add.
+ The codepoint the glyph represents.
+ The resolved text direction for the codepoint.
+ The text run this glyph belongs to.
+ The zero-based index within the input codepoint collection.
+
+
+
+ Moves the specified glyph to the specified position.
+
+ The index to move from.
+ The index to move to.
+
+
+
+ Performs a stable sort of the glyphs by the comparison delegate starting at the specified index.
+
+ The start index.
+ The end index.
+ The comparison delegate.
+
+
+
+ Removes all elements from the collection.
+
+
+
+
+ Gets the specified glyph ids matching the given codepoint offset.
+
+ The zero-based index within the input codepoint collection.
+
+ When this method returns, contains the shaping data associated with the specified offset,
+ if the value is found; otherwise, the default value for the type of the data parameter.
+ This parameter is passed uninitialized.
+
+
+ if the contains glyph ids
+ for the specified offset; otherwise, .
+
+
+
+
+ Performs a 1:1 replacement of a glyph id at the given position.
+
+ The zero-based index of the element to replace.
+ The replacement glyph id.
+
+
+
+ Performs a 1:1 replacement of a glyph id at the given position while removing a series of glyph ids at the given positions within the sequence.
+
+ The zero-based index of the element to replace.
+ The indices at which to remove elements.
+ The replacement glyph id.
+ The ligature id.
+
+
+
+ Performs a 1:1 replacement of a glyph id at the given position while removing a series of glyph ids.
+
+ The zero-based index of the element to replace.
+ The number of glyphs to remove.
+ The replacement glyph id.
+
+
+
+ Replaces a single glyph id with a collection of glyph ids.
+
+ The zero-based index of the element to replace.
+ The collection of replacement glyph ids.
+
+
+
+ Represents the various versions of a glyph records.
+
+
+
+
+ This is a fall back glyph due to a missing code point.
+
+
+
+
+ This is a standard glyph to be drawn in the style the user defines.
+
+
+
+
+ This is a single layer of the multi-layer colored glyph (emoji).
+
+
+
+
+ Defines modes to determine how to apply hinting. The use of mathematical instructions
+ to adjust the display of an outline font so that it lines up with a rasterized grid.
+
+
+
+
+ Do not hint the glyphs.
+
+
+
+
+ Hint the glyph using standard configuration.
+
+
+
+
+ Horizontal alignment modes.
+
+
+
+
+ Aligns text from the left.
+
+
+
+
+ Aligns text from the right.
+
+
+
+
+ Aligns text from the center.
+
+
+
+
+ Represent the metrics of a font face specific to horizontal text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A surface that can have a glyph rendered to it as a series of actions, where the engine support colored glyphs (emoji).
+
+
+
+
+ Sets the color to use for the current glyph.
+
+ The color to override the renders brush with.
+
+
+
+ Provides access to the color details for the current glyph.
+
+
+
+
+ Gets the blue component
+
+
+
+
+ Gets the green component
+
+
+
+
+ Gets the red component
+
+
+
+
+ Gets the alpha component
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+ Compares the for equality to this color.
+
+
+ The other to compare to.
+
+
+ True if the current color is equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+ A readable and writable collection of fonts.
+
+
+
+
+
+ Adds a font to the collection.
+
+ The filesystem path to the font file.
+ The new .
+
+
+
+ Adds a font to the collection.
+
+ The filesystem path to the font file.
+ The description of the added font.
+ The new .
+
+
+
+ Adds a font to the collection.
+
+ The font stream.
+ The new .
+
+
+
+ Adds a font to the collection.
+
+ The font stream.
+ The description of the added font.
+ The new .
+
+
+
+ Adds a true type font collection (.ttc).
+
+ The font collection path.
+ The new .
+
+
+
+ Adds a true type font collection (.ttc).
+
+ The font collection path.
+ The descriptions of the added fonts.
+ The new .
+
+
+
+ Adds a true type font collection (.ttc).
+
+ The font stream.
+ The new .
+
+
+
+ Adds a true type font collection (.ttc).
+
+ The font stream.
+ The descriptions of the added fonts.
+ The new .
+
+
+
+ Adds a font to the collection.
+
+ The filesystem path to the font file.
+ The culture of the font to add.
+ The new .
+
+
+
+ Adds a font to the collection.
+
+ The filesystem path to the font file.
+ The culture of the font to add.
+ The description of the added font.
+ The new .
+
+
+
+ Adds a font to the collection.
+
+ The font stream.
+ The culture of the font to add.
+ The new .
+
+
+
+ Adds a font to the collection.
+
+ The font stream.
+ The culture of the font to add.
+ The description of the added font.
+ The new .
+
+
+
+ Adds a true type font collection (.ttc).
+
+ The font collection path.
+ The culture of the fonts to add.
+ The new .
+
+
+
+ Adds a true type font collection (.ttc).
+
+ The font collection path.
+ The culture of the fonts to add.
+ The descriptions of the added fonts.
+ The new .
+
+
+
+ Adds a true type font collection (.ttc).
+
+ The font stream.
+ The culture of the fonts to add.
+ The new .
+
+
+
+ Adds a true type font collection (.ttc).
+
+ The font stream.
+ The culture of the fonts to add.
+ The descriptions of the added fonts.
+ The new .
+
+
+
+ Represents a collection of
+
+
+
+
+ Adds the font metrics and culture to the .
+
+ The font metrics to add.
+ The culture of the font metrics to add.
+ The new .
+
+
+
+ Adds the font metrics to the .
+
+ The font metrics to add.
+
+
+
+ A surface that can have a glyph rendered to it as a series of actions.
+
+
+
+
+ Begins the figure.
+
+
+
+
+ Sets a new start point to draw lines from.
+
+ The point.
+
+
+
+ Draw a quadratic bezier curve connecting the previous point to .
+
+ The second control point.
+ The point.
+
+
+
+ Draw a cubic bezier curve connecting the previous point to .
+
+ The second control point.
+ The third control point.
+ The point.
+
+
+
+ Draw a straight line connecting the previous point to .
+
+ The point.
+
+
+
+ Ends the figure.
+
+
+
+
+ Ends the glyph.
+
+
+
+
+ Begins the glyph.
+
+ The bounds the glyph will be rendered at and at what size.
+
+ The set of parameters that uniquely represents a version of a glyph in at particular font size, font family, font style and DPI.
+
+ Returns true if the glyph should be rendered otherwise it returns false.
+
+
+
+ Called once all glyphs have completed rendering.
+
+
+
+
+ Called before any glyphs have been rendered.
+
+ The rectangle within the text will be rendered.
+
+
+
+ Provides a callback to enable custom logic to request decoration details.
+ A custom might use alternative triggers to determine what decorations it needs access to.
+
+ The text decorations the render wants render info for.
+
+
+
+ Provides the positions required for drawing text decorations onto the
+
+ The type of decoration these details correspond to.
+ The start position from where to draw the decorations from.
+ The end position from where to draw the decorations to.
+ The thickness to draw the decoration.
+
+
+
+ A surface that can have a glyph rendered to it as a series of actions.
+
+
+
+
+ Renders the text.
+
+ The target renderer surface.
+ The text.
+ The options.
+ Returns the original
+
+
+
+ Defines the contract for glyph shaping collections.
+
+
+
+
+ Gets the collection count.
+
+
+
+
+ Gets the text options used by this collection.
+
+
+
+
+ Gets the glyph shaping data at the specified index.
+
+ The zero-based index of the elements to get.
+ The .
+
+
+
+ Adds the shaping feature to the collection which should be applied to the glyph at a specified index.
+
+ The zero-based index of the element.
+ The feature to apply.
+
+
+
+ Enables a previously added shaping feature.
+
+ The zero-based index of the element.
+ The feature to enable.
+
+
+
+ Disables a previously added shaping feature.
+
+ The zero-based index of the element.
+ The feature to disable.
+
+
+
+ Defines the contract for the metrics header of a font face.
+
+
+
+
+ Gets the typographic ascender of the face, expressed in font units.
+
+
+
+
+ Gets the typographic descender of the face, expressed in font units.
+
+
+
+
+ Gets the typographic line gap of the face, expressed in font units.
+ This field should be combined with the and
+ values to determine default line spacing.
+
+
+
+
+ Gets the typographic line spacing of the face, expressed in font units.
+
+
+
+
+ Gets the maximum advance width, in font units, for all glyphs in this face.
+
+
+
+
+ Gets the maximum advance height, in font units, for all glyphs in this
+ face.This is only relevant for vertical layouts, and is set to for
+ fonts that do not provide vertical metrics.
+
+
+
+
+ The raw stream containing the uncompressed image data.
+
+
+
+
+ A value indicating whether this instance of the given entity has been disposed.
+
+ if this instance has been disposed; otherwise, .
+
+ If the entity is disposed, it must not be disposed a second
+ time. The isDisposed field is set the first time the entity
+ is disposed. If the isDisposed field is true, then the Dispose()
+ method will not dispose again. This help not to prolong the entity's
+ life in the Garbage Collector.
+
+
+
+
+ The read crc data.
+
+
+
+
+ The stream responsible for decompressing the input stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+
+ Thrown if the compression method is incorrect.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a readonly collection of fonts.
+
+
+
+
+ Gets the collection of in this
+ using the invariant culture.
+
+
+
+
+ Gets the specified font family matching the invariant culture and font family name.
+
+ The font family name.
+ The first matching the given name.
+ is
+ The collection contains no matches.
+
+
+
+ Gets the specified font family matching the invariant culture and font family name.
+
+ The font family name.
+
+ When this method returns, contains the family associated with the specified name,
+ if the name is found; otherwise, the default value for the type of the family parameter.
+ This parameter is passed uninitialized.
+
+
+ if the contains a family
+ with the specified name; otherwise, .
+
+ is
+
+
+
+ Gets the collection of in this
+ using the given culture.
+
+ The culture of the families to return.
+ The .
+
+
+
+ Gets the specified font family matching the given culture and font family name.
+
+ The font family name.
+ The culture to use when searching for a match.
+ The first matching the given name.
+ is
+ The collection contains no matches.
+
+
+
+ Gets the specified font family matching the given culture and font family name.
+
+ The font family name.
+ The culture to use when searching for a match.
+
+ When this method returns, contains the family associated with the specified name,
+ if the name is found; otherwise, the default value for the type of the family parameter.
+ This parameter is passed uninitialized.
+
+
+ if the contains a family
+ with the specified name; otherwise, .
+
+ is
+
+
+
+ Represents a readonly collection of font metrics.
+ The interface uses compiler pattern matching to provide enumeration capabilities.
+
+
+
+
+ Gets the specified font metrics matching the given culture and font family name.
+
+ The font family name.
+ The culture to use when searching for a match.
+ The font style to use when searching for a match.
+
+ When this method returns, contains the metrics associated with the specified name,
+ if the name is found; otherwise, the default value for the type of the family parameter.
+ This parameter is passed uninitialized.
+
+
+ if the contains font metrics
+ with the specified name; otherwise, .
+
+ is
+
+
+
+ Gets the collection of available font metrics for a given culture and font family name.
+
+ The font family name.
+ The culture to use when searching for a match.
+ The .
+ is
+
+
+
+ Gets the collection of available font styles for a given culture and font family name.
+
+ The font family name.
+ The culture to use when searching for a match.
+ The .
+ is
+
+
+
+
+
+
+ Represents a readonly collection of Operating System fonts.
+
+
+
+
+
+ Gets the collection of Operating System directories that were searched for font families.
+
+
+
+
+
+ Kerning is the contextual adjustment of inter-glyph spacing.
+ This property controls metric kerning, kerning that utilizes adjustment data contained in the font.
+
+
+
+
+ Specifies that kerning is applied.
+
+
+
+
+ Specifies that kerning is not applied.
+
+
+
+
+ Specifies that kerning is applied at the discretion of the layout engine.
+
+
+
+
+ Defines modes to determine the layout direction of text.
+
+
+
+
+ Text is laid out horizontally from top to bottom.
+
+
+
+
+ Text is laid out horizontally from bottom to top.
+
+
+
+
+ Text is laid out vertically from left to right.
+
+
+
+
+ Text is laid out vertically from right to left.
+
+
+
+
+ Text is laid out vertically from left to right. Horizontal glyphs are rotated 90 degrees clockwise.
+
+
+
+
+ Text is laid out vertically from right to left. Horizontal glyphs are rotated 90 degrees clockwise.
+
+
+
+
+ Extensions to .
+
+
+
+
+ Gets a value indicating whether the layout mode is horizontal.
+
+ The layout mode.
+ The .
+
+
+
+ Gets a value indicating whether the layout mode is vertical.
+
+ The layout mode.
+ The .
+
+
+
+ Gets a value indicating whether the layout mode is vertical-mixed only.
+
+ The layout mode.
+ The .
+
+
+
+ Provides a mapped view of an underlying slice, selecting arbitrary indices
+ from the source array.
+
+ The type of item contained in the underlying array.
+
+
+
+ Initializes a new instance of the struct.
+
+ The data slice.
+ The map slice.
+
+
+
+ Gets the number of items in the map.
+
+
+
+
+ Returns a reference to specified element of the slice.
+
+ The index of the element to return.
+ The .
+
+ Thrown when index less than 0 or index greater than or equal to .
+
+
+
+
+ An integer type for constants used to specify supported string encodings in various CFString functions.
+
+
+
+
+ An encoding constant that identifies the UTF 8 encoding.
+
+
+
+
+ An encoding constant that identifies kTextEncodingUnicodeDefault + kUnicodeUTF16LEFormat encoding. This constant specifies little-endian byte order.
+
+
+
+
+ Options you can use to determine how CFURL functions parse a file system path name.
+
+
+
+
+ Indicates a POSIX style path name. Components are slash delimited. A leading slash indicates an absolute path; a trailing slash is not significant.
+
+
+
+
+ Returns the number of values currently in an array.
+
+ The array to examine.
+ The number of values in .
+
+
+
+ Returns the type identifier for the CFArray opaque type.
+
+ The type identifier for the CFArray opaque type.
+ CFMutableArray objects have the same type identifier as CFArray objects.
+
+
+
+ Retrieves a value at a given index.
+
+ The array to examine.
+ The index of the value to retrieve. If the index is outside the index space of (0 to N-1 inclusive where N is the count of ), the behavior is undefined.
+ The value at the index in . If the return value is a Core Foundation Object, ownership follows The Get Rule.
+
+
+
+ Returns the unique identifier of an opaque type to which a Core Foundation object belongs.
+
+ The CFType object to examine.
+ A value of type CFTypeID that identifies the opaque type of .
+
+ This function returns a value that uniquely identifies the opaque type of any Core Foundation object.
+ You can compare this value with the known CFTypeID identifier obtained with a “GetTypeID” function specific to a type, for example CFDateGetTypeID.
+ These values might change from release to release or platform to platform.
+
+
+
+
+ Returns the number (in terms of UTF-16 code pairs) of Unicode characters in a string.
+
+ The string to examine.
+ The number (in terms of UTF-16 code pairs) of characters stored in .
+
+
+
+ Copies the character contents of a string to a local C string buffer after converting the characters to a given encoding.
+
+ The string whose contents you wish to access.
+
+ The C string buffer into which to copy the string. On return, the buffer contains the converted characters. If there is an error in conversion, the buffer contains only partial results.
+ The buffer must be large enough to contain the converted characters and a NUL terminator. For example, if the string is Toby, the buffer must be at least 5 bytes long.
+
+ The length of in bytes.
+ The string encoding to which the character contents of should be converted. The encoding must specify an 8-bit encoding.
+ upon success or if the conversion fails or the provided buffer is too small.
+ This function is useful when you need your own copy of a string’s character data as a C string. You also typically call it as a “backup” when a prior call to the function fails.
+
+
+
+ Quickly obtains a pointer to a C-string buffer containing the characters of a string in a given encoding.
+
+ The string whose contents you wish to access.
+ The string encoding to which the character contents of should be converted. The encoding must specify an 8-bit encoding.
+ A pointer to a C string or NULL if the internal storage of does not allow this to be returned efficiently.
+
+
+ This function either returns the requested pointer immediately, with no memory allocations and no copying, in constant time, or returns NULL. If the latter is the result, call an alternative function such as the function to extract the characters.
+
+
+ Whether or not this function returns a valid pointer or NULL depends on many factors, all of which depend on how the string was created and its properties. In addition, the function result might change between different releases and on different platforms. So do not count on receiving a non-NULL result from this function under any circumstances.
+
+
+
+
+
+ Releases a Core Foundation object.
+
+ A CFType object to release. This value must not be NULL.
+
+
+
+ Returns the path portion of a given URL.
+
+ The CFURL object whose path you want to obtain.
+ The operating system path style to be used to create the path. See for a list of possible values.
+ The URL's path in the format specified by . Ownership follows the create rule. See The Create Rule.
+ This function returns the URL's path as a file system path for a given path style.
+
+
+
+ Returns the type identifier for the CFURL opaque type.
+
+ The type identifier for the CFURL opaque type.
+
+
+
+ Returns an array of font URLs.
+
+ This function returns a retained reference to a CFArray of CFURLRef objects representing the URLs of the available fonts, or NULL on error. The caller is responsible for releasing the array.
+
+
+
+ An enumerator that enumerates over available macOS system fonts.
+ The enumerated strings are the absolute paths to the font files.
+
+
+ Internally, it calls the native CoreText's method to retrieve
+ the list of fonts so using this class must be guarded by RuntimeInformation.IsOSPlatform(OSPlatform.OSX).
+
+
+
+
+ ReadOnlyArraySlice represents a contiguous region of arbitrary memory similar
+ to and though constrained
+ to arrays.
+ Unlike , it is not a byref-like type.
+
+ The type of item contained in the slice.
+
+
+
+ Initializes a new instance of the struct.
+
+ The underlying data buffer.
+
+
+
+ Initializes a new instance of the struct.
+
+ The underlying data buffer.
+ The offset position in the underlying buffer this slice was created from.
+ The number of items in the slice.
+
+
+
+ Gets an empty
+
+
+
+
+ Gets the offset position in the underlying buffer this slice was created from.
+
+
+
+
+ Gets the number of items in the slice.
+
+
+
+
+ Gets a representing this slice.
+
+
+
+
+ Returns a reference to specified element of the slice.
+
+ The index of the element to return.
+ The .
+
+ Thrown when index less than 0 or index greater than or equal to .
+
+
+
+
+ Defines an implicit conversion of an array to a
+
+
+
+
+ Copies the contents of this slice into destination span. If the source
+ and destinations overlap, this method behaves as if the original values in
+ a temporary location before the destination is overwritten.
+
+ The slice to copy items into.
+
+ Thrown when the destination slice is shorter than the source Span.
+
+
+
+
+ Forms a slice out of the given slice, beginning at 'start', of given length
+
+ The index at which to begin this slice.
+ The desired length for the slice (exclusive).
+
+ Thrown when the specified or end index is not in range (<0 or >Length).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides a readonly mapped view of an underlying slice, selecting arbitrary indices
+ from the source array.
+
+ The type of item contained in the underlying array.
+
+
+
+ Initializes a new instance of the struct.
+
+ The data slice.
+ The map slice.
+
+
+
+ Gets the number of items in the map.
+
+
+
+
+ Returns a reference to specified element of the slice.
+
+ The index of the element to return.
+ The .
+
+ Thrown when index less than 0 or index greater than or equal to .
+
+
+
+
+ Extension methods for the type.
+
+
+
+
+ Contains CFF specific methods.
+
+
+
+ Represents a font face with metrics, which is a set of glyphs with a specific style (regular, italic, bold etc).
+
+ The font source is a stream.
+
+
+ Contains TrueType specific methods.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The True Type font tables.
+
+
+
+ Initializes a new instance of the class.
+
+ The Compact Font tables.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reads a from the specified stream.
+
+ The file path.
+ a .
+
+
+
+ Reads a from the specified stream.
+
+ The file path.
+ Position in the stream to read the font from.
+ a .
+
+
+
+ Reads a from the specified stream.
+
+ The stream.
+ a .
+
+
+
+ Reads a from the specified stream.
+
+ The file path.
+ a .
+
+
+
+ Reads a from the specified stream.
+
+ The stream.
+ a .
+
+
+
+ Provides a collection of fonts.
+
+
+
+
+ Gets the default set of locations we probe for System Fonts.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides a collection of fonts.
+
+
+
+
+ Gets the collection containing the globally installed system fonts.
+
+
+
+
+ Gets the collection of s installed on current system.
+
+
+
+
+
+
+
+
+
+
+ Create a new instance of the for the named font family with regular styling.
+
+ The font family name.
+ The size of the font in PT units.
+ The new .
+
+
+
+ Create a new instance of the for the named font family.
+
+ The font family name.
+ The size of the font in PT units.
+ The font style.
+ The new .
+
+
+
+
+
+
+
+
+
+
+
+
+ Create a new instance of the for the named font family with regular styling.
+
+ The font family name.
+ The font culture.
+ The size of the font in PT units.
+ The new .
+
+
+
+ Create a new instance of the for the named font family.
+
+ The font family name.
+ The font culture.
+ The size of the font in PT units.
+ The font style.
+ The new .
+
+
+
+ Gets a value indicating whether the glyph represented by the codepoint should be interpreted vertically.
+
+ The codepoint represented by the glyph.
+ The layout mode.
+ The .
+
+
+
+ Gets the sequence lookup records.
+ The seqLookupRecords array lists the sequence lookup records that specify actions to be taken on glyphs at various positions within the input sequence.
+ These do not have to be ordered in sequence position order; they are ordered according to the desired result.
+ All of the sequence lookup records are processed in order, and each applies to the results of the actions indicated by the preceding record.
+
+
+
+
+ In OpenType Layout, index values identify glyphs. For efficiency and ease of representation, a font developer
+ can group glyph indices to form glyph classes. Class assignments vary in meaning from one lookup subtable
+ to another. For example, in the GSUB and GPOS tables, classes are used to describe glyph contexts.
+ GDEF tables also use the idea of glyph classes.
+
+
+
+
+
+ Gets the class id for the given glyph id.
+ Any glyph not included in the range of covered glyph IDs automatically belongs to Class 0.
+
+ The glyph identifier.
+ The class id.
+
+
+
+
+
+
+
+
+
+ Loads the class sequence rule set table.
+
+ The big endian binary reader.
+ Offset from beginning of the ClassSequenceRuleSet table.
+ A class sequence rule set table.
+
+
+
+ Each subtable (except an Extension LookupType subtable) in a lookup references a Coverage table (Coverage),
+ which specifies all the glyphs affected by a substitution or positioning operation described in the subtable.
+ The GSUB, GPOS, and GDEF tables rely on this notion of coverage.
+ If a glyph does not appear in a Coverage table, the client can skip that subtable and move
+ immediately to the next subtable.
+
+
+
+
+
+ Features provide information about how to use the glyphs in a font to render a script or language.
+ For example, an Arabic font might have a feature for substituting initial glyph forms, and a Kanji font
+ might have a feature for positioning glyphs vertically. All OpenType Layout features define data for
+ glyph substitution, glyph positioning, or both.
+
+
+
+
+
+
+ Provides enumeration for the different font features.
+
+
+
+
+
+ Access All Alternates. Shortcode: aalt.
+ This feature makes all variations of a selected character accessible. This serves several purposes: An application may not support the feature by which the desired glyph would normally be accessed;
+ the user may need a glyph outside the context supported by the normal substitution, or the user may not know what feature produces the desired glyph.
+ Since many-to-one substitutions are not covered, ligatures would not appear in this table unless they were variant forms of another ligature.
+
+
+
+
+ Above-base Forms. Shortcode: abvf.
+ Substitutes the above-base form of a vowel.
+
+
+
+
+ Above-base Mark Positioning. Shortcode: abvm.
+ Positions marks above base glyphs.
+
+
+
+
+ Above-base Substitutions. Shortcode: abvs.
+ Substitutes a ligature for a base glyph and mark that’s above it.
+
+
+
+
+ Alternative Fractions. Shortccde: afrc.
+ Replaces figures separated by a slash with an alternative form.
+
+
+
+
+ Akhand. Shortcode: akhn.
+ Preferentially substitutes a sequence of characters with a ligature. This substitution is done irrespective of any characters that may precede or follow the sequence.
+
+
+
+
+ Below-base Forms. Shortcode: blwf.
+ Substitutes the below-base form of a consonant in conjuncts.
+
+
+
+
+ Below-base Mark Positioning. Shortcode: blwm.
+ Positions marks below base glyphs.
+
+
+
+
+ Below-base Substitutions. Shortcode: blws.
+ Produces ligatures that comprise of base glyph and below-base forms.
+
+
+
+
+ Contextual Alternates. Shortcode: calt.
+ In specified situations, replaces default glyphs with alternate forms which provide better joining behavior.
+ Used in script typefaces which are designed to have some or all of their glyphs join.
+
+
+
+
+ Case-Sensitive Forms. Shortcode: case.
+ Shifts various punctuation marks up to a position that works better with all-capital sequences or sets of lining figures;
+ also changes oldstyle figures to lining figures. By default, glyphs in a text face are designed to work with lowercase characters.
+ Some characters should be shifted vertically to fit the higher visual center of all-capital or lining text.
+ Also, lining figures are the same height (or close to it) as capitals, and fit much better with all-capital text.
+
+
+
+
+ Glyph Composition/Decomposition. Shortcode: ccmp.
+ To minimize the number of glyph alternates, it is sometimes desirable to decompose the default glyph for a character into two or more glyphs.
+ Additionally, it may be preferable to compose default glyphs for two or more characters into a single glyph for better glyph processing.
+ This feature permits such composition/decomposition. The feature should be processed as the first feature processed, and should be processed only when it is called.
+
+
+
+
+ Conjunct Form After Ro. Shortcode: cfar.
+ Substitutes alternate below-base or post-base forms in Khmer script when occurring after conjoined Ro (“Coeng Ra”).
+
+
+
+
+ Conjunct Forms. Shortcode: cjct.
+ Produces conjunct forms of consonants in Indic scripts. This is similar to the Akhands feature, but is applied at a different sequential point in the process of shaping an Indic syllable.
+
+
+
+
+ Contextual Ligatures. Shortcode: clig.
+ Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. Unlike other ligature features, 'clig' specifies the context in which the ligature is recommended.
+ This capability is important in some script designs and for swash ligatures.
+
+
+
+
+ Centered CJK Punctuation. Shortcode: cpct.
+ Centers specific punctuation marks for those fonts that do not include centered and non-centered forms.
+
+
+
+
+ Capital Spacing. Shortcode: cpsp.
+ Globally adjusts inter-glyph spacing for all-capital text. Most typefaces contain capitals and lowercase characters, and the capitals are positioned to work with the lowercase.
+ When capitals are used for words, they need more space between them for legibility and esthetics.
+ This feature would not apply to monospaced designs. Of course the user may want to override this behavior in order to do more pronounced letterspacing for esthetic reasons.
+
+
+
+
+ Contextual Swash. Shortcode: cswh.
+ This feature replaces default character glyphs with corresponding swash glyphs in a specified context. Note that there may be more than one swash alternate for a given character.
+
+
+
+
+ Cursive Positioning. Shortcode: curs.
+ In cursive scripts like Arabic, this feature cursively positions adjacent glyphs.
+
+
+
+
+ Petite Capitals From Capitals. Shortcode: c2pc.
+ This feature turns capital characters into petite capitals. It is generally used for words which would otherwise be set in all caps, such as acronyms,
+ but which are desired in petite-cap form to avoid disrupting the flow of text. See the 'pcap' feature description for notes on the relationship of caps,
+ smallcaps and petite caps.
+
+
+
+
+ Small Capitals From Capitals. Shortcode: c2sc.
+ This feature turns capital characters into small capitals. It is generally used for words which would otherwise be set in all caps,
+ such as acronyms, but which are desired in small-cap form to avoid disrupting the flow of text.
+
+
+
+
+ Distances. Shortcode: dist.
+ Provides a means to control distance between glyphs.
+
+
+
+
+ Discretionary Ligatures. Shortcode: dlig.
+ Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes.
+ This feature covers those ligatures which may be used for special effect, at the user’s preference.
+
+
+
+
+ Denominators. Shortcode: dnom.
+ Replaces selected figures which follow a slash with denominator figures.
+
+
+
+
+ Dotless Forms. Shortcode: dtls.
+ This feature provides dotless forms for Math Alphanumeric characters, such as U+1D422 MATHEMATICAL BOLD SMALL I, U+1D423 MATHEMATICAL BOLD SMALL J,
+ U+1D456 U+MATHEMATICAL ITALIC SMALL I, U+1D457 MATHEMATICAL ITALIC SMALL J, and so on. The dotless forms are to be used as base forms for placing mathematical accents over them.
+
+
+
+
+ Expert Forms. Shortcode: expt.
+ Like the JIS78 Forms feature, this feature replaces standard forms in Japanese fonts with corresponding forms preferred by typographers.
+ Although most of the JIS78 substitutions are included, the expert substitution goes on to handle many more characters.
+
+
+
+
+ Final Glyph on Line Alternates. Shortcode: falt.
+ Replaces line final glyphs with alternate forms specifically designed for this purpose (they would have less or more advance width as need may be), to help justification of text.
+
+
+
+
+ Terminal Form #2. Shortcode: fin2.
+ Replaces the Alaph glyph at the end of Syriac words with its appropriate form, when the preceding base character cannot be joined to,
+ and that preceding base character is not a Dalath, Rish, or dotless Dalath-Rish.
+
+
+
+
+ Terminal Form #3. Shortcode: fin3.
+ Replaces Alaph glyphs at the end of Syriac words when the preceding base character is a Dalath, Rish, or dotless Dalath-Rish.
+
+
+
+
+ Terminal Forms. Shortcode: fina.
+ Replaces glyphs for characters that have applicable joining properties with an alternate form when occurring in a final context.
+
+
+
+
+ Flattened ascent forms. Shortcode: flac.
+ This feature provides flattened forms of accents to be used over high-rise bases such as capitals.
+ This feature should only change the shape of the accent and should not move it in the vertical or horizontal direction.
+ Moving of the accents is done by the math handling client. Accents are flattened by the Math engine if their base is higher than MATH.MathConstants.FlattenedAccentBaseHeight.
+
+
+
+
+ Fractions. Shortcode: frac.
+ Replaces figures separated by a slash with “common” (diagonal) fractions.
+
+
+
+
+ Full Widths. Shortcode: fwid.
+ Replaces glyphs set on other widths with glyphs set on full (usually em) widths. In a CJKV font, this may include “lower ASCII” Latin characters and various symbols.
+ In a European font, this feature replaces proportionally-spaced glyphs with monospaced glyphs, which are generally set on widths of 0.6 em.
+
+
+
+
+ Half Forms. Shortcode: half.
+ Produces the half forms of consonants in Indic scripts.
+
+
+
+
+ Halant Forms. Shortcode: haln.
+ Produces the halant forms of consonants in Indic scripts.
+
+
+
+
+ Alternate Half Widths. Shortcode: halt.
+ Respaces glyphs designed to be set on full-em widths, fitting them onto half-em widths. This differs from 'hwid' in that it does not substitute new glyphs.
+
+
+
+
+ Historical Forms. Shortcode: hist.
+ Some letterforms were in common use in the past, but appear anachronistic today. The best-known example is the long form of s; others would include the old Fraktur k.
+ Some fonts include the historical forms as alternates, so they can be used for a “period” effect. This feature replaces the default (current) forms with the historical alternates.
+ While some ligatures are also used for historical effect, this feature deals only with single characters.
+
+
+
+
+ Horizontal Kana Alternates. Shortcode: hkna.
+ Replaces standard kana with forms that have been specially designed for only horizontal writing. This is a typographic optimization for improved fit and more even color. Also see 'vkna'.
+
+
+
+
+ Historical Ligatures. Shortcode: hlig.
+ Some ligatures were in common use in the past, but appear anachronistic today. Some fonts include the historical forms as alternates, so they can be used for a “period” effect.
+ This feature replaces the default (current) forms with the historical alternates.
+
+
+
+
+ Hangul. Shortcode: hngl.
+ Replaces hanja (Chinese-style) Korean characters with the corresponding hangul (syllabic) characters. This effectively reverses the standard input method,
+ in which hangul are entered and replaced by hanja. Many of these substitutions are one-to-one (GSUB lookup type 1),
+ but hanja substitution often requires the user to choose from several possible hangul characters (GSUB lookup type 3).
+
+
+
+
+ Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms). Shortcode: hojo.
+ The JIS X 0212-1990 (aka, “Hojo Kanji”) and JIS X 0213:2004 character sets overlap significantly.
+ In some cases their prototypical glyphs differ. When building fonts that support both JIS X 0212-1990 and JIS X 0213:2004 (such as those supporting the Adobe-Japan 1-6 character collection),
+ it is recommended that JIS X 0213:2004 forms be preferred as the encoded form. The 'hojo' feature is used to access the JIS X 0212-1990 glyphs for the cases when the JIS X 0213:2004 form is encoded.
+
+
+
+
+ Half Widths. Shortcode: hwid.
+ Replaces glyphs on proportional widths, or fixed widths other than half an em, with glyphs on half-em (en) widths. Many CJKV fonts have glyphs which are set on multiple widths; this feature selects the half-em version.
+ There are various contexts in which this is the preferred behavior, including compatibility with older desktop documents.
+
+
+
+
+ Initial Forms. Shortcode: init.
+ Replaces glyphs for characters that have applicable joining properties with an alternate form when occurring in an initial context.
+
+
+
+
+ Isolated Forms. Shortcode: isol.
+ Replaces glyphs for characters that have applicable joining properties with an alternate form when occurring in a isolate (non-joining) context.
+
+
+
+
+ Italics. Shortcode: ital.
+ Some fonts (such as Adobe’s Pro Japanese fonts) will have both Roman and Italic forms of some characters in a single font.
+ This feature replaces the Roman glyphs with the corresponding Italic glyphs.
+
+
+
+
+ Justification Alternates. Shortcode: jalt.
+ Improves justification of text by replacing glyphs with alternate forms specifically designed for this purpose (they would have less or more advance width as need may be).
+
+
+
+
+ JIS78 Forms. Shortcode: jp78.
+ This feature replaces default (JIS90) Japanese glyphs with the corresponding forms from the JIS C 6226-1978 (JIS78) specification.
+
+
+
+
+ JIS83 Forms. Shortcode: jp83.
+ This feature replaces default (JIS90) Japanese glyphs with the corresponding forms from the JIS X 0208-1983 (JIS83) specification.
+
+
+
+
+ JIS90 Forms. Shortcode: jp90.
+ This feature replaces Japanese glyphs from the JIS78 or JIS83 specifications with the corresponding forms from the JIS X 0208-1990 (JIS90) specification.
+
+
+
+
+ JIS2004 Forms. Shortcode: jp04.
+ The National Language Council (NLC) of Japan has defined new glyph shapes for a number of JIS characters, which were incorporated into JIS X 0213:2004 as new prototypical forms.
+ The 'jp04' feature is a subset of the 'nlck' feature, and is used to access these prototypical glyphs in a manner that maintains the integrity of JIS X 0213:2004.
+
+
+
+
+ Kerning. Shortcode: kern.
+ Adjusts amount of space between glyphs, generally to provide optically consistent spacing between glyphs.
+ Although a well-designed typeface has consistent inter-glyph spacing overall, some glyph combinations require adjustment for improved legibility.
+ Besides standard adjustment in the horizontal direction, this feature can supply size-dependent kerning data via device tables, “cross-stream” kerning in the Y text direction,
+ and adjustment of glyph placement independent of the advance adjustment. Note that this feature may apply to runs of more than two glyphs, and would not be used in monospaced fonts.
+ Also note that this feature does not apply to text set vertically.
+
+
+
+
+ Left Bounds. Shortcode: lfbd.
+ Aligns glyphs by their apparent left extents at the left ends of horizontal lines of text, replacing the default behavior of aligning glyphs by their origins.
+ This feature is called by the Optical Bounds ('opbd') feature.
+
+
+
+
+ Standard Ligatures. Shortcode: liga.
+ Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers the ligatures which the designer/manufacturer judges should be used in normal conditions.
+
+
+
+
+ Leading Jamo Forms. Shortcode: ljmo.
+ Substitutes the leading jamo form of a cluster.
+
+
+
+
+ Lining Figures. Shortcode: lnum.
+ This feature changes selected non-lining figures to lining figures.
+
+
+
+
+ Localized Forms. Shortcode: locl.
+ Many scripts used to write multiple languages over wide geographical areas have developed localized variant forms of specific letters,
+ which are used by individual literary communities. For example, a number of letters in the Bulgarian and Serbian alphabets have forms distinct from their Russian counterparts and from each other.
+ In some cases the localized form differs only subtly from the script “norm”, in others the forms are radically distinct. This feature enables localized forms of glyphs to be substituted for default forms.
+
+
+
+
+ Left-to-right glyph alternates. Shortcode: ltra.
+ This feature applies glyphic variants (other than mirrored forms) appropriate for left-to-right text (for mirrored forms, see 'ltrm').
+
+
+
+
+ Left-to-right mirrored forms. Shortcode: ltrm.
+ This feature applies mirrored forms appropriate for left-to-right text. (For left-to-right glyph alternates, see 'ltra').
+
+
+
+
+ Mark Positioning. Shortcode: mark.
+ Positions mark glyphs with respect to base glyphs.
+
+
+
+
+ Medial Forms #2. Shortcode: med2.
+ Replaces Alaph glyphs in the middle of Syriac words when the preceding base character can be joined to.
+
+
+
+
+ Medial Forms. Shortcode: medi
+ Replaces glyphs for characters that have applicable joining properties with an alternate form when occurring in a medial context.
+ This applies to characters that have the Unicode Joining_Type property value Dual_Joining.
+
+
+
+
+ Mathematical Greek. Shortcode: mgrk.
+ Replaces standard typographic forms of Greek glyphs with corresponding forms commonly used in mathematical notation (which are a subset of the Greek alphabet).
+
+
+
+
+ Mark to Mark Positioning. Shortcode: mkmk.
+ Positions marks with respect to other marks. Required in various non-Latin scripts like Arabic.
+
+
+
+
+ Shortcode: mset.
+ Positions Arabic combining marks in fonts for Windows 95 using glyph substitution.
+
+
+
+
+ Alternate Annotation Forms. Shortcode: nalt.
+ Replaces default glyphs with various notational forms (e.g. glyphs placed in open or solid circles, squares, parentheses, diamonds or rounded boxes).
+ In some cases an annotation form may already be present, but the user may want a different one.
+
+
+
+
+ NLC Kanji Forms. Shortcode: nlck.
+ The National Language Council (NLC) of Japan has defined new glyph shapes for a number of JIS characters in 2000. The 'nlck' feature is used to access those glyphs.
+
+
+
+
+ Nukta Forms. Shortcode: nukt.
+ Produces Nukta forms in Indic scripts.
+
+
+
+
+ Numerators. Shortcode: numr.
+ Replaces selected figures which precede a slash with numerator figures, and replaces the typographic slash with the fraction slash.
+
+
+
+
+ Oldstyle Figures. Shortcode: onum.
+ This feature changes selected figures from the default or lining style to oldstyle form.
+
+
+
+
+ Optical Bounds. Shortcode: opbd.
+ Aligns glyphs by their apparent left or right extents in horizontal setting, or apparent top or bottom extents in vertical setting,
+ replacing the default behavior of aligning glyphs by their origins. Another name for this behavior would be visual justification.
+ The optical edge of a given glyph is only indirectly related to its advance width or bounding box; this feature provides a means for getting true visual alignment.
+
+
+
+
+ Ordinals. Shortcode: ordn.
+ Replaces default alphabetic glyphs with the corresponding ordinal forms for use after figures. One exception to the follows-a-figure rule is the numero character (U+2116),
+ which is actually a ligature substitution, but is best accessed through this feature.
+
+
+
+
+ Ornaments. Shortcode: ornm.
+ This is a dual-function feature, which uses two input methods to give the user access to ornament glyphs (e.g. fleurons, dingbats and border elements) in the font.
+ One method replaces the bullet character with a selection from the full set of available ornaments;
+ the other replaces specific “lower ASCII” characters with ornaments assigned to them. The first approach supports the general or browsing user;
+ the second supports the power user.
+
+
+
+
+ Proportional Alternate Widths. Shortcode: palt.
+ Respaces glyphs designed to be set on full-em widths, fitting them onto individual (more or less proportional) horizontal widths.
+ This differs from 'pwid' in that it does not substitute new glyphs (GPOS, not GSUB feature). The user may prefer the monospaced form,
+ or may simply want to ensure that the glyph is well-fit and not rotated in vertical setting (Latin forms designed for proportional spacing would be rotated).
+
+
+
+
+ Petite Capitals. Shortcode: pcap.
+ Some fonts contain an additional size of capital letters, shorter than the regular smallcaps and whimsically referred to as petite caps.
+ Such forms are most likely to be found in designs with a small lowercase x-height, where they better harmonise with lowercase text than
+ the taller smallcaps (for examples of petite caps, see the Emigre type families Mrs Eaves and Filosofia). This feature turns lowercase characters into petite capitals.
+ Forms related to petite capitals, such as specially designed figures, may be included.
+
+
+
+
+ Proportional Kana. Shortcode: pkna.
+ Replaces glyphs, kana and kana-related, set on uniform widths (half or full-width) with proportional glyphs.
+
+
+
+
+ Proportional Figures. Shortcode: pnum.
+ Replaces figure glyphs set on uniform (tabular) widths with corresponding glyphs set on glyph-specific (proportional) widths.
+ Tabular widths will generally be the default, but this cannot be safely assumed. Of course this feature would not be present in monospaced designs.
+
+
+
+
+ Pre-base Forms. Shortcode: pref.
+ Substitutes the pre-base form of a consonant.
+
+
+
+
+ Pre-base Substitutions. Shortcode: pres.
+ Produces the pre-base forms of conjuncts in Indic scripts. It can also be used to substitute the appropriate glyph variant for pre-base vowel signs.
+
+
+
+
+ Post-base Forms. Shortcode: pstf.
+ Substitutes the post-base form of a consonant.
+
+
+
+
+ Post-base Substitutions. Shortcode: psts.
+ Substitutes a sequence of a base glyph and post-base glyph, with its ligaturised form.
+
+
+
+
+ Proportional Widths. Shortcode: pwid.
+ Replaces glyphs set on uniform widths (typically full or half-em) with proportionally spaced glyphs.
+ The proportional variants are often used for the Latin characters in CJKV fonts, but may also be used for Kana in Japanese fonts.
+
+
+
+
+ Quarter Widths. Shortcode: qwid.
+ Replaces glyphs on other widths with glyphs set on widths of one quarter of an em (half an en). The characters involved are normally figures and some forms of punctuation.
+
+
+
+
+ Randomize. Shortcode: rand.
+ In order to emulate the irregularity and variety of handwritten text, this feature allows multiple alternate forms to be used.
+
+
+
+
+ Required Contextual Alternates. Shortcode: rclt.
+ In specified situations, replaces default glyphs with alternate forms which provide for better joining behavior or other glyph relationships.
+ Especially important in script typefaces which are designed to have some or all of their glyphs join, but applicable also to e.g. variants to improve spacing.
+ This feature is similar to 'calt', but with the difference that it should not be possible to turn off 'rclt' substitutions: they are considered essential to correct layout of the font.
+
+
+
+
+ Required Ligatures. Shortcode: rlig.
+ Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers those ligatures, which the script determines as required to be used in normal conditions.
+ This feature is important for some scripts to insure correct glyph formation.
+
+
+
+
+ Rakar Forms. Shortcode: rkrf.
+ Produces conjoined forms for consonants with rakar in Devanagari and Gujarati scripts.
+
+
+
+
+ Reph Form. Shortcode: rphf.
+ Substitutes the Reph form for a consonant and halant sequence.
+
+
+
+
+ Right Bounds. Shortcode: rtbd.
+ Aligns glyphs by their apparent right extents at the right ends of horizontal lines of text, replacing the default behavior of aligning glyphs by their origins.
+ This feature is called by the Optical Bounds ('opbd') feature.
+
+
+
+
+ Right-to-left alternates. Shortcode: rtla.
+ This feature applies glyphic variants (other than mirrored forms) appropriate for right-to-left text. (For mirrored forms, see 'rtlm'.)
+
+
+
+
+ Right-to-left mirrored forms. Shortcode: rtlm.
+ This feature applies mirrored forms appropriate for right-to-left text other than for those characters that would be covered by the character-level mirroring step performed by an OpenType layout engine.
+ (For right-to-left glyph alternates, see 'rtla'.)
+
+
+
+
+ Ruby Notation Forms. Shortcode: ruby.
+ Japanese typesetting often uses smaller kana glyphs, generally in superscripted form, to clarify the meaning of kanji which may be unfamiliar to the reader.
+ These are called “ruby”, from the old typesetting term for four-point-sized type. This feature identifies glyphs in the font which have been designed for this use,
+ substituting them for the default designs.
+
+
+
+
+ Required Variation Alternates. Shortcode: rvrn.
+ his feature is used in fonts that support OpenType Font Variations in order to select alternate glyphs for particular variation instances.
+
+
+
+
+ Stylistic Alternates. Shortcode: salt.
+ Many fonts contain alternate glyph designs for a purely esthetic effect; these don’t always fit into a clear category like swash or historical.
+ As in the case of swash glyphs, there may be more than one alternate form. This feature replaces the default forms with the stylistic alternates.
+
+
+
+
+ Scientific Inferiors. Shortcode: sinf.
+ Replaces lining or oldstyle figures with inferior figures (smaller glyphs which sit lower than the standard baseline, primarily for chemical or mathematical notation).
+ May also replace lowercase characters with alphabetic inferiors.
+
+
+
+
+ Optical size. Shortcode: size.
+ This feature stores two kinds of information about the optical size of the font: design size
+ (the point size for which the font is optimized) and size range (the range of point sizes which the font can serve well),
+ as well as other information which helps applications use the size range. The design size is useful for determining proper tracking behavior.
+ The size range is useful in families which have fonts covering several ranges. Additional values serve to identify the set of fonts which share related size ranges,
+ and to identify their shared name. Note that sizes refer to nominal final output size, and are independent of viewing magnification or resolution.
+
+
+
+
+ Small Capitals. Shortcode: smcp.
+ This feature turns lowercase characters into small capitals. This corresponds to the common SC font layout. It is generally used for display lines set in Large and small caps, such as titles.
+ Forms related to small capitals, such as oldstyle figures, may be included.
+
+
+
+
+ Simplified Forms. Shortcode: smpl.
+ Replaces “traditional” Chinese or Japanese forms with the corresponding “simplified” forms.
+
+
+
+
+ Math script style alternates. Shortcode: ssty.
+ This feature provides glyph variants adjusted to be more suitable for use in subscripts and superscripts.
+
+
+
+
+ Stretching Glyph Decomposition. Shortcode: stch.
+ Unicode characters, such as the Syriac Abbreviation Mark (U+070F), that enclose other characters need to be able
+ to stretch in order to dynamically adapt to the width of the enclosed text. This feature defines a decomposition set
+ consisting of an odd number of glyphs which describe the stretching glyph. The odd numbered glyphs in the decomposition are
+ fixed reference points which are distributed evenly from the start to the end of the enclosed text. The even numbered glyphs may
+ be repeated as necessary to fill the space between the fixed glyphs. The first and last glyphs may either be simple glyphs with width at the baseline,
+ or mark glyphs. All other decomposition glyphs should have width, but must be defined as mark glyphs.
+
+
+
+
+ Subscript. Shortcode: subs.
+ The 'subs' feature may replace a default glyph with a subscript glyph, or it may combine a glyph substitution with positioning adjustments for proper placement.
+
+
+
+
+ Superscript. Shortcode: sups.
+ Replaces lining or oldstyle figures with superior figures (primarily for footnote indication), and replaces lowercase letters with superior letters (primarily for abbreviated French titles).
+
+
+
+
+ Swash. Shortcode: swsh.
+ This feature replaces default character glyphs with corresponding swash glyphs. Note that there may be more than one swash alternate for a given character.
+
+
+
+
+ Titling. Shortcode: titl.
+ This feature replaces the default glyphs with corresponding forms designed specifically for titling.
+ These may be all-capital and/or larger on the body, and adjusted for viewing at larger sizes.
+
+
+
+
+ Trailing Jamo Forms. Shortcode: tjmo.
+ Substitutes the trailing jamo form of a cluster.
+
+
+
+
+ Traditional Name Forms. Shortcode: tnam.
+ Replaces “simplified” Japanese kanji forms with the corresponding “traditional” forms. This is equivalent to the Traditional Forms feature,
+ but explicitly limited to the traditional forms considered proper for use in personal names (as many as 205 glyphs in some fonts).
+
+
+
+
+ Tabular Figures. Shortcode: tnum.
+ Replaces figure glyphs set on proportional widths with corresponding glyphs set on uniform (tabular) widths.
+ Tabular widths will generally be the default, but this cannot be safely assumed. Of course this feature would not be present in monospaced designs.
+
+
+
+
+ Traditional Forms. Shortcode: trad.
+ Replaces 'simplified' Chinese hanzi or Japanese kanji forms with the corresponding 'traditional' forms.
+
+
+
+
+ Third Widths. Shortcode: twid.
+ Replaces glyphs on other widths with glyphs set on widths of one third of an em. The characters involved are normally figures and some forms of punctuation.
+
+
+
+
+ Unicase. Shortcode: unic.
+ This feature maps upper- and lowercase letters to a mixed set of lowercase and small capital forms, resulting in a single case alphabet
+ (for an example of unicase, see the Emigre type family Filosofia). The letters substituted may vary from font to font, as appropriate to the design.
+ If aligning to the x-height, smallcap glyphs may be substituted, or specially designed unicase forms might be used. Substitutions might also include specially designed figures.
+
+
+
+
+ Alternate Vertical Metrics. Shortcode: valt.
+ Repositions glyphs to visually center them within full-height metrics, for use in vertical setting. Typically applies to full-width Latin glyphs,
+ which are aligned on a common horizontal baseline and not rotated when set vertically in CJKV fonts.
+
+
+
+
+ Vattu Variants. Shortcode: vatu.
+ In an Indic consonant conjunct, substitutes a ligature glyph for a base consonant and a following vattu (below-base) form of a conjoining consonant, or for a half form of a consonant and a following vattu form.
+
+
+
+
+ Vertical Alternates. Shortcode: vert.
+ Transforms default glyphs into glyphs that are appropriate for upright presentation in vertical writing mode.While the glyphs for most
+ characters in East Asian writing systems remain upright when set in vertical writing mode, some must be transformed —
+ usually by rotation, shifting, or different component ordering — for vertical writing mode.
+
+
+
+
+ Alternate Vertical Half Metrics. Shortcode: vhal.
+ Respaces glyphs designed to be set on full-em heights, fitting them onto half-em heights.
+
+
+
+
+ Vowel Jamo Forms. Shortcode: vjmo.
+ Substitutes the vowel jamo form of a cluster.
+
+
+
+
+ Vertical Kana Alternates. Shortcode: vkna.
+ Replaces standard kana with forms that have been specially designed for only vertical writing. This is a typographic optimization for improved fit and more even color. Also see 'hkna'.
+
+
+
+
+ Vertical Kerning. Shortcode: vkrn
+ Adjusts amount of space between glyphs, generally to provide optically consistent spacing between glyphs.
+ Although a well-designed typeface has consistent inter-glyph spacing overall, some glyph combinations require adjustment for improved legibility.
+ Besides standard adjustment in the vertical direction, this feature can supply size-dependent kerning data via device tables,
+ “cross-stream” kerning in the X text direction, and adjustment of glyph placement independent of the advance adjustment.
+ Note that this feature may apply to runs of more than two glyphs, and would not be used in monospaced fonts. Also note that this feature applies only to text set vertically.
+
+
+
+
+ Proportional Alternate Vertical Metrics. Shortcode: vpal.
+ Respaces glyphs designed to be set on full-em heights, fitting them onto individual (more or less proportional) vertical heights. This differs from 'valt' in that it does not substitute new glyphs (GPOS, not GSUB feature).
+ The user may prefer the monospaced form, or may simply want to ensure that the glyph is well-fit.
+
+
+
+
+ Vertical Alternates and Rotation. Shortcode: vrt2.
+ Replaces some fixed-width (half-, third- or quarter-width) or proportional-width glyphs (mostly Latin or katakana) with forms suitable for vertical writing (that is, rotated 90 degrees clockwise).
+ Note that these are a superset of the glyphs covered in the 'vert' table.
+
+
+
+
+ Vertical Alternates for Rotation. Shortcode: vrtr.
+ Transforms default glyphs into glyphs that are appropriate for sideways presentation in vertical writing mode.
+ While the glyphs for most characters in East Asian writing systems remain upright when set in vertical writing mode, glyphs for other characters —
+ such as those of other scripts or for particular Western-style punctuation — are expected to be presented sideways in vertical writing.
+
+
+
+
+ Slashed Zero. Shortcode: zero.
+ Some fonts contain both a default form of zero, and an alternative form which uses a diagonal slash through the counter. Especially in condensed designs, it can be difficult to distinguish between 0 and O (zero and capital O) in any situation where capitals and lining figures may be arbitrarily mixed.
+ This feature allows the user to change from the default 0 to a slashed form.
+
+
+
+
+ The GSUB and GPOS tables use the Glyph Class Definition table (GlyphClassDef) to identify which glyph classes to adjust with lookups.
+
+
+
+
+
+ Base glyph (single character, spacing glyph).
+
+
+
+
+ Ligature glyph (multiple character, spacing glyph).
+
+
+
+
+ Mark glyph (non-spacing combining glyph).
+
+
+
+
+ Component glyph (part of single character, spacing glyph).
+
+
+
+
+ The GDEF table contains three kinds of information in subtables:
+ 1. glyph class definitions that classify different types of glyphs in a font;
+ 2. attachment point lists that identify glyph positioning attachments for each glyph;
+ and 3. ligature caret lists that provide information for caret positioning and text selection involving ligatures.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The horizontal value, in design units.
+ The vertical value, in design units.
+
+
+
+ Gets the horizontal value, in design units.
+
+
+
+
+ Gets the vertical value, in design units.
+
+
+
+
+ Loads the anchor table.
+
+ The big endian binary reader.
+ The offset to the beginning of the anchor table.
+ The anchor table.
+
+
+
+ Represents the anchor coordinates for a given table.
+
+
+
+
+ Gets the horizontal value, in design units.
+
+
+
+
+ Gets the vertical value, in design units.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The big endian binary reader.
+ The offset to the beginning of the base array table.
+ The class count.
+
+
+
+ Gets the base records.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The big endian binary reader.
+ The class count.
+ Offset to the from beginning of BaseArray table.
+
+
+
+ Gets the base anchor tables.
+
+
+
+
+ Class2Record used in Pair Adjustment Positioning Format 2.
+ A Class2Record consists of two ValueRecords, one for the first glyph in a class pair (valueRecord1) and one for the second glyph (valueRecord2).
+ Note that both fields of a Class2Record are optional: If the PairPos subtable has a value of zero (0) for valueFormat1 or valueFormat2,
+ then the corresponding record (valueRecord1 or valueRecord2) will be empty — that is, not present.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The big endian binary reader.
+ The value format for value record 1.
+ The value format for value record 2.
+
+
+
+ Gets the positioning for the first glyph.
+
+
+
+
+ Gets the positioning for second glyph.
+
+
+
+
+ In a ComponentRecord, the zero-based ligatureAnchorOffsets array lists offsets to Anchor tables by mark class.
+ If a component does not define an attachment point for a particular class of marks, then the offset to the corresponding Anchor table will be NULL.
+ Example 8 at the end of this chapter shows a MarkLigPosFormat1 subtable used to attach mark accents to a ligature glyph in the Arabic script.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The big endian binary reader.
+ Number of defined mark classes.
+ Offset from beginning of LigatureAttach table.
+
+
+
+ Initializes a new instance of the class.
+
+ The big endian binary reader.
+ The offset to exitAnchor table, from beginning of CursivePos subtable.
+ Offsets to entry and exit Anchor table, from beginning of CursivePos subtable.
+
+
+
+ Gets the entry anchor table.
+
+
+
+
+ Gets the exit anchor table.
+
+
+
+
+ EntryExitRecord sued in Cursive Attachment Positioning Format1.
+ Each EntryExitRecord consists of two offsets: one to an Anchor table that identifies the entry point on the glyph (entryAnchorOffset),
+ and an offset to an Anchor table that identifies the exit point on the glyph (exitAnchorOffset).
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The big endian binary reader.
+ The offset to exitAnchor table, from beginning of CursivePos subtable.
+
+
+
+ Gets the offset to entryAnchor table, from beginning of CursivePos subtable.
+
+
+
+
+ Gets the offset to exitAnchor table, from beginning of CursivePos subtable.
+
+
+
+
+ The LigatureArray table contains a count (ligatureCount) and an array of offsets (ligatureAttachOffsets) to LigatureAttach tables.
+ The ligatureAttachOffsets array lists the offsets to LigatureAttach tables, one for each ligature glyph listed in the ligatureCoverage table,
+ in the same order as the ligatureCoverage index.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The big endian binary reader.
+ The offset to the start of the ligature array table.
+ Number of defined mark classes.
+
+
+
+ Each LigatureAttach table consists of an array (componentRecords) and count (componentCount) of the component glyphs in a ligature.
+ The array stores the ComponentRecords in the same order as the components in the ligature.
+ The order of the records also corresponds to the writing direction — that is, the logical direction — of the text.
+ For text written left to right, the first component is on the left; for text written right to left, the first component is on the right.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The big endian binary reader.
+ Number of defined mark classes.
+ Offset from beginning of LigatureAttach table.
+
+
+
+ The headers of the GSUB and GPOS tables contain offsets to Lookup List tables (LookupList) for
+ glyph substitution (GSUB table) and glyph positioning (GPOS table). The LookupList table contains
+ an array of offsets to Lookup tables (lookupOffsets).
+
+
+
+
+
+ A Lookup table (Lookup) defines the specific conditions, type, and results of a substitution
+ or positioning action that is used to implement a feature. For example, a substitution
+ operation requires a list of target glyph indices to be replaced, a list of replacement glyph
+ indices, and a description of the type of substitution action.
+
+
+
+
+
+ A single adjustment positioning subtable (SinglePos) is used to adjust the placement or advance of a single glyph,
+ such as a subscript or superscript. In addition, a SinglePos subtable is commonly used to implement lookup data for contextual positioning.
+ A SinglePos subtable will have one of two formats: one that applies the same adjustment to a series of glyphs(Format 1),
+ and one that applies a different adjustment for each unique glyph(Format 2).
+
+
+
+
+
+ A pair adjustment positioning subtable (PairPos) is used to adjust the placement or advances of two glyphs in relation to one another —
+ for instance, to specify kerning data for pairs of glyphs. Compared to a typical kerning table, however,
+ a PairPos subtable offers more flexibility and precise control over glyph positioning.
+ The PairPos subtable can adjust each glyph in a pair independently in both the X and Y directions,
+ and it can explicitly describe the particular type of adjustment applied to each glyph.
+ PairPos subtables can be either of two formats: one that identifies glyphs individually by index(Format 1), and one that identifies glyphs by class (Format 2).
+
+
+
+
+
+ Cursive Attachment Positioning Subtable.
+ Some cursive fonts are designed so that adjacent glyphs join when rendered with their default positioning.
+ However, if positioning adjustments are needed to join the glyphs, a cursive attachment positioning (CursivePos) subtable can describe
+ how to connect the glyphs by aligning two anchor points: the designated exit point of a glyph, and the designated entry point of the following glyph.
+
+
+
+
+
+ Mark-to-Base Attachment Positioning Subtable. The MarkToBase attachment (MarkBasePos) subtable is used to position combining mark glyphs with respect to base glyphs.
+ For example, the Arabic, Hebrew, and Thai scripts combine vowels, diacritical marks, and tone marks with base glyphs.
+
+
+
+
+
+ Mark-to-Ligature Attachment Positioning Subtable.
+ The MarkToLigature attachment (MarkLigPos) subtable is used to position combining mark glyphs with respect to ligature base glyphs.
+ With MarkToBase attachment, described previously, each base glyph has an attachment point defined for each class of marks.
+ MarkToLigature attachment is similar, except that each ligature glyph is defined to have multiple components (in a virtual sense — not actual glyphs),
+ and each component has a separate set of attachment points defined for the different mark classes.
+
+
+
+
+
+ Lookup Type 6: Mark-to-Mark Attachment Positioning Subtable.
+ The MarkToMark attachment (MarkMarkPos) subtable is identical in form to the MarkToBase attachment subtable, although its function is different.
+ MarkToMark attachment defines the position of one mark relative to another mark as when, for example,
+ positioning tone marks with respect to vowel diacritical marks in Vietnamese.
+
+
+
+
+
+ Lookup Type 7: Contextual Positioning Subtables.
+ A Contextual Positioning subtable describes glyph positioning in context so a text-processing client can adjust the position
+ of one or more glyphs within a certain pattern of glyphs.
+
+
+
+
+
+ LookupType 8: Chained Contexts Positioning Subtable.
+ A Chained Contexts Positioning subtable describes glyph positioning in context with an ability to look back and/or look ahead in the sequence of glyphs.
+ The design of the Chained Contexts Positioning subtable is parallel to that of the Contextual Positioning subtable, including the availability of three formats.
+ Each format can describe one or more chained backtrack, input, and lookahead sequence combinations, and one or more positioning adjustments for glyphs in each input sequence.
+
+
+
+
+
+ This lookup provides a mechanism whereby any other lookup type’s subtables are stored at a 32-bit offset location in the GPOS table.
+ This is needed if the total size of the subtables exceeds the 16-bit limits of the various other offsets in the GPOS table.
+ In this specification, the subtable stored at the 32-bit offset location is termed the “extension” subtable.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The big endian binary reader.
+ The number of mark classes.
+ The offset to the start of the mark array table.
+
+
+
+ A Mark2Record declares one Anchor table for each mark class (including Class 0) identified in the MarkRecords of the MarkArray.
+ Each Anchor table specifies one mark2 attachment point used to attach all the mark1 glyphs in a particular class to the mark2 glyph.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The big endian binary reader.
+ The Number of Mark2 records.
+ Offset to the beginning of MarkArray table.
+
+
+
+ Gets the mark anchor table.
+
+
+
+
+ The MarkArray table defines the class and the anchor point for a mark glyph.
+ Three GPOS subtable types — MarkToBase attachment, MarkToLigature attachment,
+ and MarkToMark attachment — use the MarkArray table to specify data for attaching marks.
+ The MarkArray table contains a count of the number of MarkRecords(markCount) and an array of those records(markRecords).
+ Each mark record defines the class of the mark and an offset to the Anchor table that contains data for the mark.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The big endian binary reader.
+ The offset to the start of the mark array table.
+
+
+
+ Gets the mark records.
+
+
+
+
+ Defines a mark record used in a mark array table:
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The big endian binary reader.
+ Offset to the beginning of MarkArray table.
+
+
+
+ Gets the class defined for the associated mark.
+
+
+
+
+ Gets the mark anchor table.
+
+
+
+
+ PairValueRecords are used in pair adjustment positioning subtables to adjust the placement or advances of two glyphs in relation to one another.
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The big endian binary reader.
+ The types of data in valueRecord1 — for the first glyph in the pair (may be zero).
+ The types of data in valueRecord2 — for the first glyph in the pair (may be zero).
+
+
+
+ Gets the second glyph ID.
+
+
+
+
+ Gets the Positioning data for the first glyph in the pair.
+
+
+
+
+ Gets the Positioning data for the second glyph in the pair.
+
+
+
+
+ A ValueFormat flags field defines the types of positioning adjustment data that ValueRecords specify.
+
+
+
+
+
+ GPOS subtables use ValueRecords to describe all the variables and values used to adjust the position
+ of a glyph or set of glyphs. A ValueRecord may define any combination of X and Y values (in design units)
+ to add to (positive values) or subtract from (negative values) the placement and advance values provided in the font.
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The big endian binary reader.
+ Defines the types of data in the ValueRecord.
+
+
+
+ The Glyph Positioning table (GPOS) provides precise control over glyph placement for
+ sophisticated text layout and rendering in each script and language system that a font supports.
+
+
+
+
+
+ The headers of the GSUB and GPOS tables contain offsets to Lookup List tables (LookupList) for
+ glyph substitution (GSUB table) and glyph positioning (GPOS table). The LookupList table contains
+ an array of offsets to Lookup tables (lookupOffsets).
+
+
+
+
+
+ A Lookup table (Lookup) defines the specific conditions, type, and results of a substitution
+ or positioning action that is used to implement a feature. For example, a substitution
+ operation requires a list of target glyph indices to be replaced, a list of replacement glyph
+ indices, and a description of the type of substitution action.
+
+
+
+
+
+ Single substitution (SingleSubst) subtables tell a client to replace a single glyph with another glyph.
+ The subtables can be either of two formats. Both formats require two distinct sets of glyph indices:
+ one that defines input glyphs (specified in the Coverage table), and one that defines the output glyphs.
+ Format 1 requires less space than Format 2, but it is less flexible.
+
+
+
+
+
+ A Multiple Substitution (MultipleSubst) subtable replaces a single glyph with more than one glyph,
+ as when multiple glyphs replace a single ligature. The subtable has a single format: MultipleSubstFormat1.
+
+
+
+
+
+ An Alternate Substitution (AlternateSubst) subtable identifies any number of aesthetic alternatives
+ from which a user can choose a glyph variant to replace the input glyph.
+
+
+
+
+
+ A Ligature Substitution (LigatureSubst) subtable identifies ligature substitutions where a single glyph replaces multiple glyphs.
+ One LigatureSubst subtable can specify any number of ligature substitutions.
+ The subtable has one format: LigatureSubstFormat1.
+
+
+
+
+
+ A Contextual Substitution subtable describes glyph substitutions in context that replace one
+ or more glyphs within a certain pattern of glyphs.
+
+
+
+
+
+ A Chained Contexts Substitution subtable describes glyph substitutions in context
+ with an ability to look back and/or look ahead in the sequence of glyphs.
+
+
+
+
+
+ This lookup provides a mechanism whereby any other lookup type’s subtables are stored at a 32-bit offset location
+ in the GSUB table. This is needed if the total size of the subtables exceeds the 16-bit limits of the various
+ other offsets in the GSUB table. In this specification, the subtable stored at the 32-bit offset location is
+ termed the "extension" subtable.
+
+
+
+
+
+ An Alternate Substitution (AlternateSubst) subtable identifies any number of aesthetic alternatives
+ from which a user can choose a glyph variant to replace the input glyph.
+
+
+
+
+
+ The Glyph Substitution (GSUB) table provides data for substitution of glyphs for appropriate rendering of scripts,
+ such as cursively-connecting forms in Arabic script, or for advanced typographic effects, such as ligatures.
+
+
+
+
+
+ LookupFlag bit enumeration, see: https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#lookup-table
+
+
+
+
+ This bit relates only to the correct processing of the cursive attachment lookup type (GPOS lookup type 3).
+ When this bit is set, the last glyph in a given sequence to which the cursive attachment lookup is applied, will be positioned on the baseline.
+
+
+
+
+ If set, skips over base glyphs.
+
+
+
+
+ If set, skips over ligatures.
+
+
+
+
+ If set, skips over all combining marks.
+
+
+
+
+ If set, indicates that the lookup table structure is followed by a MarkFilteringSet field.
+ The layout engine skips over all mark glyphs not in the mark filtering set indicated.
+
+
+
+
+ For future use (Set to zero).
+
+
+
+
+ If not zero, skips over all marks of attachment type different from specified.
+
+
+
+
+ Provides enumeration determining when to zero mark advances.
+
+
+
+
+ OpenType Layout fonts may contain one or more groups of glyphs used to render various scripts,
+ which are enumerated in a ScriptList table. Both the GSUB and GPOS tables define
+ Script List tables (ScriptList):
+
+
+
+
+
+ For all formats for both contextual and chained contextual lookups, a common record format
+ is used to specify an action—a nested lookup—to be applied to a glyph at a particular
+ sequence position within the input sequence.
+
+
+
+
+
+ This is a shaper for Arabic, and other cursive scripts.
+ The shaping state machine was ported from fontkit.
+
+
+
+
+
+
+
+
+
+
+
+ Assigns the features to each glyph within the collection.
+
+ The glyph shaping collection.
+ The zero-based index of the elements to assign.
+ The number of elements to assign.
+
+
+
+ Assigns the features to each glyph within the collection.
+
+ The glyph shaping collection.
+ The zero-based index of the elements to assign.
+ The number of elements to assign.
+
+
+
+ Assigns the preprocessing features to each glyph within the collection.
+
+ The glyph shaping collection.
+ The zero-based index of the elements to assign.
+ The number of elements to assign.
+
+
+
+ Assigns the postprocessing features to each glyph within the collection.
+
+ The glyph shaping collection.
+ The zero-based index of the elements to assign.
+ The number of elements to assign.
+
+
+
+ Assigns the shaper specific substitution features to each glyph within the collection.
+
+ The glyph shaping collection.
+ The zero-based index of the elements to assign.
+ The number of elements to assign.
+
+
+
+ Default shaper, which will be applied to all glyphs.
+ Based on fontkit:
+
+
+
+
+
+
+
+ This is a shaper for the Hangul script, used by the Korean language.
+ The shaping state machine was ported from fontkit.
+
+
+
+
+
+
+
+
+
+
+
+ The IndicShaper supports Indic scripts e.g. Devanagari, Kannada, etc.
+
+
+
+
+ Creates a Shaper based on the given script language.
+
+ The script language.
+ The unicode script tag found in the font matching the script.
+ The text options.
+ A shaper for the given script.
+
+
+
+ An individual shaping stage.
+ Each stage must have a feature tag but can also contain pre and post feature processing operations.
+
+
+ For comparison purposes we only care about the feature tag as we want to avoid duplication.
+
+
+
+
+ This shaper is an implementation of the Universal Shaping Engine, which
+ uses Unicode data to shape a number of scripts without a dedicated shaping engine.
+ .
+
+
+
+
+
+
+
+
+
+
+ Data type for tag identifiers. Tags are four byte integers, each byte representing a character.
+ Tags are used to identify tables, design-variation axes, scripts, languages, font features, and baselines with
+ human-readable names.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The tag value.
+
+
+
+ Gets the Tag value as 32 bit unsigned integer.
+
+
+
+
+ Converts the string representation of a number to its Tag equivalent.
+
+ A string containing a tag to convert.
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides a map from Unicode to OTF .
+
+
+
+
+
+ Prevents a default instance of the class from being created.
+
+
+
+
+ Decodes the commands and numbers making up a Type 2 CharString. A Type 2 CharString extends on the Type 1 CharString format.
+ Compared to the Type 1 format, the Type 2 encoding offers smaller size and an opportunity for better rendering quality and
+ performance. The Type 2 charstring operators are (with one exception) a superset of the Type 1 operators.
+
+
+ A Type 2 charstring program is a sequence of unsigned 8-bit bytes that encode numbers and operators.
+ The byte value specifies a operator, a number, or subsequent bytes that are to be interpreted in a specific manner
+
+
+
+
+ Represents a glyph metric from a particular Compact Font Face.
+
+
+
+
+
+
+
+
+
+
+ The starting offset
+
+
+
+
+ The length
+
+
+
+
+ Parses a Compact Font Format (CFF) font program as described in The Compact Font Format specification (Adobe Technical Note #5176).
+ A CFF font may contain multiple fonts and achieves compression by sharing details between fonts in the set.
+
+
+
+
+ Latin 1 Encoding: ISO 8859-1 is a single-byte encoding that can represent the first 256 Unicode characters.
+
+
+
+
+ Appendix A: Standard Strings
+
+
+
+
+ Gets or sets the fd select map, which maps glyph # to font #.
+
+
+
+
+ Represents an element in an font dictionary array.
+
+
+
+
+ Gets the first glyph index in range
+
+
+
+
+ Gets the font dictionary index for all glyphs in range
+
+
+
+
+ Defines a common interface for CFF1 and CFF2 tables.
+
+
+
+
+ Gets the number of glyphs in the table.
+
+
+
+
+ Gets the glyph data at the given index.
+
+ The glyph index.
+ The .
+
+
+
+ A ref struct stack implementation that uses a pooled span to store the data.
+
+ The type of elements in the stack.
+
+
+
+ Adds an item to the stack.
+
+ The item to add.
+
+
+
+ Removes the first element of the stack.
+
+ The element.
+
+
+
+ Removes the last element of the stack.
+
+ The element.
+
+
+
+ Clears the current stack.
+
+
+
+
+ Used to apply a transform against any glyphs rendered by the engine.
+
+
+
+
+ Subtable format 14 specifies the Unicode Variation Sequences (UVSes) supported by the font.
+ A Variation Sequence, according to the Unicode Standard, comprises a base character followed
+ by a variation selector. For example, <U+82A6, U+E0101>.
+
+
+
+
+ Gets the unicode codepoints for which a glyph exists in the font.
+
+ The .
+
+
+
+ Gets the name of the font.
+
+
+ The name of the font.
+
+
+
+
+ Gets the name of the font.
+
+
+ The name of the font.
+
+
+
+
+ Gets the name of the font.
+
+
+ The name of the font.
+
+
+
+
+ Gets the name of the font.
+
+
+ The name of the font.
+
+
+
+
+ Defines the contract for shared font tables
+
+
+
+
+
+ woff font table format.
+
+
+
+
+ woff2 font table format.
+
+
+
+
+ otf font table format.
+
+
+
+
+ Represents a true type glyph control point.
+
+
+
+
+ Gets or sets the position of the point.
+
+
+
+
+ Gets or sets a value indicating whether the point is on a curve.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The position.
+ Whether the point is on a curve.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents the raw glyph outlines for a given glyph comprised of a collection of glyph table entries.
+ The type is mutable by design to reduce copying during transformation.
+
+
+
+
+ Transforms a glyph vector by a specified 3x2 matrix.
+
+ The glyph vector to transform.
+ The transformation matrix.
+
+
+
+ Applies True Type hinting to the specified glyph vector.
+
+ The hinting mode.
+ The glyph vector to hint.
+ The True Type interpreter.
+ The first phantom point.
+ The second phantom point.
+ The third phantom point.
+ The fourth phantom point.
+
+
+
+ Creates a new glyph vector that is a deep copy of the specified instance.
+
+ The source glyph vector to copy.
+ The cloned .
+
+
+
+ Returns a value indicating whether the current instance is empty.
+
+ The indicating the result.
+
+
+
+ Code adapted from
+ For further information
+
+
+
+
+
+
+
+ Represents a glyph metric from a particular TrueType font face.
+
+
+
+
+
+
+
+ Gets the outline for the current glyph.
+
+ The .
+
+
+
+
+
+
+ Represents a font collection header (for .ttc font collections).
+ A font collection contains one or more fonts where typically the glyf table is shared by multiple fonts to save space,
+ but other tables are not.
+ Each font in the collection has its own set of tables.
+
+
+
+
+ Gets the tag, should be "ttcf".
+
+
+
+
+ Gets the array of offsets to the OffsetTable of each font. Use for each font.
+
+
+
+
+ Reads the UIntBase128 Data Type.
+
+ The binary reader using big endian encoding.
+ The result as uint.
+ true, if succeeded.
+
+
+
+ Reads the UIntBase255 Data Type.
+
+ The binary reader using big endian encoding.
+ The UIntBase255 result.
+
+
+
+ Text alignment modes.
+
+
+
+
+ Aligns text from the left or top when the text direction is
+ and from the right or bottom when the text direction is .
+
+
+
+
+ Aligns text from the right or bottom when the text direction is
+ and from the left or top when the text direction is .
+
+
+
+
+ Aligns text from the center.
+
+
+
+
+ Provides enumeration of various text attributes.
+
+
+
+
+ No attributes are applied
+
+
+
+
+ The text set slightly below the normal line of type.
+
+
+
+
+ The text set slightly above the normal line of type.
+
+
+
+
+ Provides enumeration of various text decorations.
+
+
+
+
+ No attributes are applied
+
+
+
+
+ The text is underlined
+
+
+
+
+ The text contains a horizontal line through the center.
+
+
+
+
+ The text contains a horizontal line above it
+
+
+
+
+ Specifies the writing direction for text.
+
+
+
+
+ Left to right.
+
+
+
+
+ Right to left.
+
+
+
+
+ Automatically determined.
+
+
+
+
+ Text justification modes.
+
+
+
+
+ No justification
+
+
+
+
+ The text is justified by adding space between words (effectively varying word-spacing),
+ which is most appropriate for languages that separate words using spaces, like English or Korean.
+
+
+
+
+ The text is justified by adding space between characters (effectively varying letter-spacing),
+ which is most appropriate for languages like Japanese.
+
+
+
+
+ Encapsulated logic or laying out text.
+
+
+
+
+ Reorders a series of runs from logical to visual order, returning the left most run.
+
+
+ The ordered bidi run.
+ The .
+
+
+
+ Encapsulated logic for laying out and then measuring text properties.
+
+
+
+
+ Measures the advance (line-height and horizontal/vertical advance) of the text in pixel units.
+
+ The text.
+ The text shaping options.
+ The advance of the text if it was to be rendered.
+
+
+
+ Measures the advance (line-height and horizontal/vertical advance) of the text in pixel units.
+
+ The text.
+ The text shaping options.
+ The advance of the text if it was to be rendered.
+
+
+
+ Measures the minimum size required, in pixel units, to render the text.
+
+ The text.
+ The text shaping options.
+ The size of the text if it was to be rendered.
+
+
+
+ Measures the minimum size required, in pixel units, to render the text.
+
+ The text.
+ The text shaping options.
+ The size of the text if it was to be rendered.
+
+
+
+ Measures the text bounds in sub-pixel units.
+
+ The text.
+ The text shaping options.
+ The bounds of the text if it was to be rendered.
+
+
+
+ Measures the text bounds in sub-pixel units.
+
+ The text.
+ The text shaping options.
+ The bounds of the text if it was to be rendered.
+
+
+
+ Measures the advance (line-height and horizontal/vertical advance) of each character of the text in pixel units.
+
+ The text.
+ The text shaping options.
+ The list of character advances of the text if it was to be rendered.
+ Whether any of the characters had non-empty advances.
+
+
+
+ Measures the advance (line-height and horizontal/vertical advance) of each character of the text in pixel units.
+
+ The text.
+ The text shaping options.
+ The list of character advances of the text if it was to be rendered.
+ Whether any of the characters had non-empty advances.
+
+
+
+ Measures the minimum size required, in pixel units, to render each character in the text.
+
+ The text.
+ The text shaping options.
+ The list of character dimensions of the text if it was to be rendered.
+ Whether any of the characters had non-empty dimensions.
+
+
+
+ Measures the minimum size required, in pixel units, to render each character in the text.
+
+ The text.
+ The text shaping options.
+ The list of character dimensions of the text if it was to be rendered.
+ Whether any of the characters had non-empty dimensions.
+
+
+
+ Measures the character bounds of the text in sub-pixel units.
+
+ The text.
+ The text shaping options.
+ The list of character bounds of the text if it was to be rendered.
+ Whether any of the characters had non-empty bounds.
+
+
+
+ Measures the character bounds of the text in sub-pixel units.
+
+ The text.
+ The text shaping options.
+ The list of character bounds of the text if it was to be rendered.
+ Whether any of the characters had non-empty bounds.
+
+
+
+ Gets the number of lines contained within the text.
+
+ The text.
+ The text shaping options.
+ The line count.
+
+
+
+ Gets the number of lines contained within the text.
+
+ The text.
+ The text shaping options.
+ The line count.
+
+
+
+ Provides configuration options for rendering and shaping text.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The font.
+
+
+
+ Initializes a new instance of the class from properties
+ copied from the given instance.
+
+ The options whose properties are copied into this instance.
+
+
+
+ Gets or sets the font.
+
+
+
+
+ Gets or sets the collection of fallback font families to use when
+ a specific glyph is missing from .
+
+
+
+
+ Gets or sets the DPI (Dots Per Inch) to render/measure the text at.
+
+ Defaults to 72.
+
+
+
+
+ Gets or sets the width of the tab. Measured as the distance in spaces (U+0020).
+
+
+ If value is -1 then the font default tab width is used.
+
+
+
+
+ Gets or sets a value indicating whether to apply hinting - The use of mathematical instructions
+ to adjust the display of an outline font so that it lines up with a rasterized grid.
+
+
+
+
+ Gets or sets the line spacing. Applied as a multiple of the line height.
+
+ Defaults to 1.
+
+
+
+
+ Gets or sets the rendering origin.
+
+
+
+
+ Gets or sets the length in pixel units (px) at which text will automatically wrap onto a new line.
+ This property also affects the width or height (depending on the ) of the text box
+ for alignment of text.
+
+
+ If value is -1 then wrapping is disabled.
+
+
+
+
+ Gets or sets the word breaking mode to use when wrapping text.
+
+
+
+
+ Gets or sets the text direction.
+
+
+
+
+ Gets or sets the text alignment of the text within the box.
+
+
+
+
+ Gets or sets the justification of the text within the box.
+
+
+
+
+ Gets or sets the horizontal alignment of the text box.
+
+
+
+
+ Gets or sets the vertical alignment of the text box.
+
+
+
+
+ Gets or sets the layout mode for the text lines.
+
+
+
+
+ Gets or sets the kerning mode indicating whether to apply kerning (character spacing adjustments)
+ to the glyph positions from information found within the font.
+
+
+
+
+ Gets or sets a value indicating whether to enable various color font formats.
+
+
+
+
+ Gets or sets the collection of additional feature tags to apply during glyph shaping.
+
+
+
+
+ Gets or sets an optional collection of text runs to apply to the body of text.
+
+
+
+
+ Encapsulated logic for laying out and then rendering text to a surface.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The renderer.
+
+
+
+ Renders the text to the .
+
+ The target renderer.
+ The text to render.
+ The text options.
+
+
+
+ Renders the text to the .
+
+ The target renderer.
+ The text to render.
+ The text option.
+
+
+
+ Renders the text to the default renderer.
+
+ The text to render.
+ The text options.
+
+
+
+ Renders the text to the default renderer.
+
+ The text to render.
+ The style.
+
+
+
+ Represents a run of text spanning a series of graphemes within a string.
+
+
+
+
+ Gets or sets the inclusive start index of the first grapheme in this .
+
+
+
+
+ Gets or sets the exclusive end index of the last grapheme in this .
+
+
+
+
+ Gets or sets the font for this run.
+
+
+
+
+ Gets or sets the text attributes applied to this run.
+
+
+
+
+ Gets or sets the text decorations applied to this run.
+
+
+
+
+ Returns the slice of the given text representing this .
+
+ The text to slice.
+ The .
+
+
+
+
+
+
+ Represents the Unicode Arabic Joining value of a given .
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The codepoint.
+
+
+
+ Gets the Unicode joining type.
+
+
+
+
+ Gets the Unicode joining group.
+
+
+
+
+ Unicode Arabic Joining Groups
+ .
+
+
+
+
+ African_Feh
+
+
+
+
+ African_Noon
+
+
+
+
+ African_Qaf
+
+
+
+
+ Ain
+
+
+
+
+ Alaph
+
+
+
+
+ Alef
+
+
+
+
+ Beh
+
+
+
+
+ Beth
+
+
+
+
+ Burushaski_Yeh_Barree
+
+
+
+
+ Dal
+
+
+
+
+ Dalath_Rish
+
+
+
+
+ E
+
+
+
+
+ Farsi_Yeh
+
+
+
+
+ Fe
+
+
+
+
+ Feh
+
+
+
+
+ Final_Semkath
+
+
+
+
+ Gaf
+
+
+
+
+ Gamal
+
+
+
+
+ Hah
+
+
+
+
+ Hanifi_Rohingya_Kinna_Ya
+
+
+
+
+ Hanifi_Rohingya_Pa
+
+
+
+
+ He
+
+
+
+
+ Heh
+
+
+
+
+ Heh_Goal
+
+
+
+
+ Heth
+
+
+
+
+ Kaf
+
+
+
+
+ Kaph
+
+
+
+
+ Khaph
+
+
+
+
+ Knotted_Heh
+
+
+
+
+ Lam
+
+
+
+
+ Lamadh
+
+
+
+
+ Malayalam_Bha
+
+
+
+
+ Malayalam_Ja
+
+
+
+
+ Malayalam_Lla
+
+
+
+
+ Malayalam_Llla
+
+
+
+
+ Malayalam_Nga
+
+
+
+
+ Malayalam_Nna
+
+
+
+
+ Malayalam_Nnna
+
+
+
+
+ Malayalam_Nya
+
+
+
+
+ Malayalam_Ra
+
+
+
+
+ Malayalam_Ssa
+
+
+
+
+ Malayalam_Tta
+
+
+
+
+ Manichaean_Aleph
+
+
+
+
+ Manichaean_Ayin
+
+
+
+
+ Manichaean_Beth
+
+
+
+
+ Manichaean_Daleth
+
+
+
+
+ Manichaean_Dhamedh
+
+
+
+
+ Manichaean_Five
+
+
+
+
+ Manichaean_Gimel
+
+
+
+
+ Manichaean_Heth
+
+
+
+
+ Manichaean_Hundred
+
+
+
+
+ Manichaean_Kaph
+
+
+
+
+ Manichaean_Lamedh
+
+
+
+
+ Manichaean_Mem
+
+
+
+
+ Manichaean_Nun
+
+
+
+
+ Manichaean_One
+
+
+
+
+ Manichaean_Pe
+
+
+
+
+ Manichaean_Qoph
+
+
+
+
+ Manichaean_Resh
+
+
+
+
+ Manichaean_Sadhe
+
+
+
+
+ Manichaean_Samekh
+
+
+
+
+ Manichaean_Taw
+
+
+
+
+ Manichaean_Ten
+
+
+
+
+ Manichaean_Teth
+
+
+
+
+ Manichaean_Thamedh
+
+
+
+
+ Manichaean_Twenty
+
+
+
+
+ Manichaean_Waw
+
+
+
+
+ Manichaean_Yodh
+
+
+
+
+ Manichaean_Zayin
+
+
+
+
+ Meem
+
+
+
+
+ Mim
+
+
+
+
+ No_Joining_Group
+
+
+
+
+ Noon
+
+
+
+
+ Nun
+
+
+
+
+ Nya
+
+
+
+
+ Pe
+
+
+
+
+ Qaf
+
+
+
+
+ Qaph
+
+
+
+
+ Reh
+
+
+
+
+ Reversed_Pe
+
+
+
+
+ Rohingya_Yeh
+
+
+
+
+ Sad
+
+
+
+
+ Sadhe
+
+
+
+
+ Seen
+
+
+
+
+ Semkath
+
+
+
+
+ Shin
+
+
+
+
+ Straight_Waw
+
+
+
+
+ Swash_Kaf
+
+
+
+
+ Syriac_Waw
+
+
+
+
+ Tah
+
+
+
+
+ Taw
+
+
+
+
+ Teh_Marbuta
+
+
+
+
+ Hamza_On_Heh_Goal
+
+
+
+
+ Teth
+
+
+
+
+ Thin_Yeh
+
+
+
+
+ Vertical_Tail
+
+
+
+
+ Waw
+
+
+
+
+ Yeh
+
+
+
+
+ Yeh_Barree
+
+
+
+
+ Yeh_With_Tail
+
+
+
+
+ Yudh
+
+
+
+
+ Yudh_He
+
+
+
+
+ Zain
+
+
+
+
+ Zhain
+
+
+
+
+ Unicode Arabic Joining Types
+ Table 9-3.
+
+
+
+
+ Right Joining (R)
+
+
+
+
+ Left Joining (L)
+
+
+
+
+ Dual Joining (D)
+
+
+
+
+ Join Causing (C)
+
+
+
+
+ Non Joining (U)
+
+
+
+
+ Transparent (T)
+
+
+
+
+ Implementation of Unicode Bidirection Algorithm (UAX #9)
+ https://unicode.org/reports/tr9/
+
+
+
+ The Bidi algorithm uses a number of memory arrays for resolved
+ types, level information, bracket types, x9 removal maps and
+ more...
+
+
+ This implementation of the Bidi algorithm has been designed
+ to reduce memory pressure on the GC by re-using the same
+ work buffers, so instances of this class should be re-used
+ as much as possible.
+
+
+
+
+
+ The original BidiCharacterType types as provided by the caller
+
+
+
+
+ Paired bracket types as provided by caller
+
+
+
+
+ Paired bracket values as provided by caller
+
+
+
+
+ Try if the incoming data is known to contain brackets
+
+
+
+
+ True if the incoming data is known to contain embedding runs
+
+
+
+
+ True if the incoming data is known to contain isolating runs
+
+
+
+
+ Two directional mapping of isolate start/end pairs
+
+
+ The forward mapping maps the start index to the end index.
+ The reverse mapping maps the end index to the start index.
+
+
+
+
+ The working BidiCharacterType types
+
+
+
+
+ The buffer underlying _workingTypes
+
+
+
+
+ The buffer underlying resolvedLevels
+
+
+
+
+ The resolve paragraph embedding level
+
+
+
+
+ The status stack used during resolution of explicit
+ embedding and isolating runs
+
+
+
+
+ Mapping used to virtually remove characters for rule X9
+
+
+
+
+ Re-usable list of level runs
+
+
+
+
+ Mapping for the current isolating sequence, built
+ by joining level runs from the x9 map.
+
+
+
+
+ A stack of pending isolate openings used by FindIsolatePairs()
+
+
+
+
+ The level of the isolating run currently being processed
+
+
+
+
+ The direction of the isolating run currently being processed
+
+
+
+
+ The length of the isolating run currently being processed
+
+
+
+
+ A mapped slice of the resolved types for the isolating run currently
+ being processed
+
+
+
+
+ A mapped slice of the original types for the isolating run currently
+ being processed
+
+
+
+
+ A mapped slice of the run levels for the isolating run currently
+ being processed
+
+
+
+
+ A mapped slice of the paired bracket types of the isolating
+ run currently being processed
+
+
+
+
+ A mapped slice of the paired bracket values of the isolating
+ run currently being processed
+
+
+
+
+ Maximum pairing depth for paired brackets
+
+
+
+
+ Reusable list of pending opening brackets used by the
+ LocatePairedBrackets method
+
+
+
+
+ Resolved list of paired brackets
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a per-thread instance that can be re-used as often
+ as necessary.
+
+
+
+
+ Gets the resolved levels.
+
+
+
+
+ Gets the resolved paragraph embedding level
+
+
+
+
+ Process data from a BidiData instance
+
+ The Bidi Unicode data.
+
+
+
+ Processes Bidi Data
+
+
+
+
+ Resolve the paragraph embedding level if not explicitly passed
+ by the caller. Also used by rule X5c for FSI isolating sequences.
+
+ The data to be evaluated
+ The resolved embedding level
+
+
+
+ Build a list of matching isolates for a directionality slice
+ Implements BD9
+
+
+
+
+ Resolve the explicit embedding levels from the original
+ data. Implements rules X1 to X8.
+
+
+
+
+ Build a map to the original data positions that excludes all
+ the types defined by rule X9
+
+
+
+
+ Find the original character index for an entry in the X9 map
+
+ Index in the x9 removal map
+ Index to the original data
+
+
+
+ Add a new level run
+
+
+ This method resolves the sos and eos values for the run
+ and adds the run to the list
+ ///
+ The index of the start of the run (in x9 removed units)
+ The length of the run (in x9 removed units)
+ The level of the run
+
+
+
+ Find all runs of the same level, populating the _levelRuns
+ collection
+
+
+
+
+ Given a character index, find the level run that starts at that position
+
+ The index into the original (unmapped) data
+ The index of the run that starts at that index
+
+
+
+ Determine and the process all isolated run sequences
+
+
+
+
+ Process a single isolated run sequence, where the character sequence
+ mapping is currently held in _isolatedRunMapping.
+
+
+
+
+ Locate all pair brackets in the current isolating run
+
+ A sorted list of BracketPairs
+
+
+
+ Inspect a paired bracket set and determine its strong direction
+
+ The paired bracket to be inspected
+ The direction of the bracket set content
+
+
+
+ Look for a strong type before a paired bracket
+
+ The paired bracket set to be inspected
+ The sos in case nothing found before the bracket
+ The strong direction before the brackets
+
+
+
+ Sets the direction of a bracket pair, including setting the direction of
+ NSM's inside the brackets and following.
+
+ The paired brackets
+ The resolved direction for the bracket pair
+
+
+
+ Resets whitespace levels. Implements rule L1
+
+
+
+
+ Assign levels to any characters that would be have been
+ removed by rule X9. The idea is to keep level runs together
+ that would otherwise be broken by an interfering isolate/embedding
+ control character.
+
+
+
+
+ Check if a directionality type represents whitespace
+
+
+
+
+ Convert a level to a direction where odd is RTL and
+ even is LTR
+
+ The level to convert
+ A directionality
+
+
+
+ Helper to check if a directionality is removed by rule X9
+
+ The bidi type to check
+ True if rule X9 would remove this character; otherwise false
+
+
+
+ Check if a a directionality is neutral for rules N1 and N2
+
+
+
+
+ Maps a direction to a strong type for rule N0
+
+ The direction to map
+ A strong direction - R, L or ON
+
+
+
+ Hold the start and end index of a pair of brackets
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Index of the opening bracket
+ Index of the closing bracket
+
+
+
+ Gets the index of the opening bracket
+
+
+
+
+ Gets the index of the closing bracket
+
+
+
+
+ Status stack entry used while resolving explicit
+ embedding levels
+
+
+
+
+ Provides information about a level run - a continuous
+ sequence of equal levels.
+
+
+
+
+ Provides enumeration for the Unicode Bidirectional character types.
+ .
+
+
+
+
+ Left-to-right.
+
+
+
+
+ Right-to-left.
+
+
+
+
+ Arabic Letter.
+
+
+
+
+ European Number
+
+
+
+
+ European Separator
+
+
+
+
+ European Terminator
+
+
+
+
+ Arabic Number.
+
+
+
+
+ Common Separator
+
+
+
+
+ Nonspacing Mark.
+
+
+
+
+ Boundary Neutral.
+
+
+
+
+ Paragraph Separator
+
+
+
+
+ Segment Separator
+
+
+
+
+ White Space.
+
+
+
+
+ Other Neutral.
+
+
+
+
+ Left-to-right Embedding.
+
+
+
+
+ Left-to-right Override
+
+
+
+
+ Right-to-left Embedding
+
+
+
+
+ Right-to-left Override.
+
+
+
+
+ Pop Directional Format
+
+
+
+
+ Left-to-right Isolate
+
+
+
+
+ Right-to-left Isolate.
+
+
+
+
+ First Strong Isolate
+
+
+
+
+ Pop Directional Isolate.
+
+
+
+
+ Represents the Unicode Bidi value of a given .
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The codepoint.
+
+
+
+ Gets the Unicode Bidirectional character type.
+
+
+
+
+ Gets the Unicode Bidirectional paired bracket type.
+
+
+
+
+ Gets the codepoint representing the bracket pairing for this instance.
+
+
+ When this method returns, contains the codepoint representing the bracket pairing for this instance;
+ otherwise, the default value for the type of the parameter.
+ This parameter is passed uninitialized.
+ .
+ if this instance has a bracket pairing; otherwise,
+
+
+
+ Represents a unicode string and all associated attributes
+ for each character required for the Bidi algorithm
+
+
+
+
+ Gets the length of the data held by the BidiData
+
+
+
+
+ Gets the bidi character type of each code point
+
+
+
+
+ Gets the paired bracket type for each code point
+
+
+
+
+ Gets the paired bracket value for code point
+
+
+ The paired bracket values are the code points
+ of each character where the opening code point
+ is replaced with the closing code point for easier
+ matching. Also, bracket code points are mapped
+ to their canonical equivalents
+
+
+
+
+ Initialize with a text value.
+
+ The text to process.
+ The paragraph embedding level
+
+
+
+ Save the Types and PairedBracketTypes of this bididata
+
+
+ This is used when processing embedded style runs with
+ BidiCharacterType overrides. TextLayout saves the data,
+ overrides the style runs to neutral, processes the bidi
+ data for the entire paragraph and then restores this data
+ before processing the embedded runs.
+
+
+
+
+ Restore the data saved by SaveTypes
+
+
+
+
+ Gets a temporary level buffer. Used by TextLayout when
+ resolving style runs with different BidiCharacterType.
+
+ Length of the required ExpandableBuffer
+ An uninitialized level ExpandableBuffer
+
+
+
+ A simple bi-directional dictionary.
+
+ Key type
+ Value type
+
+
+
+ Provides enumeration for classifying characters into opening and closing paired brackets
+ for the purposes of the Unicode Bidirectional Algorithm.
+ .
+
+
+
+
+ None.
+
+
+
+
+ Open.
+
+
+
+
+ Close.
+
+
+
+
+ Represents a Unicode value ([ U+0000..U+10FFFF ], inclusive).
+
+
+ This type's constructors and conversion operators validate the input, so consumers can call the APIs
+ assuming that the underlying instance is well-formed.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The char representing the UTF-16 code unit
+
+ If represents a UTF-16 surrogate code point
+ U+D800..U+DFFF, inclusive.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ A char representing a UTF-16 high surrogate code unit.
+ A char representing a UTF-16 low surrogate code unit.
+
+ If does not represent a UTF-16 high surrogate code unit
+ or does not represent a UTF-16 low surrogate code unit.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The value to create the codepoint.
+
+ If does not represent a value Unicode scalar value.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The value to create the codepoint.
+
+ If does not represent a value Unicode scalar value.
+
+
+
+
+ Gets a value indicating whether this value is ASCII ([ U+0000..U+007F ])
+ and therefore representable by a single UTF-8 code unit.
+
+
+
+
+ Gets a value indicating whether this value is within the BMP ([ U+0000..U+FFFF ])
+ and therefore representable by a single UTF-16 code unit.
+
+
+
+
+ Gets the Unicode plane (0 to 16, inclusive) which contains this scalar.
+
+
+
+
+ Gets the Unicode value as an integer.
+
+
+
+
+ Gets the length in code units () of the
+ UTF-16 sequence required to represent this scalar value.
+
+
+ The return value will be 1 or 2.
+
+
+
+
+ Gets the length in code units of the
+ UTF-8 sequence required to represent this scalar value.
+
+
+ The return value will be 1 through 4, inclusive.
+
+
+
+
+ Gets a instance that represents the Unicode replacement character U+FFFD.
+
+
+
+
+ Returns if is a valid Unicode code
+ point, i.e., is in [ U+0000..U+10FFFF ], inclusive.
+
+ The value to evaluate.
+ if represents a valid codepoint; otherwise,
+
+
+
+ Returns if is a valid Unicode code
+ point, i.e., is in [ U+0000..U+10FFFF ], inclusive.
+
+ The value to evaluate.
+ if represents a valid codepoint; otherwise,
+
+
+
+ Gets a value indicating whether the given codepoint is white space.
+
+ The codepoint to evaluate.
+ if is a whitespace character; otherwise,
+
+
+
+ Gets a value indicating whether the given codepoint is a non-breaking space.
+
+ The codepoint to evaluate.
+ if is a non-breaking space character; otherwise,
+
+
+
+ Gets a value indicating whether the given codepoint is a zero-width-non-joiner.
+
+ The codepoint to evaluate.
+ if is a zero-width-non-joiner character; otherwise,
+
+
+
+ Gets a value indicating whether the given codepoint is a zero-width-joiner.
+
+ The codepoint to evaluate.
+ if is a zero-width-joiner character; otherwise,
+
+
+
+ Gets a value indicating whether the given codepoint is a variation selector.
+
+
+ The codepoint to evaluate.
+ if is a variation selector character; otherwise,
+
+
+
+ Gets a value indicating whether the given codepoint is a control character.
+
+ The codepoint to evaluate.
+ if is a control character; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as a decimal digit.
+
+ The codepoint to evaluate.
+ if is a decimal digit; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as a letter.
+
+ The codepoint to evaluate.
+ if is a letter; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as a letter or decimal digit.
+
+ The codepoint to evaluate.
+ if is a letter or decimal digit; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as a lowercase letter.
+
+ The codepoint to evaluate.
+ if is a lowercase letter; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as a number.
+
+ The codepoint to evaluate.
+ if is a number; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as punctuation.
+
+ The codepoint to evaluate.
+ if is punctuation; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as a separator.
+
+ The codepoint to evaluate.
+ if is a separator; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as a symbol.
+
+ The codepoint to evaluate.
+ if is a symbol; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as a mark.
+
+ The codepoint to evaluate.
+ if is a symbol; otherwise,
+
+
+
+ Returns a value that indicates whether the specified codepoint is categorized as an uppercase letter.
+
+ The codepoint to evaluate.
+ if is a uppercase letter; otherwise,
+
+
+
+ Gets a value indicating whether the given codepoint is a tabulation indicator.
+
+ The codepoint to evaluate.
+ if is a tabulation indicator; otherwise,
+
+
+
+ Gets a value indicating whether the given codepoint is a new line indicator.
+
+ The codepoint to evaluate.
+ if is a new line indicator; otherwise,
+
+
+
+ Returns the number of codepoints in a given string buffer.
+
+ The source buffer to parse.
+ The count.
+
+
+
+ Gets the canonical representation of a given codepoint.
+
+
+ The code point to be mapped.
+ The mapped canonical code point, or the passed .
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Gets the codepoint representing the bidi mirror for this instance.
+
+
+ The code point to be mapped.
+
+ When this method returns, contains the codepoint representing the bidi mirror for this instance;
+ otherwise, the default value for the type of the parameter.
+ This parameter is passed uninitialized.
+ .
+ if this instance has a mirror; otherwise,
+
+
+
+ Gets the codepoint representing the vertical mirror for this instance.
+
+
+ The code point to be mapped.
+
+ When this method returns, contains the codepoint representing the vertical mirror for this instance;
+ otherwise, the default value for the type of the parameter.
+ This parameter is passed uninitialized.
+ .
+ if this instance has a mirror; otherwise,
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Gets the for the given codepoint.
+
+ The codepoint to evaluate.
+ The .
+
+
+
+ Reads the at specified position.
+
+ The text to read from.
+ The index to read at.
+ The count of chars consumed reading the buffer.
+ The .
+
+
+
+ Decodes the from the provided UTF-16 source buffer at the specified position.
+
+ The buffer to read from.
+ The index to read at.
+ The .
+
+
+
+ Decodes the from the provided UTF-16 source buffer at the specified position.
+
+ The buffer to read from.
+ The index to read at.
+ The count of chars consumed reading the buffer.
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns this instance displayed as "'<char>' (U+XXXX)"; e.g., "'e' (U+0065)"
+
+ The .
+
+
+
+ Unicode Grapheme Cluster classes.
+
+
+
+
+
+ This is not a property value; it is used in the rules to represent any code point.
+
+
+
+
+ U+000D CARRIAGE RETURN (CR)
+
+
+
+
+ U+000A LINE FEED (LF)
+
+
+
+
+ General_Category = Line_Separator, or
+ General_Category = Paragraph_Separator, or
+ General_Category = Control, or
+ General_Category = Unassigned and Default_Ignorable_Code_Point, or
+ General_Category = Format
+ and not U+000D CARRIAGE RETURN
+ and not U+000A LINE FEED
+ and not U+200C ZERO WIDTH NON-JOINER (ZWNJ)
+ and not U+200D ZERO WIDTH JOINER (ZWJ)
+ and not Prepended_Concatenation_Mark = Yes
+
+
+
+
+ Grapheme_Extend = Yes, or
+ Emoji_Modifier = Yes
+ This includes:
+ General_Category = Nonspacing_Mark
+ General_Category = Enclosing_Mark
+ U+200C ZERO WIDTH NON-JOINER
+ plus a few General_Category = Spacing_Mark needed for canonical equivalence.
+
+
+
+
+ Regional_Indicator = Yes
+ This consists of the range:
+ U+1F1E6 REGIONAL INDICATOR SYMBOL LETTER A
+ ..U+1F1FF REGIONAL INDICATOR SYMBOL LETTER Z
+
+
+
+
+ Indic_Syllabic_Category = Consonant_Preceding_Repha, or
+ Indic_Syllabic_Category = Consonant_Prefixed, or
+ Prepended_Concatenation_Mark = Yes
+
+
+
+
+ Grapheme_Cluster_Break ≠ Extend, and
+ General_Category = Spacing_Mark, or
+ any of the following (which have General_Category = Other_Letter):
+ U+0E33 ( ำ ) THAI CHARACTER SARA AM
+ U+0EB3 ( ຳ ) LAO VOWEL SIGN AM
+
+
+
+
+ Hangul_Syllable_Type = L, such as:
+ U+1100 ( ᄀ ) HANGUL CHOSEONG KIYEOK
+ U+115F ( ᅟ ) HANGUL CHOSEONG FILLER
+ U+A960 ( ꥠ ) HANGUL CHOSEONG TIKEUT-MIEUM
+ U+A97C ( ꥼ ) HANGUL CHOSEONG SSANGYEORINHIEUH
+
+
+
+
+ Hangul_Syllable_Type=V, such as:
+ U+1160 ( ᅠ ) HANGUL JUNGSEONG FILLER
+ U+11A2 ( ᆢ ) HANGUL JUNGSEONG SSANGARAEA
+ U+D7B0 ( ힰ ) HANGUL JUNGSEONG O-YEO
+ U+D7C6 ( ퟆ ) HANGUL JUNGSEONG ARAEA-E
+
+
+
+
+ Hangul_Syllable_Type = T, such as:
+ U+11A8 ( ᆨ ) HANGUL JONGSEONG KIYEOK
+ U+11F9 ( ᇹ ) HANGUL JONGSEONG YEORINHIEUH
+ U+D7CB ( ퟋ ) HANGUL JONGSEONG NIEUN-RIEUL
+ U+D7FB ( ퟻ ) HANGUL JONGSEONG PHIEUPH-THIEUTH
+
+
+
+
+ Hangul_Syllable_Type=LV, that is:
+ U+AC00 ( 가 ) HANGUL SYLLABLE GA
+ U+AC1C ( 개 ) HANGUL SYLLABLE GAE
+ U+AC38 ( 갸 ) HANGUL SYLLABLE GYA
+
+
+
+
+ Hangul_Syllable_Type=LVT, that is:
+ U+AC01 ( 각 ) HANGUL SYLLABLE GAG
+ U+AC02 ( 갂 ) HANGUL SYLLABLE GAGG
+ U+AC03 ( 갃 ) HANGUL SYLLABLE GAGS
+ U+AC04 ( 간 ) HANGUL SYLLABLE GAN
+
+
+
+
+ Extended Pictographic
+
+
+
+
+ U+200D ZERO WIDTH JOINER
+
+
+
+
+ Unicode Indic Positional Categories.
+
+
+
+
+ Bottom
+
+
+
+
+ Bottom_And_Left
+
+
+
+
+ Bottom_And_Right
+
+
+
+
+ Left
+
+
+
+
+ Left_And_Right
+
+
+
+
+ NA
+
+
+
+
+ Overstruck
+
+
+
+
+ Right
+
+
+
+
+ Top
+
+
+
+
+ Top_And_Bottom
+
+
+
+
+ Top_And_Bottom_And_Left
+
+
+
+
+ Top_And_Bottom_And_Right
+
+
+
+
+ Top_And_Left
+
+
+
+
+ Top_And_Left_And_Right
+
+
+
+
+ Top_And_Right
+
+
+
+
+ Visual_Order_Left
+
+
+
+
+ Unicode Indic Syllabic Categories.
+
+
+
+
+
+ Avagraha.
+
+
+
+
+ Bindu.
+
+
+
+
+ Brahmi_Joining_Number.
+
+
+
+
+ Cantillation_Mark.
+
+
+
+
+ Consonant
+
+
+
+
+ Consonant_Dead
+
+
+
+
+ Consonant_Final
+
+
+
+
+ Consonant_Head_Letter
+
+
+
+
+ Consonant_Initial_Postfixed
+
+
+
+
+ Consonant_Killer
+
+
+
+
+ Consonant_Medial
+
+
+
+
+ Consonant_Placeholder
+
+
+
+
+ Consonant_Preceding_Repha
+
+
+
+
+ Consonant_Prefixed
+
+
+
+
+ Consonant_Subjoined
+
+
+
+
+ Consonant_Succeeding_Repha
+
+
+
+
+ Consonant_With_Stacker
+
+
+
+
+ Gemination_Mark
+
+
+
+
+ Invisible_Stacker
+
+
+
+
+ Joiner
+
+
+
+
+ Modifying_Letter
+
+
+
+
+ Non_Joiner
+
+
+
+
+ Nukta
+
+
+
+
+ Number
+
+
+
+
+ Number_Joiner
+
+
+
+
+ Other
+
+
+
+
+ Pure_Killer
+
+
+
+
+ Register_Shifter
+
+
+
+
+ Syllable_Modifier
+
+
+
+
+ Tone_Letter
+
+
+
+
+ Tone_Mark
+
+
+
+
+ Virama
+
+
+
+
+ Visarga
+
+
+
+
+ Vowel
+
+
+
+
+ Vowel_Dependent
+
+
+
+
+ Vowel_Independent
+
+
+
+
+ Information about a potential line break position.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The code point index to measure to
+ The code point index to actually break the line at
+ True if this is a required line break; otherwise false
+
+
+
+ Gets the break position, before any trailing whitespace.
+ This doesn't include trailing whitespace.
+
+
+
+
+ Gets the break position, after any trailing whitespace.
+ This includes trailing whitespace.
+
+
+
+
+ Gets a value indicating whether there should be a forced line break here.
+
+
+
+
+ Unicode line break classes.
+
+
+
+
+
+ Open punctuation
+
+
+
+
+ Closing punctuation
+
+
+
+
+ Closing parenthesis
+
+
+
+
+ Ambiguous quotation
+
+
+
+
+ Glue
+
+
+
+
+ Non-starters
+
+
+
+
+ Exclamation/Interrogation
+
+
+
+
+ Symbols allowing break after
+
+
+
+
+ Infix separator
+
+
+
+
+ Prefix
+
+
+
+
+ Postfix
+
+
+
+
+ Numeric
+
+
+
+
+ Alphabetic
+
+
+
+
+ Hebrew Letter
+
+
+
+
+ Ideographic
+
+
+
+
+ Inseparable characters
+
+
+
+
+ Hyphen
+
+
+
+
+ Break after
+
+
+
+
+ Break before
+
+
+
+
+ Break on either side (but not pair)
+
+
+
+
+ Zero-width space
+
+
+
+
+ Combining marks
+
+
+
+
+ Word joiner
+
+
+
+
+ Hangul LV
+
+
+
+
+ Hangul LVT
+
+
+
+
+ Hangul L Jamo
+
+
+
+
+ Hangul V Jamo
+
+
+
+
+ Hangul T Jamo
+
+
+
+
+ Regional Indicator
+
+
+
+
+ Emoji Base
+
+
+
+
+ Emoji Modifier
+
+
+
+
+ Zero Width Joiner
+
+
+
+
+ Contingent break
+
+
+
+
+ Ambiguous (Alphabetic or Ideograph)
+
+
+
+
+ Break (mandatory)
+
+
+
+
+ Conditional Japanese Starter
+
+
+
+
+ Carriage return
+
+
+
+
+ Line feed
+
+
+
+
+ Next line
+
+
+
+
+ South-East Asian
+
+
+
+
+ Surrogates
+
+
+
+
+ Space
+
+
+
+
+ Unknown
+
+
+
+
+ Supports a simple iteration over a linebreak collection.
+ Implementation of the Unicode Line Break Algorithm. UAX:14
+
+ Methods are pattern-matched by compiler to allow using foreach pattern.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+ An enumerator that iterates through the collection.
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+
+ if the enumerator was successfully advanced to the next element;
+ if the enumerator has passed the end of the collection.
+
+
+
+
+ Direct break opportunity
+
+
+
+
+ Indirect break opportunity
+
+
+
+
+ Indirect break opportunity for combining marks
+
+
+
+
+ Prohibited break for combining marks
+
+
+
+
+ Prohibited break
+
+
+
+
+ Contains extensions methods for memory types.
+
+
+
+
+ Returns an enumeration of from the provided span.
+
+ The readonly span of char elements representing the text to enumerate.
+
+ Invalid sequences will be represented in the enumeration by .
+
+ The .
+
+
+
+ Returns an enumeration of from the provided span.
+
+ The span of char elements representing the text to enumerate.
+
+ Invalid sequences will be represented in the enumeration by .
+
+ The .
+
+
+
+ Returns the number of code points in the provided text.
+
+ The text to enumerate.
+ The count.
+
+
+
+ Returns the number of code points in the provided span.
+
+ The readonly span of char elements representing the text to enumerate.
+ The count.
+
+
+
+ Returns the number of code points in the provided span.
+
+ The span of char elements representing the text to enumerate.
+ The count.
+
+
+
+ Returns an enumeration of Grapheme instances from the provided span.
+
+ The readonly span of char elements representing the text to enumerate.
+
+ Invalid sequences will be represented in the enumeration by .
+
+ The .
+
+
+
+ Returns an enumeration of Grapheme instances from the provided span.
+
+ The span of char elements representing the text to enumerate.
+
+ Invalid sequences will be represented in the enumeration by .
+
+ The .
+
+
+
+ Returns the number of graphemes in the provided text.
+
+ The text to enumerate.
+ The count.
+
+
+
+ Returns the number of graphemes in the provided span.
+
+ The readonly span of char elements representing the text to enumerate.
+ The count.
+
+
+
+ Returns the number of graphemes in the provided span.
+
+ The span of char elements representing the text to enumerate.
+ The count.
+
+
+
+ Reph formed out of initial Ra,H sequence.
+
+
+
+
+ Reph formed out of initial Ra,H,ZWJ sequence.
+
+
+
+
+ Encoded Repha character, no reordering needed.
+
+
+
+
+ Encoded Repha character, needs reordering.
+
+
+
+
+ Below-forms feature applied to pre-base and post-base.
+
+
+
+
+ Below-forms feature applied to post-base only.
+
+
+
+
+ Unicode Script classes
+
+
+
+
+ Shortcode: Zzzz
+
+
+
+
+ Shortcode: Zyyy
+
+
+
+
+ Shortcode: Zinh, Qaai
+
+
+
+
+ Shortcode: Adlm
+
+
+
+
+ Shortcode: Aghb
+
+
+
+
+ Shortcode: Ahom
+
+
+
+
+ Shortcode: Arab
+
+
+
+
+ Shortcode: Armi
+
+
+
+
+ Shortcode: Armn
+
+
+
+
+ Shortcode: Avst
+
+
+
+
+ Shortcode: Bali
+
+
+
+
+ Shortcode: Bamu
+
+
+
+
+ Shortcode: Bass
+
+
+
+
+ Shortcode: Batk
+
+
+
+
+ Shortcode: Beng
+
+
+
+
+ Shortcode: Bhks
+
+
+
+
+ Shortcode: Bopo
+
+
+
+
+ Shortcode: Brah
+
+
+
+
+ Shortcode: Brai
+
+
+
+
+ Shortcode: Bugi
+
+
+
+
+ Shortcode: Buhd
+
+
+
+
+ Shortcode: Cakm
+
+
+
+
+ Shortcode: Cans
+
+
+
+
+ Shortcode: Cari
+
+
+
+
+ Shortcode: Cham
+
+
+
+
+ Shortcode: Cher
+
+
+
+
+ Shortcode: Chrs
+
+
+
+
+ Shortcode: Copt, Qaac
+
+
+
+
+ Shortcode: Cpmn
+
+
+
+
+ Shortcode: Cprt
+
+
+
+
+ Shortcode: Cyrl
+
+
+
+
+ Shortcode: Deva
+
+
+
+
+ Shortcode: Diak
+
+
+
+
+ Shortcode: Dogr
+
+
+
+
+ Shortcode: Dsrt
+
+
+
+
+ Shortcode: Dupl
+
+
+
+
+ Shortcode: Egyp
+
+
+
+
+ Shortcode: Elba
+
+
+
+
+ Shortcode: Elym
+
+
+
+
+ Shortcode: Ethi
+
+
+
+
+ Shortcode: Geor
+
+
+
+
+ Shortcode: Glag
+
+
+
+
+ Shortcode: Gong
+
+
+
+
+ Shortcode: Gonm
+
+
+
+
+ Shortcode: Goth
+
+
+
+
+ Shortcode: Gran
+
+
+
+
+ Shortcode: Grek
+
+
+
+
+ Shortcode: Gujr
+
+
+
+
+ Shortcode: Guru
+
+
+
+
+ Shortcode: Hang
+
+
+
+
+ Shortcode: Hani
+
+
+
+
+ Shortcode: Hano
+
+
+
+
+ Shortcode: Hatr
+
+
+
+
+ Shortcode: Hebr
+
+
+
+
+ Shortcode: Hira
+
+
+
+
+ Shortcode: Hluw
+
+
+
+
+ Shortcode: Hmng
+
+
+
+
+ Shortcode: Hmnp
+
+
+
+
+ Shortcode: Hrkt
+
+
+
+
+ Shortcode: Hung
+
+
+
+
+ Shortcode: Ital
+
+
+
+
+ Shortcode: Java
+
+
+
+
+ Shortcode: Kali
+
+
+
+
+ Shortcode: Kana
+
+
+
+
+ Shortcode: Khar
+
+
+
+
+ Shortcode: Khmr
+
+
+
+
+ Shortcode: Khoj
+
+
+
+
+ Shortcode: Kits
+
+
+
+
+ Shortcode: Knda
+
+
+
+
+ Shortcode: Kthi
+
+
+
+
+ Shortcode: Lana
+
+
+
+
+ Shortcode: Laoo
+
+
+
+
+ Shortcode: Latn
+
+
+
+
+ Shortcode: Lepc
+
+
+
+
+ Shortcode: Limb
+
+
+
+
+ Shortcode: Lina
+
+
+
+
+ Shortcode: Linb
+
+
+
+
+ Shortcode: Lisu
+
+
+
+
+ Shortcode: Lyci
+
+
+
+
+ Shortcode: Lydi
+
+
+
+
+ Shortcode: Mahj
+
+
+
+
+ Shortcode: Maka
+
+
+
+
+ Shortcode: Mand
+
+
+
+
+ Shortcode: Mani
+
+
+
+
+ Shortcode: Marc
+
+
+
+
+ Shortcode: Medf
+
+
+
+
+ Shortcode: Mend
+
+
+
+
+ Shortcode: Merc
+
+
+
+
+ Shortcode: Mero
+
+
+
+
+ Shortcode: Mlym
+
+
+
+
+ Shortcode: Modi
+
+
+
+
+ Shortcode: Mong
+
+
+
+
+ Shortcode: Mroo
+
+
+
+
+ Shortcode: Mtei
+
+
+
+
+ Shortcode: Mult
+
+
+
+
+ Shortcode: Mymr
+
+
+
+
+ Shortcode: Nand
+
+
+
+
+ Shortcode: Narb
+
+
+
+
+ Shortcode: Nbat
+
+
+
+
+ Shortcode: Newa
+
+
+
+
+ Shortcode: Nkoo
+
+
+
+
+ Shortcode: Nshu
+
+
+
+
+ Shortcode: Ogam
+
+
+
+
+ Shortcode: Olck
+
+
+
+
+ Shortcode: Orkh
+
+
+
+
+ Shortcode: Orya
+
+
+
+
+ Shortcode: Osge
+
+
+
+
+ Shortcode: Osma
+
+
+
+
+ Shortcode: Ougr
+
+
+
+
+ Shortcode: Palm
+
+
+
+
+ Shortcode: Pauc
+
+
+
+
+ Shortcode: Perm
+
+
+
+
+ Shortcode: Phag
+
+
+
+
+ Shortcode: Phli
+
+
+
+
+ Shortcode: Phlp
+
+
+
+
+ Shortcode: Phnx
+
+
+
+
+ Shortcode: Plrd
+
+
+
+
+ Shortcode: Prti
+
+
+
+
+ Shortcode: Rjng
+
+
+
+
+ Shortcode: Rohg
+
+
+
+
+ Shortcode: Runr
+
+
+
+
+ Shortcode: Samr
+
+
+
+
+ Shortcode: Sarb
+
+
+
+
+ Shortcode: Saur
+
+
+
+
+ Shortcode: Sgnw
+
+
+
+
+ Shortcode: Shaw
+
+
+
+
+ Shortcode: Shrd
+
+
+
+
+ Shortcode: Sidd
+
+
+
+
+ Shortcode: Sind
+
+
+
+
+ Shortcode: Sinh
+
+
+
+
+ Shortcode: Sogd
+
+
+
+
+ Shortcode: Sogo
+
+
+
+
+ Shortcode: Sora
+
+
+
+
+ Shortcode: Soyo
+
+
+
+
+ Shortcode: Sund
+
+
+
+
+ Shortcode: Sylo
+
+
+
+
+ Shortcode: Syrc
+
+
+
+
+ Shortcode: Tagb
+
+
+
+
+ Shortcode: Takr
+
+
+
+
+ Shortcode: Tale
+
+
+
+
+ Shortcode: Talu
+
+
+
+
+ Shortcode: Taml
+
+
+
+
+ Shortcode: Tang
+
+
+
+
+ Shortcode: Tavt
+
+
+
+
+ Shortcode: Telu
+
+
+
+
+ Shortcode: Tfng
+
+
+
+
+ Shortcode: Tglg
+
+
+
+
+ Shortcode: Thaa
+
+
+
+
+ Shortcode: Thai
+
+
+
+
+ Shortcode: Tibt
+
+
+
+
+ Shortcode: Tirh
+
+
+
+
+ Shortcode: Tnsa
+
+
+
+
+ Shortcode: Toto
+
+
+
+
+ Shortcode: Ugar
+
+
+
+
+ Shortcode: Vaii
+
+
+
+
+ Shortcode: Vith
+
+
+
+
+ Shortcode: Wara
+
+
+
+
+ Shortcode: Wcho
+
+
+
+
+ Shortcode: Xpeo
+
+
+
+
+ Shortcode: Xsux
+
+
+
+
+ Shortcode: Yezi
+
+
+
+
+ Shortcode: Yiii
+
+
+
+
+ Shortcode: Zanb
+
+
+
+
+ An enumerator for retrieving instances from a .
+ Methods are pattern-matched by compiler to allow using foreach pattern.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The buffer to read from.
+
+
+
+ Gets the element in the collection at the current position of the enumerator.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+ An enumerator that iterates through the collection.
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+
+ if the enumerator was successfully advanced to the next element;
+ if the enumerator has passed the end of the collection.
+
+
+
+
+ An enumerator for retrieving Grapheme instances from a .
+
+ Implements the Unicode Grapheme Cluster Algorithm. UAX:29
+
+
+ Methods are pattern-matched by compiler to allow using foreach pattern.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The buffer to read from.
+
+
+
+ Gets the element in the collection at the current position of the enumerator.
+
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+ An enumerator that iterates through the collection.
+
+
+
+ Advances the enumerator to the next element of the collection.
+
+
+ if the enumerator was successfully advanced to the next element;
+ if the enumerator has passed the end of the collection.
+
+
+
+
+ A read-only Trie, holding 32 bit data values.
+ A UnicodeTrie is a highly optimized data structure for mapping from Unicode
+ code points(values ranging from 0 to 0x10ffff) to a 32 bit value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream containing the compressed data.
+
+
+
+ Initializes a new instance of the class.
+
+ The uncompressed trie data.
+ The start of the last range which ends at U+10ffff.
+ The value for out-of-range code points and illegal UTF-8.
+
+
+
+ Get the value for a code point as stored in the trie.
+
+ The code point.
+ The value.
+
+
+
+ Saves the to the stream in a compressed format.
+
+ The output stream.
+
+
+
+ Builder class to manipulate and generate a trie.
+ This is useful for ICU data in primitive types.
+ Provides a compact way to store information that is indexed by Unicode
+ values, such as character properties, types, keyboard values, etc.
+ This is very useful when you have a block of Unicode data that contains significant
+ values while the rest of the Unicode data is unused in the application or
+ when you have a lot of redundance, such as where all 21,000 Han ideographs
+ have the same value. However, lookup is much faster than a hash table.
+ A trie of any primitive data type serves two purposes:
+
+ - Fast access of the indexed values.
+ - Smaller memory footprint.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The initial value that is set for all code points.
+ The value for out-of-range code points and illegal UTF-8.
+
+
+
+ Gets the value for a code point as stored in the trie.
+
+ The code point.
+ The value.
+
+
+
+ Sets a value for a given code point.
+
+ The code point.
+ The value.
+
+
+
+ Set a value in a range of code points [start..end].
+ All code points c with start <= c <= end will get the value if
+ is or if the old value is the
+ initial value.
+
+ The first code point to get the value.
+ The last code point to get the value (inclusive).
+ The value.
+ Whether old non-initial values are to be overwritten.
+
+
+
+ Compacts the data and populates an optimized readonly Trie.
+
+ The .
+
+
+
+ Is this code point a lead surrogate (U+d800..U+dbff)?
+
+ The code point.
+ The .
+
+
+
+ Returns if is an ASCII
+ character ([ U+0000..U+007F ]).
+
+
+ Per http://www.unicode.org/glossary/#ASCII, ASCII is only U+0000..U+007F.
+
+
+
+
+ Returns if is in the
+ Basic Multilingual Plane (BMP).
+
+
+
+
+ Gets the codepoint value representing the vertical mirror for this instance.
+
+
+
+
+
+
+ The representing the mirror or 0u if not found.
+
+
+
+
+ Returns if is a
+ Chinese/Japanese/Korean (CJK) character.
+
+
+
+
+
+
+
+
+
+
+
+ Returns if is a Default Ignorable Code Point.
+
+
+
+
+
+
+
+
+ Returns the Unicode plane (0 through 16, inclusive) which contains this code point.
+
+
+
+
+ Given a Unicode scalar value, gets the number of UTF-16 code units required to represent this value.
+
+
+
+
+ Given a Unicode scalar value, gets the number of UTF-8 code units required to represent this value.
+
+
+
+
+ Returns if is a valid Unicode code
+ point, i.e., is in [ U+0000..U+10FFFF ], inclusive.
+
+
+
+
+ Returns if is a UTF-16 high surrogate code point,
+ i.e., is in [ U+D800..U+DBFF ], inclusive.
+
+
+
+
+ Returns if is a UTF-16 low surrogate code point,
+ i.e., is in [ U+DC00..U+DFFF ], inclusive.
+
+
+
+
+ Returns if is a UTF-16 surrogate code point,
+ i.e., is in [ U+D800..U+DFFF ], inclusive.
+
+
+
+
+ Returns if is between
+ and , inclusive.
+
+
+
+
+ Returns a Unicode scalar value from two code points representing a UTF-16 surrogate pair.
+
+
+
+
+ Decomposes an astral Unicode code point into UTF-16 high and low surrogate code units.
+
+
+
+
+ Formats a code point as the hex string "U+XXXX".
+
+
+ The input value doesn't have to be a real code point in the Unicode codespace. It can be any integer.
+
+
+
+
+ Unicode Vertical Orientation types.
+
+
+
+
+
+ Characters which are displayed upright, with the same orientation that appears in the code charts.
+
+
+
+
+ Characters which are displayed sideways, rotated 90 degrees clockwise compared to the code charts.
+
+
+
+
+ Characters which are not just upright or sideways, but generally require a different glyph than in the code
+ charts when used in vertical texts. In addition, as a fallback, the character can be displayed with the code
+ chart glyph upright.
+
+
+
+
+ Same as except that, as a fallback, the character can be displayed with the code chart glyph rotated 90 degrees clockwise.
+
+
+
+
+ Converts encoding ID to TextEncoding
+
+
+
+
+ Converts encoding ID to TextEncoding
+
+ The identifier.
+ the encoding for this encoding ID
+
+
+
+ Vertical alignment modes.
+
+
+
+
+ Aligns downward from the top.
+
+
+
+
+ Aligns text up and down from the middle.
+
+
+
+
+ Aligns text upwards from the bottom
+
+
+
+
+ Represent the metrics of a font face specific to vertical text.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets or sets a value indicating whether the metrics have been synthesized.
+
+
+
+
+ Encoding IDS
+
+
+
+
+ Unicode 1.0 semantics
+
+
+
+
+ Unicode 1.1 semantics
+
+
+
+
+ ISO/IEC 10646 semantics
+
+
+
+
+ Unicode 2.0 and onwards semantics, Unicode BMP only (cmap subtable formats 0, 4, 6).
+
+
+
+
+ Unicode 2.0 and onwards semantics, Unicode full repertoire (cmap subtable formats 0, 4, 6, 10, 12).
+
+
+
+
+ Unicode Variation Sequences (cmap subtable format 14).
+
+
+
+
+ Unicode full repertoire (cmap subtable formats 0, 4, 6, 10, 12, 13)
+
+
+
+
+ Provides enumeration of common name ids
+
+
+
+
+
+ The copyright notice
+
+
+
+
+ The font family name; Up to four fonts can share the Font Family name, forming a font style linking
+ group (regular, italic, bold, bold italic — as defined by OS/2.fsSelection bit settings).
+
+
+
+
+ The font subfamily name; The Font Subfamily name distinguishes the font in a group with the same Font Family name (name ID 1).
+ This is assumed to address style (italic, oblique) and weight (light, bold, black, etc.). A font with no particular differences
+ in weight or style (e.g. medium weight, not italic and fsSelection bit 6 set) should have the string "Regular" stored in this position.
+
+
+
+
+ The unique font identifier
+
+
+
+
+ The full font name; a combination of strings 1 and 2, or a similar human-readable variant. If string 2 is "Regular", it is sometimes omitted from name ID 4.
+
+
+
+
+ Version string. Should begin with the syntax 'Version <number>.<number>' (upper case, lower case, or mixed, with a space between "Version" and the number).
+ The string must contain a version number of the following form: one or more digits (0-9) of value less than 65,535, followed by a period, followed by one or more
+ digits of value less than 65,535. Any character other than a digit will terminate the minor number. A character such as ";" is helpful to separate different pieces of version information.
+ The first such match in the string can be used by installation software to compare font versions.
+ Note that some installers may require the string to start with "Version ", followed by a version number as above.
+
+
+
+
+ Postscript name for the font; Name ID 6 specifies a string which is used to invoke a PostScript language font that corresponds to this OpenType font.
+ When translated to ASCII, the name string must be no longer than 63 characters and restricted to the printable ASCII subset, codes 33 to 126,
+ except for the 10 characters '[', ']', '(', ')', '{', '}', '<', '>', '/', '%'.
+ In a CFF OpenType font, there is no requirement that this name be the same as the font name in the CFF’s Name INDEX.
+ Thus, the same CFF may be shared among multiple font components in a Font Collection. See the 'name' table section of
+ Recommendations for OpenType fonts "" for additional information.
+
+
+
+
+ Trademark; this is used to save any trademark notice/information for this font. Such information should
+ be based on legal advice. This is distinctly separate from the copyright.
+
+
+
+
+ The manufacturer
+
+
+
+
+ Designer; name of the designer of the typeface.
+
+
+
+
+ Description; description of the typeface. Can contain revision information, usage recommendations, history, features, etc.
+
+
+
+
+ URL Vendor; URL of font vendor (with protocol, e.g., http://, ftp://). If a unique serial number is embedded in
+ the URL, it can be used to register the font.
+
+
+
+
+ URL Designer; URL of typeface designer (with protocol, e.g., http://, ftp://).
+
+
+
+
+ License Description; description of how the font may be legally used, or different example scenarios for licensed use.
+ This field should be written in plain language, not legalese.
+
+
+
+
+ License Info URL; URL where additional licensing information can be found.
+
+
+
+
+ Typographic Family name: The typographic family grouping doesn't impose any constraints on the number of faces within it,
+ in contrast with the 4-style family grouping (ID 1), which is present both for historical reasons and to express style linking groups.
+ If name ID 16 is absent, then name ID 1 is considered to be the typographic family name.
+ (In earlier versions of the specification, name ID 16 was known as "Preferred Family".)
+
+
+
+
+ Typographic Subfamily name: This allows font designers to specify a subfamily name within the typographic family grouping.
+ This string must be unique within a particular typographic family. If it is absent, then name ID 2 is considered to be the
+ typographic subfamily name. (In earlier versions of the specification, name ID 17 was known as "Preferred Subfamily".)
+
+
+
+
+ Sample text; This can be the font name, or any other text that the designer thinks is the best sample to display the font in.
+
+
+
+
+ platforms ids
+
+
+
+
+ Unicode platform
+
+
+
+
+ Script manager code
+
+
+
+
+ [deprecated] ISO encoding
+
+
+
+
+ Window encoding
+
+
+
+
+ Custom platform
+
+
+
+
+ Defines modes to determine when line breaks should appear when words overflow
+ their content box.
+
+
+
+
+ Use the default line break rule.
+
+
+
+
+ To prevent overflow, word breaks should be inserted between any two
+ characters (excluding Chinese/Japanese/Korean text).
+
+
+
+
+ Word breaks should not be used for Chinese/Japanese/Korean (CJK) text.
+ Non-CJK text behavior is the same as for
+
+
+
+
+ Uses a combination of and rules in that order.
+
+
+
+
+ Provides methods to protect against invalid parameters for a DEBUG build.
+
+
+
+
+ Ensures that the value is not null.
+
+ The target object, which cannot be null.
+ The name of the parameter that is to be checked.
+ The type of the value.
+ is null.
+
+
+
+ Ensures that the target value is not null, empty, or whitespace.
+
+ The target string, which should be checked against being null or empty.
+ Name of the parameter.
+ is null.
+ is empty or contains only blanks.
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Verifies, that the method parameter with specified target value is true
+ and throws an exception if it is found to be so.
+
+ The target value, which cannot be false.
+ The name of the parameter that is to be checked.
+ The error message, if any to add to the exception.
+
+ is false.
+
+
+
+
+ Verifies, that the method parameter with specified target value is false
+ and throws an exception if it is found to be so.
+
+ The target value, which cannot be true.
+ The name of the parameter that is to be checked.
+ The error message, if any to add to the exception.
+
+ is true.
+
+
+
+
+ Verifies, that the `source` span has the length of 'minLength', or longer.
+
+ The element type of the spans.
+ The source span.
+ The minimum length.
+ The name of the parameter that is to be checked.
+
+ has less than items.
+
+
+
+
+ Verifies, that the `source` span has the length of 'minLength', or longer.
+
+ The element type of the spans.
+ The target span.
+ The minimum length.
+ The name of the parameter that is to be checked.
+
+ has less than items.
+
+
+
+
+ Verifies that the 'destination' span is not shorter than 'source'.
+
+ The source element type.
+ The destination element type.
+ The source span.
+ The destination span.
+ The name of the argument for 'destination'.
+
+
+
+ Verifies that the 'destination' span is not shorter than 'source'.
+
+ The source element type.
+ The destination element type.
+ The source span.
+ The destination span.
+ The name of the argument for 'destination'.
+
+
+
+ Provides methods to protect against invalid parameters.
+
+
+ Provides methods to protect against invalid parameters.
+
+
+
+
+ Ensures that the value is not null.
+
+ The target object, which cannot be null.
+ The name of the parameter that is to be checked.
+ The type of the value.
+ is null.
+
+
+
+ Ensures that the target value is not null, empty, or whitespace.
+
+ The target string, which should be checked against being null or empty.
+ Name of the parameter.
+ is null.
+ is empty or contains only blanks.
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Verifies, that the method parameter with specified target value is true
+ and throws an exception if it is found to be so.
+
+ The target value, which cannot be false.
+ The name of the parameter that is to be checked.
+ The error message, if any to add to the exception.
+
+ is false.
+
+
+
+
+ Verifies, that the method parameter with specified target value is false
+ and throws an exception if it is found to be so.
+
+ The target value, which cannot be true.
+ The name of the parameter that is to be checked.
+ The error message, if any to add to the exception.
+
+ is true.
+
+
+
+
+ Verifies, that the `source` span has the length of 'minLength', or longer.
+
+ The element type of the spans.
+ The source span.
+ The minimum length.
+ The name of the parameter that is to be checked.
+
+ has less than items.
+
+
+
+
+ Verifies, that the `source` span has the length of 'minLength', or longer.
+
+ The element type of the spans.
+ The target span.
+ The minimum length.
+ The name of the parameter that is to be checked.
+
+ has less than items.
+
+
+
+
+ Verifies that the 'destination' span is not shorter than 'source'.
+
+ The source element type.
+ The destination element type.
+ The source span.
+ The destination span.
+ The name of the argument for 'destination'.
+
+
+
+ Verifies that the 'destination' span is not shorter than 'source'.
+
+ The source element type.
+ The destination element type.
+ The source span.
+ The destination span.
+ The name of the argument for 'destination'.
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Helper methods to throw exceptions
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws a new .
+
+ The message to include in the exception.
+ The argument name.
+ Thrown with and .
+
+
+
+ Throws a new .
+
+ The argument name.
+ The message to include in the exception.
+ Thrown with and .
+
+
+
+ Throws a new .
+
+ The argument name.
+ The message to include in the exception.
+ Thrown with and .
+
+
+ Initializes the attribute with the specified return value condition.
+
+ The return value condition. If the method returns this value, the associated parameter will not be null.
+
+
+
+ Gets the return value condition.
+
+
+
+ Provides single-precision floating point constants and static methods for trigonometric, logarithmic, and other common mathematical functions.
+
+ MathF emulation on platforms that don't support it natively.
+
+
+
+ Represents the ratio of the circumference of a circle to its diameter, specified by the constant, π.
+
+
+
+
+ Returns the absolute value of a single-precision floating-point number.
+
+
+ A number that is greater than or equal to , but less than or equal to .
+
+
+ A single-precision floating-point number, x, such that 0 ≤ x ≤.
+
+
+
+
+ Returns the angle whose tangent is the quotient of two specified numbers.
+
+ The y coordinate of a point.
+ The x coordinate of a point.
+
+ An angle, θ, measured in radians, such that -π≤θ≤π, and tan(θ) = y / x, where
+ (x, y) is a point in the Cartesian plane. Observe the following: For (x, y) in
+ quadrant 1, 0 < θ < π/2.For (x, y) in quadrant 2, π/2 < θ≤π.For (x, y) in quadrant
+ 3, -π < θ < -π/2.For (x, y) in quadrant 4, -π/2 < θ < 0.For points on the boundaries
+ of the quadrants, the return value is the following:If y is 0 and x is not negative,
+ θ = 0.If y is 0 and x is negative, θ = π.If y is positive and x is 0, θ = π/2.If
+ y is negative and x is 0, θ = -π/2.If y is 0 and x is 0, θ = 0. If x or y is
+ , or if x and y are either or
+ , the method returns .
+
+
+
+
+ Returns the smallest integral value that is greater than or equal to the specified single-precision floating-point number.
+
+ A single-precision floating-point number.
+
+ The smallest integral value that is greater than or equal to .
+ If is equal to , ,
+ or , that value is returned.
+ Note that this method returns a instead of an integral type.
+
+
+
+
+ Returns the cosine of the specified angle.
+
+ An angle, measured in radians.
+
+ The cosine of . If is equal to , ,
+ or , this method returns .
+
+
+
+
+ Returns e raised to the specified power.
+
+ A number specifying a power.
+
+ The number e raised to the power .
+ If equals or , that value is returned.
+ If equals , 0 is returned.
+
+
+
+
+ Returns the largest integer less than or equal to the specified single-precision floating-point number.
+
+ A single-precision floating-point number.
+
+ The largest integer less than or equal to .
+ If is equal to , ,
+ or , that value is returned.
+
+
+
+
+ Returns the larger of two single-precision floating-point numbers.
+
+ The first of two single-precision floating-point numbers to compare.
+ The second of two single-precision floating-point numbers to compare.
+
+ Parameter or , whichever is larger.
+ If , or , or both and are
+ equal to , is returned.
+
+
+
+
+ Returns the smaller of two single-precision floating-point numbers.
+
+ The first of two single-precision floating-point numbers to compare.
+ The second of two single-precision floating-point numbers to compare.
+
+ Parameter or , whichever is smaller.
+ If , , or both and are equal
+ to , is returned.
+
+
+
+
+ Returns a specified number raised to the specified power.
+
+ A single-precision floating-point number to be raised to a power.
+ A single-precision floating-point number that specifies a power.
+ The number raised to the power .
+
+
+
+ Rounds a single-precision floating-point value to the nearest integral value.
+
+ A single-precision floating-point number to be rounded.
+
+ The integer nearest .
+ If the fractional component of is halfway between two integers, one of which is even and the other odd, then the even number is returned.
+ Note that this method returns a instead of an integral type.
+
+
+
+
+ Rounds a single-precision floating-point value to the nearest integer.
+ A parameter specifies how to round the value if it is midway between two numbers.
+
+ A single-precision floating-point number to be rounded.
+ Specification for how to round if it is midway between two other numbers.
+
+ The integer nearest . If is halfway between two integers, one of which is even
+ and the other odd, then determines which of the two is returned.
+ Note that this method returns a instead of an integral type.
+
+
+ is not a valid value of .
+
+
+
+ Returns the sine of the specified angle.
+
+ An angle, measured in radians.
+
+ The sine of .
+ If is equal to , ,
+ or , this method returns .
+
+
+
+
+ Returns the square root of a specified number.
+
+ The number whose square root is to be found.
+
+ One of the values in the following table.
+ parameter Return value Zero or positive The positive square root of .
+ Negative Equals
+ Equals
+ .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The state table.
+ The accepting states.
+ The tags.
+
+
+
+ Gets the state table.
+
+
+
+
+ Gets the accepting states.
+
+
+
+
+ Gets the tags.
+
+
+
+
+ Returns an iterable object that yields pattern matches over the input sequence.
+
+ The input sequence.
+ The .
+
+
+
+ For each match over the input sequence, action functions matching
+ the tag definitions in the input pattern are called with the startIndex,
+ length, and the sequence to be sliced.
+
+ The input sequence.
+ The collection of actions.
+
+
+
+ Defines an AST node.
+
+
+
+
+ Gets the following position.
+
+
+
+
+ Gets a value indicating whether this node is nullable.
+
+
+
+
+ Gets the number of child nodes in this node.
+
+
+
+
+ Gets or sets the node at the given position.
+
+ The index of the node.
+ The node at the given position.
+
+
+
+ Calculates the follow position for this instance.
+
+
+
+
+ Returns a copy of the node.
+
+ The .
+
+
+
+ Defines a logical AST node.
+
+
+
+
+ Gets the collection of nodes as the first position.
+
+
+
+
+ Gets the collection of nodes at the last position.
+
+
+
+
+ The base AST node.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a variable reference.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a comment.
+
+
+
+
+
+
+
+ Represents an assignment statement. e.g. `variable = expression;`
+
+
+
+
+
+
+
+ Represents an alternation. e.g. `a | b`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a concatenation, or chain. e.g. `a b c`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a repetition. e.g. `a+`, `b*`, or `c?`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for leaf nodes.
+
+
+
+
+
+
+
+
+
+
+ Represents a literal value, e.g. a number.
+
+
+
+
+
+
+
+ Marks the end of an expression.
+
+
+
+
+
+
+
+ Represents a tag e.g. `a:(a b)`.
+
+
+
+
+
+
+
+ Builds a repetition of the given expression.
+
+ The expression to repeat.
+ The minimum value to repeat.
+ The maximum number to repeat.
+ THe .
+ Thrown if is out of range.
+
+
+
+ Concatenates two nodes.
+
+ The first node.
+ The second node.
+ The combined .
+
+
+
+ Creates a union of two node sequences.
+
+ The first node sequence.
+ The second node sequence.
+ The .
+
+
+
+ Adds all the elements from set to .
+
+ The first node sequence.
+ The second node sequence.
+
+
+
+ Determines whether two sets are equal.
+
+ The first node sequence.
+ The second node sequence.
+ The
+
+
+
diff --git a/bin/SixLabors.ImageSharp.dll b/bin/SixLabors.ImageSharp.dll
new file mode 100644
index 0000000..d73d991
Binary files /dev/null and b/bin/SixLabors.ImageSharp.dll differ
diff --git a/bin/SixLabors.ImageSharp.xml b/bin/SixLabors.ImageSharp.xml
new file mode 100644
index 0000000..60a9adc
--- /dev/null
+++ b/bin/SixLabors.ImageSharp.xml
@@ -0,0 +1,64534 @@
+
+
+
+ SixLabors.ImageSharp
+
+
+
+
+ Extension methods over Image{TPixel}
+
+
+
+
+ For a given file path find the best encoder to use via its extension.
+
+ The source image.
+ The target file path to save the image to.
+ The file path is null.
+ No encoder available for provided path.
+ The matching .
+
+
+
+ Accepts a to implement a double-dispatch pattern in order to
+ apply pixel-specific operations on non-generic instances
+
+ The source image.
+ The image visitor.
+
+
+
+ Accepts a to implement a double-dispatch pattern in order to
+ apply pixel-specific operations on non-generic instances
+
+ The source image.
+ The image visitor.
+ The token to monitor for cancellation requests.
+ A representing the asynchronous operation.
+
+
+
+ Gets the configuration for the image.
+
+ The source image.
+ Returns the configuration.
+
+
+
+ Gets the configuration for the image frame.
+
+ The source image.
+ Returns the configuration.
+
+
+
+ Gets the configuration.
+
+ The source image
+ Returns the bounds of the image
+
+
+
+ Gets the representation of the pixels as a containing the backing pixel data of the image
+ stored in row major order, as a list of contiguous blocks in the source image's pixel format.
+
+ The source image.
+ The type of the pixel.
+ The .
+
+ Certain Image Processors may invalidate the returned and all it's buffers,
+ therefore it's not recommended to mutate the image while holding a reference to it's .
+
+
+
+
+ Gets the representation of the pixels as a containing the backing pixel data of the image
+ stored in row major order, as a list of contiguous blocks in the source image's pixel format.
+
+ The source image.
+ The type of the pixel.
+ The .
+
+ Certain Image Processors may invalidate the returned and all it's buffers,
+ therefore it's not recommended to mutate the image while holding a reference to it's .
+
+
+
+
+ Gets the representation of the pixels as a of contiguous memory
+ at row beginning from the the first pixel on that row.
+
+ The type of the pixel.
+ The source.
+ The row.
+ The
+
+
+
+ Gets the representation of the pixels as of of contiguous memory
+ at row beginning from the the first pixel on that row.
+
+ The type of the pixel.
+ The source.
+ The row.
+ The
+
+
+
+ Gets the assigned to 'source'.
+
+ The source image.
+ Returns the configuration.
+
+
+
+ Unlike traditional Mono/.NET, code on the iPhone is statically compiled ahead of time instead of being
+ compiled on demand by a JIT compiler. This means there are a few limitations with respect to generics,
+ these are caused because not every possible generic instantiation can be determined up front at compile time.
+ The Aot Compiler is designed to overcome the limitations of this compiler.
+ None of the methods in this class should ever be called, the code only has to exist at compile-time to be picked up by the AoT compiler.
+ (Very similar to the LinkerIncludes.cs technique used in Xamarin.Android projects.)
+
+
+
+
+ This is the method that seeds the AoT compiler.
+ None of these seed methods needs to actually be called to seed the compiler.
+ The calls just need to be present when the code is compiled, and each implementation will be built.
+
+
+ This method doesn't actually do anything but serves an important purpose...
+ If you are running ImageSharp on iOS and try to call SaveAsGif, it will throw an exception:
+ "Attempting to JIT compile method... OctreeFrameQuantizer.ConstructPalette... while running in aot-only mode."
+ The reason this happens is the SaveAsGif method makes heavy use of generics, which are too confusing for the AoT
+ compiler used on Xamarin.iOS. It spins up the JIT compiler to try and figure it out, but that is an illegal op on
+ iOS so it bombs out.
+ If you are getting the above error, you need to call this method, which will pre-seed the AoT compiler with the
+ necessary methods to complete the SaveAsGif call. That's it, otherwise you should NEVER need this method!!!
+
+
+
+
+ Seeds the compiler using the given pixel format.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the for a given pixel format in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The encoder.
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The decoder.
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+
+ There is no structure that implements ISwizzler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The processor type
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The processor type
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+
+ There is no structure that implements ISwizzler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The processor type
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The processor type
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The quantizer type
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The dither.
+
+
+
+ This method pre-seeds the all in the AoT compiler.
+
+ The pixel format.
+
+
+
+ This method pre-seeds the in the AoT compiler.
+
+ The pixel format.
+ The buffer.
+
+
+
+ Defines the contract for objects that can provide access to configuration.
+
+
+
+
+ Gets the configuration which allows altering default behaviour or extending the library.
+
+
+
+
+ A visitor to implement a double-dispatch pattern in order to apply pixel-specific operations
+ on non-generic instances.
+
+
+
+
+ Provides a pixel-specific implementation for a given operation.
+
+ The image.
+ The pixel type.
+
+
+
+ A visitor to implement a double-dispatch pattern in order to apply pixel-specific operations
+ on non-generic instances.
+
+
+
+
+ Provides a pixel-specific implementation for a given operation.
+
+ The image.
+ The token to monitor for cancellation requests.
+ The pixel type.
+ A representing the asynchronous operation.
+
+
+
+ Encapsulates the basic properties and methods required to manipulate images.
+
+
+
+
+ Gets the pixel buffer.
+
+
+
+
+ Encapsulates the basic properties and methods required to manipulate images.
+
+ The type of the pixel.
+
+
+
+ Gets the pixel buffer.
+
+
+
+
+ Defines the contract for an action that operates on a row interval.
+
+
+
+
+ Invokes the method passing the row interval.
+
+ The row interval.
+
+
+
+ Defines the contract for an action that operates on a row interval with a temporary buffer.
+
+ The type of buffer elements.
+
+
+
+ Invokes the method passing the row interval and a buffer.
+
+ The row interval.
+ The contiguous region of memory.
+
+
+
+ Defines the contract for an action that operates on a row.
+
+
+
+
+ Invokes the method passing the row y coordinate.
+
+ The row y coordinate.
+
+
+
+ Defines the contract for an action that operates on a row with a temporary buffer.
+
+ The type of buffer elements.
+
+
+
+ Invokes the method passing the row and a buffer.
+
+ The row y coordinate.
+ The contiguous region of memory.
+
+
+
+ Defines execution settings for methods in .
+
+
+
+
+ Default value for .
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The value used for initializing when using TPL.
+ The value for .
+ The .
+
+
+
+ Initializes a new instance of the struct.
+
+ The value used for initializing when using TPL.
+ The .
+
+
+
+ Gets the .
+
+
+
+
+ Gets the value used for initializing when using TPL.
+
+
+
+
+ Gets the minimum number of pixels being processed by a single task when parallelizing operations with TPL.
+ Launching tasks for pixel regions below this limit is not worth the overhead.
+ Initialized with by default,
+ the optimum value is operation specific. (The cheaper the operation, the larger the value is.)
+
+
+
+
+ Creates a new instance of
+ having multiplied by
+
+ The value to multiply with.
+ The modified .
+
+
+
+ Get the default for a
+
+ The .
+ The .
+
+
+
+ Utility methods for batched processing of pixel row intervals.
+ Parallel execution is optimized for image processing based on values defined
+ or .
+ Using this class is preferred over direct usage of utility methods.
+
+
+ Utility methods for batched processing of pixel row intervals.
+ Parallel execution is optimized for image processing based on values defined
+ or .
+ Using this class is preferred over direct usage of utility methods.
+
+
+
+
+ Iterate through the rows of a rectangle in optimized batches.
+
+ The type of row operation to perform.
+ The to get the parallel settings from.
+ The .
+ The operation defining the iteration logic on a single row.
+
+
+
+ Iterate through the rows of a rectangle in optimized batches.
+
+ The type of row operation to perform.
+ The .
+ The .
+ The operation defining the iteration logic on a single row.
+
+
+
+ Iterate through the rows of a rectangle in optimized batches.
+ instantiating a temporary buffer for each invocation.
+
+ The type of row operation to perform.
+ The type of buffer elements.
+ The to get the parallel settings from.
+ The .
+ The operation defining the iteration logic on a single row.
+
+
+
+ Iterate through the rows of a rectangle in optimized batches.
+ instantiating a temporary buffer for each invocation.
+
+ The type of row operation to perform.
+ The type of buffer elements.
+ The .
+ The .
+ The operation defining the iteration logic on a single row.
+
+
+
+ Iterate through the rows of a rectangle in optimized batches defined by -s.
+
+ The type of row operation to perform.
+ The to get the parallel settings from.
+ The .
+ The operation defining the iteration logic on a single .
+
+
+
+ Iterate through the rows of a rectangle in optimized batches defined by -s.
+
+ The type of row operation to perform.
+ The .
+ The .
+ The operation defining the iteration logic on a single .
+
+
+
+ Iterate through the rows of a rectangle in optimized batches defined by -s
+ instantiating a temporary buffer for each invocation.
+
+ The type of row operation to perform.
+ The type of buffer elements.
+ The to get the parallel settings from.
+ The .
+ The operation defining the iteration logic on a single .
+
+
+
+ Iterate through the rows of a rectangle in optimized batches defined by -s
+ instantiating a temporary buffer for each invocation.
+
+ The type of row operation to perform.
+ The type of buffer elements.
+ The .
+ The .
+ The operation defining the iteration logic on a single .
+
+
+
+ This is necessary to avoid being excluded from compilation in environments that do AOT builds, such as Unity's IL2CPP and Xamarin.
+ The only thing that matters is the class name.
+ There is no need to use or inherit from the PreserveAttribute class in each environment.
+
+
+
+
+ Contains constructors and implicit conversion methods.
+
+
+ Represents a color value that is convertible to any type.
+
+
+ The internal representation and layout of this structure is hidden by intention.
+ It's not serializable, and it should not be considered as part of a contract.
+ Unlike System.Drawing.Color, has to be converted to a specific pixel value
+ to query the color components.
+
+
+ Contains static named color values.
+
+
+
+ Contains the definition of .
+
+
+ Contains the definition of .
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Initializes a new instance of the struct.
+
+ The containing the color information.
+
+
+
+ Converts a to .
+
+ The .
+ The .
+
+
+
+ Converts an to .
+
+ The .
+ The .
+
+
+
+ Checks whether two structures are equal.
+
+ The left hand operand.
+ The right hand operand.
+
+ True if the parameter is equal to the parameter;
+ otherwise, false.
+
+
+
+
+ Checks whether two structures are not equal.
+
+ The left hand operand.
+ The right hand operand.
+
+ True if the parameter is not equal to the parameter;
+ otherwise, false.
+
+
+
+
+ Creates a from RGBA bytes.
+
+ The red component (0-255).
+ The green component (0-255).
+ The blue component (0-255).
+ The alpha component (0-255).
+ The .
+
+
+
+ Creates a from RGB bytes.
+
+ The red component (0-255).
+ The green component (0-255).
+ The blue component (0-255).
+ The .
+
+
+
+ Creates a from the given .
+
+ The pixel to convert from.
+ The pixel format.
+ The .
+
+
+
+ Creates a new instance of the struct
+ from the given hexadecimal string.
+
+
+ The hexadecimal representation of the combined color components arranged
+ in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax.
+
+
+ The .
+
+
+
+
+ Attempts to creates a new instance of the struct
+ from the given hexadecimal string.
+
+
+ The hexadecimal representation of the combined color components arranged
+ in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax.
+
+ When this method returns, contains the equivalent of the hexadecimal input.
+
+ The .
+
+
+
+
+ Creates a new instance of the struct
+ from the given input string.
+
+
+ The name of the color or the hexadecimal representation of the combined color components arranged
+ in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax.
+
+
+ The .
+
+
+
+
+ Attempts to creates a new instance of the struct
+ from the given input string.
+
+
+ The name of the color or the hexadecimal representation of the combined color components arranged
+ in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax.
+
+ When this method returns, contains the equivalent of the hexadecimal input.
+
+ The .
+
+
+
+
+ Alters the alpha channel of the color, returning a new instance.
+
+ The new value of alpha [0..1].
+ The color having it's alpha channel altered.
+
+
+
+ Gets the hexadecimal representation of the color instance in rrggbbaa form.
+
+ A hexadecimal string representation of the value.
+
+
+
+
+
+
+ Converts the color instance to a specified type.
+
+ The pixel type to convert to.
+ The pixel value.
+
+
+
+ Bulk converts a span of to a span of a specified type.
+
+ The pixel type to convert to.
+ The configuration.
+ The source color span.
+ The destination pixel span.
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F0F8FF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FAEBD7.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00FFFF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #7FFFD4.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F0FFFF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F5F5DC.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFE4C4.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #000000.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFEBCD.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #0000FF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #8A2BE2.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #A52A2A.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #DEB887.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #5F9EA0.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #7FFF00.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #D2691E.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF7F50.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #6495ED.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFF8DC.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #DC143C.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00FFFF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00008B.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #008B8B.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #B8860B.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #A9A9A9.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #006400.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #A9A9A9.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #BDB76B.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #8B008B.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #556B2F.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF8C00.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #9932CC.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #8B0000.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #E9967A.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #8FBC8F.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #483D8B.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #2F4F4F.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #2F4F4F.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00CED1.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #9400D3.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF1493.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00BFFF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #696969.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #696969.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #1E90FF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #B22222.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFFAF0.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #228B22.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF00FF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #DCDCDC.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F8F8FF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFD700.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #DAA520.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #808080.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #008000.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #ADFF2F.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #808080.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F0FFF0.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF69B4.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #CD5C5C.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #4B0082.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFFFF0.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F0E68C.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #E6E6FA.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFF0F5.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #7CFC00.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFFACD.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #ADD8E6.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F08080.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #E0FFFF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FAFAD2.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #D3D3D3.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #90EE90.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #D3D3D3.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFB6C1.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFA07A.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #20B2AA.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #87CEFA.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #778899.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #778899.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #B0C4DE.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFFFE0.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00FF00.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #32CD32.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FAF0E6.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF00FF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #800000.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #66CDAA.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #0000CD.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #BA55D3.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #9370DB.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #3CB371.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #7B68EE.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00FA9A.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #48D1CC.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #C71585.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #191970.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F5FFFA.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFE4E1.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFE4B5.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFDEAD.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #000080.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FDF5E6.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #808000.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #6B8E23.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFA500.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF4500.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #DA70D6.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #EEE8AA.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #98FB98.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #AFEEEE.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #DB7093.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFEFD5.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFDAB9.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #CD853F.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFC0CB.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #DDA0DD.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #B0E0E6.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #800080.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #663399.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF0000.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #BC8F8F.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #4169E1.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #8B4513.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FA8072.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F4A460.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #2E8B57.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFF5EE.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #A0522D.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #C0C0C0.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #87CEEB.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #6A5ACD.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #708090.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #708090.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFFAFA.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00FF7F.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #4682B4.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #D2B48C.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #008080.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #D8BFD8.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FF6347.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #00000000.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #40E0D0.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #EE82EE.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F5DEB3.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFFFFF.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #F5F5F5.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #FFFF00.
+
+
+
+
+ Represents a matching the W3C definition that has an hex value of #9ACD32.
+
+
+
+
+ Gets a collection of named, web safe colors as defined in the CSS Color Module Level 4.
+
+
+
+
+ Gets a collection of colors as defined in the original second edition of Werner’s Nomenclature of Colours 1821.
+ The hex codes were collected and defined by Nicholas Rougeux .
+
+
+
+
+ Represents a CIE L*a*b* 1976 color.
+
+
+
+
+
+ D50 standard illuminant.
+ Used when reference white is not specified explicitly.
+
+
+
+
+ Gets the lightness dimension.
+ A value usually ranging between 0 (black), 100 (diffuse white) or higher (specular white).
+
+
+
+
+ Gets the a color component.
+ A value usually ranging from -100 to 100. Negative is green, positive magenta.
+
+
+
+
+ Gets the b color component.
+ A value usually ranging from -100 to 100. Negative is blue, positive is yellow
+
+
+
+
+ Gets the reference white point of this color
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The a (green - magenta) component.
+ The b (blue - yellow) component.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The a (green - magenta) component.
+ The b (blue - yellow) component.
+ The reference white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, a, b components.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, a, b components.
+ The reference white point.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents the CIE L*C*h°, cylindrical form of the CIE L*a*b* 1976 color.
+
+
+
+
+
+ D50 standard illuminant.
+ Used when reference white is not specified explicitly.
+
+
+
+
+ Gets the lightness dimension.
+ A value ranging between 0 (black), 100 (diffuse white) or higher (specular white).
+
+
+
+
+ Gets the a chroma component.
+ A value ranging from 0 to 200.
+
+
+
+
+ Gets the h° hue component in degrees.
+ A value ranging from 0 to 360.
+
+
+
+
+ Gets the reference white point of this color
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The chroma, relative saturation.
+ The hue in degrees.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The chroma, relative saturation.
+ The hue in degrees.
+ The reference white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, c, h components.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, c, h components.
+ The reference white point.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Computes the saturation of the color (chroma normalized by lightness)
+
+
+ A value ranging from 0 to 100.
+
+ The
+
+
+
+ Represents the CIE L*C*h°, cylindrical form of the CIE L*u*v* 1976 color.
+
+
+
+
+
+ D50 standard illuminant.
+ Used when reference white is not specified explicitly.
+
+
+
+
+ Gets the lightness dimension.
+ A value ranging between 0 (black), 100 (diffuse white) or higher (specular white).
+
+
+
+
+ Gets the a chroma component.
+ A value ranging from 0 to 200.
+
+
+
+
+ Gets the h° hue component in degrees.
+ A value ranging from 0 to 360.
+
+
+
+
+ Gets the reference white point of this color
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The chroma, relative saturation.
+ The hue in degrees.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The chroma, relative saturation.
+ The hue in degrees.
+ The reference white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, c, h components.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, c, h components.
+ The reference white point.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Computes the saturation of the color (chroma normalized by lightness)
+
+
+ A value ranging from 0 to 100.
+
+ The
+
+
+
+ The CIE 1976 (L*, u*, v*) color space, commonly known by its abbreviation CIELUV, is a color space adopted by the International
+ Commission on Illumination (CIE) in 1976, as a simple-to-compute transformation of the 1931 CIE XYZ color space, but which
+ attempted perceptual uniformity
+
+
+
+
+
+ D65 standard illuminant.
+ Used when reference white is not specified explicitly.
+
+
+
+
+ Gets the lightness dimension
+ A value usually ranging between 0 and 100.
+
+
+
+
+ Gets the blue-yellow chromaticity coordinate of the given whitepoint.
+ A value usually ranging between -100 and 100.
+
+
+
+
+ Gets the red-green chromaticity coordinate of the given whitepoint.
+ A value usually ranging between -100 and 100.
+
+
+
+
+ Gets the reference white point of this color
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The blue-yellow chromaticity coordinate of the given whitepoint.
+ The red-green chromaticity coordinate of the given whitepoint.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The blue-yellow chromaticity coordinate of the given whitepoint.
+ The red-green chromaticity coordinate of the given whitepoint.
+ The reference white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, u, v components.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, u, v components.
+ The reference white point.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an CIE xyY 1931 color
+
+
+
+
+
+ Gets the X chrominance component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the Y chrominance component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the Y luminance component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x chroma component.
+ The y chroma component.
+ The y luminance component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the x, y, Y components.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an CIE XYZ 1931 color
+
+
+
+
+
+ Gets the X component. A mix (a linear combination) of cone response curves chosen to be nonnegative.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the Y luminance component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the Z component. Quasi-equal to blue stimulation, or the S cone response.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ X is a mix (a linear combination) of cone response curves chosen to be nonnegative
+ The y luminance component.
+ Z is quasi-equal to blue stimulation, or the S cone of the human eye.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the x, y, z components.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Returns a new representing this instance.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an CMYK (cyan, magenta, yellow, keyline) color.
+
+
+
+
+ Gets the cyan color component.
+ A value ranging between 0 and 1.
+
+
+
+
+ Gets the magenta color component.
+ A value ranging between 0 and 1.
+
+
+
+
+ Gets the yellow color component.
+ A value ranging between 0 and 1.
+
+
+
+
+ Gets the keyline black color component.
+ A value ranging between 0 and 1.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The cyan component.
+ The magenta component.
+ The yellow component.
+ The keyline black component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the c, m, y, k components.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Implements gamma companding.
+
+
+
+
+
+
+
+
+ Expands a companded channel to its linear equivalent with respect to the energy.
+
+ The channel value.
+ The gamma value.
+ The representing the linear channel value.
+
+
+
+ Compresses an uncompanded channel (linear) to its nonlinear equivalent.
+
+ The channel value.
+ The gamma value.
+ The representing the nonlinear channel value.
+
+
+
+ Implements L* companding.
+
+
+ For more info see:
+
+
+
+
+
+
+ Expands a companded channel to its linear equivalent with respect to the energy.
+
+ The channel value.
+ The representing the linear channel value.
+
+
+
+ Compresses an uncompanded channel (linear) to its nonlinear equivalent.
+
+ The channel value
+ The representing the nonlinear channel value.
+
+
+
+ Implements Rec. 2020 companding function.
+
+
+
+
+
+
+
+ Expands a companded channel to its linear equivalent with respect to the energy.
+
+ The channel value.
+ The representing the linear channel value.
+
+
+
+ Compresses an uncompanded channel (linear) to its nonlinear equivalent.
+
+ The channel value.
+ The representing the nonlinear channel value.
+
+
+
+ Implements the Rec. 709 companding function.
+
+
+ http://en.wikipedia.org/wiki/Rec._709
+
+
+
+
+ Expands a companded channel to its linear equivalent with respect to the energy.
+
+ The channel value.
+ The representing the linear channel value.
+
+
+
+ Compresses an uncompanded channel (linear) to its nonlinear equivalent.
+
+ The channel value.
+ The representing the nonlinear channel value.
+
+
+
+ Implements sRGB companding.
+
+
+ For more info see:
+
+
+
+
+
+
+ Expands the companded vectors to their linear equivalents with respect to the energy.
+
+ The span of vectors.
+
+
+
+ Compresses the uncompanded vectors to their nonlinear equivalents with respect to the energy.
+
+ The span of vectors.
+
+
+
+ Expands a companded vector to its linear equivalent with respect to the energy.
+
+ The vector.
+
+
+
+ Compresses an uncompanded vector (linear) to its nonlinear equivalent.
+
+ The vector.
+
+
+
+ Expands a companded channel to its linear equivalent with respect to the energy.
+
+ The channel value.
+ The representing the linear channel value.
+
+
+
+ Compresses an uncompanded channel (linear) to its nonlinear equivalent.
+
+ The channel value.
+ The representing the nonlinear channel value.
+
+
+
+ Constants use for Cie conversion calculations
+
+
+
+
+
+ 216F / 24389F
+
+
+
+
+ 24389F / 27F
+
+
+
+
+ Performs chromatic adaptation on the various color spaces.
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Provides methods to allow the conversion of color values between different color spaces.
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+ Allows conversion to .
+
+
+
+
+ Performs chromatic adaptation of given color.
+ Target white point is .
+
+ The color to adapt
+ The source white point.
+ The adapted color
+
+
+
+ Performs chromatic adaptation of given color.
+ Target white point is .
+
+ The color to adapt
+ The source white point.
+ The target white point.
+ The adapted color
+
+
+
+ Adapts color from the source white point to white point set in .
+
+ The color to adapt
+ The adapted color
+
+
+
+ Adapts color from the source white point to white point set in .
+
+ The color to adapt
+ The adapted color
+
+
+
+ Adapts color from the source white point to white point set in .
+
+ The color to adapt
+ The adapted color
+
+
+
+ Adapts color from the source white point to white point set in .
+
+ The color to adapt
+ The adapted color
+
+
+
+ Adapts color from the source white point to white point set in .
+
+ The color to adapt
+ The adapted color
+
+
+
+ Adapts a color from the source working space to working space set in .
+
+ The color to adapt
+ The adapted color
+
+
+
+ Adapts an color from the source working space to working space set in .
+
+ The color to adapt
+ The adapted color
+
+
+
+ The converter for converting between CieLch to CieLab.
+
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ The converter for converting between CieLab to CieLch.
+
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ The converter for converting between CieLab to CieLchuv.
+
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Gets the correct converter for the given rgb working space.
+
+ The source working space
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors,
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration options.
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors.
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a
+
+ The color to convert.
+ The
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors.
+ The span to the destination colors.
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Performs the bulk conversion from into .
+
+ The span to the source colors
+ The span to the destination colors
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Converts a into a .
+
+ The color to convert.
+ The
+
+
+
+ Configuration options for the class.
+
+
+
+
+ Gets or sets the white point used for chromatic adaptation in conversions from/to XYZ color space.
+ When default, no adaptation will be performed.
+ Defaults to: .
+
+
+
+
+ Gets or sets the white point used *when creating* Luv/LChuv colors. (Luv/LChuv colors on the input already contain the white point information)
+ Defaults to: .
+
+
+
+
+ Gets or sets the white point used *when creating* Lab/LChab colors. (Lab/LChab colors on the input already contain the white point information)
+ Defaults to: .
+
+
+
+
+ Gets or sets the white point used *when creating* HunterLab colors. (HunterLab colors on the input already contain the white point information)
+ Defaults to: .
+
+
+
+
+ Gets or sets the target working space used *when creating* RGB colors. (RGB colors on the input already contain the working space information)
+ Defaults to: .
+
+
+
+
+ Gets or sets the chromatic adaptation method used. When null, no adaptation will be performed.
+
+
+
+
+ Gets or sets transformation matrix used in conversion to and from .
+
+
+
+
+ Represents the coordinates of CIEXY chromaticity space.
+
+
+
+
+ Gets the chromaticity X-coordinate.
+
+
+ Ranges usually from 0 to 1.
+
+
+
+
+ Gets the chromaticity Y-coordinate
+
+
+ Ranges usually from 0 to 1.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Chromaticity coordinate x (usually from 0 to 1)
+ Chromaticity coordinate y (usually from 0 to 1)
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converts from to .
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Converts from to .
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Converts from to .
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Converts from to .
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Converts from to .
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Converts from to .
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Calculates the blue-yellow chromacity based on the given whitepoint.
+
+ The whitepoint
+ The
+
+
+
+ Calculates the red-green chromacity based on the given whitepoint.
+
+ The whitepoint
+ The
+
+
+
+ Color converter between CIE XYZ and CIE xyY.
+ for formulas.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ The base class for converting between and color spaces.
+
+
+
+
+ Returns the Ka coefficient that depends upon the whitepoint illuminant.
+
+ The whitepoint
+ The
+
+
+
+ Returns the Kb coefficient that depends upon the whitepoint illuminant.
+
+ The whitepoint
+ The
+
+
+
+ Color converter between and
+
+
+
+
+ Default transformation matrix used, when no other is set. (Bradford)
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Definition of the cone response domain (see ),
+ if not set will be used.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Converts from to .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The target reference lab white point
+
+
+
+ Gets the target reference whitepoint. When not set, is used.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Converts from to .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The target reference luv white point
+
+
+
+ Gets the target reference whitepoint. When not set, is used.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Calculates the blue-yellow chromacity based on the given whitepoint.
+
+ The whitepoint
+ The
+
+
+
+ Calculates the red-green chromacity based on the given whitepoint.
+
+ The whitepoint
+ The
+
+
+
+ Color converter between and
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The hunter Lab white point.
+
+
+
+ Gets the target reference white. When not set, is used.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Color converter between and
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The target working space.
+
+
+
+ Gets the target working space.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result.
+
+
+
+ Color converter between and .
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result.
+
+
+
+ Color converter between HSL and Rgb
+ See for formulas.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Gets the color component from the given values.
+
+ The first value.
+ The second value.
+ The third value.
+
+ The .
+
+
+
+
+ Moves the specific value within the acceptable range for
+ conversion.
+ Used for converting colors to this type.
+
+ The value to shift.
+
+ The .
+
+
+
+
+ Color converter between HSV and Rgb
+ See for formulas.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Color converter between and
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Provides base methods for converting between and color spaces.
+
+
+
+
+ Returns the correct matrix to convert between the Rgb and CieXyz color space.
+
+ The Rgb working space.
+ The based on the chromaticity and working space.
+
+
+
+ Color converter between and
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The target working space.
+
+
+
+ Gets the source working space
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result
+
+
+
+ Color converter between and .
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result.
+
+
+
+ Color converter between Rgb and LinearRgb.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result.
+
+
+
+ Color converter between and
+ See for formulas.
+
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result.
+
+
+
+ Performs the conversion from the input to an instance of type.
+
+ The input color instance.
+ The converted result.
+
+
+
+ Chromatic adaptation.
+ A linear transformation of a source color (XS, YS, ZS) into a destination color (XD, YD, ZD) by a linear transformation [M]
+ which is dependent on the source reference white (XWS, YWS, ZWS) and the destination reference white (XWD, YWD, ZWD).
+
+
+
+
+ Performs a linear transformation of a source color in to the destination color.
+
+ Doesn't crop the resulting color space coordinates (e. g. allows negative values for XYZ coordinates).
+ The source color.
+ The source white point.
+ The destination white point.
+ The
+
+
+
+ Performs a bulk linear transformation of a source color in to the destination color.
+
+ Doesn't crop the resulting color space coordinates (e. g. allows negative values for XYZ coordinates).
+ The span to the source colors.
+ The span to the destination colors.
+ The source white point.
+ The destination white point.
+
+
+
+ Matrices used for transformation from to , defining the cone response domain.
+ Used in
+
+
+ Matrix data obtained from:
+ Two New von Kries Based Chromatic Adaptation Transforms Found by Numerical Optimization
+ S. Bianco, R. Schettini
+ DISCo, Department of Informatics, Systems and Communication, University of Milan-Bicocca, viale Sarca 336, 20126 Milan, Italy
+ https://web.stanford.edu/~sujason/ColorBalancing/Papers/Two%20New%20von%20Kries%20Based%20Chromatic%20Adaptation.pdf
+
+
+
+
+ Von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez adjusted for D65)
+
+
+
+
+ Von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez for equal energy)
+
+
+
+
+ XYZ scaling chromatic adaptation transform matrix
+
+
+
+
+ Bradford chromatic adaptation transform matrix (used in CMCCAT97)
+
+
+
+
+ Spectral sharpening and the Bradford transform
+
+
+
+
+ CMCCAT2000 (fitted from all available color data sets)
+
+
+
+
+ CAT02 (optimized for minimizing CIELAB differences)
+
+
+
+
+ Represents the chromaticity coordinates of RGB primaries.
+ One of the specifiers of .
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The chromaticity coordinates of the red channel.
+ The chromaticity coordinates of the green channel.
+ The chromaticity coordinates of the blue channel.
+
+
+
+ Gets the chromaticity coordinates of the red channel.
+
+
+
+
+ Gets the chromaticity coordinates of the green channel.
+
+
+
+
+ Gets the chromaticity coordinates of the blue channel.
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Implementation of the von Kries chromatic adaptation model.
+
+
+ Transformation described here:
+ http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The transformation matrix used for the conversion (definition of the cone response domain).
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color converter
+
+
+
+
+
+
+
+
+
+ The gamma working space.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The gamma value.
+ The reference white point.
+ The chromaticity of the rgb primaries.
+
+
+
+ Gets the gamma value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ L* working space.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The reference white point.
+ The chromaticity of the rgb primaries.
+
+
+
+
+
+
+
+
+
+ Rec. 2020 (ITU-R Recommendation BT.2020F) working space.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The reference white point.
+ The chromaticity of the rgb primaries.
+
+
+
+
+
+
+
+
+
+ Rec. 709 (ITU-R Recommendation BT.709) working space.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The reference white point.
+ The chromaticity of the rgb primaries.
+
+
+
+
+
+
+
+
+
+ Base class for all implementations of .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The reference white point.
+ The chromaticity of the rgb primaries.
+
+
+
+ Gets the reference white point
+
+
+
+
+ Gets the chromaticity of the rgb primaries.
+
+
+
+
+ Expands a companded channel to its linear equivalent with respect to the energy.
+
+
+ For more info see:
+
+
+ The channel value.
+ The representing the linear channel value.
+
+
+
+ Compresses an uncompanded channel (linear) to its nonlinear equivalent (depends on the RGB color system).
+
+
+ For more info see:
+
+
+ The channel value.
+ The representing the nonlinear channel value.
+
+
+
+
+
+
+
+
+
+ The sRgb working space.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The reference white point.
+ The chromaticity of the rgb primaries.
+
+
+
+
+
+
+
+
+
+ Represents a Hsl (hue, saturation, lightness) color.
+
+
+
+
+ Gets the hue component.
+ A value ranging between 0 and 360.
+
+
+
+
+ Gets the saturation component.
+ A value ranging between 0 and 1.
+
+
+
+
+ Gets the lightness component.
+ A value ranging between 0 and 1.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The h hue component.
+ The s saturation component.
+ The l value (lightness) component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the h, s, l components.
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a HSV (hue, saturation, value) color. Also known as HSB (hue, saturation, brightness).
+
+
+
+
+ Gets the hue component.
+ A value ranging between 0 and 360.
+
+
+
+
+ Gets the saturation component.
+ A value ranging between 0 and 1.
+
+
+
+
+ Gets the value (brightness) component.
+ A value ranging between 0 and 1.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The h hue component.
+ The s saturation component.
+ The v value (brightness) component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the h, s, v components.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an Hunter LAB color.
+ .
+
+
+
+
+ D50 standard illuminant.
+ Used when reference white is not specified explicitly.
+
+
+
+
+ Gets the lightness dimension.
+ A value usually ranging between 0 (black), 100 (diffuse white) or higher (specular white).
+
+
+
+
+ Gets the a color component.
+ A value usually ranging from -100 to 100. Negative is green, positive magenta.
+
+
+
+
+ Gets the b color component.
+ A value usually ranging from -100 to 100. Negative is blue, positive is yellow
+
+
+
+
+ Gets the reference white point of this color.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The a (green - magenta) component.
+ The b (blue - yellow) component.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The lightness dimension.
+ The a (green - magenta) component.
+ The b (blue - yellow) component.
+ The reference white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, a, b components.
+ Uses as white point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l a b components.
+ The reference white point.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The well known standard illuminants.
+ Standard illuminants provide a basis for comparing images or colors recorded under different lighting
+
+
+ Coefficients taken from: http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html
+
+ Descriptions taken from: http://en.wikipedia.org/wiki/Standard_illuminant
+
+
+
+
+ Incandescent / Tungsten
+
+
+
+
+ Direct sunlight at noon (obsoleteF)
+
+
+
+
+ Average / North sky Daylight (obsoleteF)
+
+
+
+
+ Horizon Light. ICC profile PCS
+
+
+
+
+ Mid-morning / Mid-afternoon Daylight
+
+
+
+
+ Noon Daylight: TelevisionF, sRGB color space
+
+
+
+
+ North sky Daylight
+
+
+
+
+ Equal energy
+
+
+
+
+ Cool White Fluorescent
+
+
+
+
+ D65 simulatorF, Daylight simulator
+
+
+
+
+ Philips TL84F, Ultralume 40
+
+
+
+
+ Represents an linear Rgb color with specified working space
+
+
+
+
+ The default LinearRgb working space.
+
+
+
+
+ Gets the red component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the green component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the blue component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the LinearRgb color space
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component ranging between 0 and 1.
+ The green component ranging between 0 and 1.
+ The blue component ranging between 0 and 1.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component ranging between 0 and 1.
+ The green component ranging between 0 and 1.
+ The blue component ranging between 0 and 1.
+ The rgb working space.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the r, g, b components.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the r, g, b components.
+ The LinearRgb working space.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Returns a new representing this instance.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LMS is a color space represented by the response of the three types of cones of the human eye,
+ named after their responsivity (sensitivity) at long, medium and short wavelengths.
+
+
+
+
+
+ Gets the L long component.
+ A value usually ranging between -1 and 1.
+
+
+
+
+ Gets the M medium component.
+ A value usually ranging between -1 and 1.
+
+
+
+
+ Gets the S short component.
+ A value usually ranging between -1 and 1.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ L represents the responsivity at long wavelengths.
+ M represents the responsivity at medium wavelengths.
+ S represents the responsivity at short wavelengths.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the l, m, s components.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Returns a new representing this instance.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an RGB color with specified working space.
+
+
+
+
+ The default rgb working space.
+
+
+
+
+ Gets the red component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the green component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the blue component.
+ A value usually ranging between 0 and 1.
+
+
+
+
+ Gets the Rgb color space
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component ranging between 0 and 1.
+ The green component ranging between 0 and 1.
+ The blue component ranging between 0 and 1.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component ranging between 0 and 1.
+ The green component ranging between 0 and 1.
+ The blue component ranging between 0 and 1.
+ The rgb working space.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the r, g, b components.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the r, g, b components.
+ The rgb working space.
+
+
+
+ Allows the implicit conversion of an instance of to a
+ .
+
+ The instance of to convert.
+ An instance of .
+
+
+
+ Allows the implicit conversion of an instance of to a
+ .
+
+ The instance of to convert.
+ An instance of .
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Returns a new representing this instance.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Chromaticity coordinates based on:
+
+
+
+
+ sRgb working space.
+
+
+ Uses proper companding function, according to:
+
+
+
+
+
+ Simplified sRgb working space (uses gamma companding instead of ).
+ See also .
+
+
+
+
+ Rec. 709 (ITU-R Recommendation BT.709) working space.
+
+
+
+
+ Rec. 2020 (ITU-R Recommendation BT.2020F) working space.
+
+
+
+
+ ECI Rgb v2 working space.
+
+
+
+
+ Adobe Rgb (1998) working space.
+
+
+
+
+ Apple sRgb working space.
+
+
+
+
+ Best Rgb working space.
+
+
+
+
+ Beta Rgb working space.
+
+
+
+
+ Bruce Rgb working space.
+
+
+
+
+ CIE Rgb working space.
+
+
+
+
+ ColorMatch Rgb working space.
+
+
+
+
+ Don Rgb 4 working space.
+
+
+
+
+ Ekta Space PS5 working space.
+
+
+
+
+ NTSC Rgb working space.
+
+
+
+
+ PAL/SECAM Rgb working space.
+
+
+
+
+ ProPhoto Rgb working space.
+
+
+
+
+ SMPTE-C Rgb working space.
+
+
+
+
+ Wide Gamut Rgb working space.
+
+
+
+
+ Represents an YCbCr (luminance, blue chroma, red chroma) color as defined in the ITU-T T.871 specification for the JFIF use with Jpeg.
+
+
+
+
+
+
+ Gets the Y luminance component.
+ A value ranging between 0 and 255.
+
+
+
+
+ Gets the Cb chroma component.
+ A value ranging between 0 and 255.
+
+
+
+
+ Gets the Cr chroma component.
+ A value ranging between 0 and 255.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The y luminance component.
+ The cb chroma component.
+ The cr chroma component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector representing the y, cb, cr components.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The byte order of the data stream.
+
+
+
+
+ The big-endian byte order (Motorola).
+ Most-significant byte comes first, and ends with the least-significant byte.
+
+
+
+
+ The little-endian byte order (Intel).
+ Least-significant byte comes first and ends with the most-significant byte.
+
+
+
+
+ Common constants used throughout the project
+
+
+
+
+ The epsilon value for comparing floating point numbers.
+
+
+
+
+ The epsilon squared value for comparing floating point numbers.
+
+
+
+
+ The exception that is thrown when the library tries to load
+ an image, which has format or content that is invalid or unsupported by ImageSharp.
+
+
+
+
+ Initializes a new instance of the class with the name of the
+ parameter that causes this exception.
+
+ The error message that explains the reason for this exception.
+
+
+
+ Initializes a new instance of the class with a specified
+ error message and the exception that is the cause of this exception.
+
+ The error message that explains the reason for this exception.
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic)
+ if no inner exception is specified.
+
+
+
+ The exception that is thrown when an error occurs when applying a process to an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the name of the
+ parameter that causes this exception.
+
+ The error message that explains the reason for this exception.
+
+
+
+ Initializes a new instance of the class with a specified
+ error message and the exception that is the cause of this exception.
+
+ The error message that explains the reason for this exception.
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic)
+ if no inner exception is specified.
+
+
+
+ The exception that is thrown when the library tries to load
+ an image which contains invalid content.
+
+
+
+
+ Initializes a new instance of the class with the name of the
+ parameter that causes this exception.
+
+ The error message that explains the reason for this exception.
+
+
+
+ Initializes a new instance of the class with the name of the
+ parameter that causes this exception.
+
+ The error message that explains the reason for this exception.
+ The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic)
+ if no inner exception is specified.
+
+
+
+ The exception that is thrown when the library tries to load
+ an image which has an unknown format.
+
+
+
+
+ Initializes a new instance of the class with the name of the
+ parameter that causes this exception.
+
+ The error message that explains the reason for this exception.
+
+
+
+ Contains extension methods for
+
+
+
+
+ Creates a object based on ,
+ having set to
+
+
+
+
+ Extension methods for the type.
+
+
+
+
+ Gets a string from the provided buffer data.
+
+ The encoding.
+ The buffer.
+ The string.
+
+
+
+ Encapsulates a series of time saving extension methods to the interface.
+
+
+
+
+ Generates a sequence of integral numbers within a specified range.
+
+
+ The start index, inclusive.
+
+
+ A method that has one parameter and returns a calculating the end index.
+
+
+ The incremental step.
+
+
+ The that contains a range of sequential integral numbers.
+
+
+
+
+ Generates a sequence of integral numbers within a specified range.
+
+ The start index, inclusive.
+
+ A method that has one parameter and returns a calculating the end index.
+
+ The incremental step.
+
+ The that contains a range of sequential integral numbers.
+
+
+
+
+ Extension methods for the type.
+
+
+
+
+ Writes data from a stream from the provided buffer.
+
+ The stream.
+ The buffer.
+ The offset within the buffer to begin writing.
+ The number of bytes to write to the stream.
+
+
+
+ Reads data from a stream into the provided buffer.
+
+ The stream.
+ The buffer.
+ The offset within the buffer where the bytes are read into.
+ The number of bytes, if available, to read.
+ The actual number of bytes read.
+
+
+
+ Skips the number of bytes in the given stream.
+
+ The stream.
+ A byte offset relative to the origin parameter.
+
+
+
+ Provides optimized static methods for common mathematical functions specific
+ to color processing.
+
+
+
+
+ Vector for converting pixel to gray value as specified by
+ ITU-R Recommendation BT.709.
+
+
+
+
+ Convert a pixel value to grayscale using ITU-R Recommendation BT.709.
+
+ The vector to get the luminance from.
+
+ The number of luminance levels (256 for 8 bit, 65536 for 16 bit grayscale images).
+
+
+
+
+ Gets the luminance from the rgb components using the formula
+ as specified by ITU-R Recommendation BT.709.
+
+ The red component.
+ The green component.
+ The blue component.
+ The .
+
+
+
+ Gets the luminance from the rgb components using the formula as
+ specified by ITU-R Recommendation BT.709.
+
+ The red component.
+ The green component.
+ The blue component.
+ The .
+
+
+
+ Gets the luminance from the rgb components using the formula as specified
+ by ITU-R Recommendation BT.709.
+
+ The red component.
+ The green component.
+ The blue component.
+ The .
+
+
+
+ Scales a value from a 16 bit to an
+ 8 bit equivalent.
+
+ The 8 bit component value.
+ The
+
+
+
+ Scales a value from an 8 bit to
+ an 16 bit equivalent.
+
+ The 8 bit component value.
+ The
+
+
+
+ Returns how many bits are required to store the specified number of colors.
+ Performs a Log2() on the value.
+
+ The number of colors.
+
+ The
+
+
+
+
+ Returns how many colors will be created by the specified number of bits.
+
+ The bit depth.
+ The
+
+
+
+ Transforms a vector by the given color matrix.
+
+ The source vector.
+ The transformation color matrix.
+
+
+
+ Bulk variant of .
+
+ The span of vectors
+ The transformation color matrix.
+
+
+
+ Common utility methods for working with enums.
+
+
+
+
+ Converts the numeric representation of the enumerated constants to an equivalent enumerated object.
+
+ The type of enum
+ The value to parse
+ The default value to return.
+ The .
+
+
+
+ Returns a value indicating whether the given enum has a flag of the given value.
+
+ The type of enum.
+ The value.
+ The flag.
+ The .
+
+
+
+ Parses a hexadecimal string into a byte array without allocations. Throws on non-hexadecimal character.
+ Adapted from https://source.dot.net/#System.Private.CoreLib/Convert.cs,c9e4fbeaca708991.
+
+ The hexadecimal string to parse.
+ The destination for the parsed bytes. Must be at least .Length / 2 bytes long.
+ The number of bytes written to .
+
+
+
+ Internal utilities intended to be only used in tests.
+
+
+
+
+ This constant is useful to verify the target framework ImageSharp has been built against.
+ Only intended to be used in tests!
+
+
+
+
+ Contains methods for converting values between unit scales.
+
+
+
+
+ The number of centimeters in a meter.
+ 1 cm is equal to exactly 0.01 meters.
+
+
+
+
+ The number of centimeters in an inch.
+ 1 inch is equal to exactly 2.54 centimeters.
+
+
+
+
+ The number of inches in a meter.
+ 1 inch is equal to exactly 0.0254 meters.
+
+
+
+
+ The default resolution unit value.
+
+
+
+
+ Scales the value from centimeters to meters.
+
+ The value to scale.
+ The .
+
+
+
+ Scales the value from meters to centimeters.
+
+ The value to scale.
+ The .
+
+
+
+ Scales the value from meters to inches.
+
+ The value to scale.
+ The .
+
+
+
+ Scales the value from inches to meters.
+
+ The value to scale.
+ The .
+
+
+
+ Scales the value from centimeters to inches.
+
+ The value to scale.
+ The .
+
+
+
+ Scales the value from inches to centimeters.
+
+ The value to scale.
+ The .
+
+
+
+ Converts an to a .
+
+ The EXIF profile containing the value.
+ The
+
+
+
+ Gets the exif profile resolution values.
+
+ The resolution unit.
+ The horizontal resolution value.
+ The vertical resolution value.
+
+
+
+
+ Global inlining options. Helps temporarily disable inlining for better profiler output.
+
+
+
+
+ regardless of the build conditions.
+
+
+
+
+ Provides optimized static methods for trigonometric, logarithmic,
+ and other common mathematical functions.
+
+
+
+
+ Determine the Greatest CommonDivisor (GCD) of two numbers.
+
+
+
+
+ Determine the Least Common Multiple (LCM) of two numbers.
+ See https://en.wikipedia.org/wiki/Least_common_multiple#Reduction_by_the_greatest_common_divisor.
+
+
+
+
+ Calculates % 2
+
+
+
+
+ Calculates % 4
+
+
+
+
+ Calculates % 8
+
+
+
+
+ Fast (x mod m) calculator, with the restriction that
+ should be power of 2.
+
+
+
+
+ Returns the absolute value of a 32-bit signed integer.
+ Uses bit shifting to speed up the operation compared to .
+
+
+ A number that is greater than , but less than
+ or equal to
+
+ The
+
+
+
+ Returns a specified number raised to the power of 2
+
+ A single-precision floating-point number
+ The number raised to the power of 2.
+
+
+
+ Returns a specified number raised to the power of 3
+
+ A single-precision floating-point number
+ The number raised to the power of 3.
+
+
+
+ Implementation of 1D Gaussian G(x) function
+
+ The x provided to G(x).
+ The spread of the blur.
+ The Gaussian G(x)
+
+
+
+ Returns the result of a normalized sine cardinal function for the given value.
+ SinC(x) = sin(pi*x)/(pi*x).
+
+ A single-precision floating-point number to calculate the result for.
+
+ The sine cardinal of .
+
+
+
+
+ Returns the value clamped to the inclusive range of min and max.
+
+ The value to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+ The clamped .
+
+
+
+ Returns the value clamped to the inclusive range of min and max.
+
+ The value to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+ The clamped .
+
+
+
+ Returns the value clamped to the inclusive range of min and max.
+
+ The value to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+ The clamped .
+
+
+
+ Returns the value clamped to the inclusive range of min and max.
+
+ The value to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+ The clamped .
+
+
+
+ Returns the value clamped to the inclusive range of min and max.
+
+ The value to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+ The clamped .
+
+
+
+ Returns the value clamped to the inclusive range of min and max.
+ 5x Faster than
+ on platforms < NET 5.
+
+ The value to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+ The clamped .
+
+
+
+ Clamps the span values to the inclusive range of min and max.
+
+ The span containing the values to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+
+
+
+ Clamps the span values to the inclusive range of min and max.
+
+ The span containing the values to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+
+
+
+ Clamps the span values to the inclusive range of min and max.
+
+ The span containing the values to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+
+
+
+ Clamps the span values to the inclusive range of min and max.
+
+ The span containing the values to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+
+
+
+ Clamps the span values to the inclusive range of min and max.
+
+ The span containing the values to clamp.
+ The minimum inclusive value.
+ The maximum inclusive value.
+
+
+
+ Pre-multiplies the "x", "y", "z" components of a vector by its "w" component leaving the "w" component intact.
+
+ The to premultiply
+
+
+
+ Reverses the result of premultiplying a vector via .
+
+ The to premultiply
+
+
+
+ Bulk variant of
+
+ The span of vectors
+
+
+
+ Bulk variant of
+
+ The span of vectors
+
+
+
+ Calculates the cube pow of all the XYZ channels of the input vectors.
+
+ The span of vectors
+
+
+
+ Calculates the cube root of all the XYZ channels of the input vectors.
+
+ The span of vectors
+
+
+
+ Performs a linear interpolation between two values based on the given weighting.
+
+ The first value.
+ The second value.
+ A value between 0 and 1 that indicates the weight of .
+ The .
+
+
+
+ Calculates floored log of the specified value, base 2.
+ Note that by convention, input value 0 returns 0 since Log(0) is undefined.
+
+ The value.
+
+
+
+ Calculates floored log of the specified value, base 2.
+ Note that by convention, input value 0 returns 0 since Log(0) is undefined.
+ Bit hacking with deBruijn sequence, extremely fast yet does not use any intrinsics so will work on every platform/runtime.
+
+
+ Description of this bit hacking can be found here:
+ https://cstheory.stackexchange.com/questions/19524/using-the-de-bruijn-sequence-to-find-the-lceil-log-2-v-rceil-of-an-integer
+
+ The value.
+
+
+
+ Fast division with ceiling for numbers.
+
+ Divident value.
+ Divisor value.
+ Ceiled division result.
+
+
+
+ Rotates the specified value left by the specified number of bits.
+
+ The value to rotate.
+ The number of bits to rotate with.
+ The rotated value.
+
+
+
+ Rotates the specified value left by the specified number of bits.
+
+ The value to rotate.
+ The number of bits to rotate with.
+ The rotated value.
+
+
+
+ Rotates the specified value right by the specified number of bits.
+
+ The value to rotate.
+ The number of bits to rotate with.
+ The rotated value.
+
+
+
+ Rotates the specified value right by the specified number of bits.
+
+ The value to rotate.
+ The number of bits to rotate with.
+ The rotated value.
+
+
+
+ Tells whether input value is outside of the given range.
+
+ Value.
+ Mininum value, inclusive.
+ Maximum value, inclusive.
+
+
+
+ Provides information about the .NET runtime installation.
+ Many methods defer to when available.
+
+
+
+
+ Gets a value indicating whether the .NET installation is .NET Core 3.1 or lower.
+
+
+
+
+ Gets the name of the .NET installation on which an app is running.
+
+
+
+
+ Indicates whether the current application is running on the specified platform.
+
+
+
+
+ Defines the contract for methods that allow the shuffling of pixel components.
+ Used for shuffling on platforms that do not support Hardware Intrinsics.
+
+
+
+
+ Gets the shuffle control.
+
+
+
+
+ Shuffle 8-bit integers within 128-bit lanes in
+ using the control and store the results in .
+
+ The source span of bytes.
+ The destination span of bytes.
+
+ Implementation can assume that source.Length is less or equal than dest.Length.
+ Loops should iterate using source.Length.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Various extension and utility methods for and utilizing SIMD capabilities
+
+
+
+
+ Implementation with 256bit / AVX2 intrinsics NOT depending on newer API-s (Vector.Widen etc.)
+
+
+
+
+ SIMD optimized implementation for .
+ Works only with span Length divisible by 8.
+ Implementation adapted from:
+ http://lolengine.net/blog/2011/3/20/understanding-fast-float-integer-conversions
+ http://stackoverflow.com/a/536278
+
+
+
+
+ Implementation of which is faster on older runtimes.
+
+
+
+
+ Convert all values normalized into [0..1] from 'source'
+ into 'dest' buffer of . The values are scaled up into [0-255] and rounded.
+ This implementation is SIMD optimized and works only when span Length is divisible by 8.
+ Based on:
+
+ http://lolengine.net/blog/2011/3/20/understanding-fast-float-integer-conversions
+
+
+
+
+
+ Gets a value indicating whether code is being JIT-ed to AVX2 instructions
+ where both float and integer registers are of size 256 byte.
+
+
+
+
+ Gets a value indicating whether code is being JIT-ed to SSE instructions
+ where float and integer registers are of size 128 byte.
+
+
+
+
+ Transform all scalars in 'v' in a way that converting them to would have rounding semantics.
+
+ The vector
+
+
+
+ Rounds all values in 'v' to the nearest integer following semantics.
+ Source:
+
+ https://github.com/g-truc/glm/blob/master/glm/simd/common.h#L110
+
+
+ The vector
+
+
+
+ Converts all input -s to -s normalized into [0..1].
+ should be the of the same size as ,
+ but there are no restrictions on the span's length.
+
+ The source span of bytes
+ The destination span of floats
+
+
+
+ Convert all values normalized into [0..1] from 'source' into 'dest' buffer of .
+ The values are scaled up into [0-255] and rounded, overflows are clamped.
+ should be the of the same size as ,
+ but there are no restrictions on the span's length.
+
+ The source span of floats
+ The destination span of bytes
+
+
+
+ Implementation methods based on newer API-s (Vector.Widen, Vector.Narrow, Vector.ConvertTo*).
+ Only accelerated only on RyuJIT having dotnet/coreclr#10662 merged (.NET Core 2.1+ .NET 4.7.2+)
+ See:
+ https://github.com/dotnet/coreclr/pull/10662
+ API Proposal:
+ https://github.com/dotnet/corefx/issues/15957
+
+
+
+
+ Widen and convert a vector of values into 2 vectors of -s.
+
+
+
+
+ as many elements as possible, slicing them down (keeping the remainder).
+
+
+
+
+ as many elements as possible, slicing them down (keeping the remainder).
+
+
+
+
+ Implementation , which is faster on new RyuJIT runtime.
+
+
+
+
+ Implementation of , which is faster on new .NET runtime.
+
+
+
+
+ Fallback implementation based on (128bit).
+ For , efficient software fallback implementations are present,
+ and we hope that even mono's JIT is able to emit SIMD instructions for that type :P
+
+
+
+
+ as many elements as possible, slicing them down (keeping the remainder).
+
+
+
+
+ as many elements as possible, slicing them down (keeping the remainder).
+
+
+
+
+ Implementation of using .
+
+
+
+
+ Implementation of using .
+
+
+
+
+ Shuffle single-precision (32-bit) floating-point elements in
+ using the control and store the results in .
+
+ The source span of floats.
+ The destination span of floats.
+ The byte control.
+
+
+
+ Shuffle 8-bit integers within 128-bit lanes in
+ using the control and store the results in .
+
+ The source span of bytes.
+ The destination span of bytes.
+ The type of shuffle to perform.
+
+
+
+ Shuffle 8-bit integer triplets within 128-bit lanes in
+ using the control and store the results in .
+
+ The source span of bytes.
+ The destination span of bytes.
+ The type of shuffle to perform.
+
+
+
+ Pads then shuffles 8-bit integers within 128-bit lanes in
+ using the control and store the results in .
+
+ The source span of bytes.
+ The destination span of bytes.
+ The type of shuffle to perform.
+
+
+
+ Shuffles then slices 8-bit integers within 128-bit lanes in
+ using the control and store the results in .
+
+ The source span of bytes.
+ The destination span of bytes.
+ The type of shuffle to perform.
+
+
+
+ Implements basic math operations using tolerant comparison
+ whenever an equality check is needed.
+
+
+
+
+ A read-only default instance for using 1e-8 as epsilon.
+ It is a field so it can be passed as an 'in' parameter.
+ Does not necessarily fit all use cases!
+
+
+
+
+ == 0
+
+
+
+
+ > 0
+
+
+
+
+ < 0
+
+
+
+
+ ==
+
+
+
+
+ >
+
+
+
+
+ <
+
+
+
+
+ >=
+
+
+
+
+ <=
+
+
+
+
+ Contains 8 element value tuples of various types.
+
+
+
+
+
+
+
+ Extension methods for the type.
+
+
+
+
+ Loads the fields in a target of from one of type.
+
+ The target of instance.
+ The source of instance.
+
+
+
+ Loads the fields in a target of from one of type.
+
+ The target of instance.
+ The source of instance.
+
+
+
+ Calculates the 32 bit Adler checksum of a given buffer according to
+ RFC 1950. ZLIB Compressed Data Format Specification version 3.3)
+
+
+
+
+ The default initial seed value of a Adler32 checksum calculation.
+
+
+
+
+ Calculates the Adler32 checksum with the bytes taken from the span.
+
+ The readonly span of bytes.
+ The .
+
+
+
+ Calculates the Adler32 checksum with the bytes taken from the span and seed.
+
+ The input Adler32 value.
+ The readonly span of bytes.
+ The .
+
+
+
+ Calculates the 32 bit Cyclic Redundancy Check (CRC) checksum of a given buffer
+ according to the IEEE 802.3 specification.
+
+
+ Contains precalulated tables for scalar calculations.
+
+
+
+
+ The default initial seed value of a Crc32 checksum calculation.
+
+
+
+
+ Calculates the CRC checksum with the bytes taken from the span.
+
+ The readonly span of bytes.
+ The .
+
+
+
+ Calculates the CRC checksum with the bytes taken from the span and seed.
+
+ The input CRC value.
+ The readonly span of bytes.
+ The .
+
+
+
+ The table of all possible eight bit values for fast scalar lookup.
+
+
+
+
+ Provides enumeration of available deflate compression levels.
+
+
+
+
+ Level 0. Equivalent to .
+
+
+
+
+ No compression. Equivalent to .
+
+
+
+
+ Level 1. Equivalent to .
+
+
+
+
+ Best speed compression level.
+
+
+
+
+ Level 2.
+
+
+
+
+ Level 3.
+
+
+
+
+ Level 4.
+
+
+
+
+ Level 5.
+
+
+
+
+ Level 6. Equivalent to .
+
+
+
+
+ The default compression level. Equivalent to .
+
+
+
+
+ Level 7.
+
+
+
+
+ Level 8.
+
+
+
+
+ Level 9. Equivalent to .
+
+
+
+
+ Best compression level. Equivalent to .
+
+
+
+
+ This class compresses input with the deflate algorithm described in RFC 1951.
+ It has several compression levels and three different strategies described below.
+
+
+
+
+ The best and slowest compression level. This tries to find very
+ long and distant string repetitions.
+
+
+
+
+ The worst but fastest compression level.
+
+
+
+
+ The default compression level.
+
+
+
+
+ This level won't compress at all but output uncompressed blocks.
+
+
+
+
+ The compression method. This is the only method supported so far.
+ There is no need to use this constant at all.
+
+
+
+
+ Compression level.
+
+
+
+
+ The current state.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator to use for buffer allocations.
+ The compression level, a value between NoCompression and BestCompression.
+
+ if level is out of range.
+
+
+
+ Compression Level as an enum for safer use
+
+
+
+
+ The best and slowest compression level. This tries to find very
+ long and distant string repetitions.
+
+
+
+
+ The worst but fastest compression level.
+
+
+
+
+ The default compression level.
+
+
+
+
+ This level won't compress at all but output uncompressed blocks.
+
+
+
+
+ The compression method. This is the only method supported so far.
+ There is no need to use this constant at all.
+
+
+
+
+ Gets a value indicating whetherthe stream was finished and no more output bytes
+ are available.
+
+
+
+
+ Gets a value indicating whether the input buffer is empty.
+ You should then call setInput().
+ NOTE: This method can also return true when the stream
+ was finished.
+
+
+
+
+ Resets the deflater. The deflater acts afterwards as if it was
+ just created with the same compression level and strategy as it
+ had before.
+
+
+
+
+ Flushes the current input block. Further calls to Deflate() will
+ produce enough output to inflate everything in the current input
+ block. It is used by DeflaterOutputStream to implement Flush().
+
+
+
+
+ Finishes the deflater with the current input block. It is an error
+ to give more input after this method was called. This method must
+ be called to force all bytes to be flushed.
+
+
+
+
+ Sets the data which should be compressed next. This should be
+ only called when needsInput indicates that more input is needed.
+ The given byte array should not be changed, before needsInput() returns
+ true again.
+
+ The buffer containing the input data.
+ The start of the data.
+ The number of data bytes of input.
+
+ if the buffer was finished or if previous input is still pending.
+
+
+
+
+ Sets the compression level. There is no guarantee of the exact
+ position of the change, but if you call this when needsInput is
+ true the change of compression level will occur somewhere near
+ before the end of the so far given input.
+
+
+ the new compression level.
+
+
+
+
+ Deflates the current input block to the given array.
+
+ Buffer to store the compressed data.
+ Offset into the output array.
+ The maximum number of bytes that may be stored.
+
+ The number of compressed bytes added to the output, or 0 if either
+ or returns true or length is zero.
+
+
+
+
+
+
+
+ This class contains constants used for deflation.
+
+
+
+
+ Set to true to enable debugging
+
+
+
+
+ Written to Zip file to identify a stored block
+
+
+
+
+ Identifies static tree in Zip file
+
+
+
+
+ Identifies dynamic tree in Zip file
+
+
+
+
+ Header flag indicating a preset dictionary for deflation
+
+
+
+
+ Sets internal buffer sizes for Huffman encoding
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Internal compression engine constant
+
+
+
+
+ Strategies for deflater
+
+
+
+
+ The default strategy
+
+
+
+
+ This strategy will only allow longer string repetitions. It is
+ useful for random data with a small character set.
+
+
+
+
+ This strategy will not look for string repetitions at all. It
+ only encodes with Huffman trees (which means, that more common
+ characters get a smaller encoding.
+
+
+
+
+ Low level compression engine for deflate algorithm which uses a 32K sliding window
+ with secondary compression from Huffman/Shannon-Fano codes.
+
+
+
+
+ Points to the current character in the window.
+
+
+
+
+ lookahead is the number of characters starting at strstart in
+ window that are valid.
+ So window[strstart] until window[strstart+lookahead-1] are valid
+ characters.
+
+
+
+
+ The current compression function.
+
+
+
+
+ The input data for compression.
+
+
+
+
+ The offset into inputBuf, where input data starts.
+
+
+
+
+ The end offset of the input data.
+
+
+
+
+ Hashtable, hashing three characters to an index for window, so
+ that window[index]..window[index+2] have this hash code.
+ Note that the array should really be unsigned short, so you need
+ to and the values with 0xFFFF.
+
+
+
+
+ prev[index & WMASK] points to the previous index that has the
+ same hash code as the string starting at index. This way
+ entries with the same hash code are in a linked list.
+ Note that the array should really be unsigned short, so you need
+ to and the values with 0xFFFF.
+
+
+
+
+ This array contains the part of the uncompressed stream that
+ is of relevance. The current character is indexed by strstart.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator to use for buffer allocations.
+ The deflate strategy to use.
+
+
+
+ Gets the pending buffer to use.
+
+
+
+
+ Deflate drives actual compression of data
+
+ True to flush input buffers
+ Finish deflation with the current input.
+ Returns true if progress has been made.
+
+
+
+ Sets input data to be deflated. Should only be called when
+ returns true
+
+ The buffer containing input data.
+ The offset of the first byte of data.
+ The number of bytes of data to use as input.
+
+
+
+ Determines if more input is needed.
+
+ Return true if input is needed via SetInput
+
+
+
+ Reset internal state
+
+
+
+
+ Set the deflate level (0-9)
+
+ The value to set the level to.
+
+
+
+ Fill the window
+
+
+
+
+
+
+
+ Inserts the current string in the head hash and returns the previous
+ value for this hash.
+
+ The previous hash value
+
+
+
+
+ Find the best (longest) string in the window matching the
+ string starting at strstart.
+
+
+ Preconditions:
+
+ strstart + DeflaterConstants.MAX_MATCH <= window.length.
+
+
+ The current match.
+ True if a match greater than the minimum length is found
+
+
+
+ Performs Deflate Huffman encoding.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator to use for buffer allocations.
+
+
+
+ Gets the lengths of the bit length codes are sent in order of decreasing probability, to avoid transmitting the lengths for unused bit length codes.
+
+
+
+
+ Gets the pending buffer to use.
+
+
+
+
+ Reset internal state
+
+
+
+
+ Write all trees to pending buffer
+
+ The number/rank of treecodes to send.
+
+
+
+ Compress current buffer writing data to pending buffer
+
+
+
+
+ Flush block to output with no compression
+
+ Data to write
+ Index of first byte to write
+ Count of bytes to write
+ True if this is the last block
+
+
+
+ Flush block to output with compression
+
+ Data to flush
+ Index of first byte to flush
+ Count of bytes to flush
+ True if this is the last block
+
+
+
+ Get value indicating if internal buffer is full
+
+ true if buffer is full
+
+
+
+ Add literal to buffer
+
+ Literal value to add to buffer.
+ Value indicating internal buffer is full
+
+
+
+ Add distance code and length to literal and distance trees
+
+ Distance code
+ Length
+ Value indicating if internal buffer is full
+
+
+
+ Reverse the bits of a 16 bit value.
+
+ Value to reverse bits
+ Value with bits reversed
+
+
+
+
+
+
+ Resets the internal state of the tree
+
+
+
+
+ Set static codes and length
+
+ new codes
+ length for new codes
+
+
+
+ Build dynamic codes and lengths
+
+
+
+
+ Get encoded length
+
+ Encoded length, the sum of frequencies * lengths
+
+
+
+ Scan a literal or distance tree to determine the frequencies of the codes
+ in the bit length tree.
+
+
+
+
+ Write the tree values.
+
+ The pending buffer.
+ The tree to write.
+
+
+
+ A special stream deflating or compressing the bytes that are
+ written to it. It uses a Deflater to perform actual deflating.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator to use for buffer allocations.
+ The output stream where deflated output is written.
+ The compression level.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Stores pending data for writing data to the Deflater.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator to use for buffer allocations.
+
+
+
+ Gets the number of bits written to the buffer.
+
+
+
+
+ Gets a value indicating whether indicates the buffer has been flushed.
+
+
+
+
+ Clear internal state/buffers.
+
+
+
+
+ Write a short value to buffer LSB first.
+
+ The value to write.
+
+
+
+ Write a block of data to the internal buffer.
+
+ The data to write.
+ The offset of first byte to write.
+ The number of bytes to write.
+
+
+
+ Aligns internal buffer on a byte boundary.
+
+
+
+
+ Write bits to internal buffer
+
+ source of bits
+ number of bits to write
+
+
+
+ Write a short value to internal buffer most significant byte first
+
+ The value to write
+
+
+
+ Flushes the pending buffer into the given output array.
+ If the output array is to small, only a partial flush is done.
+
+ The output array.
+ The offset into output array.
+ The maximum number of bytes to store.
+ The number of bytes flushed.
+
+
+
+
+
+
+ Provides methods and properties for compressing streams by using the Zlib Deflate algorithm.
+
+
+
+
+ The raw stream containing the uncompressed image data.
+
+
+
+
+ Computes the checksum for the data stream.
+
+
+
+
+ A value indicating whether this instance of the given entity has been disposed.
+
+ if this instance has been disposed; otherwise, .
+
+ If the entity is disposed, it must not be disposed a second
+ time. The isDisposed field is set the first time the entity
+ is disposed. If the isDisposed field is true, then the Dispose()
+ method will not dispose again. This help not to prolong the entity's
+ life in the Garbage Collector.
+
+
+
+
+ The stream responsible for compressing the input stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator to use for buffer allocations.
+ The stream to compress.
+ The compression level.
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator to use for buffer allocations.
+ The stream to compress.
+ The compression level.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides methods and properties for deframing streams from PNGs.
+
+
+
+
+ Used to read the Adler-32 and Crc-32 checksums.
+ We don't actually use this for anything so it doesn't
+ have to be threadsafe.
+
+
+
+
+ A default delegate to get more data from the inner stream.
+
+
+
+
+ The inner raw memory stream.
+
+
+
+
+ A value indicating whether this instance of the given entity has been disposed.
+
+ if this instance has been disposed; otherwise, .
+
+ If the entity is disposed, it must not be disposed a second
+ time. The isDisposed field is set the first time the entity
+ is disposed. If the isDisposed field is true, then the Dispose()
+ method will not dispose again. This help not to prolong the entity's
+ life in the Garbage Collector.
+
+
+
+
+ The current data remaining to be read.
+
+
+
+
+ Delegate to get more data once we've exhausted the current data remaining.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The inner raw stream.
+
+
+
+ Initializes a new instance of the class.
+
+ The inner raw stream.
+ A delegate to get more data from the inner stream.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the compressed stream over the deframed inner stream.
+
+
+
+
+ Adds new bytes from a frame found in the original stream.
+
+ The current remaining data according to the chunk length.
+ Whether the chunk to be inflated is a critical chunk.
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides configuration which allows altering default behaviour or extending the library.
+
+
+
+
+ A lazily initialized configuration default instance.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ A collection of configuration modules to register.
+
+
+
+ Gets the default instance.
+
+
+
+
+ Gets or sets the maximum number of concurrent tasks enabled in ImageSharp algorithms
+ configured with this instance.
+ Initialized with by default.
+
+
+
+
+ Gets or sets the size of the buffer to use when working with streams.
+ Initialized with by default.
+
+
+
+
+ Gets or sets a value indicating whether to force image buffers to be contiguous whenever possible.
+
+
+ Contiguous allocations are not possible, if the image needs a buffer larger than .
+
+
+
+
+ Gets a set of properties for the Configuration.
+
+ This can be used for storing global settings and defaults to be accessible to processors.
+
+
+
+ Gets the currently registered s.
+
+
+
+
+ Gets or sets the position in a stream to use for reading when using a seekable stream as an image data source.
+
+
+
+
+ Gets or the that is currently in use.
+
+
+
+
+ Gets or sets the that is currently in use.
+ Defaults to .
+
+ Allocators are expensive, so it is strongly recommended to use only one busy instance per process.
+ In case you need to customize it, you can ensure this by changing
+
+
+ It's possible to reduce allocator footprint by assigning a custom instance created with
+ , but note that since the default pooling
+ allocators are expensive, it is strictly recommended to use a single process-wide allocator.
+ You can ensure this by altering the allocator of , or by implementing custom application logic that
+ manages allocator lifetime.
+
+ If an allocator has to be dropped for some reason,
+ shall be invoked after disposing all associated instances.
+
+
+
+
+ Gets the maximum header size of all the formats.
+
+
+
+
+ Gets or sets the filesystem helper for accessing the local file system.
+
+
+
+
+ Gets or sets the working buffer size hint for image processors.
+ The default value is 1MB.
+
+
+ Currently only used by Resize. If the working buffer is expected to be discontiguous,
+ min(WorkingBufferSizeHintInBytes, BufferCapacityInBytes) should be used.
+
+
+
+
+ Gets or sets the image operations provider factory.
+
+
+
+
+ Registers a new format provider.
+
+ The configuration provider to call configure on.
+
+
+
+ Creates a shallow copy of the .
+
+ A new configuration instance.
+
+
+
+ Creates the default instance with the following s preregistered:
+
+
+
+ .
+ .
+ .
+ .
+ .
+
+ The default configuration of .
+
+
+
+ Represents the method to handle .
+
+
+
+
+ Utilities to track memory usage and detect memory leaks from not disposing ImageSharp objects.
+
+
+
+
+ Fires when an ImageSharp object's undisposed memory resource leaks to the finalizer.
+ The event brings significant overhead, and is intended to be used for troubleshooting only.
+ For production diagnostics, use .
+
+
+
+
+ Fires when ImageSharp allocates memory from a MemoryAllocator
+
+
+
+
+ Fires when ImageSharp releases memory allocated from a MemoryAllocator
+
+
+
+
+ Gets a value indicating the total number of memory resource objects leaked to the finalizer.
+
+
+
+
+ Gets the Bitmap identifier.
+ The field used to identify the bitmap file: 0x42 0x41 (Hex code points for B and A).
+
+
+
+
+ Gets the size of this header.
+
+
+
+
+ Gets the offset to next OS2BMPARRAYFILEHEADER.
+ This offset is calculated from the starting byte of the file. A value of zero indicates that this header is for the last image in the array list.
+
+
+
+
+ Gets the width of the image display in pixels.
+
+
+
+
+ Gets the height of the image display in pixels.
+
+
+
+
+ Enumerates the available bits per pixel the bitmap encoder supports.
+
+
+
+
+ 1 bit per pixel.
+
+
+
+
+ 4 bits per pixel.
+
+
+
+
+ 8 bits per pixel. Each pixel consists of 1 byte.
+
+
+
+
+ 16 bits per pixel. Each pixel consists of 2 bytes.
+
+
+
+
+ 24 bits per pixel. Each pixel consists of 3 bytes.
+
+
+
+
+ 32 bits per pixel. Each pixel consists of 4 bytes.
+
+
+
+
+ Defines the compression type of the image data
+ in the bitmap file.
+
+
+
+
+ Each image row has a multiple of four elements. If the
+ row has less elements, zeros will be added at the right side.
+ The format depends on the number of bits, stored in the info header.
+ If the number of bits are one, four or eight each pixel data is
+ a index to the palette. If the number of bits are sixteen,
+ twenty-four or thirty-two each pixel contains a color.
+
+
+
+
+ Two bytes are one data record. If the first byte is not zero, the
+ next byte will be repeated as much as the value of the first byte.
+ If the first byte is zero, the record has different meanings, depending
+ on the second byte. If the second byte is zero, it is the end of the row,
+ if it is one, it is the end of the image.
+
+
+
+
+ Two bytes are one data record. If the first byte is not zero, the
+ next two half bytes will be repeated as much as the value of the first byte.
+ If the first byte is zero, the record has different meanings, depending
+ on the second byte. If the second byte is zero, it is the end of the row,
+ if it is one, it is the end of the image.
+
+
+
+
+ Each image row has a multiple of four elements. If the
+ row has less elements, zeros will be added at the right side.
+
+
+
+
+ The bitmap contains a JPG image.
+ Not supported at the moment.
+
+
+
+
+ The bitmap contains a PNG image.
+ Not supported at the moment.
+
+
+
+
+ Introduced with Windows CE.
+ Specifies that the bitmap is not compressed and that the color table consists of four DWORD color
+ masks that specify the red, green, blue, and alpha components of each pixel.
+
+
+
+
+ OS/2 specific compression type.
+ Similar to run length encoding of 4 and 8 bit.
+ The only difference is that run values encoded are three bytes in size (one byte per RGB color component),
+ rather than four or eight bits in size.
+
+ Note: Because compression value of 4 is ambiguous for BI_RGB for windows and RLE24 for OS/2, the enum value is remapped
+ to a different value, to be clearly separate from valid windows values.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the bmp format.
+
+
+
+
+
+
+
+ Defines constants relating to BMPs
+
+
+
+
+ The list of mimetypes that equate to a bmp.
+
+
+
+
+ The list of file extensions that equate to a bmp.
+
+
+
+
+ Valid magic bytes markers identifying a Bitmap file.
+
+
+
+
+ Single-image BMP file that may have been created under Windows or OS/2.
+
+
+
+
+ OS/2 Bitmap Array.
+
+
+
+
+ OS/2 Color Icon.
+
+
+
+
+ OS/2 Color Pointer.
+
+
+
+
+ OS/2 Icon.
+
+
+
+
+ OS/2 Pointer.
+
+
+
+
+ Image decoder for generating an image out of a Windows bitmap stream.
+
+
+ Does not support the following formats at the moment:
+
+ - JPG
+ - PNG
+ - Some OS/2 specific subtypes like: Bitmap Array, Color Icon, Color Pointer, Icon, Pointer.
+
+ Formats will be supported in a later releases. We advise always
+ to use only 24 Bit Windows bitmaps.
+
+
+
+
+ Gets or sets a value indicating how to deal with skipped pixels, which can occur during decoding run length encoded bitmaps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the bitmap decoding operation.
+
+
+ A useful decoding source example can be found at
+
+
+
+
+ The default mask for the red part of the color for 16 bit rgb bitmaps.
+
+
+
+
+ The default mask for the green part of the color for 16 bit rgb bitmaps.
+
+
+
+
+ The default mask for the blue part of the color for 16 bit rgb bitmaps.
+
+
+
+
+ RLE flag value that indicates following byte has special meaning.
+
+
+
+
+ RLE flag value marking end of a scan line.
+
+
+
+
+ RLE flag value marking end of bitmap data.
+
+
+
+
+ RLE flag value marking the start of [x,y] offset instruction.
+
+
+
+
+ The stream to decode from.
+
+
+
+
+ The metadata.
+
+
+
+
+ The bitmap specific metadata.
+
+
+
+
+ The file header containing general information.
+
+
+
+
+ Indicates which bitmap file marker was read.
+
+
+
+
+ The info header containing detailed information about the bitmap.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ The bitmap decoder options.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The options.
+
+
+
+
+
+
+ Gets the dimensions of the image.
+
+
+
+
+
+
+
+
+
+
+ Returns the y- value based on the given height.
+
+ The y- value representing the current row.
+ The height of the bitmap.
+ Whether the bitmap is inverted.
+ The representing the inverted value.
+
+
+
+ Calculates the amount of bytes to pad a row.
+
+ The image width.
+ The pixel component count.
+
+ The padding.
+
+
+
+
+ Decodes a bitmap containing the BITFIELDS Compression type. For each color channel, there will be a bitmask
+ which will be used to determine which bits belong to that channel.
+
+ The pixel format.
+ The output pixel buffer containing the decoded image.
+ Whether the bitmap is inverted.
+
+
+
+ Looks up color values and builds the image from de-compressed RLE8 or RLE4 data.
+ Compressed RLE8 stream is uncompressed by
+ Compressed RLE4 stream is uncompressed by
+
+ The pixel format.
+ The compression type. Either RLE4 or RLE8.
+ The to assign the palette to.
+ The containing the colors.
+ The width of the bitmap.
+ The height of the bitmap.
+ Whether the bitmap is inverted.
+
+
+
+ Looks up color values and builds the image from de-compressed RLE24.
+
+ The pixel format.
+ The to assign the palette to.
+ The width of the bitmap.
+ The height of the bitmap.
+ Whether the bitmap is inverted.
+
+
+
+ Produce uncompressed bitmap data from a RLE4 stream.
+
+
+ RLE4 is a 2-byte run-length encoding.
+
If first byte is 0, the second byte may have special meaning.
+
Otherwise, the first byte is the length of the run and second byte contains two color indexes.
+
+ The width of the bitmap.
+ Buffer for uncompressed data.
+ Keeps track over skipped and therefore undefined pixels.
+ Keeps track of rows, which have undefined pixels.
+
+
+
+ Produce uncompressed bitmap data from a RLE8 stream.
+
+
+ RLE8 is a 2-byte run-length encoding.
+
If first byte is 0, the second byte may have special meaning.
+
Otherwise, the first byte is the length of the run and second byte is the color for the run.
+
+ The width of the bitmap.
+ Buffer for uncompressed data.
+ Keeps track of skipped and therefore undefined pixels.
+ Keeps track of rows, which have undefined pixels.
+
+
+
+ Produce uncompressed bitmap data from a RLE24 stream.
+
+
+
If first byte is 0, the second byte may have special meaning.
+
Otherwise, the first byte is the length of the run and following three bytes are the color for the run.
+
+ The width of the bitmap.
+ Buffer for uncompressed data.
+ Keeps track of skipped and therefore undefined pixels.
+ Keeps track of rows, which have undefined pixels.
+
+
+
+ Keeps track of skipped / undefined pixels, when the EndOfBitmap command occurs.
+
+ The already processed pixel count.
+ The width of the image.
+ The skipped pixel count.
+ The undefined pixels.
+ Rows with undefined pixels.
+
+
+
+ Keeps track of undefined / skipped pixels, when the EndOfLine command occurs.
+
+ The already uncompressed pixel count.
+ The width of image.
+ The undefined pixels.
+ The rows with undefined pixels.
+ The number of skipped pixels.
+
+
+
+ Keeps track of undefined / skipped pixels, when the delta command occurs.
+
+ The count.
+ The width of the image.
+ Delta skip in x direction.
+ Delta skip in y direction.
+ The undefined pixels.
+ The rows with undefined pixels.
+ The number of skipped pixels.
+
+
+
+ Reads the color palette from the stream.
+
+ The pixel format.
+ The to assign the palette to.
+ The containing the colors.
+ The width of the bitmap.
+ The height of the bitmap.
+ The number of bits per pixel.
+ Usually 4 bytes, but in case of Windows 2.x bitmaps or OS/2 1.x bitmaps
+ the bytes per color palette entry's can be 3 bytes instead of 4.
+ Whether the bitmap is inverted.
+
+
+
+ Reads the 16 bit color palette from the stream.
+
+ The pixel format.
+ The to assign the palette to.
+ The width of the bitmap.
+ The height of the bitmap.
+ Whether the bitmap is inverted.
+ The bitmask for the red channel.
+ The bitmask for the green channel.
+ The bitmask for the blue channel.
+
+
+
+ Performs final shifting from a 5bit value to an 8bit one.
+
+ The masked and shifted value.
+ The
+
+
+
+ Performs final shifting from a 6bit value to an 8bit one.
+
+ The masked and shifted value.
+ The
+
+
+
+ Reads the 24 bit color palette from the stream.
+
+ The pixel format.
+ The to assign the palette to.
+ The width of the bitmap.
+ The height of the bitmap.
+ Whether the bitmap is inverted.
+
+
+
+ Reads the 32 bit color palette from the stream.
+
+ The pixel format.
+ The to assign the palette to.
+ The width of the bitmap.
+ The height of the bitmap.
+ Whether the bitmap is inverted.
+
+
+
+ Reads the 32 bit color palette from the stream, checking the alpha component of each pixel.
+ This is a special case only used for 32bpp WinBMPv3 files, which could be in either BGR0 or BGRA format.
+
+ The pixel format.
+ The to assign the palette to.
+ The width of the bitmap.
+ The height of the bitmap.
+ Whether the bitmap is inverted.
+
+
+
+ Decode an 32 Bit Bitmap containing a bitmask for each color channel.
+
+ The pixel format.
+ The output pixel buffer containing the decoded image.
+ The width of the image.
+ The height of the image.
+ Whether the bitmap is inverted.
+ The bitmask for the red channel.
+ The bitmask for the green channel.
+ The bitmask for the blue channel.
+ The bitmask for the alpha channel.
+
+
+
+ Calculates the necessary right shifts for a given color bitmask (the 0 bits to the right).
+
+ The color bit mask.
+ Number of bits to shift right.
+
+
+
+ Counts none zero bits.
+
+ A color mask.
+ The none zero bits.
+
+
+
+ Reads the from the stream.
+
+
+
+
+ Reads the from the stream.
+
+
+
+
+ Reads the and from the stream and sets the corresponding fields.
+
+ Bytes per color palette entry. Usually 4 bytes, but in case of Windows 2.x bitmaps or OS/2 1.x bitmaps
+ the bytes per color palette entry's can be 3 bytes instead of 4.
+
+
+
+ Image encoder for writing an image to a stream as a Windows bitmap.
+
+
+
+
+ Gets or sets the number of bits per pixel.
+
+
+
+
+ Gets or sets a value indicating whether the encoder should support transparency.
+ Note: Transparency support only works together with 32 bits per pixel. This option will
+ change the default behavior of the encoder of writing a bitmap version 3 info header with no compression.
+ Instead a bitmap version 4 info header will be written with the BITFIELDS compression.
+
+
+
+
+ Gets or sets the quantizer for reducing the color count for 8-Bit images.
+ Defaults to Wu Quantizer.
+
+
+
+
+
+
+
+
+
+
+ Image encoder for writing an image to a stream as a Windows bitmap.
+
+
+
+
+ The amount to pad each row by.
+
+
+
+
+ The mask for the alpha channel of the color for 32 bit rgba bitmaps.
+
+
+
+
+ The mask for the red part of the color for 32 bit rgba bitmaps.
+
+
+
+
+ The mask for the green part of the color for 32 bit rgba bitmaps.
+
+
+
+
+ The mask for the blue part of the color for 32 bit rgba bitmaps.
+
+
+
+
+ The color palette for an 8 bit image will have 256 entry's with 4 bytes for each entry.
+
+
+
+
+ The color palette for an 4 bit image will have 16 entry's with 4 bytes for each entry.
+
+
+
+
+ The color palette for an 1 bit image will have 2 entry's with 4 bytes for each entry.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ The global configuration.
+
+
+
+
+ The color depth, in number of bits per pixel.
+
+
+
+
+ A bitmap v4 header will only be written, if the user explicitly wants support for transparency.
+ In this case the compression type BITFIELDS will be used.
+ Otherwise a bitmap v3 header will be written, which is supported by almost all decoders.
+
+
+
+
+ The quantizer for reducing the color count for 8-Bit, 4-Bit and 1-Bit images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The encoder options.
+ The memory manager.
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to request cancellation.
+
+
+
+ Writes the pixel data to the binary stream.
+
+ The pixel format.
+ The to write to.
+
+ The containing pixel data.
+
+
+
+
+ Writes the 32bit color palette to the stream.
+
+ The pixel format.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes the 24bit color palette to the stream.
+
+ The pixel format.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes the 16bit color palette to the stream.
+
+ The type of the pixel.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes an 8 bit image with a color palette. The color palette has 256 entry's with 4 bytes for each entry.
+
+ The type of the pixel.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes an 8 bit color image with a color palette. The color palette has 256 entry's with 4 bytes for each entry.
+
+ The type of the pixel.
+ The to write to.
+ The containing pixel data.
+ A byte span of size 1024 for the color palette.
+
+
+
+ Writes an 8 bit gray image with a color palette. The color palette has 256 entry's with 4 bytes for each entry.
+
+ The type of the pixel.
+ The to write to.
+ The containing pixel data.
+ A byte span of size 1024 for the color palette.
+
+
+
+ Writes an 4 bit color image with a color palette. The color palette has 16 entry's with 4 bytes for each entry.
+
+ The type of the pixel.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes a 1 bit image with a color palette. The color palette has 2 entry's with 4 bytes for each entry.
+
+ The type of the pixel.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes the color palette to the stream. The color palette has 4 bytes for each entry.
+
+ The type of the pixel.
+ The to write to.
+ The color palette from the quantized image.
+ A temporary byte span to write the color palette to.
+
+
+
+ Writes a 1-bit palette.
+
+ The stream to write the palette to.
+ The start index.
+ The end index.
+ A quantized pixel row.
+
+
+
+ Stores general information about the Bitmap file.
+
+
+
+ The first two bytes of the Bitmap file format
+ (thus the Bitmap header) are stored in big-endian order.
+ All of the other integer values are stored in little-endian format
+ (i.e. least-significant byte first).
+
+
+
+
+ Defines the size of the data structure in the bitmap file.
+
+
+
+
+ Gets the Bitmap identifier.
+ The field used to identify the bitmap file: 0x42 0x4D
+ (Hex code points for B and M)
+
+
+
+
+ Gets the size of the bitmap file in bytes.
+
+
+
+
+ Gets any reserved data; actual value depends on the application
+ that creates the image.
+
+
+
+
+ Gets the offset, i.e. starting address, of the byte where
+ the bitmap data can be found.
+
+
+
+
+ Indicates which bitmap file marker was read.
+
+
+
+
+ Single-image BMP file that may have been created under Windows or OS/2.
+
+
+
+
+ OS/2 Bitmap Array.
+
+
+
+
+ OS/2 Color Icon.
+
+
+
+
+ OS/2 Color Pointer.
+
+
+
+
+ OS/2 Icon.
+
+
+
+
+ OS/2 Pointer.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the bmp format.
+
+
+
+
+ Gets the current instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Detects bmp file headers.
+
+
+
+
+
+
+
+
+
+
+ This block of bytes tells the application detailed information
+ about the image, which will be used to display the image on
+ the screen.
+
+
+
+
+
+ Defines the size of the BITMAPCOREHEADER data structure in the bitmap file.
+
+
+
+
+ Defines the size of the short variant of the OS22XBITMAPHEADER data structure in the bitmap file.
+
+
+
+
+ Defines the size of the BITMAPINFOHEADER (BMP Version 3) data structure in the bitmap file.
+
+
+
+
+ Special case of the BITMAPINFOHEADER V3 used by adobe where the color bitmasks are part of the info header instead of following it.
+
+
+
+
+ Special case of the BITMAPINFOHEADER V3 used by adobe where the color bitmasks (including the alpha channel) are part of the info header instead of following it.
+
+
+
+
+ Size of a IBM OS/2 2.x bitmap header.
+
+
+
+
+ Defines the size of the BITMAPINFOHEADER (BMP Version 4) data structure in the bitmap file.
+
+
+
+
+ Defines the size of the BITMAPINFOHEADER (BMP Version 5) data structure in the bitmap file.
+
+
+
+
+ Defines the size of the biggest supported header data structure in the bitmap file.
+
+
+
+
+ Defines the size of the field.
+
+
+
+
+ Gets or sets the size of this header.
+
+
+
+
+ Gets or sets the bitmap width in pixels (signed integer).
+
+
+
+
+ Gets or sets the bitmap height in pixels (signed integer).
+
+
+
+
+ Gets or sets the number of color planes being used. Must be set to 1.
+
+
+
+
+ Gets or sets the number of bits per pixel, which is the color depth of the image.
+ Typical values are 1, 4, 8, 16, 24 and 32.
+
+
+
+
+ Gets or sets the compression method being used.
+ See the next table for a list of possible values.
+
+
+
+
+ Gets or sets the image size. This is the size of the raw bitmap data (see below),
+ and should not be confused with the file size.
+
+
+
+
+ Gets or sets the horizontal resolution of the image.
+ (pixel per meter, signed integer)
+
+
+
+
+ Gets or sets the vertical resolution of the image.
+ (pixel per meter, signed integer)
+
+
+
+
+ Gets or sets the number of colors in the color palette,
+ or 0 to default to 2^n.
+
+
+
+
+ Gets or sets the number of important colors used,
+ or 0 when every color is important{ get; set; } generally ignored.
+
+
+
+
+ Gets or sets red color mask. This is used with the BITFIELDS decoding.
+
+
+
+
+ Gets or sets green color mask. This is used with the BITFIELDS decoding.
+
+
+
+
+ Gets or sets blue color mask. This is used with the BITFIELDS decoding.
+
+
+
+
+ Gets or sets alpha color mask. This is not used yet.
+
+
+
+
+ Gets or sets the Color space type. Not used yet.
+
+
+
+
+ Gets or sets the X coordinate of red endpoint. Not used yet.
+
+
+
+
+ Gets or sets the Y coordinate of red endpoint. Not used yet.
+
+
+
+
+ Gets or sets the Z coordinate of red endpoint. Not used yet.
+
+
+
+
+ Gets or sets the X coordinate of green endpoint. Not used yet.
+
+
+
+
+ Gets or sets the Y coordinate of green endpoint. Not used yet.
+
+
+
+
+ Gets or sets the Z coordinate of green endpoint. Not used yet.
+
+
+
+
+ Gets or sets the X coordinate of blue endpoint. Not used yet.
+
+
+
+
+ Gets or sets the Y coordinate of blue endpoint. Not used yet.
+
+
+
+
+ Gets or sets the Z coordinate of blue endpoint. Not used yet.
+
+
+
+
+ Gets or sets the Gamma red coordinate scale value. Not used yet.
+
+
+
+
+ Gets or sets the Gamma green coordinate scale value. Not used yet.
+
+
+
+
+ Gets or sets the Gamma blue coordinate scale value. Not used yet.
+
+
+
+
+ Parses the BITMAPCOREHEADER (BMP Version 2) consisting of the headerSize, width, height, planes, and bitsPerPixel fields (12 bytes).
+
+ The data to parse.
+ The parsed header.
+
+
+
+
+ Parses a short variant of the OS22XBITMAPHEADER. It is identical to the BITMAPCOREHEADER, except that the width and height
+ are 4 bytes instead of 2, resulting in 16 bytes total.
+
+ The data to parse.
+ The parsed header.
+
+
+
+
+ Parses the full BMP Version 3 BITMAPINFOHEADER header (40 bytes).
+
+ The data to parse.
+ The parsed header.
+
+
+
+
+ Special case of the BITMAPINFOHEADER V3 used by adobe where the color bitmasks are part of the info header instead of following it.
+ 52 bytes without the alpha mask, 56 bytes with the alpha mask.
+
+ The data to parse.
+ Indicates, if the alpha bitmask is present.
+ The parsed header.
+
+
+
+
+ Parses a OS/2 version 2 bitmap header (64 bytes). Only the first 40 bytes are parsed which are
+ very similar to the Bitmap v3 header. The other 24 bytes are ignored, but they do not hold any
+ useful information for decoding the image.
+
+ The data to parse.
+ The parsed header.
+
+
+
+
+ Parses the full BMP Version 4 BITMAPINFOHEADER header (108 bytes).
+
+ The data to parse.
+ The parsed header.
+
+
+
+
+ Writes a bitmap version 3 (Microsoft Windows NT) header to a buffer (40 bytes).
+
+ The buffer to write to.
+
+
+
+ Writes a complete Bitmap V4 header to a buffer.
+
+ The buffer to write to.
+
+
+
+ Enum value for the different bitmap info header types. The enum value is the number of bytes for the specific bitmap header.
+
+
+
+
+ Bitmap Core or BMP Version 2 header (Microsoft Windows 2.x).
+
+
+
+
+ Short variant of the OS/2 Version 2 bitmap header.
+
+
+
+
+ BMP Version 3 header (Microsoft Windows 3.x or Microsoft Windows NT).
+
+
+
+
+ Adobe variant of the BMP Version 3 header.
+
+
+
+
+ Adobe variant of the BMP Version 3 header with an alpha mask.
+
+
+
+
+ BMP Version 2.x header (IBM OS/2 2.x).
+
+
+
+
+ BMP Version 4 header (Microsoft Windows 95).
+
+
+
+
+ BMP Version 5 header (Windows NT 5.0, 98 or later).
+
+
+
+
+ Provides Bmp specific metadata information for the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the bitmap info header type.
+
+
+
+
+ Gets or sets the number of bits per pixel.
+
+
+
+
+
+
+
+ Cold path optimization for throwing 's
+
+ The error message for the exception.
+
+
+
+ Cold path optimization for throwing 's
+
+ The error message for the exception.
+
+
+
+ Image decoder options for decoding Windows bitmap streams.
+
+
+
+
+ Gets the value indicating how to deal with skipped pixels, which can occur during decoding run length encoded bitmaps.
+
+
+
+
+ Configuration options for use during bmp encoding.
+
+
+
+
+ Gets the number of bits per pixel.
+
+
+
+
+ Gets a value indicating whether the encoder should support transparency.
+ Note: Transparency support only works together with 32 bits per pixel. This option will
+ change the default behavior of the encoder of writing a bitmap version 3 info header with no compression.
+ Instead a bitmap version 4 info header will be written with the BITFIELDS compression.
+
+
+
+
+ Gets the quantizer for reducing the color count for 8-Bit, 4-Bit, and 1-Bit images.
+
+
+
+
+ Defines possible options, how skipped pixels during decoding of run length encoded bitmaps should be treated.
+
+
+
+
+ Undefined pixels should be black. This is the default behavior and equal to how System.Drawing handles undefined pixels.
+
+
+
+
+ Undefined pixels should be transparent.
+
+
+
+
+ Undefined pixels should have the first color of the palette.
+
+
+
+
+ Provides enumeration for the available color table modes.
+
+
+
+
+ A single color table is calculated from the first frame and reused for subsequent frames.
+
+
+
+
+ A unique color table is calculated for each frame.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the gif format.
+
+
+
+
+
+
+
+ Constants that define specific points within a Gif.
+
+
+
+
+ The file type.
+
+
+
+
+ The file version.
+
+
+
+
+ The extension block introducer !.
+
+
+
+
+ The graphic control label.
+
+
+
+
+ The application extension label.
+
+
+
+
+ The application block size.
+
+
+
+
+ The application identification.
+
+
+
+
+ The Netscape looping application sub block size.
+
+
+
+
+ The comment label.
+
+
+
+
+ The maximum length of a comment data sub-block is 255.
+
+
+
+
+ The image descriptor label ,.
+
+
+
+
+ The plain text label.
+
+
+
+
+ The image label introducer ,.
+
+
+
+
+ The terminator.
+
+
+
+
+ The end introducer trailer ;.
+
+
+
+
+ The character encoding to use when reading and writing comments - (ASCII 7bit).
+
+
+
+
+ The collection of mimetypes that equate to a Gif.
+
+
+
+
+ The collection of file extensions that equate to a Gif.
+
+
+
+
+ Gets the ASCII encoded bytes used to identify the GIF file (combining and ).
+
+
+
+
+ Gets the ASCII encoded application identification bytes (representing ).
+
+
+
+
+ Gets the ASCII encoded application identification bytes.
+
+
+
+
+ Decoder for generating an image out of a gif encoded stream.
+
+
+
+
+ Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Gets or sets the decoding mode for multi-frame images
+
+
+
+
+ Gets or sets the maximum number of gif frames.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the gif decoding operation.
+
+
+
+
+ The temp buffer.
+
+
+
+
+ The global color table.
+
+
+
+
+ The current local color table.
+
+
+
+
+ Gets the size in bytes of the current local color table.
+
+
+
+
+ The area to restore.
+
+
+
+
+ The logical screen descriptor.
+
+
+
+
+ The graphics control extension.
+
+
+
+
+ The image descriptor.
+
+
+
+
+ The global configuration.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ The maximum number of frames to decode. Inclusive.
+
+
+
+
+ Whether to skip metadata during decode.
+
+
+
+
+ The abstract metadata.
+
+
+
+
+ The gif specific metadata.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The decoder options.
+
+
+
+
+
+
+ Gets the dimensions of the image.
+
+
+
+
+
+
+
+
+
+
+ Reads the graphic control extension.
+
+ The containing image data.
+
+
+
+ Reads the image descriptor.
+
+ The containing image data.
+
+
+
+ Reads the logical screen descriptor.
+
+ The containing image data.
+
+
+
+ Reads the application extension block parsing any animation or XMP information
+ if present.
+
+ The containing image data.
+
+
+
+ Skips over a block or reads its terminator.
+
+ The containing image data.
+ The length of the block to skip.
+
+
+
+ Reads the gif comments.
+
+ The containing image data.
+
+
+
+ Reads an individual gif frame.
+
+ The pixel format.
+ The containing image data.
+ The image to decode the information to.
+ The previous frame.
+
+
+
+ Reads the frames colors, mapping indices to colors.
+
+ The pixel format.
+ The containing image data.
+ The image to decode the information to.
+ The previous frame.
+ The color table containing the available colors.
+ The
+
+
+
+ Reads the frames metadata.
+
+ The containing image data.
+ The collection of frame metadata.
+ The previous frame metadata.
+
+
+
+ Restores the current frame area to the background.
+
+ The pixel format.
+ The frame.
+
+
+
+ Sets the metadata for the image frame.
+
+ The metadata.
+
+
+
+ Reads the logical screen descriptor and global color table blocks
+
+ The stream containing image data.
+
+
+
+ Provides enumeration for instructing the decoder what to do with the last image
+ in an animation sequence.
+ section 23
+
+
+
+
+ No disposal specified.
+ The decoder is not required to take any action.
+
+
+
+
+ Do not dispose.
+ The graphic is to be left in place.
+
+
+
+
+ Restore to background color.
+ The area used by the graphic must be restored to the background color.
+
+
+
+
+ Restore to previous.
+ The decoder is required to restore the area overwritten by the
+ graphic with what was there prior to rendering the graphic.
+
+
+
+
+ Image encoder for writing image data to a stream in gif format.
+
+
+
+
+ Gets or sets the quantizer for reducing the color count.
+ Defaults to the
+
+
+
+
+ Gets or sets the color table mode: Global or local.
+
+
+
+
+ Gets or sets the used for quantization
+ when building a global color table in case of .
+
+
+
+
+
+
+
+
+
+
+ Implements the GIF encoding protocol.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ Configuration bound to the encoding operation.
+
+
+
+
+ A reusable buffer used to reduce allocations.
+
+
+
+
+ The quantizer used to generate the color palette.
+
+
+
+
+ The color table mode: Global or local.
+
+
+
+
+ The number of bits requires to store the color palette.
+
+
+
+
+ The pixel sampling strategy for global quantization.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The options for the encoder.
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to request cancellation.
+
+
+
+ Returns the index of the most transparent color in the palette.
+
+ The quantized frame.
+ The pixel format.
+
+ The .
+
+
+
+
+ Writes the file header signature and version to the stream.
+
+ The stream to write to.
+
+
+
+ Writes the logical screen descriptor to the stream.
+
+ The image metadata.
+ The image width.
+ The image height.
+ The transparency index to set the default background index to.
+ Whether to use a global or local color table.
+ The stream to write to.
+
+
+
+ Writes the application extension to the stream.
+
+ The stream to write to.
+ The frame count fo this image.
+ The animated image repeat count.
+ The XMP metadata profile. Null if profile is not to be written.
+
+
+
+ Writes the image comments to the stream.
+
+ The metadata to be extract the comment data.
+ The stream to write to.
+
+
+
+ Writes a comment sub-block to the stream.
+
+ The stream to write to.
+ Comment as a Span.
+ Current start index.
+ The length of the string to write. Should not exceed 255 bytes.
+
+
+
+ Writes the graphics control extension to the stream.
+
+ The metadata of the image or frame.
+ The index of the color in the color palette to make transparent.
+ The stream to write to.
+
+
+
+ Writes the provided extension to the stream.
+
+ The extension to write to the stream.
+ The stream to write to.
+
+
+
+ Writes the image descriptor to the stream.
+
+ The pixel format.
+ The to be encoded.
+ Whether to use the global color table.
+ The stream to write to.
+
+
+
+ Writes the color table to the stream.
+
+ The pixel format.
+ The to encode.
+ The stream to write to.
+
+
+
+ Writes the image pixel data to the stream.
+
+ The pixel format.
+ The containing indexed pixels.
+ The stream to write to.
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the gif format.
+
+
+
+
+ Gets the current instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides Gif specific metadata information for the image frame.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the length of the color table for paletted images.
+ If not 0, then this field indicates the maximum number of colors to use when quantizing the
+ image frame.
+
+
+
+
+ Gets or sets the frame delay for animated images.
+ If not 0, when utilized in Gif animation, this field specifies the number of hundredths (1/100) of a second to
+ wait before continuing with the processing of the Data Stream.
+ The clock starts ticking immediately after the graphic is rendered.
+
+
+
+
+ Gets or sets the disposal method for animated images.
+ Primarily used in Gif animation, this field indicates the way in which the graphic is to
+ be treated after being displayed.
+
+
+
+
+
+
+
+ Detects gif file headers
+
+
+
+
+
+
+
+
+
+
+ Provides Gif specific metadata information for the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the number of times any animation is repeated.
+
+ 0 means to repeat indefinitely, count is set as repeat n-1 times. Defaults to 1.
+
+
+
+
+
+ Gets or sets the color table mode.
+
+
+
+
+ Gets or sets the length of the global color table if present.
+
+
+
+
+ Gets or sets the the collection of comments about the graphics, credits, descriptions or any
+ other type of non-control and non-graphic data.
+
+
+
+
+
+
+
+ Cold path optimization for throwing 's
+
+ The error message for the exception.
+
+
+
+ Cold path optimization for throwing 's.
+
+ The error message for the exception.
+ The exception that is the cause of the current exception, or a null reference
+ if no inner exception is specified.
+
+
+
+ Decoder for generating an image out of a gif encoded stream.
+
+
+
+
+ Gets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Gets the decoding mode for multi-frame images.
+
+
+
+
+ Gets or sets the maximum number of gif frames.
+
+
+
+
+ The configuration options used for encoding gifs.
+
+
+
+
+ Gets the quantizer used to generate the color palette.
+
+
+
+
+ Gets the color table mode: Global or local.
+
+
+
+
+ Gets the used for quantization when building a global color table.
+
+
+
+
+ Decompresses and decodes data using the dynamic LZW algorithms.
+
+
+
+
+ The max decoder pixel stack size.
+
+
+
+
+ The maximum bits for a lzw code.
+
+
+
+
+ The null code.
+
+
+
+
+ The stream to decode.
+
+
+
+
+ The prefix buffer.
+
+
+
+
+ The suffix buffer.
+
+
+
+
+ The scratch buffer for reading data blocks.
+
+
+
+
+ The pixel stack buffer.
+
+
+
+
+ Initializes a new instance of the class
+ and sets the stream, where the compressed data should be read from.
+
+ The to use for buffer allocations.
+ The stream to read from.
+ The minimum code size.
+ is null.
+
+
+
+ Gets a value indicating whether the minimum code size is valid.
+
+ The minimum code size.
+
+ if the minimum code size is valid; otherwise, .
+
+
+
+
+ Decodes and decompresses all pixel indices for a single row from the stream, assigning the pixel values to the buffer.
+
+ The pixel indices array to decode to.
+
+
+
+ Decodes and decompresses all pixel indices from the stream allowing skipping of the data.
+
+ The resulting index table length.
+
+
+
+ Reads the next data block from the stream. A data block begins with a byte,
+ which defines the size of the block, followed by the block itself.
+
+ The buffer to store the block in.
+
+ The .
+
+
+
+
+
+
+
+ Encodes and compresses the image data using dynamic Lempel-Ziv compression.
+
+
+ Adapted from Jef Poskanzer's Java port by way of J. M. G. Elliott. K Weiner 12/00
+
+ GIFCOMPR.C - GIF Image compression routines
+
+
+ Lempel-Ziv compression based on 'compress'. GIF modifications by
+ David Rowley (mgardi@watdcsu.waterloo.edu)
+
+ GIF Image compression - modified 'compress'
+
+ Based on: compress.c - File compression ala IEEE Computer, June 1984.
+ By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)
+ Jim McKie (decvax!mcvax!jim)
+ Steve Davies (decvax!vax135!petsd!peora!srd)
+ Ken Turkowski (decvax!decwrl!turtlevax!ken)
+ James A. Woods (decvax!ihnp4!ames!jaw)
+ Joe Orost (decvax!vax135!petsd!joe)
+
+
+
+
+
+ 80% occupancy
+
+
+
+
+ The amount to shift each code.
+
+
+
+
+ Mask used when shifting pixel values
+
+
+
+
+ The maximum number of bits/code.
+
+
+
+
+ Should NEVER generate this code.
+
+
+
+
+ The initial code size.
+
+
+
+
+ The hash table.
+
+
+
+
+ The code table.
+
+
+
+
+ Define the storage for the packet accumulator.
+
+
+
+
+ Number of bits/code
+
+
+
+
+ maximum code, given bitCount
+
+
+
+
+ First unused entry
+
+
+
+
+ Block compression parameters -- after all codes are used up,
+ and compression rate changes, start over.
+
+
+
+
+ Algorithm: use open addressing double hashing (no chaining) on the
+ prefix code / next character combination. We do a variant of Knuth's
+ algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
+ secondary probe. Here, the modular division first probe is gives way
+ to a faster exclusive-or manipulation. Also do block compression with
+ an adaptive reset, whereby the code table is cleared when the compression
+ ratio decreases, but after the table fills. The variable-length output
+ codes are re-sized at this point, and a special CLEAR code is generated
+ for the decompressor. Late addition: construct the table according to
+ file size for noticeable speed improvement on small files. Please direct
+ questions about this implementation to ames!jaw.
+
+
+
+
+ The clear code.
+
+
+
+
+ The end-of-file code.
+
+
+
+
+ Output the given code.
+ Inputs:
+ code: A bitCount-bit integer. If == -1, then EOF. This assumes
+ that bitCount =< wordsize - 1.
+ Outputs:
+ Outputs code to the file.
+ Assumptions:
+ Chars are 8 bits long.
+ Algorithm:
+ Maintain a BITS character long buffer (so that 8 codes will
+ fit in it exactly). Use the VAX insv instruction to insert each
+ code in turn. When the buffer fills up empty it and start over.
+
+
+
+
+ The current bits.
+
+
+
+
+ Number of characters so far in this 'packet'
+
+
+
+
+ Initializes a new instance of the class.
+
+ The to use for buffer allocations.
+ The color depth in bits.
+
+
+
+ Encodes and compresses the indexed pixels to the stream.
+
+ The 2D buffer of indexed pixels.
+ The stream to write to.
+
+
+
+ Gets the maximum code value.
+
+ The number of bits
+ See
+
+
+
+ Add a character to the end of the current packet, and if it is 254 characters,
+ flush the packet to disk.
+
+ The character to add.
+ The reference to the storage for packet accumulators
+ The stream to write to.
+
+
+
+ Table clear for block compress.
+
+ The output stream.
+
+
+
+ Reset the code table.
+
+
+
+
+ Compress the packets to the stream.
+
+ The 2D buffer of indexed pixels.
+ The initial bits.
+ The stream to write to.
+
+
+
+ Flush the packet to disk and reset the accumulator.
+
+ The output stream.
+
+
+
+ Output the current code to the stream.
+
+ The code.
+ The stream to write to.
+
+
+
+
+
+
+ The Graphic Control Extension contains parameters used when
+ processing a graphic rendering block.
+
+
+
+
+ Gets the size of the block.
+
+
+
+
+ Gets the packed disposalMethod and transparencyFlag value.
+
+
+
+
+ Gets the delay time in of hundredths (1/100) of a second
+ to wait before continuing with the processing of the Data Stream.
+ The clock starts ticking immediately after the graphic is rendered.
+
+
+
+
+ Gets the transparency index.
+ The Transparency Index is such that when encountered, the corresponding pixel
+ of the display device is not modified and processing goes on to the next pixel.
+
+
+
+
+ Gets the disposal method which indicates the way in which the
+ graphic is to be treated after being displayed.
+
+
+
+
+ Gets a value indicating whether transparency flag is to be set.
+ This indicates whether a transparency index is given in the Transparent Index field.
+
+
+
+
+ Each image in the Data Stream is composed of an Image Descriptor,
+ an optional Local Color Table, and the image data.
+ Each image must fit within the boundaries of the
+ Logical Screen, as defined in the Logical Screen Descriptor.
+
+
+
+
+ Gets the column number, in pixels, of the left edge of the image,
+ with respect to the left edge of the Logical Screen.
+ Leftmost column of the Logical Screen is 0.
+
+
+
+
+ Gets the row number, in pixels, of the top edge of the image with
+ respect to the top edge of the Logical Screen.
+ Top row of the Logical Screen is 0.
+
+
+
+
+ Gets the width of the image in pixels.
+
+
+
+
+ Gets the height of the image in pixels.
+
+
+
+
+ Gets the packed value of localColorTableFlag, interlaceFlag, sortFlag, and localColorTableSize.
+
+
+
+
+ The Logical Screen Descriptor contains the parameters
+ necessary to define the area of the display device
+ within which the images will be rendered
+
+
+
+
+ Gets the width, in pixels, of the Logical Screen where the images will
+ be rendered in the displaying device.
+
+
+
+
+ Gets the height, in pixels, of the Logical Screen where the images will be
+ rendered in the displaying device.
+
+
+
+
+ Gets the packed value consisting of:
+ globalColorTableFlag, colorResolution, sortFlag, and sizeOfGlobalColorTable.
+
+
+
+
+ Gets the index at the Global Color Table for the Background Color.
+ The Background Color is the color used for those
+ pixels on the screen that are not covered by an image.
+
+
+
+
+ Gets the pixel aspect ratio.
+
+
+
+
+ Gets a value indicating whether a flag denoting the presence of a Global Color Table
+ should be set.
+ If the flag is set, the Global Color Table will included after
+ the Logical Screen Descriptor.
+
+
+
+
+ Gets the global color table size.
+ If the Global Color Table Flag is set,
+ the value in this field is used to calculate the number of
+ bytes contained in the Global Color Table.
+
+
+
+
+ Gets the color depth, in number of bits per pixel.
+ The lowest 3 packed bits represent the bit depth minus 1.
+
+
+
+
+ Gets the repeat count.
+ 0 means loop indefinitely. Count is set as play n + 1 times.
+
+
+
+
+ Gets the raw Data.
+
+
+
+
+ Reads the XMP metadata from the specified stream.
+
+ The stream to read from.
+ The memory allocator.
+ The XMP metadata
+ Thrown if the XMP block is not properly terminated.
+
+
+
+ A base interface for GIF extensions.
+
+
+
+
+ Gets the label identifying the extensions.
+
+
+
+
+ Gets the length of the contents of this extension.
+
+
+
+
+ Writes the extension data to the buffer.
+
+ The buffer to write the extension to.
+ The number of bytes written to the buffer.
+
+
+
+ Encapsulates properties and methods required for decoding an image from a stream.
+
+
+
+
+ Decodes the image from the specified stream to an of a specific pixel type.
+
+ The pixel format.
+ The configuration for the image.
+ The containing image data.
+ The token to monitor for cancellation requests.
+ The .
+
+
+
+ Decodes the image from the specified stream to an .
+
+ The configuration for the image.
+ The containing image data.
+ The token to monitor for cancellation requests.
+ The .
+
+
+
+ Abstraction for shared internals for ***DecoderCore implementations to be used with .
+
+
+
+
+ Gets the associated configuration.
+
+
+
+
+ Gets the dimensions of the image being decoded.
+
+
+
+
+ Decodes the image from the specified stream.
+
+ The pixel format.
+ The stream, where the image should be decoded from. Cannot be null.
+ The token to monitor for cancellation requests.
+ is null.
+ The decoded image.
+
+ Cancellable synchronous method. In case of cancellation,
+ an shall be thrown which will be handled on the call site.
+
+
+
+
+ Reads the raw image information from the specified stream.
+
+ The containing image data.
+ The token to monitor for cancellation requests.
+ The .
+
+ Cancellable synchronous method. In case of cancellation,
+ an shall be thrown which will be handled on the call site.
+
+
+
+
+ Encapsulates properties and methods required for encoding an image to a stream.
+
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to monitor for cancellation requests.
+ A representing the asynchronous operation.
+
+
+
+ Abstraction for shared internals for ***DecoderCore implementations to be used with .
+
+
+
+
+ Encodes the image.
+
+ The image.
+ The stream.
+ The token to monitor for cancellation requests.
+ The pixel type.
+
+
+
+ Defines the contract for an image format.
+
+
+
+
+ Gets the name that describes this image format.
+
+
+
+
+ Gets the default mimetype that the image format uses
+
+
+
+
+ Gets all the mimetypes that have been used by this image format.
+
+
+
+
+ Gets the file extensions this image format commonly uses.
+
+
+
+
+ Defines the contract for an image format containing metadata.
+
+ The type of format metadata.
+
+
+
+ Creates a default instance of the format metadata.
+
+ The .
+
+
+
+ Defines the contract for an image format containing metadata with multiple frames.
+
+ The type of format metadata.
+ The type of format frame metadata.
+
+
+
+ Creates a default instance of the format frame metadata.
+
+ The .
+
+
+
+ Used for detecting mime types from a file header
+
+
+
+
+ Gets the size of the header for this image type.
+
+ The size of the header.
+
+
+
+ Detect mimetype
+
+ The containing the file header.
+ returns the mime type of detected otherwise returns null
+
+
+
+ Encapsulates methods used for detecting the raw image information without fully decoding it.
+
+
+
+
+ Reads the raw image information from the specified stream.
+
+ The configuration for the image.
+ The containing image data.
+ The token to monitor for cancellation requests.
+ The object
+
+
+
+ Collection of Image Formats to be used in class.
+
+
+
+
+ Used for locking against as there is no ConcurrentSet type.
+
+
+
+
+
+ The list of supported keyed to mime types.
+
+
+
+
+ The list of supported keyed to mime types.
+
+
+
+
+ The list of supported s.
+
+
+
+
+ The list of supported s.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the maximum header size of all the formats.
+
+
+
+
+ Gets the currently registered s.
+
+
+
+
+ Gets the currently registered s.
+
+
+
+
+ Gets the currently registered s.
+
+
+
+
+ Gets the currently registered s.
+
+
+
+
+ Registers a new format provider.
+
+ The format to register as a known format.
+
+
+
+ For the specified file extensions type find the e .
+
+ The extension to discover
+ The if found otherwise null
+
+
+
+ For the specified mime type find the .
+
+ The mime-type to discover
+ The if found; otherwise null
+
+
+
+ Sets a specific image encoder as the encoder for a specific image format.
+
+ The image format to register the encoder for.
+ The encoder to use,
+
+
+
+ Sets a specific image decoder as the decoder for a specific image format.
+
+ The image format to register the encoder for.
+ The decoder to use,
+
+
+
+ Removes all the registered image format detectors.
+
+
+
+
+ Adds a new detector for detecting mime types.
+
+ The detector to add
+
+
+
+ For the specified mime type find the decoder.
+
+ The format to discover
+ The if found otherwise null
+
+
+
+ For the specified mime type find the encoder.
+
+ The format to discover
+ The if found otherwise null
+
+
+
+ Sets the max header size.
+
+
+
+
+ 8x8 matrix of coefficients.
+
+
+
+
+ A number of scalar coefficients in a
+
+
+
+
+ A placeholder buffer so the actual struct occupies exactly 64 * 2 bytes.
+
+
+ This is not used directly in the code.
+
+
+
+
+ Gets or sets a value at the given index
+
+ The index
+ The value
+
+
+
+ Gets or sets a value in a row+column of the 8x8 block
+
+ The x position index in the row
+ The column index
+ The value
+
+
+
+ Convert to
+
+
+
+
+ Copy all elements to an array of .
+
+
+
+
+ Copy elements into 'destination' Span of values
+
+
+
+
+ Copy elements into 'destination' Span of values
+
+
+
+
+ Load raw 16bit integers from source.
+
+ Source
+
+
+
+ Cast and copy -s from the beginning of 'source' span.
+
+
+
+
+
+
+
+ Returns index of the last non-zero element in given matrix.
+
+
+ Index of the last non-zero element. Returns -1 if all elements are equal to zero.
+
+
+
+
+ Transpose the block inplace.
+
+
+
+
+ Calculate the total sum of absolute differences of elements in 'a' and 'b'.
+
+
+
+
+ 8x8 matrix of coefficients.
+
+
+
+
+ A number of scalar coefficients in a
+
+
+
+
+ Get/Set scalar elements at a given index
+
+ The index
+ The float value at the specified index
+
+
+
+ Load raw 32bit floating point data from source.
+
+ Source
+
+
+
+ Load raw 32bit floating point data from source
+
+ Source
+
+
+
+ Copy raw 32bit floating point data to dest
+
+ Destination
+
+
+
+ Multiply all elements of the block.
+
+ The value to multiply by.
+
+
+
+ Multiply all elements of the block by the corresponding elements of 'other'.
+
+
+
+
+ Adds a vector to all elements of the block.
+
+ The added vector.
+
+
+
+ Quantize input block, transpose, apply zig-zag ordering and store as .
+
+ Source block.
+ Destination block.
+ The quantization table.
+
+
+
+ Level shift by +maximum/2, clip to [0..maximum], and round all the values in the block.
+
+
+
+
+ Rounds all values in the block.
+
+
+
+
+ Loads values from using extended AVX2 intrinsics.
+
+ The source
+
+
+
+ Compares entire 8x8 block to a single scalar value.
+
+ Value to compare to.
+
+
+
+
+
+
+
+
+
+ Transpose the block inplace.
+
+
+
+
+ Scalar inplace transpose implementation for
+
+
+
+
+ Level shift by +maximum/2, clip to [0, maximum]
+
+
+
+
+ AVX2-only variant for executing and in one step.
+
+
+
+
+ Fill the block from 'source' doing short -> float conversion.
+
+
+
+
+ Copy block data into the destination color buffer pixel area with the provided horizontal and vertical scale factors.
+
+
+
+
+ Provides information about the Adobe marker segment.
+
+ See the included 5116.DCT.pdf file in the source for more information.
+
+
+
+ Gets the length of an adobe marker segment.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The DCT encode version
+ The horizontal downsampling hint used for DCT encoding
+ The vertical downsampling hint used for DCT encoding
+ The color transform model used
+
+
+
+ Gets the DCT Encode Version
+
+
+
+
+ Gets the horizontal downsampling hint used for DCT encoding
+ 0x0 : (none - Chop)
+ Bit 15 : Encoded with Blend=1 downsampling.
+
+
+
+
+ Gets the vertical downsampling hint used for DCT encoding
+ 0x0 : (none - Chop)
+ Bit 15 : Encoded with Blend=1 downsampling
+
+
+
+
+ Gets the colorspace transform model used
+ 00 : Unknown (RGB or CMYK)
+ 01 : YCbCr
+ 02 : YCCK
+
+
+
+
+ Converts the specified byte array representation of an Adobe marker to its equivalent and
+ returns a value that indicates whether the conversion succeeded.
+
+ The byte array containing metadata to parse.
+ The marker to return.
+
+
+
+
+
+
+
+
+
+
+
+
+ Encapsulates the conversion of color channels from jpeg image to RGB channels.
+
+
+
+
+ The available converters
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets a value indicating whether this is available
+ on the current runtime and CPU architecture.
+
+
+
+
+ Gets the of this converter.
+
+
+
+
+ Gets the Precision of this converter in bits.
+
+
+
+
+ Gets the maximum value of a sample
+
+
+
+
+ Gets the half of the maximum value of a sample
+
+
+
+
+ Returns the corresponding to the given
+
+
+
+
+ Converts planar jpeg component values in to RGB color space inplace.
+
+ The input/ouptut as a stack-only struct
+
+
+
+ Returns the s for all supported colorspaces and precisions.
+
+
+
+
+ Returns the s for the YCbCr colorspace.
+
+
+
+
+ Returns the s for the YccK colorspace.
+
+
+
+
+ Returns the s for the CMYK colorspace.
+
+
+
+
+ Returns the s for the gray scale colorspace.
+
+
+
+
+ Returns the s for the RGB colorspace.
+
+
+
+
+ A stack-only struct to reference the input buffers using -s.
+
+
+
+
+ The component count
+
+
+
+
+ The component 0 (eg. Y)
+
+
+
+
+ The component 1 (eg. Cb). In case of grayscale, it points to .
+
+
+
+
+ The component 2 (eg. Cr). In case of grayscale, it points to .
+
+
+
+
+ The component 4
+
+
+
+
+ Initializes a new instance of the struct.
+
+ List of component buffers.
+ Row to convert
+
+
+
+ Initializes a new instance of the struct.
+
+ List of component color processors.
+ Row to convert
+
+
+
+ abstract base for implementations
+ based on scalar instructions.
+
+
+
+
+ abstract base for implementations
+ based on API.
+
+
+ Converters of this family can work with data of any size.
+ Even though real life data is guaranteed to be of size
+ divisible by 8 newer SIMD instructions like AVX512 won't work with
+ such data out of the box. These converters have fallback code
+ for 'remainder' data.
+
+
+
+
+ Used to buffer and track the bits read from the Huffman entropy encoded data.
+
+
+
+
+ Gets the current, if any, marker in the input stream.
+
+
+
+
+ Gets the opening position of an identified marker.
+
+
+
+
+ Gets a value indicating whether to continue reading the input stream.
+
+
+
+
+ Whether a RST marker has been detected, I.E. One that is between RST0 and RST7
+
+
+
+
+ Whether a bad marker has been detected, I.E. One that is not between RST0 and RST7
+
+
+
+
+ Decodes the Huffman encoded spectral scan.
+ Originally ported from
+ with additional fixes for both performance and common encoding errors.
+
+
+
+
+ instance containing decoding-related information.
+
+
+
+
+ Shortcut for .Components.
+
+
+
+
+ Number of component in the current scan.
+
+
+
+
+ The reset interval determined by RST markers.
+
+
+
+
+ How many mcu's are left to do.
+
+
+
+
+ The End-Of-Block countdown for ending the sequence prematurely when the remaining coefficients are zero.
+
+
+
+
+ The DC Huffman tables.
+
+
+
+
+ The AC Huffman tables
+
+
+
+
+ Initializes a new instance of the class.
+
+ The input stream.
+ Spectral to pixel converter.
+ The token to monitor cancellation.
+
+
+
+ Sets reset interval determined by RST markers.
+
+
+
+
+ Decodes the entropy coded data.
+
+ Component count in the current scan.
+
+
+
+ Build the huffman table using code lengths and code values.
+
+ Table type.
+ Table index.
+ Code lengths.
+ Code values.
+ The provided spare workspace memory, can be dirty.
+
+
+
+ Represents a Huffman coding table containing basic coding data plus tables for accelerated computation.
+
+
+
+
+ Memory workspace buffer size used in ctor.
+
+
+
+
+ Derived from the DHT marker. Contains the symbols, in order of incremental code length.
+
+
+
+
+ Contains the largest code of length k (0 if none). MaxCode[17] is a sentinel to
+ ensure terminates.
+
+
+
+
+ Values[] offset for codes of length k ValOffset[k] = Values[] index of 1st symbol of code length
+ k, less the smallest code of length k; so given a code of length k, the corresponding symbol is
+ Values[code + ValOffset[k]].
+
+
+
+
+ Contains the length of bits for the given k value.
+
+
+
+
+ Lookahead table: indexed by the next bits of
+ the input data stream. If the next Huffman code is no more
+ than bits long, we can obtain its length and
+ the corresponding symbol directly from this tables.
+
+ The lower 8 bits of each table entry contain the number of
+ bits in the corresponding Huffman code, or + 1
+ if too long. The next 8 bits of each entry contain the symbol.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The code lengths.
+ The huffman values.
+ The provided spare workspace memory, can be dirty.
+
+
+
+ Common interface to represent raw Jpeg components.
+
+
+
+
+ Gets the component's position in the components array.
+
+
+
+
+ Gets the number of blocks in this component as
+
+
+
+
+ Gets the horizontal and the vertical sampling factor as
+
+
+
+
+ Gets the divisors needed to apply when calculating colors.
+
+ https://en.wikipedia.org/wiki/Chroma_subsampling
+
+ In case of 4:2:0 subsampling the values are: Luma.SubSamplingDivisors = (1,1) Chroma.SubSamplingDivisors = (2,2)
+
+
+
+
+ Gets the index of the quantization table for this block.
+
+
+
+
+ Gets the storing the "raw" frequency-domain decoded + unzigged blocks.
+ We need to apply IDCT and dequantization to transform them into color-space blocks.
+
+
+
+
+ Represents decompressed, unprocessed jpeg data with spectral space -s.
+
+
+
+
+ Gets the color space
+
+
+
+
+ Gets the components.
+
+
+
+
+ Gets the quantization tables, in natural order.
+
+
+
+
+ Provides information about the JFIF marker segment.
+ TODO: Thumbnail?
+
+
+
+
+ Gets the length of an JFIF marker segment.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The major version.
+ The minor version.
+ The units for the density values.
+ The horizontal pixel density.
+ The vertical pixel density.
+
+
+
+ Gets the major version.
+
+
+
+
+ Gets the minor version.
+
+
+
+
+ Gets the units for the following pixel density fields
+ 00 : No units; width:height pixel aspect ratio = Ydensity:Xdensity
+ 01 : Pixels per inch (2.54 cm)
+ 02 : Pixels per centimeter
+
+
+
+
+ Gets the horizontal pixel density. Must not be zero.
+
+
+
+
+ Gets the vertical pixel density. Must not be zero.
+
+
+
+
+ Converts the specified byte array representation of an JFIF marker to its equivalent and
+ returns a value that indicates whether the conversion succeeded.
+
+ The byte array containing metadata to parse.
+ The marker to return.
+
+
+
+
+
+
+
+
+
+
+
+
+ Identifies the colorspace of a Jpeg image.
+
+
+
+
+ Color space with 1 component.
+
+
+
+
+ Color space with 4 components.
+
+
+
+
+ Color space with 4 components.
+
+
+
+
+ Color space with 3 components.
+
+
+
+
+ Color space with 3 components.
+
+
+
+
+ Represents a single frame component.
+
+
+
+
+ Gets the component id.
+
+
+
+
+ Gets or sets DC coefficient predictor.
+
+
+
+
+ Gets the horizontal sampling factor.
+
+
+
+
+ Gets the vertical sampling factor.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the number of blocks per line.
+
+
+
+
+ Gets the number of blocks per column.
+
+
+
+
+ Gets or sets the index for the DC Huffman table.
+
+
+
+
+ Gets or sets the index for the AC Huffman table.
+
+
+
+
+
+
+
+ Initializes component for future buffers initialization.
+
+ Maximal horizontal subsampling factor among all the components.
+ Maximal vertical subsampling factor among all the components.
+
+
+
+ Encapsulates spectral data to rgba32 processing for one component.
+
+
+
+
+ The size of the area in corresponding to one 8x8 Jpeg block
+
+
+
+
+ Jpeg frame instance containing required decoding metadata.
+
+
+
+
+ Gets the maximal number of block rows being processed in one step.
+
+
+
+
+ Gets the component containing decoding meta information.
+
+
+
+
+ Gets the instance containing decoding meta information.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the temporary working buffer of color values.
+
+
+
+
+
+
+
+ Convert raw spectral DCT data to color data and copy it to the color buffer .
+
+
+
+
+ Represents a jpeg file marker.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The marker
+ The position within the stream
+
+
+
+ Initializes a new instance of the struct.
+
+ The marker
+ The position within the stream
+ Whether the current marker is invalid
+
+
+
+ Gets a value indicating whether the current marker is invalid
+
+
+
+
+ Gets the position of the marker within a stream
+
+
+
+
+ Gets the position of the marker within a stream
+
+
+
+
+
+
+
+ Represent a single jpeg frame
+
+
+
+
+ Gets a value indicating whether the frame uses the extended specification.
+
+
+
+
+ Gets a value indicating whether the frame uses the progressive specification.
+
+
+
+
+ Gets or sets a value indicating whether the frame is encoded using multiple scans (SOS markers).
+
+
+ This is true for progressive and baseline non-interleaved images.
+
+
+
+
+ Gets the precision.
+
+
+
+
+ Gets the maximum color value derived from .
+
+
+
+
+ Gets the number of pixel per row.
+
+
+
+
+ Gets the number of pixels per line.
+
+
+
+
+ Gets the pixel size of the image.
+
+
+
+
+ Gets the number of components within a frame.
+
+
+
+
+ Gets or sets the component id collection.
+
+
+
+
+ Gets or sets the order in which to process the components.
+ in interleaved mode.
+
+
+
+
+ Gets or sets the frame component collection.
+
+
+
+
+ Gets or sets the number of MCU's per line.
+
+
+
+
+ Gets or sets the number of MCU's per column.
+
+
+
+
+ Gets the mcu size of the image.
+
+
+
+
+ Gets the color depth, in number of bits per pixel.
+
+
+
+
+
+
+
+ Allocates the frame component blocks.
+
+ Maximal horizontal subsampling factor among all the components.
+ Maximal vertical subsampling factor among all the components.
+
+
+
+ Provides methods for identifying metadata and color profiles within jpeg images.
+
+
+
+
+ Gets the JFIF specific markers.
+
+
+
+
+ Gets the ICC specific markers.
+
+
+
+
+ Gets the adobe photoshop APP13 marker which can contain IPTC meta data.
+
+
+
+
+ Gets the 8BIM marker, which signals the start of a adobe specific image resource block.
+
+
+
+
+ Gets a IPTC Image resource ID.
+
+
+
+
+ Gets the EXIF specific markers.
+
+
+
+
+ Gets the XMP specific markers.
+
+
+
+
+ Gets the Adobe specific markers .
+
+
+
+
+ Returns a value indicating whether the passed bytes are a match to the profile identifier.
+
+ The bytes to check.
+ The profile identifier.
+ The .
+
+
+
+ Converter used to convert jpeg spectral data to color pixels.
+
+
+
+
+ Gets a value indicating whether this converter has converted spectral
+ data of the current image or not.
+
+
+
+
+ Injects jpeg image decoding metadata.
+
+
+ This is guaranteed to be called only once at SOF marker by .
+
+ instance containing decoder-specific parameters.
+ instance containing decoder-specific parameters.
+
+
+
+ Converts single spectral jpeg stride to color stride in baseline
+ decoding mode.
+
+
+ Called once per decoded spectral stride in
+ only for baseline interleaved jpeg images.
+ Spectral 'stride' doesn't particularly mean 'single stride'.
+ Actual stride height depends on the subsampling factor of the given image.
+
+
+
+
+ Marks current converter state as 'converted'.
+
+
+ This must be called only for baseline interleaved jpeg's.
+
+
+
+
+ Gets the color converter.
+
+ The jpeg frame with the color space to convert to.
+ The raw JPEG data.
+ The color converter.
+
+
+
+
+ Color decoding scheme:
+
+
+ - Decode spectral data to Jpeg color space
+ - Convert from Jpeg color space to RGB
+ - Convert from RGB to target pixel space
+
+
+
+
+
+
+ instance associated with current
+ decoding routine.
+
+
+
+
+ Jpeg component converters from decompressed spectral to color data.
+
+
+
+
+ Color converter from jpeg color space to target pixel color space.
+
+
+
+
+ Intermediate buffer of RGB components used in color conversion.
+
+
+
+
+ Proxy buffer used in packing from RGB to target TPixel pixels.
+
+
+
+
+ Resulting 2D pixel buffer.
+
+
+
+
+ How many pixel rows are processed in one 'stride'.
+
+
+
+
+ How many pixel rows were processed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+
+
+
+ Gets converted pixel buffer.
+
+
+ For non-baseline interleaved jpeg this method does a 'lazy' spectral
+ conversion from spectral to color.
+
+ Cancellation token.
+ Pixel buffer.
+
+
+
+
+
+
+
+
+
+ Converts single spectral jpeg stride to color stride.
+
+ Spectral stride index.
+
+
+
+
+
+
+ Enumerates the Huffman tables
+
+
+
+
+ The DC luminance huffman table index
+
+
+
+
+ The AC luminance huffman table index
+
+
+
+
+ The DC chrominance huffman table index
+
+
+
+
+ The AC chrominance huffman table index
+
+
+
+
+ A compiled look-up table representation of a huffmanSpec.
+ The maximum codeword size is 16 bits.
+
+
+
+ Each value maps to a int32 of which the 24 most significant bits hold the
+ codeword in bits and the 8 least significant bits hold the codeword size.
+
+
+ Code value occupies 24 most significant bits as integer value.
+ This value is shifted to the MSB position for performance reasons.
+ For example, decimal value 10 is stored like this:
+
+ MSB LSB
+ 1010 0000 00000000 00000000 | 00000100
+
+ This was done to eliminate extra binary shifts in the encoder.
+ While code length is represented as 8 bit integer value
+
+
+
+
+
+ The compiled representations of theHuffmanSpec.
+
+
+
+
+ Initializes static members of the struct.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ dasd
+
+
+
+ Gets the collection of huffman values.
+
+
+
+
+ Maximum number of bytes encoded jpeg 8x8 block can occupy.
+ It's highly unlikely for block to occupy this much space - it's a theoretical limit.
+
+
+ Where 16 is maximum huffman code binary length according to itu
+ specs. 10 is maximum value binary length, value comes from discrete
+ cosine tranform with value range: [-1024..1023]. Block stores
+ 8x8 = 64 values thus multiplication by 64. Then divided by 8 to get
+ the number of bytes. This value is then multiplied by
+ for performance reasons.
+
+
+
+
+ Multiplier used within cache buffers size calculation.
+
+
+
+ Theoretically, bytes buffer can fit
+ exactly one minimal coding unit. In reality, coding blocks occupy much
+ less space than the theoretical maximum - this can be exploited.
+ If temporal buffer size is multiplied by at least 2, second half of
+ the resulting buffer will be used as an overflow 'guard' if next
+ block would occupy maximum number of bytes. While first half may fit
+ many blocks before needing to flush.
+
+
+ This is subject to change. This can be equal to 1 but recomended
+ value is 2 or even greater - futher benchmarking needed.
+
+
+
+
+
+ size multiplier.
+
+
+ Jpeg specification requiers to insert 'stuff' bytes after each
+ 0xff byte value. Worst case scenarion is when all bytes are 0xff.
+ While it's highly unlikely (if not impossible) to get such
+ combination, it's theoretically possible so buffer size must be guarded.
+
+
+
+
+ Compiled huffman tree to encode given values.
+
+ Yields codewords by index consisting of [run length | bitsize].
+
+
+
+ Emitted bits 'micro buffer' before being transferred to the .
+
+
+
+
+ Buffer for temporal storage of huffman rle encoding bit data.
+
+
+ Encoding bits are assembled to 4 byte unsigned integers and then copied to this buffer.
+ This process does NOT include inserting stuff bytes.
+
+
+
+
+ Buffer for temporal storage which is then written to the output stream.
+
+
+ Encoding bits from are copied to this byte buffer including stuff bytes.
+
+
+
+
+ Number of jagged bits stored in
+
+
+
+
+ The output stream. All attempted writes after the first error become no-ops.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Amount of encoded 8x8 blocks per single jpeg macroblock.
+ Output stream for saving encoded data.
+
+
+
+ Gets a value indicating whether is full
+ and must be flushed using
+ before encoding next 8x8 coding block.
+
+
+
+
+ Encodes the image with no subsampling.
+
+ The pixel format.
+ The pixel accessor providing access to the image pixels.
+ Luminance quantization table provided by the callee.
+ Chrominance quantization table provided by the callee.
+ The token to monitor for cancellation.
+
+
+
+ Encodes the image with subsampling. The Cb and Cr components are each subsampled
+ at a factor of 2 both horizontally and vertically.
+
+ The pixel format.
+ The pixel accessor providing access to the image pixels.
+ Luminance quantization table provided by the callee.
+ Chrominance quantization table provided by the callee.
+ The token to monitor for cancellation.
+
+
+
+ Encodes the image with no chroma, just luminance.
+
+ The pixel format.
+ The pixel accessor providing access to the image pixels.
+ Luminance quantization table provided by the callee.
+ The token to monitor for cancellation.
+
+
+
+ Encodes the image with no subsampling and keeps the pixel data as Rgb24.
+
+ The pixel format.
+ The pixel accessor providing access to the image pixels.
+ Quantization table provided by the callee.
+ The token to monitor for cancellation.
+
+
+
+ Writes a block of pixel data using the given quantization table,
+ returning the post-quantized DC value of the DCT-transformed block.
+ The block is in natural (not zig-zag) order.
+
+ The quantization table index.
+ The previous DC value.
+ Source block.
+ Quantization table.
+ The .
+
+
+
+ Emits the most significant count of bits to the buffer.
+
+
+
+ Supports up to 32 count of bits but, generally speaking, jpeg
+ standard assures that there won't be more than 16 bits per single
+ value.
+
+
+ Emitting algorithm uses 3 intermediate buffers for caching before
+ writing to the stream:
+
+ -
+ uint32
+
+ Bit buffer. Encoded spectral values can occupy up to 16 bits, bits
+ are assembled to whole bytes via this intermediate buffer.
+
+
+ -
+ uint32[]
+
+ Assembled bytes from uint32 buffer are saved into this buffer.
+ uint32 buffer values are saved using indices from the last to the first.
+ As bytes are saved to the memory as 4-byte packages endianness matters:
+ Jpeg stream is big-endian, indexing buffer bytes from the last index to the
+ first eliminates all operations to extract separate bytes. This only works for
+ little-endian machines (there are no known examples of big-endian users atm).
+ For big-endians this approach is slower due to the separate byte extraction.
+
+
+ -
+ byte[]
+
+ Byte buffer used only during method.
+
+
+
+
+
+ Bits to emit, must be shifted to the left.
+ Bits count stored in the bits parameter.
+
+
+
+ Emits the given value with the given Huffman table.
+
+ Huffman table.
+ Value to encode.
+
+
+
+ Emits given value via huffman rle encoding.
+
+ Huffman table.
+ The number of preceding zeroes, preshifted by 4 to the left.
+ Value to encode.
+
+
+
+ Calculates how many minimum bits needed to store given value for Huffman jpeg encoding.
+
+
+ This is an internal operation supposed to be used only in class for jpeg encoding.
+
+ The value.
+
+
+
+ General method for flushing cached spectral data bytes to
+ the ouput stream respecting stuff bytes.
+
+
+ Bytes cached via are stored in 4-bytes blocks
+ which makes this method endianness dependent.
+
+
+
+
+ Flushes spectral data bytes after encoding all channel blocks
+ in a single jpeg macroblock using .
+
+
+ This must be called only if is true
+ only during the macroblocks encoding routine.
+
+
+
+
+ Flushes final cached bits to the stream padding 1's to
+ complement full bytes.
+
+
+ This must be called only once at the end of the encoding routine.
+ check is not needed.
+
+
+
+
+ The Huffman encoding specifications.
+
+
+
+
+ The Huffman encoding specifications.
+ This encoder uses the same Huffman encoding for all images.
+
+
+
+
+ Gets count[i] - The number of codes of length i bits.
+
+
+
+
+ Gets value[i] - The decoded value of the codeword at the given index.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The number of codes.
+
+
+ The decoded values.
+
+
+
+
+ On-stack worker struct to efficiently encapsulate the TPixel -> L8 -> Y conversion chain of 8x8 pixel blocks.
+
+ The pixel type to work on
+
+
+
+ Number of pixels processed per single call
+
+
+
+
+ The Y component
+
+
+
+
+ Temporal 64-pixel span to hold unconverted TPixel data.
+
+
+
+
+ Temporal 64-byte span to hold converted data.
+
+
+
+
+ Sampled pixel buffer size.
+
+
+
+
+ for internal operations.
+
+
+
+
+ Gets size of sampling area from given frame pixel buffer.
+
+
+
+
+ Converts a 8x8 image area inside 'pixels' at position (x,y) placing the result members of the structure ()
+
+
+
+
+ Converts 8x8 L8 pixel matrix to 8x8 Block of floats using Avx2 Intrinsics.
+
+ Start of span of L8 pixels with size of 64
+ 8x8 destination matrix of Luminance(Y) converted data
+
+
+
+ Converts 8x8 L8 pixel matrix to 8x8 Block of floats.
+
+ Start of span of L8 pixels with size of 64
+ 8x8 destination matrix of Luminance(Y) converted data
+
+
+
+ Enumerates the quantization tables.
+
+
+
+
+ The luminance quantization table index.
+
+
+
+
+ The chrominance quantization table index.
+
+
+
+
+ On-stack worker struct to convert TPixel -> Rgb24 of 8x8 pixel blocks.
+
+ The pixel type to work on.
+
+
+
+ Number of pixels processed per single call
+
+
+
+
+ Total byte size of processed pixels converted from TPixel to
+
+
+
+
+ The Red component.
+
+
+
+
+ The Green component.
+
+
+
+
+ The Blue component.
+
+
+
+
+ Temporal 64-byte span to hold unconverted TPixel data.
+
+
+
+
+ Temporal 64-byte span to hold converted Rgb24 data.
+
+
+
+
+ Sampled pixel buffer size.
+
+
+
+
+ for internal operations.
+
+
+
+
+ Gets size of sampling area from given frame pixel buffer.
+
+
+
+
+ Converts a 8x8 image area inside 'pixels' at position (x, y) to Rgb24.
+
+
+
+
+ Converts 8x8 RGB24 pixel matrix to 8x8 Block of floats using Avx2 Intrinsics.
+
+ Span of Rgb24 pixels with size of 64
+ 8x8 destination matrix of Red converted data
+ 8x8 destination matrix of Blue converted data
+ 8x8 destination matrix of Green converted data
+
+
+
+ Provides 8-bit lookup tables for converting from Rgb to YCbCr colorspace.
+ Methods to build the tables are based on libjpeg implementation.
+
+
+
+
+ The red luminance table
+
+
+
+
+ The green luminance table
+
+
+
+
+ The blue luminance table
+
+
+
+
+ The red blue-chrominance table
+
+
+
+
+ The green blue-chrominance table
+
+
+
+
+ The blue blue-chrominance table
+ B=>Cb and R=>Cr are the same
+
+
+
+
+ The green red-chrominance table
+
+
+
+
+ The blue red-chrominance table
+
+
+
+
+ Initializes the YCbCr tables
+
+ The initialized
+
+
+
+ Converts Rgb24 pixels into YCbCr color space with 4:4:4 subsampling sampling of luminance and chroma.
+
+ Span of Rgb24 pixel data
+ Resulting Y values block
+ Resulting Cb values block
+ Resulting Cr values block
+
+
+
+ Converts Rgb24 pixels into YCbCr color space with 4:2:0 subsampling of luminance and chroma.
+
+ Calculates 2 out of 4 luminance blocks and half of chroma blocks. This method must be called twice per 4x 8x8 DCT blocks with different row param.
+ Span of Rgb24 pixel data
+ First or "left" resulting Y block
+ Second or "right" resulting Y block
+ Resulting Cb values block
+ Resulting Cr values block
+ Row index of the 16x16 block, 0 or 1
+
+
+
+ Converts 8x8 Rgb24 pixel matrix to YCbCr pixel matrices with 4:4:4 subsampling
+
+ Total size of rgb span must be 200 bytes
+ Span of rgb pixels with size of 64
+ 8x8 destination matrix of Luminance(Y) converted data
+ 8x8 destination matrix of Chrominance(Cb) converted data
+ 8x8 destination matrix of Chrominance(Cr) converted data
+
+
+
+ Converts 16x8 Rgb24 pixels matrix to 2 Y 8x8 matrices with 4:2:0 subsampling
+
+
+
+
+ On-stack worker struct to efficiently encapsulate the TPixel -> Rgb24 -> YCbCr conversion chain of 8x8 pixel blocks.
+
+ The pixel type to work on
+
+
+
+ Number of pixels processed per single call
+
+
+
+
+ Total byte size of processed pixels converted from TPixel to
+
+
+
+
+ The left Y component
+
+
+
+
+ The left Y component
+
+
+
+
+ The Cb component
+
+
+
+
+ The Cr component
+
+
+
+
+ The color conversion tables
+
+
+
+
+ Temporal 16x8 block to hold TPixel data
+
+
+
+
+ Temporal RGB block
+
+
+
+
+ Sampled pixel buffer size
+
+
+
+
+ for internal operations
+
+
+
+
+ Gets size of sampling area from given frame pixel buffer.
+
+
+
+
+ On-stack worker struct to efficiently encapsulate the TPixel -> Rgb24 -> YCbCr conversion chain of 8x8 pixel blocks.
+
+ The pixel type to work on
+
+
+
+ Number of pixels processed per single call
+
+
+
+
+ Total byte size of processed pixels converted from TPixel to
+
+
+
+
+ The Y component
+
+
+
+
+ The Cb component
+
+
+
+
+ The Cr component
+
+
+
+
+ The color conversion tables
+
+
+
+
+ Temporal 64-byte span to hold unconverted TPixel data
+
+
+
+
+ Temporal 64-byte span to hold converted Rgb24 data
+
+
+
+
+ Sampled pixel buffer size
+
+
+
+
+ for internal operations
+
+
+
+
+ Gets size of sampling area from given frame pixel buffer.
+
+
+
+
+ Converts a 8x8 image area inside 'pixels' at position (x,y) placing the result members of the structure (, , )
+
+
+
+
+ Contains inaccurate, but fast forward and inverse DCT implementations.
+
+
+
+
+ Gets adjustment table for quantization tables.
+
+
+
+ Current IDCT and FDCT implementations are based on Arai, Agui,
+ and Nakajima's algorithm. Both DCT methods does not
+ produce finished DCT output, final step is fused into the
+ quantization step. Quantization and de-quantization coefficients
+ must be multiplied by these values.
+
+
+ Given values were generated by formula:
+
+ scalefactor[row] * scalefactor[col], where
+ scalefactor[0] = 1
+ scalefactor[k] = cos(k*PI/16) * sqrt(2) for k=1..7
+
+
+
+
+
+
+ Adjusts given quantization table for usage with .
+
+ Quantization table to adjust.
+
+
+
+ Adjusts given quantization table for usage with .
+
+ Quantization table to adjust.
+
+
+
+ Apply 2D floating point IDCT inplace.
+
+
+ Input block must be dequantized before this method with table
+ adjusted by .
+
+ Input block.
+
+
+
+ Apply 2D floating point IDCT inplace.
+
+
+ Input block must be quantized after this method with table adjusted
+ by .
+
+ Input block.
+
+
+
+ Apply floating point IDCT inplace using API.
+
+
+ This method can be used even if there's no SIMD intrinsics available
+ as can be compiled to scalar instructions.
+
+ Input block.
+
+
+
+ Apply floating point FDCT inplace using API.
+
+ Input block.
+
+
+
+ Provides methods and properties related to jpeg quantization.
+
+
+
+
+ Upper bound (inclusive) for jpeg quality setting.
+
+
+
+
+ Lower bound (inclusive) for jpeg quality setting.
+
+
+
+
+ Default JPEG quality for both luminance and chominance tables.
+
+
+
+
+ Represents lowest quality setting which can be estimated with enough confidence.
+ Any quality below it results in a highly compressed jpeg image
+ which shouldn't use standard itu quantization tables for re-encoding.
+
+
+
+
+ Represents highest quality setting which can be estimated with enough confidence.
+
+
+
+
+ Gets unscaled luminance quantization table.
+
+
+ The values are derived from ITU section K.1.
+
+
+
+
+ Gets unscaled chrominance quantization table.
+
+
+ The values are derived from ITU section K.1.
+
+
+
+ Ported from JPEGsnoop:
+ https://github.com/ImpulseAdventure/JPEGsnoop/blob/9732ee0961f100eb69bbff4a0c47438d5997abee/source/JfifDecode.cpp#L4570-L4694
+
+ Estimates jpeg quality based on standard quantization table.
+
+
+ Technically, this can be used with any given table but internal decoder code uses ITU spec tables:
+ and .
+
+ Input quantization table.
+ Natural order quantization table to estimate against.
+ Estimated quality.
+
+
+
+ Estimates jpeg quality based on quantization table in zig-zag order.
+
+ Luminance quantization table.
+ Estimated quality
+
+
+
+ Estimates jpeg quality based on quantization table in zig-zag order.
+
+ Chrominance quantization table.
+ Estimated quality
+
+
+
+ Cache 8 pixel rows on the stack, which may originate from different buffers of a .
+
+
+
+
+ Extension methods for
+
+
+
+
+ Multiplies 'a.Width' with 'b.Width' and 'a.Height' with 'b.Height'.
+ TODO: Shouldn't we expose this as operator in SixLabors.Core?
+
+
+
+
+ Divides 'a.Width' with 'b.Width' and 'a.Height' with 'b.Height'.
+ TODO: Shouldn't we expose this as operator in SixLabors.Core?
+
+
+
+
+ Divide Width and Height as real numbers and return the Ceiling.
+
+
+
+
+ Divide Width and Height as real numbers and return the Ceiling.
+
+
+
+
+ Divide Width and Height as real numbers and return the Ceiling.
+
+
+
+
+ Gets span of zig-zag ordering indices.
+
+
+ When reading corrupted data, the Huffman decoders could attempt
+ to reference an entry beyond the end of this array (if the decoded
+ zero run length reaches past the end of the block). To prevent
+ wild stores without adding an inner-loop test, we put some extra
+ "63"s after the real entries. This will cause the extra coefficient
+ to be stored in location 63 of the block, not somewhere random.
+ The worst case would be a run-length of 15, which means we need 16
+ fake entries.
+
+
+
+
+ Gets span of zig-zag with fused transpose step ordering indices.
+
+
+ When reading corrupted data, the Huffman decoders could attempt
+ to reference an entry beyond the end of this array (if the decoded
+ zero run length reaches past the end of the block). To prevent
+ wild stores without adding an inner-loop test, we put some extra
+ "63"s after the real entries. This will cause the extra coefficient
+ to be stored in location 63 of the block, not somewhere random.
+ The worst case would be a run-length of 15, which means we need 16
+ fake entries.
+
+
+
+
+ Image decoder for generating an image out of a jpg stream.
+
+
+
+
+ Gets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Encoder for writing the data image to a stream in jpeg format.
+
+
+
+
+ Gets or sets the quality, that will be used to encode the image. Quality
+ index must be between 0 and 100 (compression from max to min).
+ Defaults to 75.
+
+
+
+
+ Gets the color type, that will be used to encode the image.
+
+
+
+
+ Provides enumeration of available JPEG color types.
+
+
+
+
+ YCbCr (luminance, blue chroma, red chroma) color as defined in the ITU-T T.871 specification.
+ Medium Quality - The horizontal sampling is halved and the Cb and Cr channels are only
+ sampled on each alternate line.
+
+
+
+
+ YCbCr (luminance, blue chroma, red chroma) color as defined in the ITU-T T.871 specification.
+ High Quality - Each of the three Y'CbCr components have the same sample rate,
+ thus there is no chroma subsampling.
+
+
+
+
+ YCbCr (luminance, blue chroma, red chroma) color as defined in the ITU-T T.871 specification.
+ The two chroma components are sampled at half the horizontal sample rate of luma while vertically it has full resolution.
+
+ Note: Not supported by the encoder.
+
+
+
+
+ YCbCr (luminance, blue chroma, red chroma) color as defined in the ITU-T T.871 specification.
+ In 4:1:1 chroma subsampling, the horizontal color resolution is quartered.
+
+ Note: Not supported by the encoder.
+
+
+
+
+ YCbCr (luminance, blue chroma, red chroma) color as defined in the ITU-T T.871 specification.
+ This ratio uses half of the vertical and one-fourth the horizontal color resolutions.
+
+ Note: Not supported by the encoder.
+
+
+
+
+ Single channel, luminance.
+
+
+
+
+ The pixel data will be preserved as RGB without any sub sampling.
+
+
+
+
+ CMYK colorspace (cyan, magenta, yellow, and key black) intended for printing.
+
+ Note: Not supported by the encoder.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the jpeg format.
+
+
+
+
+
+
+
+ Contains jpeg constant values defined in the specification.
+
+
+
+
+ The maximum allowable length in each dimension of a jpeg image.
+
+
+
+
+ The list of mimetypes that equate to a jpeg.
+
+
+
+
+ The list of file extensions that equate to a jpeg.
+
+
+
+
+ Contains marker specific constants.
+
+
+
+
+ The prefix used for all markers.
+
+
+
+
+ Same as but of type
+
+
+
+
+ The Start of Image marker
+
+
+
+
+ The End of Image marker
+
+
+
+
+ Application specific marker for marking the jpeg format.
+
+
+
+
+
+ Application specific marker for marking where to store metadata.
+
+
+
+
+ Application specific marker for marking where to store ICC profile information.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker.
+
+
+
+
+ Application specific marker used by Adobe for storing encoding information for DCT filters.
+
+
+
+
+ Application specific marker used by GraphicConverter to store JPEG quality.
+
+
+
+
+ Define arithmetic coding conditioning marker.
+
+
+
+
+ The text comment marker
+
+
+
+
+ Define Quantization Table(s) marker
+
+ Specifies one or more quantization tables.
+
+
+
+
+
+ Start of Frame (baseline DCT)
+
+ Indicates that this is a baseline DCT-based JPEG, and specifies the width, height, number of components,
+ and component subsampling (e.g., 4:2:0).
+
+
+
+
+
+ Start Of Frame (Extended Sequential DCT)
+
+ Indicates that this is a progressive DCT-based JPEG, and specifies the width, height, number of components,
+ and component subsampling (e.g., 4:2:0).
+
+
+
+
+
+ Start Of Frame (progressive DCT)
+
+ Indicates that this is a progressive DCT-based JPEG, and specifies the width, height, number of components,
+ and component subsampling (e.g., 4:2:0).
+
+
+
+
+
+ Start of Frame marker, non differential lossless, Huffman coding.
+
+
+
+
+ Start of Frame marker, differential, Huffman coding, Differential sequential DCT.
+
+
+
+
+ Start of Frame marker, differential, Huffman coding, Differential progressive DCT.
+
+
+
+
+ Start of Frame marker, differential lossless, Huffman coding.
+
+
+
+
+ Start of Frame marker, non-differential, arithmetic coding, Extended sequential DCT.
+
+
+
+
+ Start of Frame marker, non-differential, arithmetic coding, Progressive DCT.
+
+
+
+
+ Start of Frame marker, non-differential, arithmetic coding, Lossless (sequential).
+
+
+
+
+ Start of Frame marker, differential, arithmetic coding, Differential sequential DCT.
+
+
+
+
+ Start of Frame marker, differential, arithmetic coding, Differential progressive DCT.
+
+
+
+
+ Start of Frame marker, differential, arithmetic coding, Differential lossless (sequential).
+
+
+
+
+ Define Huffman Table(s)
+
+ Specifies one or more Huffman tables.
+
+
+
+
+
+ Define Restart Interval
+
+ Specifies the interval between RSTn markers, in macroblocks.This marker is followed by two bytes indicating the fixed size so
+ it can be treated like any other variable size segment.
+
+
+
+
+
+ Start of Scan
+
+ Begins a top-to-bottom scan of the image. In baseline DCT JPEG images, there is generally a single scan.
+ Progressive DCT JPEG images usually contain multiple scans. This marker specifies which slice of data it
+ will contain, and is immediately followed by entropy-coded data.
+
+
+
+
+
+ Define First Restart
+
+ Inserted every r macroblocks, where r is the restart interval set by a DRI marker.
+ Not used if there was no DRI marker. The low three bits of the marker code cycle in value from 0 to 7.
+
+
+
+
+
+ Define Eigth Restart
+
+ Inserted every r macroblocks, where r is the restart interval set by a DRI marker.
+ Not used if there was no DRI marker. The low three bits of the marker code cycle in value from 0 to 7.
+
+
+
+
+
+ Contains Adobe specific constants.
+
+
+
+
+ The color transform is unknown.(RGB or CMYK)
+
+
+
+
+ The color transform is YCbCr (luminance, red chroma, blue chroma)
+
+
+
+
+ The color transform is YCCK (luminance, red chroma, blue chroma, keyline)
+
+
+
+
+ Contains Huffman specific constants.
+
+
+
+
+ The size of the huffman decoder register.
+
+
+
+
+ The number of bits to fetch when filling the buffer.
+
+
+
+
+ The number of times to read the input stream when filling the buffer.
+
+
+
+
+ The minimum number of bits allowed before by the before fetching.
+
+
+
+
+ If the next Huffman code is no more than this number of bits, we can obtain its length
+ and the corresponding symbol directly from this tables.
+
+
+
+
+ If a Huffman code is this number of bits we cannot use the lookup table to determine its value.
+
+
+
+
+ The size of the lookup table.
+
+
+
+
+ Image decoder for generating an image out of a jpg stream.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the jpeg decoding operation.
+ Originally ported from
+ with additional fixes for both performance and common encoding errors.
+
+
+
+
+ The only supported precision
+
+
+
+
+ The buffer used to temporarily store bytes read from the stream.
+
+
+
+
+ The buffer used to read markers from the stream.
+
+
+
+
+ Whether the image has an EXIF marker.
+
+
+
+
+ Contains exif data.
+
+
+
+
+ Whether the image has an ICC marker.
+
+
+
+
+ Contains ICC data.
+
+
+
+
+ Whether the image has a IPTC data.
+
+
+
+
+ Contains IPTC data.
+
+
+
+
+ Whether the image has a XMP data.
+
+
+
+
+ Contains XMP data.
+
+
+
+
+ Contains information about the JFIF marker.
+
+
+
+
+ Whether the image has a JFIF marker. This is needed to determine, if the colorspace is YCbCr.
+
+
+
+
+ Contains information about the Adobe marker.
+
+
+
+
+ Scan decoder.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The options.
+
+
+
+
+
+
+ Gets the frame
+
+
+
+
+
+
+
+ Gets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Gets the decoded by this decoder instance.
+
+
+
+
+
+
+
+ Gets the components.
+
+
+
+
+
+
+
+
+
+
+ Finds the next file marker within the byte stream.
+
+ The buffer to read file markers to.
+ The input stream.
+ The
+
+
+
+
+
+
+
+
+
+ Load quantization and/or Huffman tables for subsequent use for jpeg's embedded in tiff's,
+ so those tables do not need to be duplicated with segmented tiff's (tiff's with multiple strips).
+
+ The table bytes.
+ The scan decoder.
+
+
+
+ Parses the input stream for file markers.
+
+ The input stream.
+ Scan decoder used exclusively to decode SOS marker.
+ The token to monitor cancellation.
+
+
+
+
+
+
+ Returns the correct colorspace based on the image component count and the jpeg frame component id's.
+
+ The number of components.
+ The
+
+
+
+ Returns the jpeg color type based on the colorspace and subsampling used.
+
+ Jpeg color type.
+
+
+
+ Initializes the EXIF profile.
+
+
+
+
+ Initializes the ICC profile.
+
+
+
+
+ Initializes the IPTC profile.
+
+
+
+
+ Initializes the XMP profile.
+
+
+
+
+ Assigns derived metadata properties to , eg. horizontal and vertical resolution if it has a JFIF header.
+
+
+
+
+ Extends the profile with additional data.
+
+ The profile data array.
+ The array containing addition profile data.
+
+
+
+ Processes the application header containing the JFIF identifier plus extra data.
+
+ The input stream.
+ The remaining bytes in the segment block.
+
+
+
+ Processes the App1 marker retrieving any stored metadata.
+
+ The input stream.
+ The remaining bytes in the segment block.
+
+
+
+ Processes the App2 marker retrieving any stored ICC profile information
+
+ The input stream.
+ The remaining bytes in the segment block.
+
+
+
+ Processes a App13 marker, which contains IPTC data stored with Adobe Photoshop.
+ The tableBytes of an APP13 segment is formed by an identifier string followed by a sequence of resource data blocks.
+
+ The input stream.
+ The remaining bytes in the segment block.
+
+
+
+ Reads the adobe image resource block name: a Pascal string (padded to make size even).
+
+ The span holding the block resource data.
+ The length of the name.
+
+
+
+ Reads the length of a adobe image resource data block.
+
+ The span holding the block resource data.
+ The length of the block name.
+ The block length.
+
+
+
+ Processes the application header containing the Adobe identifier
+ which stores image encoding information for DCT filters.
+
+ The input stream.
+ The remaining bytes in the segment block.
+
+
+
+ Processes the Define Quantization Marker and tables. Specified in section B.2.4.1.
+
+ The input stream.
+ The remaining bytes in the segment block.
+
+ Thrown if the tables do not match the header
+
+
+
+
+ Processes the Start of Frame marker. Specified in section B.2.2.
+
+ The input stream.
+ The remaining bytes in the segment block.
+ The current frame marker.
+ Whether to parse metadata only
+
+
+
+ Processes a Define Huffman Table marker, and initializes a huffman
+ struct from its contents. Specified in section B.2.4.2.
+
+ The input stream.
+ The remaining bytes in the segment block.
+
+
+
+ Processes the DRI (Define Restart Interval Marker) Which specifies the interval between RSTn markers, in
+ macroblocks
+
+ The input stream.
+ The remaining bytes in the segment block.
+
+
+
+ Processes the SOS (Start of scan marker).
+
+
+
+
+ Reads a from the stream advancing it by two bytes
+
+ The input stream.
+ The
+
+
+
+ Encoder for writing the data image to a stream in jpeg format.
+
+
+
+
+
+
+
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to monitor for cancellation requests.
+ A representing the asynchronous operation.
+
+
+
+ Image encoder for writing an image to a stream as a jpeg.
+
+
+
+
+ The number of quantization tables.
+
+
+
+
+ A scratch buffer to reduce allocations.
+
+
+
+
+ The quality, that will be used to encode the image.
+
+
+
+
+ Gets or sets the colorspace to use.
+
+
+
+
+ The output stream. All attempted writes after the first error become no-ops.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The options.
+
+
+
+ Encode writes the image to the jpeg baseline format with the given options.
+
+ The pixel format.
+ The image to write from.
+ The stream to write to.
+ The token to request cancellation.
+
+
+
+ If color type was not set, set it based on the given image.
+ Note, if there is no metadata and the image has multiple components this method
+ returns defering the field assignment
+ to .
+
+
+
+
+ Returns true, if the color type is supported by the encoder.
+
+ The color type.
+ true, if color type is supported.
+
+
+
+ Gets the component ids.
+ For color space RGB this will be RGB as ASCII, otherwise 1, 2, 3.
+
+ The component Ids.
+
+
+
+ Writes data to "Define Quantization Tables" block for QuantIndex.
+
+ The "Define Quantization Tables" block.
+ Offset in "Define Quantization Tables" block.
+ The quantization index.
+ The quantization table to copy data from.
+
+
+
+ Write the start of image marker.
+
+
+
+
+ Writes the application header containing the JFIF identifier plus extra data.
+
+ The image metadata.
+
+
+
+ Writes the Define Huffman Table marker and tables.
+
+ The number of components to write.
+
+
+
+ Writes the Define Quantization Marker and tables.
+
+
+
+
+ Writes the APP14 marker to indicate the image is in RGB color space.
+
+
+
+
+ Writes the EXIF profile.
+
+ The exif profile.
+
+
+
+ Writes the IPTC metadata.
+
+ The iptc metadata to write.
+
+ Thrown if the IPTC profile size exceeds the limit of 65533 bytes.
+
+
+
+
+ Writes the XMP metadata.
+
+ The XMP metadata to write.
+
+ Thrown if the XMP profile size exceeds the limit of 65533 bytes.
+
+
+
+
+ Writes the App1 header.
+
+ The length of the data the app1 marker contains.
+
+
+
+ Writes a AppX header.
+
+ The length of the data the app marker contains.
+ The app marker to write.
+
+
+
+ Writes the ICC profile.
+
+ The ICC profile to write.
+
+ Thrown if any of the ICC profiles size exceeds the limit.
+
+
+
+
+ Writes the metadata profiles to the image.
+
+ The image metadata.
+
+
+
+ Writes the Start Of Frame (Baseline) marker.
+
+ The width of the image.
+ The height of the image.
+ The number of components in a pixel.
+ The component Id's.
+
+
+
+ Writes the StartOfScan marker.
+
+ The number of components in a pixel.
+ The componentId's.
+
+
+
+ Writes the EndOfImage marker.
+
+
+
+
+ Writes the header for a marker with the given length.
+
+ The marker to write.
+ The marker length.
+
+
+
+ Initializes quantization tables.
+
+
+
+ Zig-zag ordering is NOT applied to the resulting tables.
+
+
+ We take quality values in a hierarchical order:
+ 1. Check if encoder has set quality
+ 2. Check if metadata has set quality
+ 3. Take default quality value - 75
+
+
+ Color components count.
+ Jpeg metadata instance.
+ Output luminance quantization table.
+ Output chrominance quantization table.
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the jpeg format.
+
+
+
+
+ Gets the current instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Detects Jpeg file headers
+
+
+
+
+
+
+
+
+
+
+ Returns a value indicating whether the given bytes identify Jfif data.
+
+ The bytes representing the file header.
+ The
+
+
+
+ Returns a value indicating whether the given bytes identify EXIF data.
+
+ The bytes representing the file header.
+ The
+
+
+
+ Returns a value indicating whether the given bytes identify Jpeg data.
+ This is a last chance resort for jpegs that contain ICC information.
+
+ The bytes representing the file header.
+ The
+
+
+
+ Provides Jpeg specific metadata information for the image.
+
+
+
+
+ Backing field for
+
+
+
+
+ Backing field for
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the jpeg luminance quality.
+
+
+ This value might not be accurate if it was calculated during jpeg decoding
+ with non-complient ITU quantization tables.
+
+
+
+
+ Gets or sets the jpeg chrominance quality.
+
+
+ This value might not be accurate if it was calculated during jpeg decoding
+ with non-complient ITU quantization tables.
+
+
+
+
+ Gets or sets the encoded quality.
+
+
+ Note that jpeg image can have different quality for luminance and chrominance components.
+ This property returns maximum value of luma/chroma qualities.
+
+
+
+
+ Gets or sets the color type.
+
+
+
+
+
+
+
+ Cold path optimization for throwing 's.
+
+ The error message for the exception.
+
+
+
+ Cold path optimization for throwing 's.
+
+ The error message for the exception.
+
+
+
+ Pixel decoding methods for the PBM binary encoding.
+
+
+
+
+ Decode the specified pixels.
+
+ The type of pixel to encode to.
+ The configuration.
+ The pixel array to encode into.
+ The stream to read the data from.
+ The ColorType to decode.
+ Data type of the pixles components.
+
+ Thrown if an invalid combination of setting is requested.
+
+
+
+
+ Pixel encoding methods for the PBM binary encoding.
+
+
+
+
+ Decode pixels into the PBM binary encoding.
+
+ The type of input pixel.
+ The configuration.
+ The bytestream to write to.
+ The input image.
+ The ColorType to use.
+ Data type of the pixles components.
+
+ Thrown if an invalid combination of setting is requested.
+
+
+
+
+ Extensions methods for .
+
+
+
+
+ Skip over any whitespace or any comments and signal if EOF has been reached.
+
+ The buffered read stream.
+ if EOF has been reached while reading the stream; see langword="true"/> otherwise.
+
+
+
+ Read a decimal text value and signal if EOF has been reached.
+
+ The buffered read stream.
+ The read value.
+ if EOF has been reached while reading the stream; otherwise.
+
+ A 'false' return value doesn't mean that the parsing has been failed, since it's possible to reach EOF while reading the last decimal in the file.
+ It's up to the call site to handle such a situation.
+
+
+
+
+ Configuration options for use during PBM encoding.
+
+
+
+
+ Gets the encoding of the pixels.
+
+
+
+
+ Gets the Color type of the resulting image.
+
+
+
+
+ Gets the Data Type of the pixel components.
+
+
+
+
+ Provides enumeration of available PBM color types.
+
+
+
+
+ PBM
+
+
+
+
+ PGM - Greyscale. Single component.
+
+
+
+
+ PPM - RGB Color. 3 components.
+
+
+
+
+ The data type of the components of the pixels.
+
+
+
+
+ Single bit per pixel, exclusively for .
+
+
+
+
+ 8 bits unsigned integer per component.
+
+
+
+
+ 16 bits unsigned integer per component.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the Pbm format.
+
+
+
+
+
+
+
+ Contains PBM constant values defined in the specification.
+
+
+
+
+ The maximum allowable pixel value of a ppm image.
+
+
+
+
+ The list of mimetypes that equate to a ppm.
+
+
+
+
+ The list of file extensions that equate to a ppm.
+
+
+
+
+ Image decoder for reading PGM, PBM or PPM bitmaps from a stream. These images are from
+ the family of PNM images.
+
+ -
+ PBM
+ Black and white images.
+
+ -
+ PGM
+ Grayscale images.
+
+ -
+ PPM
+ Color images, with RGB pixels.
+
+
+ The specification of these images is found at .
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the PBM decoding operation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+
+
+
+
+
+
+ Gets the colortype to use
+
+
+
+
+ Gets the size of the pixel array
+
+
+
+
+ Gets the component data type
+
+
+
+
+ Gets the Encoding of pixels
+
+
+
+
+ Gets the decoded by this decoder instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Processes the ppm header.
+
+ The input stream.
+ An EOF marker has been read before the image has been decoded.
+
+
+
+ Image encoder for writing an image to a stream as PGM, PBM or PPM bitmap. These images are from
+ the family of PNM images.
+
+ The PNM formats are a fairly simple image format. They share a plain text header, consisting of:
+ signature, width, height and max_pixel_value only. The pixels follow thereafter and can be in
+ plain text decimals separated by spaces, or binary encoded.
+
+ -
+ PBM
+ Black and white images, with 1 representing black and 0 representing white.
+
+ -
+ PGM
+ Grayscale images, scaling from 0 to max_pixel_value, 0 representing black and max_pixel_value representing white.
+
+ -
+ PPM
+ Color images, with RGB pixels (in that order), with 0 representing black and 2 representing full color.
+
+
+
+ The specification of these images is found at .
+
+
+
+
+ Gets or sets the Encoding of the pixels.
+
+
+
+
+ Gets or sets the Color type of the resulting image.
+
+
+
+
+ Gets or sets the data type of the pixels components.
+
+
+
+
+
+
+
+
+
+
+ Image encoder for writing an image to a stream as a PGM, PBM, PPM or PAM bitmap.
+
+
+
+
+ The global configuration.
+
+
+
+
+ The encoder options.
+
+
+
+
+ The encoding for the pixels.
+
+
+
+
+ Gets the Color type of the resulting image.
+
+
+
+
+ Gets the maximum pixel value, per component.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The encoder options.
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to request cancellation.
+
+
+
+ Writes the pixel data to the binary stream.
+
+ The pixel format.
+ The to write to.
+
+ The containing pixel data.
+
+
+
+
+ Provides enumeration of available PBM encodings.
+
+
+
+
+ Plain text decimal encoding.
+
+
+
+
+ Binary integer encoding.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the PBM format.
+
+
+
+
+ Gets the current instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Detects Pbm file headers.
+
+
+
+
+
+
+
+
+
+
+ Provides PBM specific metadata information for the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the encoding of the pixels.
+
+
+
+
+ Gets or sets the color type.
+
+
+
+
+ Gets or sets the data type of the pixel components.
+
+
+
+
+
+
+
+ Pixel decoding methods for the PBM plain encoding.
+
+
+
+
+ Decode the specified pixels.
+
+ The type of pixel to encode to.
+ The configuration.
+ The pixel array to encode into.
+ The stream to read the data from.
+ The ColorType to decode.
+ Data type of the pixles components.
+
+
+
+ Pixel encoding methods for the PBM plain encoding.
+
+
+
+
+ Decode pixels into the PBM plain encoding.
+
+ The type of input pixel.
+ The configuration.
+ The bytestream to write to.
+ The input image.
+ The ColorType to use.
+ Data type of the pixles components.
+
+
+
+ Contains information about the pixels that make up an images visual data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Color depth, in number of bits per pixel.
+
+
+
+ Initializes a new instance of the class.
+
+ Color depth, in number of bits per pixel.
+ The pixel alpha transparency behavior.
+
+
+
+ Gets color depth, in number of bits per pixel.
+
+
+
+
+ Gets the pixel alpha transparency behavior.
+ means unknown, unspecified.
+
+
+
+
+ Constants and helper methods for the Adam7 interlacing algorithm.
+
+
+
+
+ The amount to increment when processing each column per scanline for each interlaced pass.
+
+
+
+
+ The index to start at when processing each column per scanline for each interlaced pass.
+
+
+
+
+ The index to start at when processing each row per scanline for each interlaced pass.
+
+
+
+
+ The amount to increment when processing each row per scanline for each interlaced pass.
+
+
+
+
+ Gets the width of the block.
+
+ The width.
+ The pass.
+
+ The
+
+
+
+
+ Gets the height of the block.
+
+ The height.
+ The pass.
+
+ The
+
+
+
+
+ Returns the correct number of columns for each interlaced pass.
+
+ The line width.
+ The current pass index.
+ The
+
+
+
+ The pHYs chunk specifies the intended pixel size or aspect ratio for display of the image.
+
+
+
+
+ Gets the number of pixels per unit on the X axis.
+
+
+
+
+ Gets the number of pixels per unit on the Y axis.
+
+
+
+
+ Gets the unit specifier.
+ 0: unit is unknown
+ 1: unit is the meter
+ When the unit specifier is 0, the pHYs chunk defines pixel aspect ratio only; the actual size of the pixels remains unspecified.
+
+
+
+
+ Parses the PhysicalChunkData from the given buffer.
+
+ The data buffer.
+ The parsed PhysicalChunkData.
+
+
+
+ Constructs the PngPhysicalChunkData from the provided metadata.
+ If the resolution units are not in meters, they are automatically converted.
+
+ The metadata.
+ The constructed PngPhysicalChunkData instance.
+
+
+
+ Writes the data to the given buffer.
+
+ The buffer.
+
+
+
+ The Average filter uses the average of the two neighboring pixels (left and above) to predict
+ the value of a pixel.
+
+
+
+
+
+ Decodes a scanline, which was filtered with the average filter.
+
+ The scanline to decode.
+ The previous scanline.
+ The bytes per pixel.
+
+
+
+ Encodes a scanline with the average filter applied.
+
+ The scanline to encode.
+ The previous scanline.
+ The filtered scanline result.
+ The bytes per pixel.
+ The sum of the total variance of the filtered row.
+
+
+
+ Calculates the average value of two bytes
+
+ The left byte
+ The above byte
+ The
+
+
+
+ Provides enumeration of the various PNG filter types.
+
+
+
+
+
+ With the None filter, the scanline is transmitted unmodified; it is only necessary to
+ insert a filter type byte before the data.
+
+
+
+
+ The Sub filter transmits the difference between each byte and the value of the corresponding
+ byte of the prior pixel.
+
+
+
+
+ The Up filter is just like the Sub filter except that the pixel immediately above the current
+ pixel, rather than just to its left, is used as the predictor.
+
+
+
+
+ The Average filter uses the average of the two neighboring pixels (left and above) to
+ predict the value of a pixel.
+
+
+
+
+ The Paeth filter computes a simple linear function of the three neighboring pixels (left, above, upper left),
+ then chooses as predictor the neighboring pixel closest to the computed value.
+ This technique is due to Alan W. Paeth
+
+
+
+
+ The None filter, the scanline is transmitted unmodified; it is only necessary to
+ insert a filter type byte before the data.
+
+
+
+
+
+ Encodes the scanline
+
+ The scanline to encode
+ The filtered scanline result.
+
+
+
+ The Paeth filter computes a simple linear function of the three neighboring pixels (left, above, upper left),
+ then chooses as predictor the neighboring pixel closest to the computed value.
+ This technique is due to Alan W. Paeth.
+
+
+
+
+
+ Decodes a scanline, which was filtered with the paeth filter.
+
+ The scanline to decode.
+ The previous scanline.
+ The bytes per pixel.
+
+
+
+ Encodes a scanline and applies the paeth filter.
+
+ The scanline to encode
+ The previous scanline.
+ The filtered scanline result.
+ The bytes per pixel.
+ The sum of the total variance of the filtered row.
+
+
+
+ Computes a simple linear function of the three neighboring pixels (left, above, upper left), then chooses
+ as predictor the neighboring pixel closest to the computed value.
+
+ The left neighbor pixel.
+ The above neighbor pixel.
+ The upper left neighbor pixel.
+
+ The .
+
+
+
+
+ The Sub filter transmits the difference between each byte and the value of the corresponding byte
+ of the prior pixel.
+
+
+
+
+
+ Decodes a scanline, which was filtered with the sub filter.
+
+ The scanline to decode.
+ The bytes per pixel.
+
+
+
+ Encodes a scanline with the sup filter applied.
+
+ The scanline to encode.
+ The filtered scanline result.
+ The bytes per pixel.
+ The sum of the total variance of the filtered row.
+
+
+
+ The Up filter is just like the Sub filter except that the pixel immediately above the current pixel,
+ rather than just to its left, is used as the predictor.
+
+
+
+
+
+ Decodes a scanline, which was filtered with the up filter.
+
+ The scanline to decode
+ The previous scanline.
+
+
+
+ Encodes a scanline with the up filter applied.
+
+ The scanline to encode.
+ The previous scanline.
+ The filtered scanline result.
+ The sum of the total variance of the filtered row.
+
+
+
+ The options for decoding png images
+
+
+
+
+ Gets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ The options available for manipulating the encoder pipeline.
+
+
+
+
+ Gets the number of bits per sample or per palette index (not per pixel).
+ Not all values are allowed for all values.
+
+
+
+
+ Gets the color type.
+
+
+
+
+ Gets the filter method.
+
+
+
+
+ Gets the compression level 1-9.
+ Defaults to .
+
+
+
+
+ Gets the threshold of characters in text metadata, when compression should be used.
+
+
+
+
+ Gets the gamma value, that will be written the image.
+
+ The gamma value of the image.
+
+
+
+ Gets the quantizer for reducing the color count.
+
+
+
+
+ Gets the transparency threshold.
+
+
+
+
+ Gets a value indicating whether this instance should write an Adam7 interlaced image.
+
+
+
+
+ Gets a value indicating whether the metadata should be ignored when the image is being encoded.
+ When set to true, all ancillary chunks will be skipped.
+
+
+
+
+ Gets the chunk filter method. This allows to filter ancillary chunks.
+
+
+
+
+ Gets a value indicating whether fully transparent pixels that may contain R, G, B values which are not 0,
+ should be converted to transparent black, which can yield in better compression in some cases.
+
+
+
+
+ Provides enumeration for the available PNG bit depths.
+
+
+
+
+ 1 bit per sample or per palette index (not per pixel).
+
+
+
+
+ 2 bits per sample or per palette index (not per pixel).
+
+
+
+
+ 4 bits per sample or per palette index (not per pixel).
+
+
+
+
+ 8 bits per sample or per palette index (not per pixel).
+
+
+
+
+ 16 bits per sample or per palette index (not per pixel).
+
+
+
+
+ Stores header information about a chunk.
+
+
+
+
+ Gets the length.
+ An unsigned integer giving the number of bytes in the chunk's
+ data field. The length counts only the data field, not itself,
+ the chunk type code, or the CRC. Zero is a valid length
+
+
+
+
+ Gets the chunk type.
+ The value is the equal to the UInt32BigEndian encoding of its 4 ASCII characters.
+
+
+
+
+ Gets the data bytes appropriate to the chunk type, if any.
+ This field can be of zero length or null.
+
+
+
+
+ Gets a value indicating whether the given chunk is critical to decoding
+
+
+
+
+ Provides enumeration of available PNG optimization methods.
+
+
+
+
+ With the None filter, all chunks will be written.
+
+
+
+
+ Excludes the physical dimension information chunk from encoding.
+
+
+
+
+ Excludes the gamma information chunk from encoding.
+
+
+
+
+ Excludes the eXIf chunk from encoding.
+
+
+
+
+ Excludes the tTXt, iTXt or zTXt chunk from encoding.
+
+
+
+
+ All ancillary chunks will be excluded.
+
+
+
+
+ Contains a list of chunk types.
+
+
+
+
+ The IDAT chunk contains the actual image data. The image can contains more
+ than one chunk of this type. All chunks together are the whole image.
+
+
+
+
+ This chunk must appear last. It marks the end of the PNG data stream.
+ The chunk's data field is empty.
+
+
+
+
+ The first chunk in a png file. Can only exists once. Contains
+ common information like the width and the height of the image or
+ the used compression method.
+
+
+
+
+ The PLTE chunk contains from 1 to 256 palette entries, each a three byte
+ series in the RGB format.
+
+
+
+
+ The eXIf data chunk which contains the Exif profile.
+
+
+
+
+ This chunk specifies the relationship between the image samples and the desired
+ display output intensity.
+
+
+
+
+ The pHYs chunk specifies the intended pixel size or aspect ratio for display of the image.
+
+
+
+
+ Textual information that the encoder wishes to record with the image can be stored in
+ tEXt chunks. Each tEXt chunk contains a keyword and a text string.
+
+
+
+
+ Textual information that the encoder wishes to record with the image. The zTXt and tEXt chunks are semantically equivalent,
+ but the zTXt chunk is recommended for storing large blocks of text. Each zTXt chunk contains a (uncompressed) keyword and
+ a compressed text string.
+
+
+
+
+ The iTXt chunk contains International textual data. It contains a keyword, an optional language tag, an optional translated keyword
+ and the actual text string, which can be compressed or uncompressed.
+
+
+
+
+ The tRNS chunk specifies that the image uses simple transparency:
+ either alpha values associated with palette entries (for indexed-color images)
+ or a single transparent color (for grayscale and true color images).
+
+
+
+
+ The tIME chunk gives the time of the last image modification (not the time of initial image creation).
+
+
+
+
+ The bKGD chunk specifies a default background colour to present the image against.
+ If there is any other preferred background, either user-specified or part of a larger page (as in a browser),
+ the bKGD chunk should be ignored.
+
+
+
+
+ The iCCP chunk contains a embedded color profile. If the iCCP chunk is present,
+ the image samples conform to the colour space represented by the embedded ICC profile as defined by the International Color Consortium.
+
+
+
+
+ The sBIT chunk defines the original number of significant bits (which can be less than or equal to the sample depth).
+ This allows PNG decoders to recover the original data losslessly even if the data had a sample depth not directly supported by PNG.
+
+
+
+
+ If the sRGB chunk is present, the image samples conform to the sRGB colour space [IEC 61966-2-1] and should be displayed
+ using the specified rendering intent defined by the International Color Consortium.
+
+
+
+
+ The hIST chunk gives the approximate usage frequency of each colour in the palette.
+
+
+
+
+ The sPLT chunk contains the suggested palette.
+
+
+
+
+ The cHRM chunk may be used to specify the 1931 CIE x,y chromaticities of the red,
+ green, and blue display primaries used in the image, and the referenced white point.
+
+
+
+
+ Malformed chunk named CgBI produced by apple, which is not conform to the specification.
+ Related issue is here https://github.com/SixLabors/ImageSharp/issues/410
+
+
+
+
+ Provides enumeration of available PNG color types.
+
+
+
+
+ Each pixel is a grayscale sample.
+
+
+
+
+ Each pixel is an R,G,B triple.
+
+
+
+
+ Each pixel is a palette index; a PLTE chunk must appear.
+
+
+
+
+ Each pixel is a grayscale sample, followed by an alpha sample.
+
+
+
+
+ Each pixel is an R,G,B triple, followed by an alpha sample.
+
+
+
+
+ Provides enumeration of available PNG compression levels.
+
+
+
+
+ Level 0. Equivalent to .
+
+
+
+
+ No compression. Equivalent to .
+
+
+
+
+ Level 1. Equivalent to .
+
+
+
+
+ Best speed compression level.
+
+
+
+
+ Level 2.
+
+
+
+
+ Level 3.
+
+
+
+
+ Level 4.
+
+
+
+
+ Level 5.
+
+
+
+
+ Level 6. Equivalent to .
+
+
+
+
+ The default compression level. Equivalent to .
+
+
+
+
+ Level 7.
+
+
+
+
+ Level 8.
+
+
+
+
+ Level 9. Equivalent to .
+
+
+
+
+ Best compression level. Equivalent to .
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the png format.
+
+
+
+
+
+
+
+ Defines Png constants defined in the specification.
+
+
+
+
+ The character encoding to use when reading and writing textual data keywords and text - (Latin-1 ISO-8859-1).
+
+
+
+
+ The character encoding to use when reading and writing language tags within iTXt chunks - (ASCII 7bit).
+
+
+
+
+ The character encoding to use when reading and writing translated textual data keywords and text - (UTF8).
+
+
+
+
+ The list of mimetypes that equate to a Png.
+
+
+
+
+ The list of file extensions that equate to a Png.
+
+
+
+
+ The header bytes as a big-endian coded ulong.
+
+
+
+
+ The dictionary of available color types.
+
+
+
+
+ The maximum length of keyword in a text chunk is 79 bytes.
+
+
+
+
+ The minimum length of a keyword in a text chunk is 1 byte.
+
+
+
+
+ Gets the header bytes identifying a Png.
+
+
+
+
+ Gets the keyword of the XMP metadata, encoded in an iTXT chunk.
+
+
+
+
+ Decoder for generating an image out of a png encoded stream.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the png decoding operation.
+
+
+
+
+ Reusable buffer.
+
+
+
+
+ Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Gets or sets a value indicating whether to read the IHDR and tRNS chunks only.
+
+
+
+
+ Used the manage memory allocations.
+
+
+
+
+ The stream to decode from.
+
+
+
+
+ The png header.
+
+
+
+
+ The number of bytes per pixel.
+
+
+
+
+ The number of bytes per sample.
+
+
+
+
+ The number of bytes per scanline.
+
+
+
+
+ The palette containing color information for indexed png's.
+
+
+
+
+ The palette containing alpha channel color information for indexed png's.
+
+
+
+
+ Previous scanline processed.
+
+
+
+
+ The current scanline that is being processed.
+
+
+
+
+ The index of the current scanline being processed.
+
+
+
+
+ The current number of bytes read in the current scanline.
+
+
+
+
+ Gets or sets the png color type.
+
+
+
+
+ The next chunk of data to return.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The decoder options.
+
+
+
+
+
+
+ Gets the dimensions of the image.
+
+
+
+
+
+
+
+
+
+
+ Reads the least significant bits from the byte pair with the others set to 0.
+
+ The source buffer
+ THe offset
+ The
+
+
+
+ Attempts to convert a byte array to a new array where each value in the original array is represented by the
+ specified number of bits.
+
+ The bytes to convert from. Cannot be empty.
+ The number of bytes per scanline
+ The number of bits per value.
+ The new array.
+ The resulting array.
+
+
+
+ Reads the data chunk containing physical dimension data.
+
+ The metadata to read to.
+ The data containing physical data.
+
+
+
+ Reads the data chunk containing gamma data.
+
+ The metadata to read to.
+ The data containing physical data.
+
+
+
+ Initializes the image and various buffers needed for processing
+
+ The type the pixels will be
+ The metadata information for the image
+ The image that we will populate
+
+
+
+ Calculates the correct number of bits per pixel for the given color type.
+
+ The
+
+
+
+ Calculates the correct number of bytes per pixel for the given color type.
+
+ The
+
+
+
+ Calculates the scanline length.
+
+ The width of the row.
+
+ The representing the length.
+
+
+
+
+ Reads the scanlines within the image.
+
+ The pixel format.
+ The png chunk containing the compressed scanline data.
+ The pixel data.
+ The png metadata
+
+
+
+ Decodes the raw pixel data row by row
+
+ The pixel format.
+ The compressed pixel data stream.
+ The image to decode to.
+ The png metadata
+
+
+
+ Decodes the raw interlaced pixel data row by row
+
+
+ The pixel format.
+ The compressed pixel data stream.
+ The current image.
+ The png metadata.
+
+
+
+ Processes the de-filtered scanline filling the image pixel data
+
+ The pixel format.
+ The de-filtered scanline
+ The image
+ The png metadata.
+
+
+
+ Processes the interlaced de-filtered scanline filling the image pixel data
+
+ The pixel format.
+ The de-filtered scanline
+ The current image row.
+ The png metadata.
+ The column start index. Always 0 for none interlaced images.
+ The column increment. Always 1 for none interlaced images.
+
+
+
+ Decodes and assigns marker colors that identify transparent pixels in non indexed images.
+
+ The alpha tRNS array.
+ The png metadata.
+
+
+
+ Reads a header chunk from the data.
+
+ The png metadata.
+ The containing data.
+
+
+
+ Reads a text chunk containing image properties from the data.
+
+ The object.
+ The metadata to decode to.
+ The containing the data.
+
+
+
+ Reads the compressed text chunk. Contains a uncompressed keyword and a compressed text string.
+
+ The object.
+ The metadata to decode to.
+ The containing the data.
+
+
+
+ Checks if the given text chunk is actually storing parsable metadata.
+
+ The object to store the parsed metadata in.
+ The name of the text chunk.
+ The contents of the text chunk.
+ True if metadata was successfully parsed from the text chunk. False if the
+ text chunk was not identified as metadata, and should be stored in the metadata
+ object unmodified.
+
+
+
+ Reads exif data encoded into a text chunk with the name "raw profile type exif".
+ This method was used by ImageMagick, exiftool, exiv2, digiKam, etc, before the
+ 2017 update to png that allowed a true exif chunk.
+
+ The to store the decoded exif tags into.
+ The contents of the "raw profile type exif" text chunk.
+
+
+
+ Compares two ReadOnlySpan<char>s in a case-insensitive method.
+ This is only needed because older frameworks are missing the extension method.
+
+ The first to compare.
+ The second to compare.
+ True if the spans were identical, false otherwise.
+
+
+
+ int.Parse() a ReadOnlySpan<char>, with a fallback for older frameworks.
+
+ The to parse.
+ The parsed .
+
+
+
+ Sets the in to ,
+ or copies exif tags if already contains an .
+
+ The to store the exif data in.
+ The to copy exif tags from.
+ If already contains an ,
+ controls whether existing exif tags in will be overwritten with any conflicting
+ tags from .
+
+
+
+ Reads a iTXt chunk, which contains international text data. It contains:
+ - A uncompressed keyword.
+ - Compression flag, indicating if a compression is used.
+ - Compression method.
+ - Language tag (optional).
+ - A translated keyword (optional).
+ - Text data, which is either compressed or uncompressed.
+
+ The metadata to decode to.
+ The containing the data.
+
+
+
+ Decompresses a byte array with zlib compressed text data.
+
+ Compressed text data bytes.
+ The string encoding to use.
+ The uncompressed value.
+ The .
+
+
+
+ Reads the next data chunk.
+
+ Count of bytes in the next data chunk, or 0 if there are no more data chunks left.
+
+
+
+ Reads a chunk from the stream.
+
+ The image format chunk.
+
+ The .
+
+
+
+
+ Validates the png chunk.
+
+ The .
+
+
+
+ Reads the cycle redundancy chunk from the data.
+
+
+
+
+ Skips the chunk data and the cycle redundancy chunk read from the data.
+
+ The image format chunk.
+
+
+
+ Reads the chunk data from the stream.
+
+ The length of the chunk data to read.
+
+
+
+ Identifies the chunk type from the chunk.
+
+
+ Thrown if the input stream is not valid.
+
+
+
+
+ Attempts to read the length of the next chunk.
+
+
+ Whether the length was read.
+
+
+
+
+ Tries to reads a text chunk keyword, which have some restrictions to be valid:
+ Keywords shall contain only printable Latin-1 characters and should not have leading or trailing whitespace.
+ See: https://www.w3.org/TR/PNG/#11zTXt
+
+ The keyword bytes.
+ The name.
+ True, if the keyword could be read and is valid.
+
+
+
+ Image encoder for writing image data to a stream in png format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to monitor for cancellation requests.
+ A representing the asynchronous operation.
+
+
+
+ Performs the png encoding operation.
+
+
+
+
+ The maximum block size, defaults at 64k for uncompressed blocks.
+
+
+
+
+ Used the manage memory allocations.
+
+
+
+
+ The configuration instance for the decoding operation.
+
+
+
+
+ Reusable buffer for writing general data.
+
+
+
+
+ Reusable buffer for writing chunk data.
+
+
+
+
+ The encoder options
+
+
+
+
+ The bit depth.
+
+
+
+
+ Gets or sets a value indicating whether to use 16 bit encoding for supported color types.
+
+
+
+
+ The number of bytes per pixel.
+
+
+
+
+ The image width.
+
+
+
+
+ The image height.
+
+
+
+
+ The raw data of previous scanline.
+
+
+
+
+ The raw data of current scanline.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The to use for buffer allocations.
+ The configuration.
+ The options for influencing the encoder
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to request cancellation.
+
+
+
+
+
+
+ Convert transparent pixels, to transparent black pixels, which can yield to better compression in some cases.
+
+ The type of the pixel.
+ The cloned image where the transparent pixels will be changed.
+
+
+
+ Creates the quantized image and sets calculates and sets the bit depth.
+
+ The type of the pixel.
+ The image to quantize.
+ Cloned image with transparent pixels are changed to black.
+ The quantized image.
+
+
+ Collects a row of grayscale pixels.
+ The pixel format.
+ The image row span.
+
+
+
+ Collects a row of true color pixel data.
+
+ The pixel format.
+ The row span.
+
+
+
+ Encodes the pixel data line by line.
+ Each scanline is encoded in the most optimal manner to improve compression.
+
+ The pixel format.
+ The row span.
+ The quantized pixels. Can be null.
+ The row.
+
+
+
+ Apply the line filter for the raw scanline to enable better compression.
+
+
+
+
+ Collects the pixel data line by line for compressing.
+ Each scanline is filtered in the most optimal manner to improve compression.
+
+ The pixel format.
+ The row span.
+ The filtered buffer.
+ Used for attempting optimized filtering.
+ The quantized pixels. Can be .
+ The row number.
+
+
+
+ Encodes the indexed pixel data (with palette) for Adam7 interlaced mode.
+
+ The row span.
+ The filtered buffer.
+ Used for attempting optimized filtering.
+
+
+
+ Applies all PNG filters to the given scanline and returns the filtered scanline that is deemed
+ to be most compressible, using lowest total variation as proxy for compressibility.
+
+
+
+
+ Writes the header chunk to the stream.
+
+ The containing image data.
+
+
+
+ Writes the palette chunk to the stream.
+ Should be written before the first IDAT chunk.
+
+ The pixel format.
+ The containing image data.
+ The quantized frame.
+
+
+
+ Writes the physical dimension information to the stream.
+ Should be written before IDAT chunk.
+
+ The containing image data.
+ The image metadata.
+
+
+
+ Writes the eXIf chunk to the stream, if any EXIF Profile values are present in the metadata.
+
+ The containing image data.
+ The image metadata.
+
+
+
+ Writes an iTXT chunk, containing the XMP metdata to the stream, if such profile is present in the metadata.
+
+ The containing image data.
+ The image metadata.
+
+
+
+ Writes a text chunk to the stream. Can be either a tTXt, iTXt or zTXt chunk,
+ depending whether the text contains any latin characters or should be compressed.
+
+ The containing image data.
+ The image metadata.
+
+
+
+ Compresses a given text using Zlib compression.
+
+ The text bytes to compress.
+ The compressed text byte array.
+
+
+
+ Writes the gamma information to the stream.
+ Should be written before PLTE and IDAT chunk.
+
+ The containing image data.
+
+
+
+ Writes the transparency chunk to the stream.
+ Should be written after PLTE and before IDAT.
+
+ The containing image data.
+ The image metadata.
+
+
+
+ Writes the pixel information to the stream.
+
+ The pixel format.
+ The image.
+ The quantized pixel data. Can be null.
+ The stream.
+
+
+
+ Allocates the buffers for each scanline.
+
+ The bytes per scanline.
+
+
+
+ Encodes the pixels.
+
+ The type of the pixel.
+ The pixels.
+ The quantized pixels span.
+ The deflate stream.
+
+
+
+ Interlaced encoding the pixels.
+
+ The type of the pixel.
+ The image.
+ The deflate stream.
+
+
+
+ Interlaced encoding the quantized (indexed, with palette) pixels.
+
+ The type of the pixel.
+ The quantized.
+ The deflate stream.
+
+
+
+ Writes the chunk end to the stream.
+
+ The containing image data.
+
+
+
+ Writes a chunk to the stream.
+
+ The to write to.
+ The type of chunk to write.
+ The containing data.
+
+
+
+ Writes a chunk of a specified length to the stream at the given offset.
+
+ The to write to.
+ The type of chunk to write.
+ The containing data.
+ The position to offset the data at.
+ The of the data to write.
+
+
+
+ Calculates the scanline length.
+
+ The width of the row.
+
+ The representing the length.
+
+
+
+
+ The helper methods for class.
+
+
+
+
+ Packs the given 8 bit array into and array of depths.
+
+ The source span in 8 bits.
+ The resultant span in .
+ The bit depth.
+ The scaling factor.
+
+
+
+ The options structure for the .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The source.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The helper methods for the PNG encoder options.
+
+
+
+
+ Adjusts the options based upon the given metadata.
+
+ The options.
+ The PNG metadata.
+ if set to true [use16 bit].
+ The bytes per pixel.
+
+
+
+ Creates the quantized frame.
+
+ The type of the pixel.
+ The options.
+ The image.
+
+
+
+ Calculates the bit depth value.
+
+ The type of the pixel.
+ The options.
+ The quantized frame.
+
+
+
+ Calculates the correct number of bytes per pixel for the given color type.
+
+ Bytes per pixel.
+
+
+
+ Returns a suggested for the given
+ This is not exhaustive but covers many common pixel formats.
+
+
+
+
+ Returns a suggested for the given
+ This is not exhaustive but covers many common pixel formats.
+
+
+
+
+ Provides enumeration of available PNG filter methods.
+
+
+
+
+ With the None filter, the scanline is transmitted unmodified.
+
+
+
+
+ The Sub filter transmits the difference between each byte and the value of the corresponding
+ byte of the prior pixel.
+
+
+
+
+ The Up filter is just like the filter except that the pixel immediately above the current pixel,
+ rather than just to its left, is used as the predictor.
+
+
+
+
+ The Average filter uses the average of the two neighboring pixels (left and above) to predict the value of a pixel.
+
+
+
+
+ The Paeth filter computes a simple linear function of the three neighboring pixels (left, above, upper left),
+ then chooses as predictor the neighboring pixel closest to the computed value.
+
+
+
+
+ Computes the output scanline using all five filters, and selects the filter that gives the smallest sum of
+ absolute values of outputs.
+ This method usually outperforms any single fixed filter choice.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the png format.
+
+
+
+
+ Gets the current instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents the png header chunk.
+
+
+
+
+ Gets the dimension in x-direction of the image in pixels.
+
+
+
+
+ Gets the dimension in y-direction of the image in pixels.
+
+
+
+
+ Gets the bit depth.
+ Bit depth is a single-byte integer giving the number of bits per sample
+ or per palette index (not per pixel). Valid values are 1, 2, 4, 8, and 16,
+ although not all values are allowed for all color types.
+
+
+
+
+ Gets the color type.
+ Color type is a integer that describes the interpretation of the
+ image data. Color type codes represent sums of the following values:
+ 1 (palette used), 2 (color used), and 4 (alpha channel used).
+
+
+
+
+ Gets the compression method.
+ Indicates the method used to compress the image data. At present,
+ only compression method 0 (deflate/inflate compression with a sliding
+ window of at most 32768 bytes) is defined.
+
+
+
+
+ Gets the preprocessing method.
+ Indicates the preprocessing method applied to the image
+ data before compression. At present, only filter method 0
+ (adaptive filtering with five basic filter types) is defined.
+
+
+
+
+ Gets the transmission order.
+ Indicates the transmission order of the image data.
+ Two values are currently defined: 0 (no interlace) or 1 (Adam7 interlace).
+
+
+
+
+ Validates the png header.
+
+
+ Thrown if the image does pass validation.
+
+
+
+
+ Writes the header to the given buffer.
+
+ The buffer to write to.
+
+
+
+ Parses the PngHeader from the given data buffer.
+
+ The data to parse.
+ The parsed PngHeader.
+
+
+
+ Detects png file headers
+
+
+
+
+
+
+
+
+
+
+ Provides enumeration of available PNG interlace modes.
+
+
+
+
+ Non interlaced
+
+
+
+
+ Adam 7 interlacing.
+
+
+
+
+ Provides Png specific metadata information for the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the number of bits per sample or per palette index (not per pixel).
+ Not all values are allowed for all values.
+
+
+
+
+ Gets or sets the color type.
+
+
+
+
+ Gets or sets a value indicating whether this instance should write an Adam7 interlaced image.
+
+
+
+
+ Gets or sets the gamma value for the image.
+
+
+
+
+ Gets or sets the Rgb24 transparent color.
+ This represents any color in an 8 bit Rgb24 encoded png that should be transparent.
+
+
+
+
+ Gets or sets the Rgb48 transparent color.
+ This represents any color in a 16 bit Rgb24 encoded png that should be transparent.
+
+
+
+
+ Gets or sets the 8 bit grayscale transparent color.
+ This represents any color in an 8 bit grayscale encoded png that should be transparent.
+
+
+
+
+ Gets or sets the 16 bit grayscale transparent color.
+ This represents any color in a 16 bit grayscale encoded png that should be transparent.
+
+
+
+
+ Gets or sets a value indicating whether the image contains a transparency chunk and markers were decoded.
+
+
+
+
+ Gets or sets the collection of text data stored within the iTXt, tEXt, and zTXt chunks.
+ Used for conveying textual information associated with the image.
+
+
+
+
+
+
+
+ Provides methods to allow the decoding of raw scanlines to image rows of different pixel formats.
+ TODO: We should make this a stateful class or struct to reduce the number of arguments on methods (most are invariant).
+
+
+
+
+ Stores text data contained in the iTXt, tEXt, and zTXt chunks.
+ Used for conveying textual information associated with the image, like the name of the author,
+ the copyright information, the date, where the image was created, or some other information.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The keyword of the property.
+ The value of the property.
+ An optional language tag.
+ A optional translated keyword.
+
+
+
+ Gets the keyword of this which indicates
+ the type of information represented by the text string as described in https://www.w3.org/TR/PNG/#11keywords.
+
+
+ Typical properties are the author, copyright information or other meta information.
+
+
+
+
+ Gets the value of this .
+
+
+
+
+ Gets an optional language tag defined in https://www.w3.org/TR/PNG/#2-RFC-3066 indicates the human language used by the translated keyword and the text.
+ If the first word is two or three letters long, it is an ISO language code https://www.w3.org/TR/PNG/#2-ISO-639.
+
+
+ Examples: cn, en-uk, no-bok, x-klingon, x-KlInGoN.
+
+
+
+
+ Gets an optional translated keyword, should contain a translation of the keyword into the language indicated by the language tag.
+
+
+
+
+ Compares two objects. The result specifies whether the values
+ of the properties of the two objects are equal.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects. The result specifies whether the values
+ of the properties of the two objects are unequal.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Indicates whether this instance and a specified object are equal.
+
+
+ The object to compare with the current instance.
+
+
+ true if and this instance are the same type and represent the
+ same value; otherwise, false.
+
+
+
+
+ Returns the hash code for this instance.
+
+
+ A 32-bit signed integer that is the hash code for this instance.
+
+
+
+
+ Returns the fully qualified type name of this instance.
+
+
+ A containing a fully qualified type name.
+
+
+
+
+ Indicates whether the current object is equal to another object of the same type.
+
+
+ True if the current object is equal to the parameter; otherwise, false.
+
+ An object to compare with this object.
+
+
+
+ Cold path optimizations for throwing png format based exceptions.
+
+
+
+
+ Enum indicating how the transparency should be handled on encoding.
+
+
+
+
+ The transparency will be kept as is.
+
+
+
+
+ Converts fully transparent pixels that may contain R, G, B values which are not 0,
+ to transparent black, which can yield in better compression in some cases.
+
+
+
+
+ The options for decoding tga images. Currently empty, but this may change in the future.
+
+
+
+
+ Configuration options for use during tga encoding.
+
+
+
+
+ Gets the number of bits per pixel.
+
+
+
+
+ Gets a value indicating whether run length compression should be used.
+
+
+
+
+ Enumerates the available bits per pixel the tga encoder supports.
+
+
+
+
+ 8 bits per pixel. Each pixel consists of 1 byte.
+
+
+
+
+ 16 bits per pixel. Each pixel consists of 2 bytes.
+
+
+
+
+ 24 bits per pixel. Each pixel consists of 3 bytes.
+
+
+
+
+ 32 bits per pixel. Each pixel consists of 4 bytes.
+
+
+
+
+ Indicates if compression is used.
+
+
+
+
+ No compression is used.
+
+
+
+
+ Run length encoding is used.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the tga format.
+
+
+
+
+
+
+
+ The list of mimetypes that equate to a targa file.
+
+
+
+
+ The list of file extensions that equate to a targa file.
+
+
+
+
+ The file header length of a tga image in bytes.
+
+
+
+
+ Image decoder for Truevision TGA images.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the tga decoding operation.
+
+
+
+
+ A scratch buffer to reduce allocations.
+
+
+
+
+ The metadata.
+
+
+
+
+ The tga specific metadata.
+
+
+
+
+ The file header containing general information about the image.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ The stream to decode from.
+
+
+
+
+ The bitmap decoder options.
+
+
+
+
+ Indicates whether there is a alpha channel present.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The options.
+
+
+
+
+
+
+ Gets the dimensions of the image.
+
+
+
+
+
+
+
+ Reads a uncompressed TGA image with a palette.
+
+ The pixel type.
+ The width of the image.
+ The height of the image.
+ The to assign the palette to.
+ The color palette.
+ Color map size of one entry in bytes.
+ The image origin.
+
+
+
+ Reads a run length encoded TGA image with a palette.
+
+ The pixel type.
+ The width of the image.
+ The height of the image.
+ The to assign the palette to.
+ The color palette.
+ Color map size of one entry in bytes.
+ The image origin.
+
+
+
+ Reads a uncompressed monochrome TGA image.
+
+ The pixel type.
+ The width of the image.
+ The height of the image.
+ The to assign the palette to.
+ the image origin.
+
+
+
+ Reads a uncompressed TGA image where each pixels has 16 bit.
+
+ The pixel type.
+ The width of the image.
+ The height of the image.
+ The to assign the palette to.
+ The image origin.
+
+
+
+ Reads a uncompressed TGA image where each pixels has 24 bit.
+
+ The pixel type.
+ The width of the image.
+ The height of the image.
+ The to assign the palette to.
+ The image origin.
+
+
+
+ Reads a uncompressed TGA image where each pixels has 32 bit.
+
+ The pixel type.
+ The width of the image.
+ The height of the image.
+ The to assign the palette to.
+ The image origin.
+
+
+
+ Reads a run length encoded TGA image.
+
+ The pixel type.
+ The width of the image.
+ The height of the image.
+ The to assign the palette to.
+ The bytes per pixel.
+ The image origin.
+
+
+
+
+
+
+ Produce uncompressed tga data from a run length encoded stream.
+
+ The width of the image.
+ The height of the image.
+ Buffer for uncompressed data.
+ The bytes used per pixel.
+
+
+
+ Returns the y- value based on the given height.
+
+ The y- value representing the current row.
+ The height of the image.
+ The image origin.
+ The representing the inverted value.
+
+
+
+ Indicates whether the y coordinates needs to be inverted, to keep a top left origin.
+
+ The image origin.
+ True, if y coordinate needs to be inverted.
+
+
+
+ Returns the x- value based on the given width.
+
+ The x- value representing the current column.
+ The width of the image.
+ The image origin.
+ The representing the inverted value.
+
+
+
+ Indicates whether the x coordinates needs to be inverted, to keep a top left origin.
+
+ The image origin.
+ True, if x coordinate needs to be inverted.
+
+
+
+ Reads the tga file header from the stream.
+
+ The containing image data.
+ The image origin.
+
+
+
+ Image encoder for writing an image to a stream as a targa truevision image.
+
+
+
+
+ Gets or sets the number of bits per pixel.
+
+
+
+
+ Gets or sets a value indicating whether no compression or run length compression should be used.
+
+
+
+
+
+
+
+
+
+
+ Image encoder for writing an image to a stream as a truevision targa image.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ The global configuration.
+
+
+
+
+ Reusable buffer for writing data.
+
+
+
+
+ The color depth, in number of bits per pixel.
+
+
+
+
+ Indicates if run length compression should be used.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The encoder options.
+ The memory manager.
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to request cancellation.
+
+
+
+ Writes the pixel data to the binary stream.
+
+ The pixel format.
+ The to write to.
+
+ The containing pixel data.
+
+
+
+
+ Writes a run length encoded tga image to the stream.
+
+ The pixel type.
+ The stream to write the image to.
+ The image to encode.
+
+
+
+ Finds consecutive pixels which have the same value.
+
+ The pixel type.
+ The pixels of the image.
+ X coordinate to start searching for the same pixels.
+ Y coordinate to start searching for the same pixels.
+ The number of equal pixels.
+
+
+
+ Writes the 8bit pixels uncompressed to the stream.
+
+ The pixel format.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes the 16bit pixels uncompressed to the stream.
+
+ The pixel format.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes the 24bit pixels uncompressed to the stream.
+
+ The pixel format.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Writes the 32bit pixels uncompressed to the stream.
+
+ The pixel format.
+ The to write to.
+ The containing pixel data.
+
+
+
+ Convert the pixel values to grayscale using ITU-R Recommendation BT.709.
+
+ The pixel to get the luminance from.
+
+
+
+ This block of bytes tells the application detailed information about the targa image.
+
+
+
+
+
+ Defines the size of the data structure in the targa file.
+
+
+
+
+ Gets the id length.
+ This field identifies the number of bytes contained in Field 6, the Image ID Field. The maximum number
+ of characters is 255. A value of zero indicates that no Image ID field is included with the image.
+
+
+
+
+ Gets the color map type.
+ This field indicates the type of color map (if any) included with the image. There are currently 2 defined
+ values for this field:
+ 0 - indicates that no color-map data is included with this image.
+ 1 - indicates that a color-map is included with this image.
+
+
+
+
+ Gets the image type.
+ The TGA File Format can be used to store Pseudo-Color, True-Color and Direct-Color images of various
+ pixel depths.
+
+
+
+
+ Gets the start of the color map.
+ This field and its sub-fields describe the color map (if any) used for the image. If the Color Map Type field
+ is set to zero, indicating that no color map exists, then these 5 bytes should be set to zero.
+
+
+
+
+ Gets the total number of color map entries included.
+
+
+
+
+ Gets the number of bits per entry. Typically 15, 16, 24 or 32-bit values are used.
+
+
+
+
+ Gets the XOffset.
+ These bytes specify the absolute horizontal coordinate for the lower left
+ corner of the image as it is positioned on a display device having an
+ origin at the lower left of the screen.
+
+
+
+
+ Gets the YOffset.
+ These bytes specify the absolute vertical coordinate for the lower left
+ corner of the image as it is positioned on a display device having an
+ origin at the lower left of the screen.
+
+
+
+
+ Gets the width of the image in pixels.
+
+
+
+
+ Gets the height of the image in pixels.
+
+
+
+
+ Gets the number of bits per pixel. This number includes
+ the Attribute or Alpha channel bits. Common values are 8, 16, 24 and
+ 32 but other pixel depths could be used.
+
+
+
+
+ Gets the ImageDescriptor.
+ ImageDescriptor contains two pieces of information.
+ Bits 0 through 3 contain the number of attribute bits per pixel.
+ Attribute bits are found only in pixels for the 16- and 32-bit flavors of the TGA format and are called alpha channel,
+ overlay, or interrupt bits. Bits 4 and 5 contain the image origin location (coordinate 0,0) of the image.
+ This position may be any of the four corners of the display screen.
+ When both of these bits are set to zero, the image origin is the lower-left corner of the screen.
+ Bits 6 and 7 of the ImageDescriptor field are unused and should be set to 0.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the tga format.
+
+
+
+
+ Gets the current instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Detects tga file headers.
+
+
+
+
+
+
+
+
+
+
+ Bottom left origin.
+
+
+
+
+ Bottom right origin.
+
+
+
+
+ Top left origin.
+
+
+
+
+ Top right origin.
+
+
+
+
+ Defines the tga image type. The TGA File Format can be used to store Pseudo-Color,
+ True-Color and Direct-Color images of various pixel depths.
+
+
+
+
+ No image data included.
+
+
+
+
+ Uncompressed, color mapped image.
+
+
+
+
+ Uncompressed true color image.
+
+
+
+
+ Uncompressed Black and white (grayscale) image.
+
+
+
+
+ Run length encoded, color mapped image.
+
+
+
+
+ Run length encoded, true color image.
+
+
+
+
+ Run length encoded, black and white (grayscale) image.
+
+
+
+
+ Extension methods for TgaImageType enum.
+
+
+
+
+ Checks if this tga image type is run length encoded.
+
+ The tga image type.
+ True, if this image type is run length encoded, otherwise false.
+
+
+
+ Checks, if the image type has valid value.
+
+ The image type.
+ true, if its a valid tga image type.
+
+
+
+ Provides TGA specific metadata information for the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the number of bits per pixel.
+
+
+
+
+ Gets or sets the the number of alpha bits per pixel.
+
+
+
+
+
+
+
+ Cold path optimization for throwing 's
+
+ The error message for the exception.
+
+
+
+ Cold path optimization for throwing 's
+
+ The error message for the exception.
+ The exception that is the cause of the current exception, or a null reference
+ if no inner exception is specified.
+
+
+
+ Cold path optimization for throwing 's
+
+ The error message for the exception.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pack Bits compression for tiff images. See Tiff Spec v6, section 9.
+
+
+
+
+ Bitwriter for writing compressed CCITT T4 1D data.
+
+
+
+
+ The modified huffman is basically the same as CCITT T4, but without EOL markers and padding at the end of the rows.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The output stream to write the compressed data.
+ The memory allocator.
+ The width of the image.
+ The bits per pixel.
+ Indicates if the modified huffman RLE should be used.
+
+
+
+
+
+
+ Writes a image compressed with CCITT T4 to the output buffer.
+
+ The pixels as 8-bit gray array.
+ The strip height.
+ The destination for the compressed data.
+
+
+
+ Bitwriter for writing compressed CCITT T6 2D data.
+
+
+
+
+ Vertical codes from -3 to +3.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The output stream to write the compressed data.
+ The memory allocator.
+ The width of the image.
+ The bits per pixel.
+
+
+
+
+
+
+ Writes a image compressed with CCITT T6 to the output buffer.
+
+ The pixels as 8-bit gray array.
+ The strip height.
+ The destination for the compressed data.
+
+
+
+
+
+
+ Finds the end of a pixel run.
+
+ The row of pixels to examine.
+ The index of the first pixel in to examine.
+ Color of pixels in the run. If not specified, the color at
+ will be used.
+ The index of the first pixel at or after
+ that does not match , or the length of ,
+ whichever comes first.
+
+
+
+
+
+
+ Writes a run to the output buffer.
+
+ The length of the run.
+ If true the run is white pixels,
+ if false the run is black pixels.
+ The destination to write the run to.
+
+
+
+ Common functionality for CCITT T4 and T6 Compression
+
+
+
+
+ Initializes a new instance of the class.
+
+ The output.
+ The allocator.
+ The width.
+ The bits per pixel.
+
+
+
+ Gets the best makeup run length for a given run length
+
+ A run length needing a makeup code
+ The makeup length for .
+
+
+
+ Gets the terminating code for a run length.
+
+ The run length to get the terminating code for.
+ The length of the terminating code.
+ If true, the run is of white pixels.
+ If false the run is of black pixels
+ The terminating code for a run of length
+
+
+
+ Gets the makeup code for a run length.
+
+ The run length to get the makeup code for.
+ The length of the makeup code.
+ If true, the run is of white pixels.
+ If false the run is of black pixels
+ The makeup code for a run of length
+
+
+
+ Pads output to the next byte
+
+
+ If the output is not currently on a byte boundary,
+ zero-pad it to the next byte
+
+
+
+
+ Writes a code to the output.
+
+ The length of the code to write.
+ The code to be written.
+ The destination buffer to write the code to.
+
+
+
+ Writes a image compressed with CCITT T6 to the stream.
+
+ The pixels as 8-bit gray array.
+ The strip height.
+
+
+
+ Compress a data strip
+
+ The pixels as 8-bit gray array.
+ The strip height.
+ The destination for the compressed data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Encodes and compresses the image data using dynamic Lempel-Ziv compression.
+
+
+
+ This code is based on the used for GIF encoding. There is potential
+ for a shared implementation. Differences between the GIF and TIFF implementations of the LZW
+ encoding are: (i) The GIF implementation includes an initial 'data size' byte, whilst this is
+ always 8 for TIFF. (ii) The GIF implementation writes a number of sub-blocks with an initial
+ byte indicating the length of the sub-block. In TIFF the data is written as a single block
+ with no length indicator (this can be determined from the 'StripByteCounts' entry).
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+
+
+
+ Encodes and compresses the indexed pixels to the stream.
+
+ The data to compress.
+ The stream to write to.
+
+
+
+
+
+
+ Represents a reference scan line for CCITT 2D decoding.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Indicates, if white is zero, otherwise black is zero.
+ The scan line.
+
+
+
+ Initializes a new instance of the struct.
+
+ Indicates, if white is zero, otherwise black is zero.
+ The width of the scanline.
+
+
+
+ Finds b1: The first changing element on the reference line to the right of a0 and of opposite color to a0.
+
+ The reference or starting element om the coding line.
+ Fill byte.
+ Position of b1.
+
+
+
+ Finds b2: The next changing element to the right of b1 on the reference line.
+
+ The first changing element on the reference line to the right of a0 and opposite of color to a0.
+ Position of b1.
+
+
+
+ Initializes a new instance of the struct.
+
+ The type.
+ The bits required.
+ The extension bits.
+
+
+
+ Gets the code type.
+
+
+
+
+ Enum for the different two dimensional code words for the ccitt fax compression.
+
+
+
+
+ No valid code word was read.
+
+
+
+
+ Pass mode: This mode is identified when the position of b2 lies to the left of a1.
+
+
+
+
+ Indicates horizontal mode.
+
+
+
+
+ Vertical 0 code word: relative distance between a1 and b1 is 0.
+
+
+
+
+ Vertical r1 code word: relative distance between a1 and b1 is 1, a1 is to the right of b1.
+
+
+
+
+ Vertical r2 code word: relative distance between a1 and b1 is 2, a1 is to the right of b1.
+
+
+
+
+ Vertical r3 code word: relative distance between a1 and b1 is 3, a1 is to the right of b1.
+
+
+
+
+ Vertical l1 code word: relative distance between a1 and b1 is 1, a1 is to the left of b1.
+
+
+
+
+ Vertical l2 code word: relative distance between a1 and b1 is 2, a1 is to the left of b1.
+
+
+
+
+ Vertical l3 code word: relative distance between a1 and b1 is 3, a1 is to the left of b1.
+
+
+
+
+ 1d extensions code word, extension code is used to indicate the change from the current mode to another mode, e.g., another coding scheme.
+ Not supported.
+
+
+
+
+ 2d extensions code word, extension code is used to indicate the change from the current mode to another mode, e.g., another coding scheme.
+ Not supported.
+
+
+
+
+ Class to handle cases where TIFF image data is compressed using Deflate compression.
+
+
+ Note that the 'OldDeflate' compression type is identical to the 'Deflate' compression type.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memoryAllocator to use for buffer allocations.
+ The image width.
+ The bits used per pixel.
+ The color type of the pixel data.
+ The tiff predictor used.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+
+
+
+ Spectral converter for gray TIFF's which use the JPEG compression.
+
+ The type of the pixel.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+
+
+
+
+
+
+ Class to handle cases where TIFF image data is compressed as a jpeg stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The memoryAllocator to use for buffer allocations.
+ The image width.
+ The bits per pixel.
+ The JPEG tables containing the quantization and/or Huffman tables.
+ The photometric interpretation.
+
+
+
+
+
+
+
+
+
+ Represents a lzw string with a code word and a code length.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The code word.
+
+
+
+ Gets the code length;
+
+
+
+
+ Gets the first character of the codeword.
+
+
+
+
+ Concatenates two code words.
+
+ The code word to concatenate.
+ A concatenated lzw string.
+
+
+
+ Writes decoded pixel to buffer at a given position.
+
+ The buffer to write to.
+ The position to write to.
+ The number of bytes written.
+
+
+
+ Class to handle cases where TIFF image data is compressed using LZW compression.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memoryAllocator to use for buffer allocations.
+ The image width.
+ The bits used per pixel.
+ The color type of the pixel data.
+ The tiff predictor used.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+
+
+
+ Bit reader for data encoded with the modified huffman rle method.
+ See TIFF 6.0 specification, section 10.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The compressed input stream.
+ The logical order of bits within a byte.
+ The number of bytes to read from the stream.
+ The memory allocator.
+
+
+
+
+
+
+
+
+
+
+
+
+ No EOL is expected at the start of a run for the modified huffman encoding.
+
+
+
+
+ Class to handle cases where TIFF image data is compressed using Modified Huffman Compression.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+ The logical order of bits within a byte.
+ The image width.
+ The number of bits per pixel.
+ The photometric interpretation.
+
+
+
+ Gets the logical order of bits within a byte.
+
+
+
+
+
+
+
+
+
+
+ Class to handle cases where TIFF image data is not compressed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+ The width of the image.
+ The bits per pixel.
+
+
+
+
+
+
+
+
+
+ Class to handle cases where TIFF image data is compressed using PackBits compression.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memoryAllocator to use for buffer allocations.
+ The width of the image.
+ The number of bits per pixel.
+
+
+
+
+
+
+
+
+
+ Spectral converter for YCbCr TIFF's which use the JPEG compression.
+ The jpeg data should be always treated as RGB color space.
+
+ The type of the pixel.
+
+
+
+ Initializes a new instance of the class.
+ This Spectral converter will always convert the pixel data to RGB color.
+
+ The configuration.
+
+
+
+
+
+
+ Bitreader for reading compressed CCITT T4 1D data.
+
+
+
+
+ The logical order of bits within a byte.
+
+
+
+
+ Indicates whether its the first line of data which is read from the image.
+
+
+
+
+ Indicates whether we have found a termination code which signals the end of a run.
+
+
+
+
+ We keep track if its the start of the row, because each run is expected to start with a white run.
+ If the image row itself starts with black, a white run of zero is expected.
+
+
+
+
+ Indicates, if fill bits have been added as necessary before EOL codes such that EOL always ends on a byte boundary. Defaults to false.
+
+
+
+
+ The minimum code length in bits.
+
+
+
+
+ The maximum code length in bits.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The compressed input stream.
+ The logical order of bits within a byte.
+ The number of bytes to read from the stream.
+ The memory allocator.
+ Indicates, if fill bits have been added as necessary before EOL codes such that EOL always ends on a byte boundary. Defaults to false.
+
+
+
+ Gets the current value.
+
+
+
+
+ Gets the number of bits read for the current run value.
+
+
+
+
+ Gets the number of bits read.
+
+
+
+
+ Gets the available data in bytes.
+
+
+
+
+ Gets or sets the byte position in the buffer.
+
+
+
+
+ Gets the compressed image data.
+
+
+
+
+ Gets a value indicating whether there is more data to read left.
+
+
+
+
+ Gets or sets a value indicating whether the current run is a white pixel run, otherwise its a black pixel run.
+
+
+
+
+ Gets the number of pixels in the current run.
+
+
+
+
+ Gets a value indicating whether the end of a pixel row has been reached.
+
+
+
+
+ Read the next run of pixels.
+
+
+
+
+ Initialization for a new row.
+
+
+
+
+
+
+
+ An EOL is expected before the first data.
+
+
+
+
+ Resets the current value read and the number of bits read.
+
+ if set to true resets also the run length.
+
+
+
+ Resets the bits read to 0.
+
+
+
+
+ Reads the next value.
+
+ The number of bits to read.
+ The value read.
+
+
+
+ Class to handle cases where TIFF image data is compressed using CCITT T4 compression.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+ The logical order of bits within a byte.
+ The image width.
+ The number of bits per pixel.
+ Fax compression options.
+ The photometric interpretation.
+
+
+
+ Gets the logical order of bits within a byte.
+
+
+
+
+
+
+
+
+
+
+ Bit reader for reading CCITT T6 compressed fax data.
+ See: Facsimile Coding Schemes and Coding Control Functions for Group 4 Facsimile Apparatus, itu-t recommendation t.6
+
+
+
+
+ Initializes a new instance of the class.
+
+ The compressed input stream.
+ The logical order of bits within a byte.
+ The number of bytes to read from the stream.
+ The memory allocator.
+
+
+
+
+
+
+ Gets or sets the two dimensional code.
+
+
+
+
+ No EOL is expected at the start of a run.
+
+
+
+
+ Swaps the white run to black run an vise versa.
+
+
+
+
+ Class to handle cases where TIFF image data is compressed using CCITT T6 compression.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+ The logical order of bits within a byte.
+ The image width.
+ The number of bits per pixel.
+ The photometric interpretation.
+
+
+
+ Gets the logical order of bits within a byte.
+
+
+
+
+
+
+
+
+
+
+ Decompresses and decodes data using the dynamic LZW algorithms, see TIFF spec Section 13.
+
+
+
+
+ The stream to decode.
+
+
+
+
+ As soon as we use entry 4094 of the table (maxTableSize - 2), the lzw compressor write out a (12-bit) ClearCode.
+ At this point, the compressor reinitializes the string table and then writes out 9-bit codes again.
+
+
+
+
+ End of Information.
+
+
+
+
+ Minimum code length of 9 bits.
+
+
+
+
+ Maximum code length of 12 bits.
+
+
+
+
+ Maximum table size of 4096.
+
+
+
+
+ Initializes a new instance of the class
+ and sets the stream, where the compressed data should be read from.
+
+ The stream to read from.
+ is null.
+
+
+
+ Decodes and decompresses all pixel indices from the stream.
+
+ The pixel array to decode to.
+
+
+
+ Fax compression options, see TIFF spec page 51f (T4Options).
+
+
+
+
+ No options.
+
+
+
+
+ If set, 2-dimensional coding is used (otherwise 1-dimensional is assumed).
+
+
+
+
+ If set, uncompressed mode is used.
+
+
+
+
+ If set, fill bits have been added as necessary before EOL codes such that
+ EOL always ends on a byte boundary, thus ensuring an EOL-sequence of 1 byte
+ preceded by a zero nibble: xxxx-0000 0000-0001.
+
+
+
+
+ Methods for undoing the horizontal prediction used in combination with deflate and LZW compressed TIFF images.
+
+
+
+
+ Inverts the horizontal prediction.
+
+ Buffer with decompressed pixel data.
+ The width of the image or strip.
+ The color type of the pixel data.
+ If set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+ Applies a horizontal predictor to the rgb row.
+ Make use of the fact that many continuous-tone images rarely vary much in pixel value from one pixel to the next.
+ In such images, if we replace the pixel values by differences between consecutive pixels, many of the differences should be 0, plus
+ or minus 1, and so on.This reduces the apparent information content and allows LZW to encode the data more compactly.
+
+ The rgb pixel rows.
+ The width.
+
+
+
+ Applies a horizontal predictor to a gray pixel row.
+
+ The gray pixel rows.
+ The width.
+
+
+
+ Gets the image width.
+
+
+
+
+ Gets the bits per pixel.
+
+
+
+
+ Gets the bytes per row.
+
+
+
+
+ Gets the predictor to use. Should only be used with deflate or lzw compression.
+
+
+
+
+ Gets the memory allocator.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The output stream to write the compressed image to.
+ The memory allocator.
+ The image width.
+ Bits per pixel.
+ The predictor to use (should only be used with deflate or lzw compression). Defaults to none.
+
+
+
+ Gets the compression method to use.
+
+
+
+
+ Gets the output stream to write the compressed image to.
+
+
+
+
+ Does any initialization required for the compression.
+
+ The number of rows per strip.
+
+
+
+ Compresses a strip of the image.
+
+ Image rows to compress.
+ Image height.
+
+
+
+ The base tiff decompressor class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+ The width of the image.
+ The bits per pixel.
+ The predictor.
+
+
+
+ Decompresses image data into the supplied buffer.
+
+ The to read image data from.
+ The strip offset of stream.
+ The number of bytes to read from the input stream.
+ The height of the strip.
+ The output buffer for uncompressed data.
+
+
+
+ Decompresses image data into the supplied buffer.
+
+ The to read image data from.
+ The number of bytes to read from the input stream.
+ The height of the strip.
+ The output buffer for uncompressed data.
+
+
+
+ Provides enumeration of the various TIFF compression types the decoder can handle.
+
+
+
+
+ Image data is stored uncompressed in the TIFF file.
+
+
+
+
+ Image data is compressed using PackBits compression.
+
+
+
+
+ Image data is compressed using Deflate compression.
+
+
+
+
+ Image data is compressed using LZW compression.
+
+
+
+
+ Image data is compressed using CCITT T.4 fax compression.
+
+
+
+
+ Image data is compressed using CCITT T.6 fax compression.
+
+
+
+
+ Image data is compressed using modified huffman compression.
+
+
+
+
+ The image data is compressed as a JPEG stream.
+
+
+
+
+ Enumeration representing the compression formats defined by the Tiff file-format.
+
+
+
+
+ A invalid compression value.
+
+
+
+
+ No compression.
+
+
+
+
+ CCITT Group 3 1-Dimensional Modified Huffman run-length encoding.
+
+
+
+
+ T4-encoding: CCITT T.4 bi-level encoding (see Section 11 of the TIFF 6.0 specification).
+
+
+
+
+ T6-encoding: CCITT T.6 bi-level encoding (see Section 11 of the TIFF 6.0 specification).
+
+
+
+
+ LZW compression (see Section 13 of the TIFF 6.0 specification).
+
+
+
+
+ JPEG compression - obsolete (see Section 22 of the TIFF 6.0 specification).
+
+ Note: The TIFF encoder does not support this compression and will default to use no compression instead,
+ if this is chosen.
+
+
+
+
+ JPEG compression (see TIFF Specification, supplement 2).
+
+ Note: The TIFF encoder does not yet support this compression and will default to use no compression instead,
+ if this is chosen.
+
+
+
+
+ Deflate compression, using zlib data format (see TIFF Specification, supplement 2).
+
+
+
+
+ ITU-T Rec. T.82 coding, applying ITU-T Rec. T.85 (JBIG) (see RFC2301).
+
+ Note: The TIFF encoder does not yet support this compression and will default to use no compression instead,
+ if this is chosen.
+
+
+
+
+ ITU-T Rec. T.43 representation, using ITU-T Rec. T.82 (JBIG) (see RFC2301).
+
+ Note: The TIFF encoder does not yet support this compression and will default to use no compression instead,
+ if this is chosen.
+
+
+
+
+ NeXT 2-bit Grey Scale compression algorithm.
+
+ Note: The TIFF encoder does not support this compression and will default to use no compression instead,
+ if this is chosen.
+
+
+
+
+ PackBits compression.
+
+
+
+
+ ThunderScan 4-bit compression.
+
+ Note: The TIFF encoder does not support this compression and will default to use no compression instead,
+ if this is chosen.
+
+
+
+
+ Deflate compression - old.
+
+ Note: The TIFF encoder does not support this compression and will default to use no compression instead,
+ if this is chosen.
+
+
+
+
+ Defines constants defined in the TIFF specification.
+
+
+
+
+ Byte order markers for indicating little endian encoding.
+
+
+
+
+ Byte order markers for indicating big endian encoding.
+
+
+
+
+ Byte order markers for indicating little endian encoding.
+
+
+
+
+ Byte order markers for indicating big endian encoding.
+
+
+
+
+ Magic number used within the image file header to identify a TIFF format file.
+
+
+
+
+ The big tiff header magic number
+
+
+
+
+ The big tiff bytesize of offsets value.
+
+
+
+
+ RowsPerStrip default value, which is effectively infinity.
+
+
+
+
+ Size (in bytes) of the Rational and SRational data types
+
+
+
+
+ The default strip size is 8k.
+
+
+
+
+ The bits per sample for 1 bit bicolor images.
+
+
+
+
+ The bits per sample for images with a 4 color palette.
+
+
+
+
+ The bits per sample for 8 bit images.
+
+
+
+
+ The bits per sample for color images with 8 bits for each color channel.
+
+
+
+
+ The list of mimetypes that equate to a tiff.
+
+
+
+
+ The list of file extensions that equate to a tiff.
+
+
+
+
+ Enumeration representing the possible uses of extra components in TIFF format files.
+
+
+
+
+ Unspecified data.
+
+
+
+
+ Associated alpha data (with pre-multiplied color).
+
+
+
+
+ Unassociated alpha data.
+
+
+
+
+ Enumeration representing the fill orders defined by the Tiff file-format.
+
+
+
+
+ Pixels with lower column values are stored in the higher-order bits of the byte.
+
+
+
+
+ Pixels with lower column values are stored in the lower-order bits of the byte.
+
+
+
+
+ Enumeration representing the sub-file types defined by the Tiff file-format.
+
+
+
+
+ A full-resolution image.
+
+
+
+
+ Reduced-resolution version of another image in this TIFF file.
+
+
+
+
+ A single page of a multi-page image.
+
+
+
+
+ A transparency mask for another image in this TIFF file.
+
+
+
+
+ Alternative reduced-resolution version of another image in this TIFF file (see DNG specification).
+
+
+
+
+ Mixed raster content (see RFC2301).
+
+
+
+
+ Enumeration representing the image orientations defined by the Tiff file-format.
+
+
+
+
+ The 0th row and 0th column represent the visual top and left-hand side of the image respectively.
+
+
+
+
+ The 0th row and 0th column represent the visual top and right-hand side of the image respectively.
+
+
+
+
+ The 0th row and 0th column represent the visual bottom and right-hand side of the image respectively.
+
+
+
+
+ The 0th row and 0th column represent the visual bottom and left-hand side of the image respectively.
+
+
+
+
+ The 0th row and 0th column represent the visual left-hand side and top of the image respectively.
+
+
+
+
+ The 0th row and 0th column represent the visual right-hand side and top of the image respectively.
+
+
+
+
+ The 0th row and 0th column represent the visual right-hand side and bottom of the image respectively.
+
+
+
+
+ The 0th row and 0th column represent the visual left-hand side and bottom of the image respectively.
+
+
+
+
+ Enumeration representing the photometric interpretation formats defined by the Tiff file-format.
+
+
+
+
+ Bilevel and grayscale: 0 is imaged as white. The maximum value is imaged as black.
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ Bilevel and grayscale: 0 is imaged as black. The maximum value is imaged as white.
+
+
+
+
+ RGB image.
+
+
+
+
+ Palette Color.
+
+
+
+
+ A transparency mask.
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ Separated: usually CMYK (see Section 16 of the TIFF 6.0 specification).
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ YCbCr (see Section 21 of the TIFF 6.0 specification).
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ 1976 CIE L*a*b* (see Section 23 of the TIFF 6.0 specification).
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ ICC L*a*b* (see TIFF Specification, supplement 1).
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ ITU L*a*b* (see RFC2301).
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ Color Filter Array (see the DNG specification).
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ Linear Raw (see the DNG specification).
+
+ Not supported by the TiffEncoder.
+
+
+
+
+ Enumeration representing how the components of each pixel are stored the Tiff file-format.
+
+
+
+
+ Chunky format.
+ The component values for each pixel are stored contiguously.
+ The order of the components within the pixel is specified by
+ PhotometricInterpretation. For example, for RGB data, the data is stored as RGBRGBRGB.
+
+
+
+
+ Planar format.
+ The components are stored in separate “component planes.” The
+ values in StripOffsets and StripByteCounts are then arranged as a 2-dimensional
+ array, with SamplesPerPixel rows and StripsPerImage columns. (All of the columns
+ for row 0 are stored first, followed by the columns of row 1, and so on.)
+ PhotometricInterpretation describes the type of data stored in each component
+ plane. For example, RGB data is stored with the Red components in one component
+ plane, the Green in another, and the Blue in another.
+
+
+
+
+ A mathematical operator that is applied to the image data before an encoding scheme is applied.
+
+
+
+
+ No prediction.
+
+
+
+
+ Horizontal differencing.
+
+
+
+
+ Floating point horizontal differencing.
+
+ Note: The Tiff Encoder does not yet support this. If this is chosen, the encoder will fallback to none.
+
+
+
+
+ Specifies how to interpret each data sample in a pixel.
+
+
+
+
+ Unsigned integer data. Default value.
+
+
+
+
+ Signed integer data.
+
+
+
+
+ IEEE floating point data.
+
+
+
+
+ Undefined data format.
+
+
+
+
+ The complex int.
+
+
+
+
+ The complex float.
+
+
+
+
+ Enumeration representing the sub-file types defined by the Tiff file-format.
+
+
+
+
+ Full-resolution image data.
+
+
+
+
+ Reduced-resolution image data.
+
+
+
+
+ A single page of a multi-page image.
+
+
+
+
+ Enumeration representing the thresholding applied to image data defined by the Tiff file-format.
+
+
+
+
+ No dithering or halftoning.
+
+
+
+
+ An ordered dither or halftone technique.
+
+
+
+
+ A randomized process such as error diffusion.
+
+
+
+
+ The TIFF IFD reader class.
+
+
+
+
+ Gets the byte order.
+
+
+
+
+ Reads image file directories.
+
+ Image file directories.
+
+
+
+ Encapsulates the options for the .
+
+
+
+
+ Gets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Gets the decoding mode for multi-frame images.
+
+
+
+
+ Encapsulates the options for the .
+
+
+
+
+ Gets the number of bits per pixel.
+
+
+
+
+ Gets the compression type to use.
+
+
+
+
+ Gets the compression level 1-9 for the deflate compression mode.
+ Defaults to .
+
+
+
+
+ Gets the PhotometricInterpretation to use. Possible options are RGB, RGB with a color palette, gray or BiColor.
+ If no PhotometricInterpretation is specified or it is unsupported by the encoder, RGB will be used.
+
+
+
+
+ Gets a value indicating which horizontal prediction to use. This can improve the compression ratio with deflate or lzw compression.
+
+
+
+
+ Gets the quantizer for creating a color palette image.
+
+
+
+
+ Implements the 'BlackIsZero' photometric interpretation for 16-bit grayscale images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'BlackIsZero' photometric interpretation (optimized for bilevel images).
+
+ The pixel format.
+
+
+
+
+
+
+ Implements the 'BlackIsZero' photometric interpretation for 24-bit grayscale images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'BlackIsZero' photometric interpretation for 32-bit float grayscale images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'BlackIsZero' photometric interpretation for 32-bit grayscale images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'BlackIsZero' photometric interpretation (optimized for 4-bit grayscale images).
+
+
+
+
+
+
+
+ Implements the 'BlackIsZero' photometric interpretation (optimized for 8-bit grayscale images).
+
+
+
+
+
+
+
+ Implements the 'BlackIsZero' photometric interpretation (for all bit depths).
+
+
+
+
+
+
+
+ Implements the 'PaletteTiffColor' photometric interpretation (for all bit depths).
+
+
+
+ The number of bits per sample for each pixel.
+ The RGB color lookup table to use for decoding the image.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with 16 bits for each channel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with 'Planar' layout for each color channel with 16 bit.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with 24 bits for each channel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with 'Planar' layout for each color channel with 24 bit.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with 32 bits for each channel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with 'Planar' layout for each color channel with 32 bit.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation for 4 bits per color channel images.
+
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation (optimized for 8-bit full color images).
+
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and with 16 bits for each channel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The memory allocator.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+ The type of the extra samples.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and with 'Planar' layout for each color channel with 16 bit.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The extra samples type.
+ If set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and with 24 bits for each channel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type of the extra samples.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and with 'Planar' layout for each color channel with 24 bit.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The extra samples type.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and with 32 bits for each channel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type of the extra samples.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and a 'Planar' layout for each color channel with 32 bit.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The extra samples type.
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and 8 bits per channel.
+
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and with 32 bits for each channel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with an alpha channel and with 'Planar' layout (for all bit depths).
+
+
+
+
+ Decodes pixel data using the current photometric interpretation.
+
+ The buffers to read image data from.
+ The image buffer to write pixels to.
+ The x-coordinate of the left-hand side of the image block.
+ The y-coordinate of the top of the image block.
+ The width of the image block.
+ The height of the image block.
+
+
+
+ Implements the 'RGB' photometric interpretation with alpha channel (for all bit depths).
+
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with 32 bits for each channel.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'RGB' photometric interpretation with 'Planar' layout (for all bit depths).
+
+
+
+
+ Decodes pixel data using the current photometric interpretation.
+
+ The buffers to read image data from.
+ The image buffer to write pixels to.
+ The x-coordinate of the left-hand side of the image block.
+ The y-coordinate of the top of the image block.
+ The width of the image block.
+ The height of the image block.
+
+
+
+ Implements the 'RGB' photometric interpretation (for all bit depths).
+
+
+
+
+
+
+
+ The base class for photometric interpretation decoders.
+
+ The pixel format.
+
+
+
+ Decodes source raw pixel data using the current photometric interpretation.
+
+ The buffer to read image data from.
+ The image buffer to write pixels to.
+ The x-coordinate of the left-hand side of the image block.
+ The y-coordinate of the top of the image block.
+ The width of the image block.
+ The height of the image block.
+
+
+
+ The base class for planar color decoders.
+
+ The pixel format.
+
+
+
+ Decodes source raw pixel data using the current photometric interpretation.
+
+ The buffers to read image data from.
+ The image buffer to write pixels to.
+ The x-coordinate of the left-hand side of the image block.
+ The y-coordinate of the top of the image block.
+ The width of the image block.
+ The height of the image block.
+
+
+
+ Provides enumeration of the various TIFF photometric interpretation implementation types.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white. Optimized implementation for bilevel images.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white. Optimized implementation for 4-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white. Optimized implementation for 8-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white. Optimized implementation for 16-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white. Optimized implementation for 24-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white. Optimized implementation for 32-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white. Pixel data is 32-bit float.
+
+
+
+
+ Grayscale: 0 is imaged as white. The maximum value is imaged as black.
+
+
+
+
+ Grayscale: 0 is imaged as white. The maximum value is imaged as black. Optimized implementation for bilevel images.
+
+
+
+
+ Grayscale: 0 is imaged as white. The maximum value is imaged as black. Optimized implementation for 4-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as white. The maximum value is imaged as black. Optimized implementation for 8-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as white. The maximum value is imaged as black. Optimized implementation for 16-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as white. The maximum value is imaged as black. Optimized implementation for 24-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as white. The maximum value is imaged as black. Optimized implementation for 32-bit images.
+
+
+
+
+ Grayscale: 0 is imaged as black. The maximum value is imaged as white. Pixel data is 32-bit float.
+
+
+
+
+ Palette-color.
+
+
+
+
+ RGB Full Color.
+
+
+
+
+ RGB color image with 2 bits for each channel.
+
+
+
+
+ RGBA color image with 2 bits for each channel.
+
+
+
+
+ RGB color image with 3 bits for each channel.
+
+
+
+
+ RGBA color image with 3 bits for each channel.
+
+
+
+
+ RGB color image with 4 bits for each channel.
+
+
+
+
+ RGBA color image with 4 bits for each channel.
+
+
+
+
+ RGB color image with 5 bits for each channel.
+
+
+
+
+ RGBA color image with 5 bits for each channel.
+
+
+
+
+ RGB color image with 6 bits for each channel.
+
+
+
+
+ RGBA color image with 6 bits for each channel.
+
+
+
+
+ RGB Full Color. Optimized implementation for 8-bit images.
+
+
+
+
+ RGBA Full Color with 8-bit for each channel.
+
+
+
+
+ RGB color image with 10 bits for each channel.
+
+
+
+
+ RGBA color image with 10 bits for each channel.
+
+
+
+
+ RGB color image with 12 bits for each channel.
+
+
+
+
+ RGBA color image with 12 bits for each channel.
+
+
+
+
+ RGB color image with 14 bits for each channel.
+
+
+
+
+ RGBA color image with 14 bits for each channel.
+
+
+
+
+ RGB color image with 16 bits for each channel.
+
+
+
+
+ RGBA color image with 16 bits for each channel.
+
+
+
+
+ RGB color image with 24 bits for each channel.
+
+
+
+
+ RGBA color image with 24 bits for each channel.
+
+
+
+
+ RGB color image with 32 bits for each channel.
+
+
+
+
+ RGBA color image with 32 bits for each channel.
+
+
+
+
+ RGB color image with 32 bits floats for each channel.
+
+
+
+
+ RGBA color image with 32 bits floats for each channel.
+
+
+
+
+ RGB Full Color. Planar configuration of data. 8 Bit per color channel.
+
+
+
+
+ RGBA color image with an alpha channel. Planar configuration of data. 8 Bit per color channel.
+
+
+
+
+ RGB Full Color. Planar configuration of data. 16 Bit per color channel.
+
+
+
+
+ RGB Color with an alpha channel. Planar configuration of data. 16 Bit per color channel.
+
+
+
+
+ RGB Full Color. Planar configuration of data. 24 Bit per color channel.
+
+
+
+
+ RGB Color with an alpha channel. Planar configuration of data. 24 Bit per color channel.
+
+
+
+
+ RGB Full Color. Planar configuration of data. 32 Bit per color channel.
+
+
+
+
+ RGB Color with an alpha channel. Planar configuration of data. 32 Bit per color channel.
+
+
+
+
+ The pixels are stored in YCbCr format.
+
+
+
+
+ The pixels are stored in YCbCr format as planar.
+
+
+
+
+ Implements the 'WhiteIsZero' photometric interpretation for 16-bit grayscale images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'WhiteIsZero' photometric interpretation (optimized for bilevel images).
+
+
+
+
+
+
+
+ Implements the 'WhiteIsZero' photometric interpretation for 24-bit grayscale images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'WhiteIsZero' photometric interpretation for 32-bit float grayscale images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'WhiteIsZero' photometric interpretation for 32-bit grayscale images.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true decodes the pixel data as big endian, otherwise as little endian.
+
+
+
+
+
+
+ Implements the 'WhiteIsZero' photometric interpretation (optimized for 4-bit grayscale images).
+
+
+
+
+
+
+
+ Implements the 'WhiteIsZero' photometric interpretation (optimized for 8-bit grayscale images).
+
+
+
+
+
+
+
+ Implements the 'WhiteIsZero' photometric interpretation (for all bit depths).
+
+
+
+
+
+
+
+ Converts YCbCr data to rgb data.
+
+
+
+
+
+
+
+
+
+
+ Enumerates the available bits per pixel for the tiff format.
+
+
+
+
+ 1 bit per pixel, for bi-color image.
+
+
+
+
+ 4 bits per pixel, for images with a color palette.
+
+
+
+
+ 6 bits per pixel. 2 bit for each color channel.
+
+ Note: The TiffEncoder does not yet support 2 bits per color channel and will default to 24 bits per pixel instead.
+
+
+
+
+ 8 bits per pixel, grayscale or color palette images.
+
+
+
+
+ 10 bits per pixel, for gray images.
+
+ Note: The TiffEncoder does not yet support 10 bits per pixel and will default to 24 bits per pixel instead.
+
+
+
+
+ 12 bits per pixel. 4 bit for each color channel.
+
+ Note: The TiffEncoder does not yet support 4 bits per color channel and will default to 24 bits per pixel instead.
+
+
+
+
+ 14 bits per pixel, for gray images.
+
+ Note: The TiffEncoder does not yet support 14 bits per pixel images and will default to 24 bits per pixel instead.
+
+
+
+
+ 16 bits per pixel, for gray images.
+
+ Note: The TiffEncoder does not yet support 16 bits per color channel and will default to 24 bits per pixel instead.
+
+
+
+
+ 24 bits per pixel. One byte for each color channel.
+
+
+
+
+ 30 bits per pixel. 10 bit for each color channel.
+
+ Note: The TiffEncoder does not yet support 10 bits per color channel and will default to 24 bits per pixel instead.
+
+
+
+
+ 36 bits per pixel. 12 bit for each color channel.
+
+ Note: The TiffEncoder does not yet support 12 bits per color channel and will default to 24 bits per pixel instead.
+
+
+
+
+ 42 bits per pixel. 14 bit for each color channel.
+
+ Note: The TiffEncoder does not yet support 14 bits per color channel and will default to 24 bits per pixel instead.
+
+
+
+
+ 48 bits per pixel. 16 bit for each color channel.
+
+ Note: The TiffEncoder does not yet support 16 bits per color channel and will default to 24 bits per pixel instead.
+
+
+
+
+ The number of bits per component.
+
+
+
+
+ The bits for the channel 0.
+
+
+
+
+ The bits for the channel 1.
+
+
+
+
+ The bits for the channel 2.
+
+
+
+
+ The bits for the alpha channel.
+
+
+
+
+ The number of channels.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The bits for the channel 0.
+ The bits for the channel 1.
+ The bits for the channel 2.
+ The bits for the channel 3.
+
+
+
+ Tries to parse a ushort array and convert it into a TiffBitsPerSample struct.
+
+ The value to parse.
+ The tiff bits per sample.
+ True, if the value could be parsed.
+
+
+
+
+
+
+
+
+
+
+
+
+ Converts the bits per sample struct to an ushort array.
+
+ Bits per sample as ushort array.
+
+
+
+ Gets the bits per pixel for the given bits per sample.
+
+ Bits per pixel.
+
+
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the TIFF format.
+
+
+
+
+
+
+
+ Image decoder for generating an image out of a TIFF stream.
+
+
+
+
+ Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Gets or sets the decoding mode for multi-frame images.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the tiff decoding operation.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Gets the decoding mode for multi-frame images
+
+
+
+
+ The stream to decode from.
+
+
+
+
+ Indicates the byte order of the stream.
+
+
+
+
+ Indicating whether is BigTiff format.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The decoder options.
+
+
+
+ Gets or sets the bits per sample.
+
+
+
+
+ Gets or sets the bits per pixel.
+
+
+
+
+ Gets or sets the lookup table for RGB palette colored images.
+
+
+
+
+ Gets or sets the photometric interpretation implementation to use when decoding the image.
+
+
+
+
+ Gets or sets the reference black and white for decoding YCbCr pixel data.
+
+
+
+
+ Gets or sets the YCbCr coefficients.
+
+
+
+
+ Gets or sets the YCbCr sub sampling.
+
+
+
+
+ Gets or sets the compression used, when the image was encoded.
+
+
+
+
+ Gets or sets the Fax specific compression options.
+
+
+
+
+ Gets or sets the the logical order of bits within a byte.
+
+
+
+
+ Gets or sets the extra samples type.
+
+
+
+
+ Gets or sets the JPEG tables when jpeg compression is used.
+
+
+
+
+ Gets or sets the planar configuration type to use when decoding the image.
+
+
+
+
+ Gets or sets the photometric interpretation.
+
+
+
+
+ Gets or sets the sample format.
+
+
+
+
+ Gets or sets the horizontal predictor.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Decodes the image data from a specified IFD.
+
+ The pixel format.
+ The IFD tags.
+ The token to monitor cancellation.
+ The tiff frame.
+
+
+
+ Calculates the size (in bytes) for a pixel buffer using the determined color format.
+
+ The width for the desired pixel buffer.
+ The height for the desired pixel buffer.
+ The index of the plane for planar image configuration (or zero for chunky).
+ The size (in bytes) of the required pixel buffer.
+
+
+
+ Decodes the image data for planar encoded pixel data.
+
+ The pixel format.
+ The image frame to decode data into.
+ The number of rows per strip of data.
+ An array of byte offsets to each strip in the image.
+ An array of the size of each strip (in bytes).
+ The token to monitor cancellation.
+
+
+
+ Decodes the image data for chunky encoded pixel data.
+
+ The pixel format.
+ The image frame to decode data into.
+ The rows per strip.
+ The strip offsets.
+ The strip byte counts.
+ The token to monitor cancellation.
+
+
+
+ Gets the width of the image frame.
+
+ The image frame exif profile.
+ The image width.
+
+
+
+ Gets the height of the image frame.
+
+ The image frame exif profile.
+ The image height.
+
+
+
+ The decoder metadata creator.
+
+
+
+
+ The decoder options parser.
+
+
+
+
+ Determines the TIFF compression and color types, and reads any associated parameters.
+
+ The options.
+ The exif profile of the frame to decode.
+ The IFD entries container to read the image format information for current frame.
+
+
+
+ Encoder for writing the data image to a stream in TIFF format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the TIFF encoding operation.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ A scratch buffer to reduce allocations.
+
+
+
+
+ The global configuration.
+
+
+
+
+ The quantizer for creating color palette image.
+
+
+
+
+ Sets the deflate compression level.
+
+
+
+
+ The default predictor is None.
+
+
+
+
+ The default bits per pixel is Bit24.
+
+
+
+
+ The default compression is None.
+
+
+
+
+ The default photometric interpretation is Rgb.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The options for the encoder.
+ The memory allocator.
+
+
+
+ Gets the photometric interpretation implementation to use when encoding the image.
+
+
+
+
+ Gets or sets the compression implementation to use when encoding the image.
+
+
+
+
+ Gets or sets a value indicating which horizontal predictor to use. This can improve the compression ratio with deflate compression.
+
+
+
+
+ Gets the bits per pixel.
+
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to request cancellation.
+
+
+
+ Writes the TIFF file header.
+
+ The to write data to.
+
+ The marker to write the first IFD offset.
+
+
+
+
+ Writes all data required to define an image.
+
+ The pixel format.
+ The to write data to.
+ The tiff frame.
+ The image metadata (resolution values for each frame).
+ The image (common metadata for root frame).
+ The marker to write this IFD offset.
+
+ The next IFD offset value.
+
+
+
+
+ Calculates the number of rows written per strip.
+
+ The height of the image.
+ The number of bytes per row.
+ The compression used.
+ Number of rows per strip.
+
+
+
+ Writes a TIFF IFD block.
+
+ The to write data to.
+ The IFD entries to write to the file.
+ The marker to write the next IFD offset (if present).
+
+
+
+ Description of extra components.
+
+
+
+
+ The data is unspecified, not supported.
+
+
+
+
+ The extra data is associated alpha data (with pre-multiplied color).
+
+
+
+
+ The extra data is unassociated alpha data is transparency information that logically exists independent of an image;
+ it is commonly called a soft matte.
+
+
+
+
+ Encapsulates the means to encode and decode Tiff images.
+
+
+
+
+ Gets the current instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The TIFF format type enum.
+
+
+
+
+ The TIFF file format type.
+
+
+
+
+ The BigTIFF format type.
+
+
+
+
+ Provides Tiff specific metadata information for the frame.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The other tiff frame metadata.
+
+
+
+ Gets or sets the bits per pixel.
+
+
+
+
+ Gets or sets number of bits per component.
+
+
+
+
+ Gets or sets the compression scheme used on the image data.
+
+
+
+
+ Gets or sets the color space of the image data.
+
+
+
+
+ Gets or sets a mathematical operator that is applied to the image data before an encoding scheme is applied.
+
+
+
+
+ Returns a new instance parsed from the given Exif profile.
+
+ The Exif profile containing tiff frame directory tags to parse.
+ If null, a new instance is created and parsed instead.
+ The .
+
+
+
+ Parses the given Exif profile to populate the properties of the tiff frame meta data.
+
+ The tiff frame meta data.
+ The Exif profile containing tiff frame directory tags.
+
+
+
+
+
+
+ Detects tiff file headers
+
+
+
+
+
+
+
+
+
+
+ Provides Tiff specific metadata information for the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the byte order.
+
+
+
+
+ Gets or sets the format type.
+
+
+
+
+
+
+
+ Cold path optimizations for throwing tiff format based exceptions.
+
+
+
+
+ Cold path optimization for throwing -s
+
+ The error message for the exception.
+
+
+
+ Utility class to read a sequence of bits from an array
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The array to read data from.
+
+
+
+ Reads the specified number of bits from the array.
+
+ The number of bits to read.
+ The value read from the array.
+
+
+
+ Moves the reader to the next row of byte-aligned data.
+
+
+
+
+ Helper methods for TIFF decoding.
+
+
+
+
+ Finds the padding needed to round 'valueToRoundUp' to the next integer multiple of subSampling value.
+
+ The width or height to round up.
+ The sub sampling.
+ The padding.
+
+
+
+ Gets the bits per pixel.
+
+
+
+
+ Gets the bytes per row.
+
+
+
+
+
+
+
+ Adds image format information to the specified IFD.
+
+ The rows per strip.
+ The strip offsets.
+ The strip byte counts.
+
+
+
+
+
+
+
+
+
+
+
+
+ The base class for composite color types: 8-bit gray, 24-bit RGB (4-bit gray, 16-bit (565/555) RGB, 32-bit RGB, CMYK, YCbCr).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Utility class for writing TIFF data to a .
+
+
+
+
+ A scratch buffer to reduce allocations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The output stream.
+
+
+
+ Gets a value indicating whether the architecture is little-endian.
+
+
+
+
+ Gets the current position within the stream.
+
+
+
+
+ Gets the base stream.
+
+
+
+
+ Writes an empty four bytes to the stream, returning the offset to be written later.
+
+ The offset to be written later.
+
+
+
+ Writes an array of bytes to the current stream.
+
+ The bytes to write.
+
+
+
+ Writes the specified value.
+
+ The bytes to write.
+
+
+
+ Writes a byte to the current stream.
+
+ The byte to write.
+
+
+
+ Writes a two-byte unsigned integer to the current stream.
+
+ The two-byte unsigned integer to write.
+
+
+
+ Writes a four-byte unsigned integer to the current stream.
+
+ The four-byte unsigned integer to write.
+
+
+
+ Writes an array of bytes to the current stream, padded to four-bytes.
+
+ The bytes to write.
+
+
+
+ Writes a four-byte unsigned integer to the specified marker in the stream.
+
+ The offset returned when placing the marker
+ The four-byte unsigned integer to write.
+
+
+
+ Disposes instance, ensuring any unwritten data is flushed.
+
+
+
+
+ Implements decoding for lossy alpha chunks which may be compressed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The width of the image.
+ The height of the image.
+ The (maybe compressed) alpha data.
+ The first byte of the alpha image stream contains information on how to decode the stream.
+ Used for allocating memory during decoding.
+ The configuration.
+
+
+
+ Gets the width of the image.
+
+
+
+
+ Gets the height of the image.
+
+
+
+
+ Gets the used filter type.
+
+
+
+
+ Gets or sets the last decoded row.
+
+
+
+
+ Gets or sets the row before the last decoded row.
+
+
+
+
+ Gets information for decoding Vp8L compressed alpha data.
+
+
+
+
+ Gets the decoded alpha data.
+
+
+
+
+ Gets a value indicating whether the alpha channel uses compression.
+
+
+
+
+ Gets the (maybe compressed) alpha data.
+
+
+
+
+ Gets the Vp8L decoder which is used to de compress the alpha channel, if needed.
+
+
+
+
+ Gets a value indicating whether the decoding needs 1 byte per pixel for decoding.
+ Although Alpha Channel requires only 1 byte per pixel, sometimes Vp8LDecoder may need to allocate
+ 4 bytes per pixel internally during decode.
+
+
+
+
+ Decodes and filters the maybe compressed alpha data.
+
+
+
+
+ Applies filtering to a set of rows.
+
+ The first row index to start filtering.
+ The last row index for filtering.
+ The destination to store the filtered data.
+ The stride to use.
+
+
+
+ Once the image-stream is decoded into ARGB color values, the transparency information will be extracted from the green channel of the ARGB quadruplet.
+
+ The VP8L decoder.
+
+
+
+ Row-processing for the special case when alpha data contains only one
+ transform (color indexing), and trivial non-green literals.
+
+ The VP8L meta data.
+ True, if alpha channel needs one byte per pixel, otherwise 4.
+
+
+
+
+
+
+ Methods for encoding the alpha data of a VP8 image.
+
+
+
+
+ Encodes the alpha channel data.
+ Data is either compressed as lossless webp image or uncompressed.
+
+ The pixel format.
+ The to encode from.
+ The global configuration.
+ The memory manager.
+ Indicates, if the data should be compressed with the lossless webp compression.
+ The size in bytes of the alpha data.
+ The encoded alpha data.
+
+
+
+ Store the transparency in the green channel.
+
+ The pixel format.
+ The to encode from.
+ A byte sequence of length width * height, containing all the 8-bit transparency values in scan order.
+ The transparency image.
+
+
+
+ Extract the alpha data of the image.
+
+ The pixel format.
+ The to encode from.
+ The global configuration.
+ The memory manager.
+ A byte sequence of length width * height, containing all the 8-bit transparency values in scan order.
+
+
+
+
+
+
+ Base class for VP8 and VP8L bitreader.
+
+
+
+
+ Gets or sets the raw encoded image data.
+
+
+
+
+ Copies the raw encoded image data from the stream into a byte array.
+
+ The input stream.
+ Number of bytes to read as indicated from the chunk size.
+ Used for allocating memory during reading data from the stream.
+
+
+
+
+
+
+ A bit reader for VP8 streams.
+
+
+
+
+ Current value.
+
+
+
+
+ Current range minus 1. In [127, 254] interval.
+
+
+
+
+ Number of valid bits left.
+
+
+
+
+ Max packed-read position of the buffer.
+
+
+
+
+ True if input is exhausted.
+
+
+
+
+ Byte position in buffer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The input stream to read from.
+ The raw image data size in bytes.
+ Used for allocating memory during reading data from the stream.
+ The partition length.
+ Start index in the data array. Defaults to 0.
+
+
+
+ Initializes a new instance of the class.
+
+ The raw encoded image data.
+ The partition length.
+ Start index in the data array. Defaults to 0.
+
+
+
+ A bit reader for reading lossless webp streams.
+
+
+
+
+ Maximum number of bits (inclusive) the bit-reader can handle.
+
+
+
+
+ Number of bits prefetched.
+
+
+
+
+ Minimum number of bytes ready after VP8LFillBitWindow.
+
+
+
+
+ Pre-fetched bits.
+
+
+
+
+ Buffer length.
+
+
+
+
+ Byte position in buffer.
+
+
+
+
+ Current bit-reading position in value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Lossless compressed image data.
+
+
+
+ Initializes a new instance of the class.
+
+ The input stream to read from.
+ The raw image data size in bytes.
+ Used for allocating memory during reading data from the stream.
+
+
+
+ Gets or sets a value indicating whether a bit was read past the end of buffer.
+
+
+
+
+ Reads a unsigned short value from the buffer. The bits of each byte are read in least-significant-bit-first order.
+
+ The number of bits to read (should not exceed 16).
+ A ushort value.
+
+
+
+ Reads a single bit from the stream.
+
+ True if the bit read was 1, false otherwise.
+
+
+
+ For jumping over a number of bits in the bit stream when accessed with PrefetchBits and FillBitWindow.
+
+ The number of bits to advance the position.
+
+
+
+ Return the pre-fetched bits, so they can be looked up.
+
+ The pre-fetched bits.
+
+
+
+ Advances the read buffer by 4 bytes to make room for reading next 32 bits.
+
+
+
+
+ Returns true if there was an attempt at reading bit past the end of the buffer.
+
+ True, if end of buffer was reached.
+
+
+
+ If not at EOS, reload up to Vp8LLbits byte-by-byte.
+
+
+
+
+ Buffer to write to.
+
+
+
+
+ A scratch buffer to reduce allocations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The expected size in bytes.
+
+
+
+ Initializes a new instance of the class.
+ Used internally for cloning.
+
+
+
+
+ Writes the encoded bytes of the image to the stream. Call Finish() before this.
+
+ The stream to write to.
+
+
+
+ Writes the encoded bytes of the image to the given buffer. Call Finish() before this.
+
+ The destination buffer.
+
+
+
+ Resizes the buffer to write to.
+
+ The extra size in bytes needed.
+
+
+
+ Returns the number of bytes of the encoded image data.
+
+ The number of bytes of the image data.
+
+
+
+ Flush leftover bits.
+
+
+
+
+ Writes the RIFF header to the stream.
+
+ The stream to write to.
+ The block length.
+
+
+
+ Calculates the chunk size of EXIF or XMP metadata.
+
+ The metadata profile bytes.
+ The metadata chunk size in bytes.
+
+
+
+ Calculates the chunk size of a alpha chunk.
+
+ The alpha chunk bytes.
+ The alpha data chunk size in bytes.
+
+
+
+ Writes a metadata profile (EXIF or XMP) to the stream.
+
+ The stream to write to.
+ The metadata profile's bytes.
+ The chuck type to write.
+
+
+
+ Writes the alpha chunk to the stream.
+
+ The stream to write to.
+ The alpha channel data bytes.
+ Indicates, if the alpha channel data is compressed.
+
+
+
+ Writes a VP8X header to the stream.
+
+ The stream to write to.
+ A exif profile or null, if it does not exist.
+ A XMP profile or null, if it does not exist.
+ The width of the image.
+ The height of the image.
+ Flag indicating, if a alpha channel is present.
+
+
+
+ A bit writer for writing lossy webp streams.
+
+
+
+
+ Number of outstanding bits.
+
+
+
+
+ Number of pending bits.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The expected size in bytes.
+
+
+
+ Initializes a new instance of the class.
+
+ The expected size in bytes.
+ The Vp8Encoder.
+
+
+
+
+
+
+ Resizes the buffer to write to.
+
+ The extra size in bytes needed.
+
+
+
+
+
+
+ Writes the encoded image to the stream.
+
+ The stream to write to.
+ The exif profile.
+ The XMP profile.
+ The width of the image.
+ The height of the image.
+ Flag indicating, if a alpha channel is present.
+ The alpha channel data.
+ Indicates, if the alpha data is compressed.
+
+
+
+ A bit writer for writing lossless webp streams.
+
+
+
+
+ A scratch buffer to reduce allocations.
+
+
+
+
+ This is the minimum amount of size the memory buffer is guaranteed to grow when extra space is needed.
+
+
+
+
+ Bit accumulator.
+
+
+
+
+ Number of bits used in accumulator.
+
+
+
+
+ Current write position.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The expected size in bytes.
+
+
+
+ Initializes a new instance of the class.
+ Used internally for cloning.
+
+
+
+
+ This function writes bits into bytes in increasing addresses (little endian),
+ and within a byte least-significant-bit first. This function can write up to 32 bits in one go.
+
+
+
+
+
+
+
+
+
+
+ Writes the encoded image to the stream.
+
+ The stream to write to.
+ The exif profile.
+ The XMP profile.
+ The width of the image.
+ The height of the image.
+ Flag indicating, if a alpha channel is present.
+
+
+
+ Internal function for PutBits flushing 32 bits from the written state.
+
+
+
+
+ Resizes the buffer to write to.
+
+ The extra size in bytes needed.
+
+
+
+ These five modes are evaluated and their respective entropy is computed.
+
+
+
+
+ Image decoder options for generating an image out of a webp stream.
+
+
+
+
+ Gets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Configuration options for use during webp encoding.
+
+
+
+
+ Gets the webp file format used. Either lossless or lossy.
+ Defaults to lossy.
+
+
+
+
+ Gets the compression quality. Between 0 and 100.
+ For lossy, 0 gives the smallest size and 100 the largest. For lossless,
+ this parameter is the amount of effort put into the compression: 0 is the fastest but gives larger
+ files compared to the slowest, but best, 100.
+ Defaults to 75.
+
+
+
+
+ Gets the encoding method to use. Its a quality/speed trade-off (0=fast, 6=slower-better).
+ Defaults to 4.
+
+
+
+
+ Gets a value indicating whether the alpha plane should be compressed with Webp lossless format.
+ Defaults to true.
+
+
+
+
+ Gets the number of entropy-analysis passes (in [1..10]).
+ Defaults to 1.
+
+
+
+
+ Gets the amplitude of the spatial noise shaping. Spatial noise shaping (or sns for short) refers to a general collection of built-in algorithms
+ used to decide which area of the picture should use relatively less bits, and where else to better transfer these bits.
+ The possible range goes from 0 (algorithm is off) to 100 (the maximal effect).
+ Defaults to 50.
+
+
+
+
+ Gets the strength of the deblocking filter, between 0 (no filtering) and 100 (maximum filtering).
+ A value of 0 will turn off any filtering. Higher value will increase the strength of the filtering process applied after decoding the picture.
+ The higher the value the smoother the picture will appear.
+ Typical values are usually in the range of 20 to 50.
+ Defaults to 60.
+
+
+
+
+ Gets a value indicating whether to preserve the exact RGB values under transparent area. Otherwise, discard this invisible
+ RGB information for better compression.
+ The default value is Clear.
+
+
+
+
+ Gets a value indicating whether near lossless mode should be used.
+ This option adjusts pixel values to help compressibility, but has minimal impact on the visual quality.
+
+
+
+
+ Gets the quality of near-lossless image preprocessing. The range is 0 (maximum preprocessing) to 100 (no preprocessing, the default).
+ The typical value is around 60. Note that lossy with -q 100 can at times yield better results.
+
+
+
+
+ Maximum bit length.
+
+
+
+
+ We want the max value to be attainable and stored in MaxLengthBits bits.
+
+
+
+
+ Minimum number of pixels for which it is cheaper to encode a
+ distance + length instead of each pixel as a literal.
+
+
+
+
+ Evaluates best possible backward references for specified quality. The input cacheBits to 'GetBackwardReferences'
+ sets the maximum cache bits to use (passing 0 implies disabling the local color cache).
+ The optimal cache bits is evaluated and set for the cacheBits parameter.
+ The return value is the pointer to the best of the two backward refs viz, refs[0] or refs[1].
+
+
+
+
+ Evaluate optimal cache bits for the local color cache.
+ The input bestCacheBits sets the maximum cache bits to use (passing 0 implies disabling the local color cache).
+ The local color cache is also disabled for the lower (smaller then 25) quality.
+
+ Best cache size.
+
+
+
+ Compute an LZ77 by forcing matches to happen within a given distance cost.
+ We therefore limit the algorithm to the lowest 32 values in the PlaneCode definition.
+
+
+
+
+ Update (in-place) backward references for the specified cacheBits.
+
+
+
+
+ A small hash-addressed array to store recently used colors, to be able to recall them with shorter codes.
+
+
+
+
+ Gets the color entries.
+
+
+
+
+ Gets the hash shift: 32 - hashBits.
+
+
+
+
+ Gets the hash bits.
+
+
+
+
+ Initializes a new color cache.
+
+ The hashBits determine the size of cache. It will be 1 left shifted by hashBits.
+
+
+
+ Inserts a new color into the cache.
+
+ The color to insert.
+
+
+
+ Gets a color for a given key.
+
+ The key to lookup.
+ The color for the key.
+
+
+
+ Returns the index of the given color.
+
+ The color to check.
+ The index of the color in the cache or -1 if its not present.
+
+
+
+ Gets the index of a color.
+
+ The color.
+ The index for the color.
+
+
+
+ Adds a new color to the cache.
+
+ The key.
+ The color to add.
+
+
+
+ The GetLengthCost(costModel, k) are cached in a CostCacheInterval.
+
+
+
+
+ To perform backward reference every pixel at index index_ is considered and
+ the cost for the MAX_LENGTH following pixels computed. Those following pixels
+ at index index_ + k (k from 0 to MAX_LENGTH) have a cost of:
+ cost = distance cost at index + GetLengthCost(costModel, k)
+ and the minimum value is kept. GetLengthCost(costModel, k) is cached in an
+ array of size MAX_LENGTH.
+ Instead of performing MAX_LENGTH comparisons per pixel, we keep track of the
+ minimal values using intervals of constant cost.
+ An interval is defined by the index_ of the pixel that generated it and
+ is only useful in a range of indices from start to end (exclusive), i.e.
+ it contains the minimum value for pixels between start and end.
+ Intervals are stored in a linked list and ordered by start. When a new
+ interval has a better value, old intervals are split or removed. There are
+ therefore no overlapping intervals.
+
+
+
+
+ The CostManager is in charge of managing intervals and costs.
+ It caches the different CostCacheInterval, caches the different
+ GetLengthCost(costModel, k) in costCache and the CostInterval's.
+
+
+
+
+ Gets or sets the number of stored intervals.
+
+
+
+
+ Gets the costs cache. Contains the GetLengthCost(costModel, k).
+
+
+
+
+ Update the cost at index i by going over all the stored intervals that overlap with i.
+
+ The index to update.
+ If 'doCleanIntervals' is true, intervals that end before 'i' will be popped.
+
+
+
+ Given a new cost interval defined by its start at position, its length value
+ and distanceCost, add its contributions to the previous intervals and costs.
+ If handling the interval or one of its sub-intervals becomes to heavy, its
+ contribution is added to the costs right away.
+
+
+
+
+ Pop an interval from the manager.
+
+ The interval to remove.
+
+
+
+ Given a current orphan interval and its previous interval, before
+ it was orphaned (which can be NULL), set it at the right place in the list
+ of intervals using the start_ ordering and the previous interval as a hint.
+
+
+
+
+ Given two intervals, make 'prev' be the previous one of 'next' in 'manager'.
+
+
+
+
+ Given the cost and the position that define an interval, update the cost at
+ pixel 'i' if it is smaller than the previously computed value.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The literal array size.
+
+
+
+ Data container to keep track of cost range for the three dominant entropy symbols.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Position of the histogram that accumulates all histograms with the same binId.
+
+
+
+
+ Number of combine failures per binId.
+
+
+
+
+ Number of partitions for the three dominant (literal, red and blue) symbol costs.
+
+
+
+
+ The size of the bin-hash corresponding to the three dominant costs.
+
+
+
+
+ Maximum number of histograms allowed in greedy combining algorithm.
+
+
+
+
+ Construct the histograms from the backward references.
+
+
+
+
+ Partition histograms to different entropy bins for three dominant (literal,
+ red and blue) symbol costs and compute the histogram aggregate bitCost.
+
+
+
+
+ Given a Histogram set, the mapping of clusters 'clusterMapping' and the
+ current assignment of the cells in 'symbols', merge the clusters and assign the smallest possible clusters values.
+
+
+
+
+ Perform histogram aggregation using a stochastic approach.
+
+ true if a greedy approach needs to be performed afterwards, false otherwise.
+
+
+
+ Create a pair from indices "idx1" and "idx2" provided its cost is inferior to "threshold", a negative entropy.
+
+ The cost of the pair, or 0 if it superior to threshold.
+
+
+
+ Update the cost diff and combo of a pair of histograms. This needs to be called when the the histograms have been merged with a third one.
+
+
+
+
+ Check whether a pair in the list should be updated as head or not.
+
+
+
+
+ Pair of histograms. Negative Idx1 value means that pair is out-of-date.
+
+
+
+
+ Huffman table group.
+ Includes special handling for the following cases:
+ - IsTrivialLiteral: one common literal base for RED/BLUE/ALPHA (not GREEN)
+ - IsTrivialCode: only 1 code (no bit is read from the bitstream)
+ - UsePackedTable: few enough literal symbols, so all the bit codes can fit into a small look-up table PackedTable[]
+ The common literal base, if applicable, is stored in 'LiteralArb'.
+
+
+
+
+ Gets the Huffman trees. This has a maximum of (5) entry's.
+
+
+
+
+ Gets or sets a value indicating whether huffman trees for Red, Blue and Alpha Symbols are trivial (have a single code).
+
+
+
+
+ Gets or sets a the literal argb value of the pixel.
+ If IsTrivialLiteral is true, this is the ARGB value of the pixel, with Green channel being set to zero.
+
+
+
+
+ Gets or sets a value indicating whether there is only one code.
+
+
+
+
+ Gets or sets a value indicating whether to use packed table below for short literal code.
+
+
+
+
+ Gets or sets table mapping input bits to packed values, or escape case to literal code.
+
+
+
+
+ Five Huffman codes are used at each meta code.
+
+
+
+
+ Green + length prefix codes + color cache codes.
+
+
+
+
+ Red.
+
+
+
+
+ Blue.
+
+
+
+
+ Alpha.
+
+
+
+
+ Distance prefix codes.
+
+
+
+
+ A classic way to do entropy coding where a smaller number of bits are used for more frequent codes.
+
+
+
+
+ Gets or sets the number of bits used for this symbol.
+
+
+
+
+ Gets or sets the symbol value or table offset.
+
+
+
+
+ Represents the Huffman tree.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The HuffmanTree to create an instance from.
+
+
+
+ Gets or sets the symbol frequency.
+
+
+
+
+ Gets or sets the symbol value.
+
+
+
+
+ Gets or sets the index for the left sub-tree.
+
+
+
+
+ Gets or sets the index for the right sub-tree.
+
+
+
+
+ Represents the tree codes (depth and bits array).
+
+
+
+
+ Gets or sets the number of symbols.
+
+
+
+
+ Gets or sets the code lengths of the symbols.
+
+
+
+
+ Gets or sets the symbol Codes.
+
+
+
+
+ Holds the tree header in coded form.
+
+
+
+
+ Gets or sets the code. Value (0..15) or escape code (16, 17, 18).
+
+
+
+
+ Gets or sets the extra bits for escape codes.
+
+
+
+
+ Utility functions related to creating the huffman tables.
+
+
+
+
+ Change the population counts in a way that the consequent
+ Huffman tree compression, especially its RLE-part, give smaller output.
+
+
+
+
+ Create an optimal Huffman tree.
+
+
+ The huffman tree.
+ The histogram.
+ The size of the histogram.
+ The tree depth limit.
+ How many bits are used for the symbol.
+
+
+
+ Get the actual bit values for a tree of bit depths.
+
+ The huffman tree.
+
+
+
+ Returns the table width of the next 2nd level table. count is the histogram of bit lengths for the remaining symbols,
+ len is the code length of the next processed symbol.
+
+
+
+
+ Stores code in table[0], table[step], table[2*step], ..., table[end-step].
+ Assumes that end is an integer multiple of step.
+
+
+
+
+ Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the
+ bit-wise reversal of the len least significant bits of key.
+
+
+
+
+ Heuristics for selecting the stride ranges to collapse.
+
+
+
+
+ Utility functions for the lossless decoder.
+
+
+
+
+ Returns the exact index where array1 and array2 are different. For an index
+ inferior or equal to bestLenMatch, the return value just has to be strictly
+ inferior to bestLenMatch match. The current behavior is to return 0 if this index
+ is bestLenMatch, and the index itself otherwise.
+ If no two elements are the same, it returns maxLimit.
+
+
+
+
+ Add green to blue and red channels (i.e. perform the inverse transform of 'subtract green').
+
+ The pixel data to apply the transformation.
+
+
+
+ If there are not many unique pixel values, it is more efficient to create a color index array and replace the pixel values by the array's indices.
+ This will reverse the color index transform.
+
+ The transform data contains color table size and the entries in the color table.
+ The pixel data to apply the reverse transform on.
+
+
+
+ The goal of the color transform is to de-correlate the R, G and B values of each pixel.
+ Color transform keeps the green (G) value as it is, transforms red (R) based on green and transforms blue (B) based on green and then based on red.
+
+ The transform data.
+ The pixel data to apply the inverse transform on.
+
+
+
+ Color transform keeps the green (G) value as it is, transforms red (R) based on green and transforms blue (B) based on green and then based on red.
+
+ The Vp8LMultipliers.
+ The pixel data to transform.
+ The number of pixels to process.
+
+
+
+ Reverses the color space transform.
+
+ The color transform element.
+ The pixel data to apply the inverse transform on.
+
+
+
+ This will reverse the predictor transform.
+ The predictor transform can be used to reduce entropy by exploiting the fact that neighboring pixels are often correlated.
+ In the predictor transform, the current pixel value is predicted from the pixels already decoded (in scan-line order) and only the residual value (actual - predicted) is encoded.
+ The prediction mode determines the type of prediction to use. The image is divided into squares and all the pixels in a square use same prediction mode.
+
+ The transform data.
+ The pixel data to apply the inverse transform.
+ The resulting pixel data with the reversed transformation data.
+
+
+
+ Difference of each component, mod 256.
+
+
+
+
+ Bundles multiple (1, 2, 4 or 8) pixels into a single pixel.
+
+
+
+
+ Compute the combined Shanon's entropy for distribution {X} and {X+Y}.
+
+ Shanon entropy.
+
+
+
+ Fast calculation of log2(v) for integer input.
+
+
+
+
+ Fast calculation of v * log2(v) for integer input.
+
+
+
+
+ Splitting of distance and length codes into prefixes and
+ extra bits. The prefixes are encoded with an entropy code
+ while the extra bits are stored just as normal bits.
+
+
+
+
+ Computes sampled size of 'size' when sampling using 'sampling bits'.
+
+
+
+
+ Sum of each component, mod 256.
+
+
+
+
+ Near-lossless image preprocessing adjusts pixel values to help compressibility with a guarantee
+ of maximum deviation between original and resulting pixel values.
+
+
+
+
+ Image transform methods for the lossless webp encoder.
+
+
+
+
+ Finds the best predictor for each tile, and converts the image to residuals
+ with respect to predictions. If nearLosslessQuality < 100, applies
+ near lossless processing, shaving off more bits of residuals for lower qualities.
+
+
+
+
+ Returns best predictor and updates the accumulated histogram.
+ If maxQuantization > 1, assumes that near lossless processing will be
+ applied, quantizing residuals to multiples of quantization levels up to
+ maxQuantization (the actual quantization level depends on smoothness near
+ the given pixel).
+
+ Best predictor.
+
+
+
+ Stores the difference between the pixel and its prediction in "output".
+ In case of a lossy encoding, updates the source image to avoid propagating
+ the deviation further to pixels which depend on the current pixel for their
+ predictions.
+
+
+
+
+ Quantize every component of the difference between the actual pixel value and
+ its prediction to a multiple of a quantization (a power of 2, not larger than
+ maxQuantization which is a power of 2, smaller than maxDiff). Take care if
+ value and predict have undergone subtract green, which means that red and
+ blue are represented as offsets from green.
+
+
+
+
+ Quantize the difference between the actual component value and its prediction
+ to a multiple of quantization, working modulo 256, taking care not to cross
+ a boundary (inclusive upper limit).
+
+
+
+
+ Converts pixels of the image to residuals with respect to predictions.
+ If max_quantization > 1, applies near lossless processing, quantizing
+ residuals to multiples of quantization levels up to max_quantization
+ (the actual quantization level depends on smoothness near the given pixel).
+
+
+
+
+ Gets or sets the common block-size.
+
+
+
+
+ Gets the backward references.
+
+
+
+
+ Holds bit entropy results and entropy-related functions.
+
+
+
+
+ Not a trivial literal symbol.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the entropy.
+
+
+
+
+ Gets or sets the sum of the population.
+
+
+
+
+ Gets or sets the number of non-zero elements in the population.
+
+
+
+
+ Gets or sets the maximum value in the population.
+
+
+
+
+ Gets or sets the index of the last non-zero in the population.
+
+
+
+
+ Get the entropy for the distribution 'X'.
+
+
+
+
+ Holds information for decoding a lossless webp image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The width of the image.
+ The height of the image.
+ Used for allocating memory for the pixel data output.
+
+
+
+ Gets or sets the width of the image to decode.
+
+
+
+
+ Gets or sets the height of the image to decode.
+
+
+
+
+ Gets or sets the necessary VP8L metadata (like huffman tables) to decode the image.
+
+
+
+
+ Gets or sets the transformations which needs to be reversed.
+
+
+
+
+ Gets the pixel data.
+
+
+
+
+
+
+
+ Encoder for lossless webp images.
+
+
+
+
+ Scratch buffer to reduce allocations.
+
+
+
+
+ The to use for buffer allocations.
+
+
+
+
+ The global configuration.
+
+
+
+
+ Maximum number of reference blocks the image will be segmented into.
+
+
+
+
+ Minimum block size for backward references.
+
+
+
+
+ A bit writer for writing lossless webp streams.
+
+
+
+
+ The quality, that will be used to encode the image.
+
+
+
+
+ Quality/speed trade-off (0=fast, 6=slower-better).
+
+
+
+
+ Flag indicating whether to preserve the exact RGB values under transparent area. Otherwise, discard this invisible
+ RGB information for better compression.
+
+
+
+
+ Indicating whether near lossless mode should be used.
+
+
+
+
+ The near lossless quality. The range is 0 (maximum preprocessing) to 100 (no preprocessing, the default).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+ The global configuration.
+ The width of the input image.
+ The height of the input image.
+ The encoding quality.
+ Quality/speed trade-off (0=fast, 6=slower-better).
+ Flag indicating whether to preserve the exact RGB values under transparent area.
+ Otherwise, discard this invisible RGB information for better compression.
+ Indicating whether near lossless mode should be used.
+ The near lossless quality. The range is 0 (maximum preprocessing) to 100 (no preprocessing, the default).
+
+
+
+ Gets the memory for the image data as packed bgra values.
+
+
+
+
+ Gets the memory for the encoded output image data.
+
+
+
+
+ Gets or sets the scratch memory for bgra rows used for predictions.
+
+
+
+
+ Gets or sets the packed image width.
+
+
+
+
+ Gets or sets the huffman image bits.
+
+
+
+
+ Gets or sets the bits used for the transformation.
+
+
+
+
+ Gets or sets the transform data.
+
+
+
+
+ Gets or sets the cache bits. If equal to 0, don't use color cache.
+
+
+
+
+ Gets or sets a value indicating whether to use the cross color transform.
+
+
+
+
+ Gets or sets a value indicating whether to use the subtract green transform.
+
+
+
+
+ Gets or sets a value indicating whether to use the predictor transform.
+
+
+
+
+ Gets or sets a value indicating whether to use color indexing transform.
+
+
+
+
+ Gets or sets the palette size.
+
+
+
+
+ Gets the palette.
+
+
+
+
+ Gets the backward references.
+
+
+
+
+ Gets the hash chain.
+
+
+
+
+ Encodes the image as lossless webp to the specified stream.
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+
+
+
+ Encodes the alpha image data using the webp lossless compression.
+
+ The type of the pixel.
+ The to encode from.
+ The destination buffer to write the encoded alpha data to.
+ The size of the compressed data in bytes.
+ If the size of the data is the same as the pixel count, the compression would not yield in smaller data and is left uncompressed.
+
+
+
+
+ Writes the image size to the bitwriter buffer.
+
+ The input image width.
+ The input image height.
+
+
+
+ Writes a flag indicating if alpha channel is used and the VP8L version to the bitwriter buffer.
+
+ Indicates if a alpha channel is present.
+
+
+
+ Encodes the image stream using lossless webp format.
+
+ The pixel type.
+ The image to encode.
+
+
+
+ Converts the pixels of the image to bgra.
+
+ The type of the pixels.
+ The image to convert.
+ The width of the image.
+ The height of the image.
+ true, if the image is non opaque.
+
+
+
+ Analyzes the image and decides which transforms should be used.
+
+ The image as packed bgra values.
+ The image width.
+ The image height.
+ Indicates if red and blue are always zero.
+
+
+
+ Save the palette to the bitstream.
+
+
+
+
+ Applies the subtract green transformation to the pixel data of the image.
+
+
+
+
+ Analyzes the entropy of the input image to determine which transforms to use during encoding the image.
+
+ The image to analyze as a bgra span.
+ The image width.
+ The image height.
+ Indicates whether a palette should be used.
+ The palette size.
+ The transformation bits.
+ Indicates if red and blue are always zero.
+ The entropy mode to use.
+
+
+
+ If number of colors in the image is less than or equal to MaxPaletteSize,
+ creates a palette and returns true, else returns false.
+
+ The image as packed bgra values.
+ The image width.
+ The image height.
+ true, if a palette should be used.
+
+
+
+ Gets the color palette.
+
+ The image to get the palette from as packed bgra values.
+ The image width.
+ The image height.
+ The span to store the palette into.
+ The number of palette entries.
+
+
+
+ Remap bgra values in src[] to packed palettes entries in dst[]
+ using 'row' as a temporary buffer of size 'width'.
+ We assume that all src[] values have a corresponding entry in the palette.
+ Note: src[] can be the same as dst[]
+
+
+
+
+ Sort palette in increasing order and prepare an inverse mapping array.
+
+
+
+
+ The palette has been sorted by alpha. This function checks if the other components of the palette
+ have a monotonic development with regards to position in the palette.
+ If all have monotonic development, there is no benefit to re-organize them greedily. A monotonic development
+ would be spotted in green-only situations (like lossy alpha) or gray-scale images.
+
+ The palette.
+ Number of colors in the palette.
+ True, if the palette has no monotonous deltas.
+
+
+
+ Find greedily always the closest color of the predicted color to minimize
+ deltas in the palette. This reduces storage needs since the palette is stored with delta encoding.
+
+ The palette.
+ The number of colors in the palette.
+
+
+
+ Computes a value that is related to the entropy created by the palette entry diff.
+
+ First color.
+ Second color.
+ The color distance.
+
+
+
+ Calculates the huffman image bits.
+
+
+
+
+ Bundles multiple (1, 2, 4 or 8) pixels into a single pixel.
+
+
+
+
+ Calculates the bits used for the transformation.
+
+
+
+
+ Clears the backward references.
+
+
+
+
+
+
+
+ The number of bits for the window size.
+
+
+
+
+ 1M window (4M bytes) minus 120 special codes for short distances.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+ The size off the chain.
+
+
+
+ Gets the offset length.
+ The 20 most significant bits contain the offset at which the best match is found.
+ These 20 bits are the limit defined by GetWindowSizeForHashChain (through WindowSize = 1 << 20).
+ The lower 12 bits contain the length of the match.
+
+
+
+
+ Gets the size of the hash chain.
+ This is the maximum size of the hashchain that can be constructed.
+ Typically this is the pixel count (width x height) for a given image.
+
+
+
+
+ Calculates the hash for a pixel pair.
+
+ An Span with two pixels.
+ The hash.
+
+
+
+ Returns the maximum number of hash chain lookups to do for a
+ given compression quality. Return value in range [8, 86].
+
+ The quality.
+ Number of hash chain lookups.
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The histogram to create an instance from.
+
+
+
+ Initializes a new instance of the class.
+
+ The backward references to initialize the histogram with.
+ The palette code bits.
+
+
+
+ Initializes a new instance of the class.
+
+ The palette code bits.
+
+
+
+ Gets or sets the palette code bits.
+
+
+
+
+ Gets or sets the cached value of bit cost.
+
+
+
+
+ Gets or sets the cached value of literal entropy costs.
+
+
+
+
+ Gets or sets the cached value of red entropy costs.
+
+
+
+
+ Gets or sets the cached value of blue entropy costs.
+
+
+
+
+
+
+
+ Collect all the references into a histogram (without reset).
+
+ The backward references.
+
+
+
+ Accumulate a token 'v' into a histogram.
+
+ The token to add.
+ Indicates whether to use the distance modifier.
+ xSize is only used when useDistanceModifier is true.
+
+
+
+ Estimate how many bits the combined entropy of literals and distance approximately maps to.
+
+ Estimated bits.
+
+
+
+ Performs output = a + b, computing the cost C(a+b) - C(a) - C(b) while comparing
+ to the threshold value 'costThreshold'. The score returned is
+ Score = C(a+b) - C(a) - C(b), where C(a) + C(b) is known and fixed.
+ Since the previous score passed is 'costThreshold', we only need to compare
+ the partial cost against 'costThreshold + C(a) + C(b)' to possibly bail-out early.
+
+
+
+
+ Get the symbol entropy for the distribution 'population'.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the streak count.
+ index: 0=zero streak, 1=non-zero streak.
+
+
+
+
+ Gets the streaks.
+ [zero/non-zero][streak < 3 / streak >= 3].
+
+
+
+
+ Data associated with a VP8L transformation to reduce the entropy.
+
+
+
+
+ Gets the transform type.
+
+
+
+
+ Gets or sets the subsampling bits defining the transform window.
+
+
+
+
+ Gets or sets the transform window X index.
+
+
+
+
+ Gets the transform window Y index.
+
+
+
+
+ Gets or sets the transform data.
+
+
+
+
+ Enum for the different transform types. Transformations are reversible manipulations of the image data
+ that can reduce the remaining symbolic entropy by modeling spatial and color correlations.
+ Transformations can make the final compression more dense.
+
+
+
+
+ The predictor transform can be used to reduce entropy by exploiting the fact that neighboring pixels are often correlated.
+
+
+
+
+ The goal of the color transform is to de-correlate the R, G and B values of each pixel.
+ Color transform keeps the green (G) value as it is, transforms red (R) based on green and transforms blue (B) based on green and then based on red.
+
+
+
+
+ The subtract green transform subtracts green values from red and blue values of each pixel.
+ When this transform is present, the decoder needs to add the green value to both red and blue.
+ There is no data associated with this transform.
+
+
+
+
+ If there are not many unique pixel values, it may be more efficient to create a color index array and replace the pixel values by the array's indices.
+ The color indexing transform achieves this.
+
+
+
+
+ Decoder for lossless webp images. This code is a port of libwebp, which can be found here: https://chromium.googlesource.com/webm/libwebp
+
+
+ The lossless specification can be found here:
+ https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification
+
+
+
+
+ A bit reader for reading lossless webp streams.
+
+
+
+
+ The global configuration.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Bitreader to read from the stream.
+ Used for allocating memory during processing operations.
+ The configuration.
+
+
+
+ Decodes the image from the stream using the bitreader.
+
+ The pixel format.
+ The pixel buffer to store the decoded data.
+ The width of the image.
+ The height of the image.
+
+
+
+ Reads the transformations, if any are present.
+
+ The width of the image.
+ The height of the image.
+ Vp8LDecoder where the transformations will be stored.
+
+
+
+ A Webp lossless image can go through four different types of transformation before being entropy encoded.
+ This will reverse the transformations, if any are present.
+
+ The decoder holding the transformation infos.
+ The pixel data to apply the transformation.
+ The memory allocator is needed to allocate memory during the predictor transform.
+
+
+
+ The alpha channel of a lossy webp image can be compressed using the lossless webp compression.
+ This method will undo the compression.
+
+ The alpha decoder.
+
+
+
+ Decodes the next Huffman code from the bit-stream.
+ FillBitWindow() needs to be called at minimum every second call to ReadSymbol, in order to pre-fetch enough bits.
+
+
+
+
+ Copies pixels when a backward reference is used.
+ Copy 'length' number of pixels (in scan-line order) from the sequence of pixels prior to them by 'dist' pixels.
+
+ The pixel data.
+ The number of so far decoded pixels.
+ The backward reference distance prior to the current decoded pixel.
+ The number of pixels to copy.
+
+
+
+ Copies alpha values when a backward reference is used.
+ Copy 'length' number of alpha values from the sequence of alpha values prior to them by 'dist'.
+
+ The alpha values.
+ The position of the so far decoded pixels.
+ The backward reference distance prior to the current decoded pixel.
+ The number of pixels to copy.
+
+
+
+ Predict DC using row above and column to the left.
+
+
+
+
+ Propagate second differences a la "True Motion".
+
+
+
+
+ Predict rows using row above.
+
+
+
+
+ Predict columns using column to the left.
+
+
+
+
+ Enum for the different loop filters used. VP8 supports two types of loop filters.
+
+
+
+
+ No filter is used.
+
+
+
+
+ Simple loop filter.
+
+
+
+
+ Complex loop filter.
+
+
+
+
+ Paragraph 14.3: Implementation of the Walsh-Hadamard transform inversion.
+
+
+
+
+ Hadamard transform
+ Returns the weighted sum of the absolute value of transformed coefficients.
+ w[] contains a row-major 4 by 4 symmetric matrix.
+
+
+
+
+ Class for organizing convergence in either size or PSNR.
+
+
+
+
+ Quantization methods.
+
+
+
+
+ All the probabilities associated to one band.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the Probabilities.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the Costs.
+
+
+
+
+ Holds information for decoding a lossy webp image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The frame header.
+ The picture header.
+ The segment header.
+ The probabilities.
+ Used for allocating memory for the pixel data output and the temporary buffers.
+
+
+
+ Gets the frame header.
+
+
+
+
+ Gets the picture header.
+
+
+
+
+ Gets the filter header.
+
+
+
+
+ Gets the segment header.
+
+
+
+
+ Gets or sets the number of partitions minus one.
+
+
+
+
+ Gets the per-partition boolean decoders.
+
+
+
+
+ Gets the dequantization matrices (one set of DC/AC dequant factor per segment).
+
+
+
+
+ Gets or sets a value indicating whether to use the skip probabilities.
+
+
+
+
+ Gets or sets the skip probability.
+
+
+
+
+ Gets or sets the Probabilities.
+
+
+
+
+ Gets or sets the top intra modes values: 4 * MbWidth.
+
+
+
+
+ Gets the left intra modes values.
+
+
+
+
+ Gets the width in macroblock units.
+
+
+
+
+ Gets the height in macroblock units.
+
+
+
+
+ Gets or sets the top-left x index of the macroblock that must be in-loop filtered.
+
+
+
+
+ Gets or sets the top-left y index of the macroblock that must be in-loop filtered.
+
+
+
+
+ Gets or sets the last bottom-right x index of the macroblock that must be decoded.
+
+
+
+
+ Gets or sets the last bottom-right y index of the macroblock that must be decoded.
+
+
+
+
+ Gets or sets the current x position in macroblock units.
+
+
+
+
+ Gets or sets the current y position in macroblock units.
+
+
+
+
+ Gets the parsed reconstruction data.
+
+
+
+
+ Gets the contextual macroblock info.
+
+
+
+
+ Gets or sets the loop filter used. The purpose of the loop filter is to eliminate (or at least reduce)
+ visually objectionable artifacts.
+
+
+
+
+ Gets the pre-calculated per-segment filter strengths.
+
+
+
+
+ Gets the pixel buffer where the decoded pixel data will be stored.
+
+
+
+
+ Gets or sets filter info.
+
+
+
+
+
+
+
+ Iterator structure to iterate through macroblocks, pointing to the
+ right neighbouring data (samples, predictions, contexts, ...)
+
+
+
+
+ Stride of the prediction plane(=4*mbw + 1).
+
+
+
+
+ Gets or sets the current macroblock X value.
+
+
+
+
+ Gets or sets the current macroblock Y.
+
+
+
+
+ Gets the input samples.
+
+
+
+
+ Gets or sets the output samples.
+
+
+
+
+ Gets or sets the secondary buffer swapped with YuvOut.
+
+
+
+
+ Gets the scratch buffer for prediction.
+
+
+
+
+ Gets the left luma samples.
+
+
+
+
+ Gets the left uv samples.
+
+
+
+
+ Gets the left error diffusion (u/v).
+
+
+
+
+ Gets the top luma samples at position 'X'.
+
+
+
+
+ Gets the top u/v samples at position 'X', packed as 16 bytes.
+
+
+
+
+ Gets the intra mode predictors (4x4 blocks).
+
+
+
+
+ Gets the current start index of the intra mode predictors.
+
+
+
+
+ Gets the non-zero pattern.
+
+
+
+
+ Gets the top diffusion error.
+
+
+
+
+ Gets 32+5 boundary samples needed by intra4x4.
+
+
+
+
+ Gets or sets the index to the current top boundary sample.
+
+
+
+
+ Gets or sets the current intra4x4 mode being tested.
+
+
+
+
+ Gets the top-non-zero context.
+
+
+
+
+ Gets the left-non-zero. leftNz[8] is independent.
+
+
+
+
+ Gets or sets the macroblock bit-cost for luma.
+
+
+
+
+ Gets the bit counters for coded levels.
+
+
+
+
+ Gets or sets the macroblock bit-cost for chroma.
+
+
+
+
+ Gets or sets the number of mb still to be processed.
+
+
+
+
+ Gets the byte scratch buffer.
+
+
+
+
+ Gets the short scratch buffer.
+
+
+
+
+ Gets the int scratch buffer.
+
+
+
+
+ Returns true if iteration is finished.
+
+ True if iterator is finished.
+
+
+
+ Go to next macroblock.
+
+ Returns false if not finished.
+
+
+
+ Restart a scan.
+
+
+
+
+ Reset iterator position to row 'y'.
+
+ The y position.
+
+
+
+ Set count down.
+
+ Number of iterations to go.
+
+
+
+ Encoder for lossy webp images.
+
+
+
+
+ The to use for buffer allocations.
+
+
+
+
+ The global configuration.
+
+
+
+
+ The quality, that will be used to encode the image.
+
+
+
+
+ Quality/speed trade-off (0=fast, 6=slower-better).
+
+
+
+
+ Number of entropy-analysis passes (in [1..10]).
+
+
+
+
+ Specify the strength of the deblocking filter, between 0 (no filtering) and 100 (maximum filtering). A value of 0 will turn off any filtering.
+
+
+
+
+ The spatial noise shaping. 0=off, 100=maximum.
+
+
+
+
+ A bit writer for writing lossy webp streams.
+
+
+
+
+ Global susceptibility.
+
+
+
+
+ U/V quantization susceptibility.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+ The global configuration.
+ The width of the input image.
+ The height of the input image.
+ The encoding quality.
+ Quality/speed trade-off (0=fast, 6=slower-better).
+ Number of entropy-analysis passes (in [1..10]).
+ The filter the strength of the deblocking filter, between 0 (no filtering) and 100 (maximum filtering).
+ The spatial noise shaping. 0=off, 100=maximum.
+ If true, the alpha channel will be compressed with the lossless compression.
+
+
+
+ Gets the probabilities.
+
+
+
+
+ Gets the segment features.
+
+
+
+
+ Gets the segment infos.
+
+
+
+
+ Gets the macro block info's.
+
+
+
+
+ Gets the filter header.
+
+
+
+
+ Gets or sets the global susceptibility.
+
+
+
+
+ Gets the width of the image.
+
+
+
+
+ Gets the height of the image.
+
+
+
+
+ Gets the stride of the prediction plane (=4*mb_w + 1)
+
+
+
+
+ Gets the macroblock width.
+
+
+
+
+ Gets the macroblock height.
+
+
+
+
+ Gets the luma component.
+
+
+
+
+ Gets the chroma U component.
+
+
+
+
+ Gets the chroma U component.
+
+
+
+
+ Gets the top luma samples.
+
+
+
+
+ Gets the top u/v samples. U and V are packed into 16 bytes (8 U + 8 V).
+
+
+
+
+ Gets the non-zero pattern.
+
+
+
+
+ Gets the prediction modes: (4*mbw+1) * (4*mbh+1).
+
+
+
+
+ Gets the diffusion error.
+
+
+
+
+ Gets a rough limit for header bits per MB.
+
+
+
+
+ Encodes the image to the specified stream from the .
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+
+
+
+
+
+
+ Only collect statistics(number of skips, token usage, ...).
+ This is used for deciding optimal probabilities. It also modifies the
+ quantizer value if some target (size, PSNR) was specified.
+
+
+
+
+ Same as CodeResiduals, but doesn't actually write anything.
+ Instead, it just records the event distribution.
+
+
+
+
+ We want to emulate jpeg-like behaviour where the expected "good" quality
+ is around q=75. Internally, our "good" middle is around c=50. So we
+ map accordingly using linear piece-wise function
+
+
+
+
+ Methods for encoding a VP8 frame.
+
+
+
+
+ Last (inclusive) level with variable cost.
+
+
+
+
+ Value below which using skipProba is OK.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the probabilities for segment tree.
+
+
+
+
+ Gets or sets the final probability of being skipped.
+
+
+
+
+ Gets or sets a value indicating whether to use the skip probability.
+
+
+
+
+ Gets or sets the number of skipped blocks.
+
+
+
+
+ Gets or sets a value indicating whether CalculateLevelCosts() needs to be called.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Number of segments.
+
+
+
+ Gets the actual number of segments. 1 segment only = unused.
+
+
+
+
+ Gets or sets a value indicating whether to update the segment map or not. Must be false if there's only 1 segment.
+
+
+
+
+ Gets or sets the bit-cost for transmitting the segment map.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the loop filter.
+
+
+
+
+ Gets or sets the filter level. Valid values are [0..63].
+
+
+
+
+ Gets or sets the filter sharpness. Valid values are [0..7].
+
+
+
+
+ Gets or sets a value indicating whether the filtering type is: 0=complex, 1=simple.
+
+
+
+
+ Gets or sets delta filter level for i4x4 relative to i16x16.
+
+
+
+
+ Filter information.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The filter info to create a copy from.
+
+
+
+ Gets or sets the filter limit in [3..189], or 0 if no filtering.
+
+
+
+
+ Gets or sets the inner limit in [1..63], or 0 if no filtering.
+
+
+
+
+ Gets or sets a value indicating whether to do inner filtering.
+
+
+
+
+ Gets or sets the high edge variance threshold in [0..2].
+
+
+
+
+
+
+
+ Vp8 frame header information.
+
+
+
+
+ Gets or sets a value indicating whether this is a key frame.
+
+
+
+
+ Gets or sets Vp8 profile [0..3].
+
+
+
+
+ Gets or sets the partition length.
+
+
+
+
+ Size of histogram used by CollectHistogram.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the picture width in pixels (invariable).
+ The actual area passed to put() is stored in /> field.
+
+
+
+
+ Gets or sets the picture height in pixels (invariable).
+ The actual area passed to put() is stored in /> field.
+
+
+
+
+ Gets or sets the y-position of the current macroblock.
+
+
+
+
+ Gets or sets number of columns in the sample.
+
+
+
+
+ Gets or sets number of rows in the sample.
+
+
+
+
+ Gets or sets the luma component.
+
+
+
+
+ Gets or sets the U chroma component.
+
+
+
+
+ Gets or sets the V chroma component.
+
+
+
+
+ Gets or sets the row stride for luma.
+
+
+
+
+ Gets or sets the row stride for chroma.
+
+
+
+
+ Contextual macroblock information.
+
+
+
+
+ Gets or sets non-zero AC/DC coeffs (4bit for luma + 4bit for chroma).
+
+
+
+
+ Gets or sets non-zero DC coeff (1bit).
+
+
+
+
+ Data needed to reconstruct a macroblock.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the coefficients. 384 coeffs = (16+4+4) * 4*4.
+
+
+
+
+ Gets or sets a value indicating whether its intra4x4.
+
+
+
+
+ Gets the modes. One 16x16 mode (#0) or sixteen 4x4 modes.
+
+
+
+
+ Gets or sets the chroma prediction mode.
+
+
+
+
+ Gets or sets bit-wise info about the content of each sub-4x4 blocks (in decoding order).
+ Each of the 4x4 blocks for y/u/v is associated with a 2b code according to:
+ code=0 -> no coefficient
+ code=1 -> only DC
+ code=2 -> first three coefficients are non-zero
+ code=3 -> more than three coefficients are non-zero
+ This allows to call specialized transform functions.
+
+
+
+
+ Gets or sets bit-wise info about the content of each sub-4x4 blocks (in decoding order).
+ Each of the 4x4 blocks for y/u/v is associated with a 2b code according to:
+ code=0 -> no coefficient
+ code=1 -> only DC
+ code=2 -> first three coefficients are non-zero
+ code=3 -> more than three coefficients are non-zero
+ This allows to call specialized transform functions.
+
+
+
+
+ Number of descaling bits for sharpening bias.
+
+
+
+
+ The quantizer steps.
+
+
+
+
+ The reciprocals, fixed point.
+
+
+
+
+ The rounding bias.
+
+
+
+
+ The value below which a coefficient is zeroed.
+
+
+
+
+ The frequency boosters for slight sharpening.
+
+
+
+
+ Returns the average quantizer.
+
+ The average quantizer.
+
+
+
+ Class to accumulate score and info during RD-optimization and mode evaluation.
+
+
+
+
+ Distortion multiplier (equivalent of lambda).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the distortion.
+
+
+
+
+ Gets or sets the spectral distortion.
+
+
+
+
+ Gets or sets the header bits.
+
+
+
+
+ Gets or sets the rate.
+
+
+
+
+ Gets or sets the score.
+
+
+
+
+ Gets the quantized levels for luma-DC.
+
+
+
+
+ Gets the quantized levels for luma-AC.
+
+
+
+
+ Gets the quantized levels for chroma.
+
+
+
+
+ Gets or sets the mode number for intra16 prediction.
+
+
+
+
+ Gets the mode numbers for intra4 predictions.
+
+
+
+
+ Gets or sets the mode number of chroma prediction.
+
+
+
+
+ Gets or sets the Non-zero blocks.
+
+
+
+
+ Gets the diffusion errors.
+
+
+
+
+ Gets or sets the width of the image.
+
+
+
+
+ Gets or sets the Height of the image.
+
+
+
+
+ Gets or sets the horizontal scale.
+
+
+
+
+ Gets or sets the vertical scale.
+
+
+
+
+ Gets or sets the colorspace.
+ 0 - YUV color space similar to the YCrCb color space defined in.
+ 1 - Reserved for future use.
+
+
+
+
+ Gets or sets the clamp type.
+ 0 - Decoders are required to clamp the reconstructed pixel values to between 0 and 255 (inclusive).
+ 1 - Reconstructed pixel values are guaranteed to be between 0 and 255; no clamping is necessary.
+
+
+
+
+ Data for all frame-persistent probabilities.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Probabilities associated to one of the contexts.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the probabilities.
+
+
+
+
+ Gets or sets the U/V quantizer value.
+
+
+
+
+ Gets or sets the dithering amplitude (0 = off, max=255).
+
+
+
+
+ Rate-distortion optimization levels
+
+
+
+
+ No rd-opt.
+
+
+
+
+ Basic scoring (no trellis).
+
+
+
+
+ Perform trellis-quant on the final decision only.
+
+
+
+
+ Trellis-quant for every scoring (much slower).
+
+
+
+
+ On-the-fly info about the current set of residuals.
+
+
+
+
+ Segment features.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a value indicating whether to update the segment map or not.
+
+
+
+
+ Gets or sets a value indicating whether to use delta values for quantizer and filter.
+ If this value is false, absolute values are used.
+
+
+
+
+ Gets quantization changes.
+
+
+
+
+ Gets the filter strength for segments.
+
+
+
+
+ Gets the quantization matrix y1.
+
+
+
+
+ Gets the quantization matrix y2.
+
+
+
+
+ Gets the quantization matrix uv.
+
+
+
+
+ Gets or sets the quant-susceptibility, range [-127,127]. Zero is neutral. Lower values indicate a lower risk of blurriness.
+
+
+
+
+ Gets or sets the filter-susceptibility, range [0,255].
+
+
+
+
+ Gets or sets the final segment quantizer.
+
+
+
+
+ Gets or sets the final in-loop filtering strength.
+
+
+
+
+ Gets or sets the max edge delta (for filtering strength).
+
+
+
+
+ Gets or sets the penalty for using Intra4.
+
+
+
+
+ Gets or sets the minimum distortion required to trigger filtering record.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Decoder for lossy webp images. This code is a port of libwebp, which can be found here: https://chromium.googlesource.com/webm/libwebp
+
+
+ The lossy specification can be found here: https://tools.ietf.org/html/rfc6386
+
+
+
+
+ A bit reader for reading lossy webp streams.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ The global configuration.
+
+
+
+
+ Scratch buffer to reduce allocations.
+
+
+
+
+ Another scratch buffer to reduce allocations.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Bitreader to read from the stream.
+ Used for allocating memory during processing operations.
+ The configuration.
+
+
+
+ Fixed-point precision for RGB->YUV.
+
+
+
+
+ Converts the RGB values of the image to YUV.
+
+ The pixel type of the image.
+ The image to convert.
+ The global configuration.
+ The memory allocator.
+ Span to store the luma component of the image.
+ Span to store the u component of the image.
+ Span to store the v component of the image.
+ true, if the image contains alpha data.
+
+
+
+ Converts a rgba pixel row to Y.
+
+ The row span to convert.
+ The destination span for y.
+ The width.
+
+
+
+ Converts a rgb row of pixels to UV.
+
+ The RGB pixel row.
+ The destination span for u.
+ The destination span for v.
+ The width.
+
+
+
+ No compression.
+
+
+
+
+ Compressed using the Webp lossless format.
+
+
+
+
+ Enum for the different alpha filter types.
+
+
+
+
+ No filtering.
+
+
+
+
+ Horizontal filter.
+
+
+
+
+ Vertical filter.
+
+
+
+
+ Gradient filter.
+
+
+
+
+ Enumerates the available bits per pixel the webp image uses.
+
+
+
+
+ 24 bits per pixel. Each pixel consists of 3 bytes.
+
+
+
+
+ 32 bits per pixel. Each pixel consists of 4 bytes (an alpha channel is present).
+
+
+
+
+ Contains a list of different webp chunk types.
+
+ See Webp Container Specification for more details: https://developers.google.com/speed/webp/docs/riff_container
+
+
+
+ Header signaling the use of the VP8 format.
+
+
+
+
+ Header signaling the image uses lossless encoding.
+
+
+
+
+ Header for a extended-VP8 chunk.
+
+
+
+
+ Chunk contains information about the alpha channel.
+
+
+
+
+ Chunk which contains a color profile.
+
+
+
+
+ Chunk which contains EXIF metadata about the image.
+
+
+
+
+ Chunk contains XMP metadata about the image.
+
+
+
+
+ For an animated image, this chunk contains the global parameters of the animation.
+
+
+
+
+ For animated images, this chunk contains information about a single frame. If the Animation flag is not set, then this chunk SHOULD NOT be present.
+
+
+
+
+ Utility methods for lossy and lossless webp format.
+
+
+
+
+ Checks if the pixel row is not opaque.
+
+ The row to check.
+ Returns true if alpha has non-0xff values.
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the webp format.
+
+
+
+
+
+
+
+ Constants used for encoding and decoding VP8 and VP8L bitstreams.
+
+
+
+
+ The list of file extensions that equate to Webp.
+
+
+
+
+ The list of mimetypes that equate to a jpeg.
+
+
+
+
+ Signature which identifies a VP8 header.
+
+
+
+
+ Signature byte which identifies a VP8L header.
+
+
+
+
+ Signature bytes identifying a lossy image.
+
+
+
+
+ Signature bytes identifying a lossless image.
+
+
+
+
+ Signature bytes identifying a VP8X header.
+
+
+
+
+ The header bytes identifying RIFF file.
+
+
+
+
+ The header bytes identifying a Webp.
+
+
+
+
+ 3 bits reserved for version.
+
+
+
+
+ Bits for width and height infos of a VPL8 image.
+
+
+
+
+ Size of the frame header within VP8 data.
+
+
+
+
+ Size of a VP8X chunk in bytes.
+
+
+
+
+ Size of a chunk header.
+
+
+
+
+ Size of the RIFF header ("RIFFnnnnWEBP").
+
+
+
+
+ Size of a chunk tag (e.g. "VP8L").
+
+
+
+
+ The Vp8L version 0.
+
+
+
+
+ Maximum number of histogram images (sub-blocks).
+
+
+
+
+ Minimum number of Huffman bits.
+
+
+
+
+ Maximum number of Huffman bits.
+
+
+
+
+ The maximum number of colors for a paletted images.
+
+
+
+
+ Maximum number of color cache bits is 10.
+
+
+
+
+ The maximum number of allowed transforms in a VP8L bitstream.
+
+
+
+
+ Maximum value of transformBits in VP8LEncoder.
+
+
+
+
+ The bit to be written when next data to be read is a transform.
+
+
+
+
+ The maximum allowed width or height of a webp image.
+
+
+
+
+ 8b of precision for susceptibilities.
+
+
+
+
+ Scaling factor for alpha.
+
+
+
+
+ Neutral value for susceptibility.
+
+
+
+
+ Lowest usable value for susceptibility.
+
+
+
+
+ Higher meaningful value for susceptibility.
+
+
+
+
+ Scaling constant between the sns (Spatial Noise Shaping) value and the QP power-law modulation. Must be strictly less than 1.
+
+
+
+
+ Very small filter-strength values have close to no visual effect. So we can
+ save a little decoding-CPU by turning filtering off for these.
+
+
+
+
+ Max size of mode partition.
+
+
+
+
+ Distortion multiplier (equivalent of lambda).
+
+
+
+
+ How many extra lines are needed on the MB boundary for caching, given a filtering level.
+ Simple filter(1): up to 2 luma samples are read and 1 is written.
+ Complex filter(2): up to 4 luma samples are read and 3 are written. Same for U/V, so it's 8 samples total (because of the 2x upsampling).
+
+
+
+
+ Image decoder for generating an image out of a webp stream.
+
+
+
+
+ Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Performs the webp decoding operation.
+
+
+
+
+ Reusable buffer.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ The stream to decode from.
+
+
+
+
+ The webp specific metadata.
+
+
+
+
+ Information about the webp image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The options.
+
+
+
+ Gets a value indicating whether the metadata should be ignored when the image is being decoded.
+
+
+
+
+ Gets the decoded by this decoder instance.
+
+
+
+
+
+
+
+ Gets the dimensions of the image.
+
+
+
+
+
+
+
+
+
+
+ Reads and skips over the image header.
+
+ The file size in bytes.
+
+
+
+ Reads information present in the image header, about the image content and how to decode the image.
+
+ Information about the webp image.
+
+
+
+ Reads an the extended webp file header. An extended file header consists of:
+ - A 'VP8X' chunk with information about features used in the file.
+ - An optional 'ICCP' chunk with color profile.
+ - An optional 'XMP' chunk with metadata.
+ - An optional 'ANIM' chunk with animation control data.
+ - An optional 'ALPH' chunk with alpha channel data.
+ After the image header, image data will follow. After that optional image metadata chunks (EXIF and XMP) can follow.
+
+ Information about this webp image.
+
+
+
+ Reads the header of a lossy webp image.
+
+ Webp features.
+ Information about this webp image.
+
+
+
+ Reads the header of a lossless webp image.
+
+ Webp image features.
+ Information about this image.
+
+
+
+ Parses optional VP8X chunks, which can be ICCP, XMP, ANIM or ALPH chunks.
+
+ The chunk type.
+ The webp image features.
+
+
+
+ Parses optional metadata chunks. There SHOULD be at most one chunk of each type ('EXIF' and 'XMP ').
+ If there are more such chunks, readers MAY ignore all except the first one.
+ Also, a file may possibly contain both 'EXIF' and 'XMP ' chunks.
+
+ The webp features.
+
+
+
+ Reads the EXIF profile from the stream.
+
+
+
+
+ Reads the XMP profile the stream.
+
+
+
+
+ Reads the ICCP chunk from the stream.
+
+
+
+
+ Identifies the chunk type from the chunk.
+
+
+ Thrown if the input stream is not valid.
+
+
+
+
+ Reads the chunk size. If Chunk Size is odd, a single padding byte will be added to the payload,
+ so the chunk size will be increased by 1 in those cases.
+
+ The chunk size in bytes.
+
+
+
+ Determines if the chunk type is an optional VP8X chunk.
+
+ The chunk type.
+ True, if its an optional chunk type.
+
+
+
+ Image encoder for writing an image to a stream in the Webp format.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Image encoder for writing an image to a stream in the Webp format.
+
+
+
+
+ Used for allocating memory during processing operations.
+
+
+
+
+ Indicating whether the alpha plane should be compressed with Webp lossless format.
+ Defaults to true.
+
+
+
+
+ Compression quality. Between 0 and 100.
+
+
+
+
+ Quality/speed trade-off (0=fast, 6=slower-better).
+
+
+
+
+ The number of entropy-analysis passes (in [1..10]).
+
+
+
+
+ Spatial Noise Shaping. 0=off, 100=maximum.
+
+
+
+
+ The filter the strength of the deblocking filter, between 0 (no filtering) and 100 (maximum filtering).
+
+
+
+
+ Flag indicating whether to preserve the exact RGB values under transparent area. Otherwise, discard this invisible
+ RGB information for better compression.
+
+
+
+
+ Indicating whether near lossless mode should be used.
+
+
+
+
+ The near lossless quality. The range is 0 (maximum preprocessing) to 100 (no preprocessing, the default).
+
+
+
+
+ Indicating what file format compression should be used.
+ Defaults to lossy.
+
+
+
+
+ The global configuration.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The encoder options.
+ The memory manager.
+
+
+
+ Encodes the image as webp to the specified stream.
+
+ The pixel format.
+ The to encode from.
+ The to encode the image data to.
+ The token to monitor for cancellation requests.
+
+
+
+ Quality/speed trade-off for the encoding process (0=fast, 6=slower-better).
+
+
+
+
+ Fastest, but quality compromise. Equivalent to .
+
+
+
+
+ Fastest, but quality compromise.
+
+
+
+
+ Level1.
+
+
+
+
+ Level 2.
+
+
+
+
+ Level 3.
+
+
+
+
+ Level 4. Equivalent to .
+
+
+
+
+ BestQuality trade off between speed and quality.
+
+
+
+
+ Level 5.
+
+
+
+
+ Slowest option, but best quality. Equivalent to .
+
+
+
+
+ Slowest option, but best quality.
+
+
+
+
+ Image features of a VP8X image.
+
+
+
+
+ Gets or sets a value indicating whether this image has an ICC Profile.
+
+
+
+
+ Gets or sets a value indicating whether this image has an alpha channel.
+
+
+
+
+ Gets or sets the alpha data, if an ALPH chunk is present.
+
+
+
+
+ Gets or sets the alpha chunk header.
+
+
+
+
+ Gets or sets a value indicating whether this image has an EXIF Profile.
+
+
+
+
+ Gets or sets a value indicating whether this image has XMP Metadata.
+
+
+
+
+ Gets or sets a value indicating whether this image is an animation.
+
+
+
+
+
+
+
+ Info about the webp file format used.
+
+
+
+
+ The lossless webp format.
+
+
+
+
+ The lossy webp format.
+
+
+
+
+ Registers the image encoders, decoders and mime type detectors for the Webp format
+
+
+
+
+ Gets the current instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Detects Webp file headers.
+
+
+
+
+
+
+
+
+
+
+ Checks, if the header starts with a valid RIFF FourCC.
+
+ The header bytes.
+ True, if its a valid RIFF FourCC.
+
+
+
+ Checks if 'WEBP' is present in the header.
+
+ The header bytes.
+ True, if its a webp file.
+
+
+
+ Gets or sets the bitmap width in pixels.
+
+
+
+
+ Gets or sets the bitmap height in pixels.
+
+
+
+
+ Gets or sets the bits per pixel.
+
+
+
+
+ Gets or sets a value indicating whether this image uses lossless compression.
+
+
+
+
+ Gets or sets additional features present in a VP8X image.
+
+
+
+
+ Gets or sets the VP8 profile / version. Valid values are between 0 and 3. Default value will be the invalid value -1.
+
+
+
+
+ Gets or sets the VP8 frame header.
+
+
+
+
+ Gets or sets the VP8L bitreader. Will be null, if its not a lossless image.
+
+
+
+
+ Gets or sets the VP8 bitreader. Will be null, if its not a lossy image.
+
+
+
+
+
+
+
+ Lookup table for small values of log2(int).
+
+
+
+
+ Provides Webp specific metadata information for the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The metadata to create an instance from.
+
+
+
+ Gets or sets the webp file format used. Either lossless or lossy.
+
+
+
+
+
+
+
+ Cold path optimization for throwing 's.
+
+ The error message for the exception.
+
+
+
+ Cold path optimization for throwing -s
+
+ The error message for the exception.
+
+
+
+ Cold path optimization for throwing -s
+
+ The error message for the exception.
+
+
+
+ Cold path optimization for throwing -s
+
+ The error message for the exception.
+
+
+
+ Enum indicating how the transparency should be handled on encoding.
+
+
+
+
+ Discard the transparency information for better compression.
+
+
+
+
+ The transparency will be kept as is.
+
+
+
+
+ Extension methods for the type.
+
+
+ Extension methods for the type.
+
+
+ Extension methods for the type.
+
+
+ Extension methods for the type.
+
+
+ Extension methods for the type.
+
+
+ Extension methods for the type.
+
+
+ Extension methods for the type.
+
+
+ Extension methods for the type.
+
+
+
+
+ Gets the bmp format specific metadata for the image.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the gif format specific metadata for the image.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the gif format specific metadata for the image frame.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the jpeg format specific metadata for the image.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the pbm format specific metadata for the image.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the png format specific metadata for the image.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the tga format specific metadata for the image.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the tiff format specific metadata for the image.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the tiff format specific metadata for the image frame.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Gets the webp format specific metadata for the image.
+
+ The metadata this method extends.
+ The .
+
+
+
+ Extension methods for the type.
+
+
+ Extension methods for the type.
+
+
+ Contains internal extensions for
+
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The stream to save the image to.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Bmp format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The stream to save the image to.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Gif format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The stream to save the image to.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Jpeg format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The stream to save the image to.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Pbm format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The stream to save the image to.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Png format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The stream to save the image to.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Tga format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The stream to save the image to.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Webp format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The file path to save the image to.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ Thrown if the path is null.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the path is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The stream to save the image to.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream is null.
+
+
+
+ Saves the image to the given stream with the Tiff format.
+
+ The image this method extends.
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream is null.
+ A representing the asynchronous operation.
+
+
+
+ Writes the image to the given file path using an encoder detected from the path.
+
+ The source image.
+ The file path to save the image to.
+ The path is null.
+ No encoder available for provided path.
+
+
+
+ Writes the image to the given file path using an encoder detected from the path.
+
+ The source image.
+ The file path to save the image to.
+ The token to monitor for cancellation requests.
+ The path is null.
+ No encoder available for provided path.
+ A representing the asynchronous operation.
+
+
+
+ Writes the image to the given file path using the given image encoder.
+
+ The source image.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The path is null.
+ The encoder is null.
+
+
+
+ Writes the image to the given file path using the given image encoder.
+
+ The source image.
+ The file path to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ The path is null.
+ The encoder is null.
+ A representing the asynchronous operation.
+
+
+
+ Writes the image to the given stream using the given image format.
+
+ The source image.
+ The stream to save the image to.
+ The format to save the image in.
+ The stream is null.
+ The format is null.
+ The stream is not writable.
+ No encoder available for provided format.
+
+
+
+ Writes the image to the given stream using the given image format.
+
+ The source image.
+ The stream to save the image to.
+ The format to save the image in.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The format is null.
+ The stream is not writable.
+ No encoder available for provided format.
+ A representing the asynchronous operation.
+
+
+
+ Returns a Base64 encoded string from the given image.
+ The result is prepended with a Data URI
+
+
+ For example:
+
+
+
+
+ The source image
+ The format.
+ The format is null.
+ The
+
+
+
+ Locks the image providing access to the pixels.
+
+ It is imperative that the accessor is correctly disposed off after use.
+
+
+ The type of the pixel.
+ The image.
+
+ The
+
+
+
+
+ Utility class for common geometric functions.
+
+
+
+
+ Converts a degree (360-periodic) angle to a radian (2*Pi-periodic) angle.
+
+ The angle in degrees.
+
+ The representing the degree as radians.
+
+
+
+
+ Converts a radian (2*Pi-periodic) angle to a degree (360-periodic) angle.
+
+ The angle in radians.
+
+ The representing the degree as radians.
+
+
+
+
+ Adds extensions that allow the processing of images to the type.
+
+
+
+
+ Sets the default options against the image processing context.
+
+ The image processing context to store default against.
+ The action to update instance of the default options used.
+ The passed in to allow chaining.
+
+
+
+ Sets the default options against the configuration.
+
+ The configuration to store default against.
+ The default options to use.
+
+
+
+ Sets the default options against the image processing context.
+
+ The image processing context to store default against.
+ The default options to use.
+ The passed in to allow chaining.
+
+
+
+ Sets the default options against the configuration.
+
+ The configuration to store default against.
+ The default options to use.
+
+
+
+ Gets the default options against the image processing context.
+
+ The image processing context to retrieve defaults from.
+ The globaly configued default options.
+
+
+
+ Gets the default options against the image processing context.
+
+ The configuration to retrieve defaults from.
+ The globaly configued default options.
+
+
+
+ Options for influencing the drawing functions.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets a value indicating whether antialiasing should be applied.
+ Defaults to true.
+
+
+
+
+ Gets or sets a value indicating the number of subpixels to use while rendering with antialiasing enabled.
+ Defaults to 16.
+
+
+
+
+ Gets or sets a value between indicating the blending percentage to apply to the drawing operation.
+ Range 0..1; Defaults to 1.
+
+
+
+
+ Gets or sets a value indicating the color blending mode to apply to the drawing operation.
+ Defaults to .
+
+
+
+
+ Gets or sets a value indicating the alpha composition mode to apply to the drawing operation
+ Defaults to .
+
+
+
+
+
+
+
+ Represents an interface that can register image encoders, decoders and image format detectors.
+
+
+
+
+ Called when loaded into a configuration object so the module can register items into the configuration.
+
+ The configuration that will retain the encoders, decodes and mime type detectors.
+
+
+
+ A generic interface for a deeply cloneable type.
+
+ The type of object to clone.
+
+
+
+ Creates a new that is a deep copy of the current instance.
+
+ The .
+
+
+
+ An interface for objects that can be cloned. This creates a deep copy of the object.
+
+
+
+
+ Creates a new object that is a deep copy of the current instance.
+
+ The .
+
+
+
+ Encapsulates the properties and methods that describe an image.
+
+
+
+
+ Encapsulates properties that describe basic image information including dimensions, pixel type information
+ and additional metadata.
+
+
+
+
+ Gets information about the image pixels.
+
+
+
+
+ Gets the width.
+
+
+
+
+ Gets the height.
+
+
+
+
+ Gets the metadata of the image.
+
+
+
+
+ Encapsulates an image, which consists of the pixel data for a graphics image and its attributes.
+ For the non-generic type, the pixel type is only known at runtime.
+ is always implemented by a pixel-specific instance.
+
+
+ Adds static methods allowing the decoding of new images.
+
+
+ Adds static methods allowing the creation of new image from a byte array.
+
+
+ Adds static methods allowing the creation of new image from a given file.
+
+
+ Adds static methods allowing the creation of new image from a given stream.
+
+
+ Adds static methods allowing the creation of new image from raw pixel data.
+
+
+ Adds static methods allowing wrapping an existing memory area as an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The configuration which allows altering default behaviour or extending the library.
+
+ The .
+ The .
+ The .
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the implementing the public property.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the frames of the image as (non-generic) .
+
+
+
+
+
+
+
+
+
+
+ Saves the image to the given stream using the given image encoder.
+
+ The stream to save the image to.
+ The encoder to save the image with.
+ Thrown if the stream or encoder is null.
+
+
+
+ Saves the image to the given stream using the given image encoder.
+
+ The stream to save the image to.
+ The encoder to save the image with.
+ The token to monitor for cancellation requests.
+ Thrown if the stream or encoder is null.
+ A representing the asynchronous operation.
+
+
+
+ Returns a copy of the image in the given pixel format.
+
+ The pixel format.
+ The
+
+
+
+ Returns a copy of the image in the given pixel format.
+
+ The pixel format.
+ The configuration providing initialization code which allows extending the library.
+ The .
+
+
+
+ Update the size of the image after mutation.
+
+ The .
+
+
+
+ Disposes the object and frees resources for the Garbage Collector.
+
+ Whether to dispose of managed and unmanaged objects.
+
+
+
+ Throws if the image is disposed.
+
+
+
+
+ Accepts a .
+ Implemented by invoking
+ with the pixel type of the image.
+
+ The visitor.
+
+
+
+ Accepts a .
+ Implemented by invoking
+ with the pixel type of the image.
+
+ The visitor.
+ The token to monitor for cancellation requests.
+
+
+
+ Creates an instance backed by an uninitialized memory buffer.
+ This is an optimized creation method intended to be used by decoders.
+ The image might be filled with memory garbage.
+
+ The pixel type
+ The
+ The width of the image
+ The height of the image
+ The
+ The result
+
+
+
+ By reading the header on the provided stream this calculates the images format.
+
+ The image stream to read the header from.
+ The configuration.
+ The mime type or null if none found.
+
+
+
+ By reading the header on the provided stream this calculates the images format.
+
+ The image stream to read the header from.
+ The configuration.
+ The IImageFormat.
+ The image format or null if none found.
+
+
+
+ Decodes the image stream to the current image.
+
+ The stream.
+ the configuration.
+ The token to monitor for cancellation requests.
+ The pixel format.
+
+ A new .
+
+
+
+
+ Reads the raw image information from the specified stream.
+
+ The stream.
+ the configuration.
+ The token to monitor for cancellation requests.
+
+ The or null if a suitable info detector is not found.
+
+
+
+
+ By reading the header on the provided byte array this calculates the images format.
+
+ The byte array containing encoded image data to read the header from.
+ The data is null.
+ The format or null if none found.
+
+
+
+ By reading the header on the provided byte array this calculates the images format.
+
+ The configuration.
+ The byte array containing encoded image data to read the header from.
+ The configuration is null.
+ The data is null.
+ The mime type or null if none found.
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The byte array containing encoded image data to read the header from.
+ The data is null.
+ The data is not readable.
+
+ The or null if suitable info detector not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The byte array containing encoded image data to read the header from.
+ The format type of the decoded image.
+ The data is null.
+ The data is not readable.
+
+ The or null if suitable info detector not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The configuration.
+ The byte array containing encoded image data to read the header from.
+ The format type of the decoded image.
+ The configuration is null.
+ The data is null.
+ The data is not readable.
+
+ The or null if suitable info detector is not found.
+
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The byte array containing image data.
+ The configuration is null.
+ The data is null.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The byte array containing encoded image data.
+ The pixel format.
+ The data is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The byte array containing image data.
+ The mime type of the decoded image.
+ The pixel format.
+ The data is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The configuration options.
+ The byte array containing encoded image data.
+ The pixel format.
+ The configuration is null.
+ The data is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The configuration options.
+ The byte array containing encoded image data.
+ The of the decoded image.
+ The pixel format.
+ The configuration is null.
+ The data is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The byte array containing encoded image data.
+ The decoder.
+ The pixel format.
+ The data is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The Configuration.
+ The byte array containing encoded image data.
+ The decoder.
+ The pixel format.
+ The configuration is null.
+ The data is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A new .
+
+
+
+ By reading the header on the provided byte span this calculates the images format.
+
+ The byte span containing encoded image data to read the header from.
+ The format or null if none found.
+
+
+
+ By reading the header on the provided byte span this calculates the images format.
+
+ The configuration.
+ The byte span containing encoded image data to read the header from.
+ The configuration is null.
+ The mime type or null if none found.
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The byte span containing encoded image data.
+ The pixel format.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The byte span containing image data.
+ The mime type of the decoded image.
+ The pixel format.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The byte span containing encoded image data.
+ The decoder.
+ The pixel format.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The configuration options.
+ The byte span containing encoded image data.
+ The pixel format.
+ The configuration is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The Configuration.
+ The byte span containing image data.
+ The decoder.
+ The pixel format.
+ The configuration is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The configuration options.
+ The byte span containing image data.
+ The of the decoded image.
+ The pixel format.
+ The configuration is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ A new .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The byte array containing image data.
+ The detected format.
+ The configuration is null.
+ The data is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The byte array containing encoded image data.
+ The decoder.
+ The data is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The configuration for the decoder.
+ The byte array containing encoded image data.
+ The configuration is null.
+ The data is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The configuration for the decoder.
+ The byte array containing image data.
+ The decoder.
+ The configuration is null.
+ The data is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The configuration for the decoder.
+ The byte array containing image data.
+ The mime type of the decoded image.
+ The configuration is null.
+ The data is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The byte span containing image data.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The byte span containing image data.
+ The decoder.
+ The data is null.
+ The decoder is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte array.
+
+ The byte span containing image data.
+ The detected format.
+ The decoder is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ Decodes a new instance of from the given encoded byte span.
+
+ The configuration options.
+ The byte span containing image data.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The Configuration.
+ The byte span containing image data.
+ The decoder.
+ The configuration is null.
+ The decoder is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The .
+
+
+
+ Load a new instance of from the given encoded byte span.
+
+ The configuration options.
+ The byte span containing image data.
+ The of the decoded image.>
+ The configuration is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The .
+
+
+
+ By reading the header on the provided file this calculates the images mime type.
+
+ The image file to open and to read the header from.
+ The mime type or null if none found.
+
+
+
+ By reading the header on the provided file this calculates the images mime type.
+
+ The configuration.
+ The image file to open and to read the header from.
+ The configuration is null.
+ The mime type or null if none found.
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The image file to open and to read the header from.
+
+ The or null if suitable info detector not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The image file to open and to read the header from.
+ The format type of the decoded image.
+
+ The or null if suitable info detector not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The configuration.
+ The image file to open and to read the header from.
+ The format type of the decoded image.
+ The configuration is null.
+
+ The or null if suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The image file to open and to read the header from.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+
+ The representing the asynchronous operation with the parameter type
+ property set to null if suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The configuration.
+ The image file to open and to read the header from.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+
+ The representing the asynchronous operation with the parameter type
+ property set to null if suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The image file to open and to read the header from.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+
+ The representing the asynchronous operation with the parameter type
+ property set to null if suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The configuration.
+ The image file to open and to read the header from.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+
+ The representing the asynchronous operation with the parameter type
+ property set to null if suitable info detector is not found.
+
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+
+ Thrown if the stream is not readable nor seekable.
+
+ The .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The mime type of the decoded image.
+
+ Thrown if the stream is not readable nor seekable.
+
+ A new .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The configuration for the decoder.
+ The file path to the image.
+ The configuration is null.
+ The path is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The configuration for the decoder.
+ The file path to the image.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The path is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given file.
+
+ The Configuration.
+ The file path to the image.
+ The decoder.
+ The configuration is null.
+ The path is null.
+ The decoder is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The path is null.
+ The decoder is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The decoder.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The path is null.
+ The decoder is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The decoder.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The path is null.
+ The decoder is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given file.
+
+ The Configuration.
+ The file path to the image.
+ The decoder.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The path is null.
+ The decoder is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given file.
+
+ The Configuration.
+ The file path to the image.
+ The decoder.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The path is null.
+ The decoder is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The path is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given file.
+
+ The configuration for the decoder.
+ The file path to the image.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The path is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The decoder.
+ The path is null.
+ The decoder is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The path is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The mime type of the decoded image.
+ The path is null.
+ Image format not recognised.
+ Image contains invalid content.
+ Image format is not supported.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The configuration options.
+ The file path to the image.
+ The configuration is null.
+ The path is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The configuration options.
+ The file path to the image.
+ The mime type of the decoded image.
+ The configuration is null.
+ The path is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given file.
+ The pixel type is selected by the decoder.
+
+ The configuration options.
+ The file path to the image.
+ The mime type of the decoded image.
+ The configuration is null.
+ The path is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ A new .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The file path to the image.
+ The decoder.
+ The path is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given file.
+
+ The Configuration.
+ The file path to the image.
+ The decoder.
+ The configuration is null.
+ The path is null.
+ The decoder is null.
+ Image format not recognised.
+ Image format is not supported.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ By reading the header on the provided stream this calculates the images format type.
+
+ The image stream to read the header from.
+ The stream is null.
+ The stream is not readable.
+ The format type or null if none found.
+
+
+
+ By reading the header on the provided stream this calculates the images format type.
+
+ The configuration.
+ The image stream to read the header from.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable.
+ The format type or null if none found.
+
+
+
+ By reading the header on the provided stream this calculates the images format type.
+
+ The image stream to read the header from.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The stream is not readable.
+ A representing the asynchronous operation or null if none is found.
+
+
+
+ By reading the header on the provided stream this calculates the images format type.
+
+ The configuration.
+ The image stream to read the header from.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable.
+ A representing the asynchronous operation.
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The image stream to read the header from.
+ The stream is null.
+ The stream is not readable.
+ Image contains invalid content.
+
+ The or null if a suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The image stream to read the header from.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The stream is not readable.
+ Image contains invalid content.
+
+ A representing the asynchronous operation or null if
+ a suitable detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The image stream to read the header from.
+ The format type of the decoded image.
+ The stream is null.
+ The stream is not readable.
+ Image contains invalid content.
+
+ The or null if a suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The configuration.
+ The image stream to read the information from.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable.
+ Image contains invalid content.
+
+ The or null if a suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The configuration.
+ The image stream to read the information from.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable.
+ Image contains invalid content.
+
+ A representing the asynchronous operation or null if
+ a suitable detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The configuration.
+ The image stream to read the information from.
+ The format type of the decoded image.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable.
+ Image contains invalid content.
+
+ The or null if a suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The image stream to read the information from.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable.
+ Image contains invalid content.
+
+ The representing the asynchronous operation with the parameter type
+ property set to null if suitable info detector is not found.
+
+
+
+
+ Reads the raw image information from the specified stream without fully decoding it.
+
+ The configuration.
+ The image stream to read the information from.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable.
+ Image contains invalid content.
+
+ The representing the asynchronous operation with the parameter type
+ property set to null if suitable info detector is not found.
+
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The stream containing image information.
+ The format type of the decoded image.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The .
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The stream containing image information.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The stream containing image information.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The .
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The stream containing image information.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The stream containing image information.
+ The decoder.
+ The stream is null.
+ The decoder is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The .
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The stream containing image information.
+ The decoder.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The decoder is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The configuration for the decoder.
+ The stream containing image information.
+ The decoder.
+ The configuration is null.
+ The stream is null.
+ The decoder is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A new .
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The configuration for the decoder.
+ The stream containing image information.
+ The decoder.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The decoder is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Decode a new instance of the class from the given stream.
+
+ The configuration for the decoder.
+ The stream containing image information.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A new .
+
+
+
+ Decode a new instance of the class from the given stream.
+
+ The configuration for the decoder.
+ The stream containing image information.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The stream containing image information.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The stream containing image information.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The stream containing image information.
+ The format type of the decoded image.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The stream containing image information.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The stream containing image information.
+ The decoder.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The stream containing image information.
+ The decoder.
+ The token to monitor for cancellation requests.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The Configuration.
+ The stream containing image information.
+ The decoder.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The Configuration.
+ The stream containing image information.
+ The decoder.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The configuration options.
+ The stream containing image information.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The configuration options.
+ The stream containing image information.
+ The format type of the decoded image.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The configuration options.
+ The stream containing image information.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The configuration options.
+ The stream containing image information.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Create a new instance of the class from the given stream.
+
+ The configuration options.
+ The stream containing image information.
+ The token to monitor for cancellation requests.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ The pixel format.
+ A representing the asynchronous operation.
+
+
+
+ Decode a new instance of the class from the given stream.
+ The pixel format is selected by the decoder.
+
+ The configuration options.
+ The stream containing image information.
+ The format type of the decoded image.
+ The configuration is null.
+ The stream is null.
+ The stream is not readable or the image format is not supported.
+ Image format not recognised.
+ Image contains invalid content.
+ A new .
+
+
+
+ Performs the given action against the stream ensuring that it is seekable.
+
+ The type of object returned from the action.
+ The configuration.
+ The input stream.
+ The action to perform.
+ The .
+
+
+
+ Performs the given action asynchronously against the stream ensuring that it is seekable.
+
+ The type of object returned from the action.
+ The configuration.
+ The input stream.
+ The action to perform.
+ The cancellation token.
+ The .
+
+
+
+ Create a new instance of the class from the raw data.
+
+ The byte array containing image data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ The data length is incorrect.
+ A new .
+
+
+
+ Create a new instance of the class from the raw data.
+
+ The byte array containing image data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ The data length is incorrect.
+ A new .
+
+
+
+ Create a new instance of the class from the given byte array in format.
+
+ The byte array containing image data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ The data length is incorrect.
+ A new .
+
+
+
+ Create a new instance of the class from the given byte array in format.
+
+ The byte array containing image data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ The data length is incorrect.
+ A new .
+
+
+
+ Create a new instance of the class from the given byte array in format.
+
+ The configuration for the decoder.
+ The byte array containing image data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ The configuration is null.
+ The data length is incorrect.
+ A new .
+
+
+
+ Create a new instance of the class from the given byte array in format.
+
+ The configuration for the decoder.
+ The byte array containing image data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ The configuration is null.
+ The data length is incorrect.
+ A new .
+
+
+
+ Create a new instance of the class from the raw data.
+
+ The configuration for the decoder.
+ The Span containing the image Pixel data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ The configuration is null.
+ The data length is incorrect.
+ A new .
+
+
+
+ Create a new instance of the class from the raw data.
+
+ The configuration for the decoder.
+ The Span containing the image Pixel data.
+ The width of the final image.
+ The height of the final image.
+ The configuration is null.
+ The data length is incorrect.
+ The pixel format.
+ A new .
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: using this method does not transfer the ownership of the underlying buffer of the input
+ to the new instance. This means that consumers of this method must ensure that the input buffer
+ is either self-contained, (for example, a instance wrapping a new array that was
+ created), or that the owning object is not disposed until the returned is disposed.
+
+
+ If the input instance is one retrieved from an instance
+ rented from a memory pool (such as ), and that owning instance is disposed while the image is still
+ in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other
+ consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately.
+
+
+ The pixel type
+ The
+ The pixel memory.
+ The width of the memory image.
+ The height of the memory image.
+ The .
+ The configuration is null.
+ The metadata is null.
+ An instance
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: using this method does not transfer the ownership of the underlying buffer of the input
+ to the new instance. This means that consumers of this method must ensure that the input buffer
+ is either self-contained, (for example, a instance wrapping a new array that was
+ created), or that the owning object is not disposed until the returned is disposed.
+
+
+ If the input instance is one retrieved from an instance
+ rented from a memory pool (such as ), and that owning instance is disposed while the image is still
+ in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other
+ consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately.
+
+
+ The pixel type
+ The
+ The pixel memory.
+ The width of the memory image.
+ The height of the memory image.
+ The configuration is null.
+ An instance.
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: using this method does not transfer the ownership of the underlying buffer of the input
+ to the new instance. This means that consumers of this method must ensure that the input buffer
+ is either self-contained, (for example, a instance wrapping a new array that was
+ created), or that the owning object is not disposed until the returned is disposed.
+
+
+ If the input instance is one retrieved from an instance
+ rented from a memory pool (such as ), and that owning instance is disposed while the image is still
+ in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other
+ consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately.
+
+
+ The pixel type.
+ The pixel memory.
+ The width of the memory image.
+ The height of the memory image.
+ An instance.
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels,
+ allowing to view/manipulate it as an instance.
+ The ownership of the is being transferred to the new instance,
+ meaning that the caller is not allowed to dispose .
+ It will be disposed together with the result image.
+
+ The pixel type
+ The
+ The that is being transferred to the image
+ The width of the memory image.
+ The height of the memory image.
+ The
+ The configuration is null.
+ The metadata is null.
+ An instance
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels,
+ allowing to view/manipulate it as an instance.
+ The ownership of the is being transferred to the new instance,
+ meaning that the caller is not allowed to dispose .
+ It will be disposed together with the result image.
+
+ The pixel type.
+ The
+ The that is being transferred to the image.
+ The width of the memory image.
+ The height of the memory image.
+ The configuration is null.
+ An instance
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels,
+ allowing to view/manipulate it as an instance.
+ The ownership of the is being transferred to the new instance,
+ meaning that the caller is not allowed to dispose .
+ It will be disposed together with the result image.
+
+ The pixel type
+ The that is being transferred to the image.
+ The width of the memory image.
+ The height of the memory image.
+ An instance.
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: using this method does not transfer the ownership of the underlying buffer of the input
+ to the new instance. This means that consumers of this method must ensure that the input buffer
+ is either self-contained, (for example, a instance wrapping a new array that was
+ created), or that the owning object is not disposed until the returned is disposed.
+
+
+ If the input instance is one retrieved from an instance
+ rented from a memory pool (such as ), and that owning instance is disposed while the image is still
+ in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other
+ consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately.
+
+
+ The pixel type
+ The
+ The byte memory representing the pixel data.
+ The width of the memory image.
+ The height of the memory image.
+ The .
+ The configuration is null.
+ The metadata is null.
+ An instance
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: using this method does not transfer the ownership of the underlying buffer of the input
+ to the new instance. This means that consumers of this method must ensure that the input buffer
+ is either self-contained, (for example, a instance wrapping a new array that was
+ created), or that the owning object is not disposed until the returned is disposed.
+
+
+ If the input instance is one retrieved from an instance
+ rented from a memory pool (such as ), and that owning instance is disposed while the image is still
+ in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other
+ consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately.
+
+
+ The pixel type
+ The
+ The byte memory representing the pixel data.
+ The width of the memory image.
+ The height of the memory image.
+ The configuration is null.
+ An instance.
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: using this method does not transfer the ownership of the underlying buffer of the input
+ to the new instance. This means that consumers of this method must ensure that the input buffer
+ is either self-contained, (for example, a instance wrapping a new array that was
+ created), or that the owning object is not disposed until the returned is disposed.
+
+
+ If the input instance is one retrieved from an instance
+ rented from a memory pool (such as ), and that owning instance is disposed while the image is still
+ in use, this will lead to undefined behavior and possibly runtime crashes (as the same buffer might then be modified by other
+ consumers while the returned image is still working on it). Make sure to control the lifetime of the input buffers appropriately.
+
+
+ The pixel type.
+ The byte memory representing the pixel data.
+ The width of the memory image.
+ The height of the memory image.
+ An instance.
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels,
+ allowing to view/manipulate it as an instance.
+ The ownership of the is being transferred to the new instance,
+ meaning that the caller is not allowed to dispose .
+ It will be disposed together with the result image.
+
+ The pixel type
+ The
+ The that is being transferred to the image
+ The width of the memory image.
+ The height of the memory image.
+ The
+ The configuration is null.
+ The metadata is null.
+ An instance
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels,
+ allowing to view/manipulate it as an instance.
+ The ownership of the is being transferred to the new instance,
+ meaning that the caller is not allowed to dispose .
+ It will be disposed together with the result image.
+
+ The pixel type.
+ The
+ The that is being transferred to the image.
+ The width of the memory image.
+ The height of the memory image.
+ The configuration is null.
+ An instance
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels,
+ allowing to view/manipulate it as an instance.
+ The ownership of the is being transferred to the new instance,
+ meaning that the caller is not allowed to dispose .
+ It will be disposed together with the result image.
+
+ The pixel type
+ The that is being transferred to the image.
+ The width of the memory image.
+ The height of the memory image.
+ An instance.
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: this method relies on callers to carefully manage the target memory area being referenced by the
+ pointer and that the lifetime of such a memory area is at least equal to that of the returned
+ instance. For example, if the input pointer references an unmanaged memory area,
+ callers must ensure that the memory area is not freed as long as the returned is
+ in use and not disposed. The same applies if the input memory area points to a pinned managed object, as callers
+ must ensure that objects will remain pinned as long as the instance is in use.
+ Failing to do so constitutes undefined behavior and will likely lead to memory corruption and runtime crashes.
+
+
+ Note also that if you have a or an array (which can be cast to ) of
+ either or values, it is highly recommended to use one of the other
+ available overloads of this method instead (such as
+ or , to make the resulting code less error
+ prone and avoid having to pin the underlying memory buffer in use. This method is primarily meant to be used when
+ doing interop or working with buffers that are located in unmanaged memory.
+
+
+ The pixel type
+ The
+ The pointer to the target memory buffer to wrap.
+ The width of the memory image.
+ The height of the memory image.
+ The .
+ The configuration is null.
+ The metadata is null.
+ An instance
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: this method relies on callers to carefully manage the target memory area being referenced by the
+ pointer and that the lifetime of such a memory area is at least equal to that of the returned
+ instance. For example, if the input pointer references an unmanaged memory area,
+ callers must ensure that the memory area is not freed as long as the returned is
+ in use and not disposed. The same applies if the input memory area points to a pinned managed object, as callers
+ must ensure that objects will remain pinned as long as the instance is in use.
+ Failing to do so constitutes undefined behavior and will likely lead to memory corruption and runtime crashes.
+
+
+ Note also that if you have a or an array (which can be cast to ) of
+ either or values, it is highly recommended to use one of the other
+ available overloads of this method instead (such as
+ or , to make the resulting code less error
+ prone and avoid having to pin the underlying memory buffer in use. This method is primarily meant to be used when
+ doing interop or working with buffers that are located in unmanaged memory.
+
+
+ The pixel type
+ The
+ The pointer to the target memory buffer to wrap.
+ The width of the memory image.
+ The height of the memory image.
+ The configuration is null.
+ An instance.
+
+
+
+
+ Wraps an existing contiguous memory area of at least 'width' x 'height' pixels allowing viewing/manipulation as
+ an instance.
+
+
+ Please note: this method relies on callers to carefully manage the target memory area being referenced by the
+ pointer and that the lifetime of such a memory area is at least equal to that of the returned
+ instance. For example, if the input pointer references an unmanaged memory area,
+ callers must ensure that the memory area is not freed as long as the returned is
+ in use and not disposed. The same applies if the input memory area points to a pinned managed object, as callers
+ must ensure that objects will remain pinned as long as the instance is in use.
+ Failing to do so constitutes undefined behavior and will likely lead to memory corruption and runtime crashes.
+
+
+ Note also that if you have a or an array (which can be cast to ) of
+ either or values, it is highly recommended to use one of the other
+ available overloads of this method instead (such as
+ or , to make the resulting code less error
+ prone and avoid having to pin the underlying memory buffer in use. This method is primarily meant to be used when
+ doing interop or working with buffers that are located in unmanaged memory.
+
+
+ The pixel type.
+ The pointer to the target memory buffer to wrap.
+ The width of the memory image.
+ The height of the memory image.
+ An instance.
+
+
+
+ Represents a pixel-agnostic image frame containing all pixel data and .
+ In case of animated formats like gif, it contains the single frame in a animation.
+ In all other cases it is the only frame of the image.
+
+
+ Contains methods for loading raw pixel data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The frame width.
+ The frame height.
+ The .
+
+
+
+ Gets the width.
+
+
+
+
+ Gets the height.
+
+
+
+
+ Gets the metadata of the frame.
+
+
+
+
+
+
+
+ Gets the size of the frame.
+
+ The
+
+
+
+ Gets the bounds of the frame.
+
+ The
+
+
+
+
+
+
+ Disposes the object and frees resources for the Garbage Collector.
+
+ Whether to dispose of managed and unmanaged objects.
+
+
+
+ Updates the size of the image frame.
+
+
+
+
+ Create a new instance of the class from the given byte array in format.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The byte array containing image data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ A new .
+
+
+
+ Create a new instance of the class from the raw data.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The Span containing the image Pixel data.
+ The width of the final image.
+ The height of the final image.
+ The pixel format.
+ A new .
+
+
+
+ Encapsulates a pixel-agnostic collection of instances
+ that make up an .
+
+
+
+
+ Gets the number of frames.
+
+
+
+
+ Gets the root frame.
+
+
+
+
+ Gets the root frame. (Implements .)
+
+
+
+
+ Gets the at the specified index.
+
+
+ The .
+
+ The index.
+ The at the specified index.
+
+
+
+ Determines the index of a specific in the .
+
+ The to locate in the .
+ The index of item if found in the list; otherwise, -1.
+
+
+
+ Clones and inserts the into the at the specified .
+
+ The zero-based index to insert the frame at.
+ The to clone and insert into the .
+ Frame must have the same dimensions as the image.
+ The cloned .
+
+
+
+ Clones the frame and appends the clone to the end of the collection.
+
+ The raw pixel data to generate the from.
+ The cloned .
+
+
+
+ Removes the frame at the specified index and frees all freeable resources associated with it.
+
+ The zero-based index of the frame to remove.
+ Cannot remove last frame.
+
+
+
+ Determines whether the contains the .
+
+ The frame.
+
+ true if the contains the specified frame; otherwise, false.
+
+
+
+
+ Moves an from to .
+
+ The zero-based index of the frame to move.
+ The index to move the frame to.
+
+
+
+ Removes the frame at the specified index and creates a new image with only the removed frame
+ with the same metadata as the original image.
+
+ The zero-based index of the frame to export.
+ Cannot remove last frame.
+ The new with the specified frame.
+
+
+
+ Creates an with only the frame at the specified index
+ with the same metadata as the original image.
+
+ The zero-based index of the frame to clone.
+ The new with the specified frame.
+
+
+
+ Creates a new and appends it to the end of the collection.
+
+
+ The new .
+
+
+
+
+ Creates a new and appends it to the end of the collection.
+
+ The background color to initialize the pixels with.
+
+ The new .
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Throws if the image frame is disposed.
+
+
+
+
+ Disposes the object and frees resources for the Garbage Collector.
+
+ Whether to dispose of managed and unmanaged objects.
+
+
+
+ Implements .
+
+ The enumerator.
+
+
+
+ Implements the getter of the indexer.
+
+ The index.
+ The frame.
+
+
+
+ Implements .
+
+ The index.
+ The frame.
+ The new frame.
+
+
+
+ Implements .
+
+ The frame.
+ The new frame.
+
+
+
+ Implements .
+
+ The index.
+ The new image.
+
+
+
+ Implements .
+
+ The index.
+ The new image.
+
+
+
+ Implements .
+
+ The new frame.
+
+
+
+ Implements .
+
+ The background color.
+ The new frame.
+
+
+
+ Encapsulates a pixel-specific collection of instances
+ that make up an .
+
+ The type of the pixel.
+
+
+
+ Gets the number of frames.
+
+
+
+
+ Gets the root frame.
+
+
+
+
+ Gets root frame accessor in unsafe manner without any checks.
+
+
+ This property is most likely to be called from for indexing pixels.
+ already checks if it was disposed before querying for root frame.
+
+
+
+
+
+
+
+ Gets the at the specified index.
+
+
+ The .
+
+ The index.
+ The at the specified index.
+
+
+
+
+
+
+ Determines the index of a specific in the .
+
+ The to locate in the .
+ The index of item if found in the list; otherwise, -1.
+
+
+
+ Clones and inserts the into the at the specified .
+
+ The zero-based index to insert the frame at.
+ The to clone and insert into the .
+ Frame must have the same dimensions as the image.
+ The cloned .
+
+
+
+ Clones the frame and appends the clone to the end of the collection.
+
+ The raw pixel data to generate the from.
+ The cloned .
+
+
+
+ Creates a new frame from the pixel data with the same dimensions as the other frames and inserts the
+ new frame at the end of the collection.
+
+ The raw pixel data to generate the from.
+ The new .
+
+
+
+ Creates a new frame from the pixel data with the same dimensions as the other frames and inserts the
+ new frame at the end of the collection.
+
+ The raw pixel data to generate the from.
+ The new .
+
+
+
+ Removes the frame at the specified index and frees all freeable resources associated with it.
+
+ The zero-based index of the frame to remove.
+ Cannot remove last frame.
+
+
+
+
+
+
+ Determines whether the contains the .
+
+ The frame.
+
+ true if the contains the specified frame; otherwise, false.
+
+
+
+
+ Moves an from to .
+
+ The zero-based index of the frame to move.
+ The index to move the frame to.
+
+
+
+ Removes the frame at the specified index and creates a new image with only the removed frame
+ with the same metadata as the original image.
+
+ The zero-based index of the frame to export.
+ Cannot remove last frame.
+ The new with the specified frame.
+
+
+
+ Creates an with only the frame at the specified index
+ with the same metadata as the original image.
+
+ The zero-based index of the frame to clone.
+ The new with the specified frame.
+
+
+
+ Creates a new and appends it to the end of the collection.
+
+
+ The new .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates a new and appends it to the end of the collection.
+
+ The background color to initialize the pixels with.
+
+ The new .
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a pixel-specific image frame containing all pixel data and .
+ In case of animated formats like gif, it contains the single frame in a animation.
+ In all other cases it is the only frame of the image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The of the frame.
+ The metadata.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The metadata.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The color to clear the image with.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The color to clear the image with.
+ The metadata.
+
+
+
+ Initializes a new instance of the class wrapping an existing buffer.
+
+ The configuration providing initialization code which allows extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The memory source.
+
+
+
+ Initializes a new instance of the class wrapping an existing buffer.
+
+ The configuration providing initialization code which allows extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The memory source.
+ The metadata.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The source.
+
+
+
+
+
+
+ Gets or sets the pixel at the specified position.
+
+ The x-coordinate of the pixel. Must be greater than or equal to zero and less than the width of the image.
+ The y-coordinate of the pixel. Must be greater than or equal to zero and less than the height of the image.
+ The at the specified position.
+ Thrown when the provided (x,y) coordinates are outside the image boundary.
+
+
+
+ Execute to process image pixels in a safe and efficient manner.
+
+ The defining the pixel operations.
+
+
+
+ Execute to process pixels of multiple image frames in a safe and efficient manner.
+
+ The second image frame.
+ The defining the pixel operations.
+ The pixel type of the second image frame.
+
+
+
+ Execute to process pixels of multiple image frames in a safe and efficient manner.
+
+ The second image frame.
+ The third image frame.
+ The defining the pixel operations.
+ The pixel type of the second image frame.
+ The pixel type of the third image frame.
+
+
+
+ Copy image pixels to .
+
+ The to copy image pixels to.
+
+
+
+ Copy image pixels to .
+
+ The of to copy image pixels to.
+
+
+
+ Gets the representation of the pixels as a in the source image's pixel format
+ stored in row major order, if the backing buffer is contiguous.
+
+ To ensure the memory is contiguous, should be set
+ to true, preferably on a non-global configuration instance (not ).
+
+ WARNING: Disposing or leaking the underlying image while still working with the 's
+ might lead to memory corruption.
+
+ The referencing the image buffer.
+ The indicating the success.
+
+
+
+ Gets a reference to the pixel at the specified position.
+
+ The x-coordinate of the pixel. Must be greater than or equal to zero and less than the width of the image.
+ The y-coordinate of the pixel. Must be greater than or equal to zero and less than the height of the image.
+ The at the specified position.
+
+
+
+ Copies the pixels to a of the same size.
+
+ The target pixel buffer accessor.
+
+
+
+ Switches the buffers used by the image and the pixelSource meaning that the Image will "own" the buffer from the pixelSource and the pixelSource will now own the Images buffer.
+
+ The pixel source.
+
+
+
+
+
+
+
+
+
+ Clones the current instance.
+
+ The
+
+
+
+ Clones the current instance.
+
+ The configuration providing initialization code which allows extending the library.
+ The
+
+
+
+ Returns a copy of the image frame in the given pixel format.
+
+ The pixel format.
+ The
+
+
+
+ Returns a copy of the image frame in the given pixel format.
+
+ The pixel format.
+ The configuration providing initialization code which allows extending the library.
+ The
+
+
+
+ Clears the bitmap.
+
+ The value to initialize the bitmap with.
+
+
+
+ A implementing the clone logic for .
+
+
+
+
+
+
+
+ Contains information about the image including dimensions, pixel type information and additional metadata
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image pixel type information.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The images metadata.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension methods that allow the addition of geometry calculating methods to the type
+
+
+
+
+ Gets the bounds of the image.
+
+ The image info
+ The
+
+
+
+ Gets the bounds of the image.
+
+ The image info
+ The
+
+
+
+ Encapsulates an image, which consists of the pixel data for a graphics image and its attributes.
+ For generic -s the pixel type is known at compile time.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class
+ with the height and the width of the image.
+
+ The configuration providing initialization code which allows extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+
+
+
+ Initializes a new instance of the class
+ with the height and the width of the image.
+
+ The configuration providing initialization code which allows extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The color to initialize the pixels with.
+
+
+
+ Initializes a new instance of the class
+ with the height and the width of the image.
+
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The color to initialize the pixels with.
+
+
+
+ Initializes a new instance of the class
+ with the height and the width of the image.
+
+ The width of the image in pixels.
+ The height of the image in pixels.
+
+
+
+ Initializes a new instance of the class
+ with the height and the width of the image.
+
+ The configuration providing initialization code which allows extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The images metadata.
+
+
+
+ Initializes a new instance of the class
+ wrapping an external pixel bufferx.
+
+ The configuration providing initialization code which allows extending the library.
+ Pixel buffer.
+ The images metadata.
+
+
+
+ Initializes a new instance of the class
+ wrapping an external .
+
+ The configuration providing initialization code which allows extending the library.
+ The memory source.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The images metadata.
+
+
+
+ Initializes a new instance of the class
+ with the height and the width of the image.
+
+ The configuration providing initialization code which allows extending the library.
+ The width of the image in pixels.
+ The height of the image in pixels.
+ The color to initialize the pixels with.
+ The images metadata.
+
+
+
+ Initializes a new instance of the class
+ with the height and the width of the image.
+
+ The configuration providing initialization code which allows extending the library.
+ The images metadata.
+ The frames that will be owned by this image instance.
+
+
+
+
+
+
+ Gets the collection of image frames.
+
+
+
+
+ Gets the root frame.
+
+
+
+
+ Gets or sets the pixel at the specified position.
+
+ The x-coordinate of the pixel. Must be greater than or equal to zero and less than the width of the image.
+ The y-coordinate of the pixel. Must be greater than or equal to zero and less than the height of the image.
+ The at the specified position.
+ Thrown when the provided (x,y) coordinates are outside the image boundary.
+
+
+
+ Execute to process image pixels in a safe and efficient manner.
+
+ The defining the pixel operations.
+
+
+
+ Execute to process pixels of multiple images in a safe and efficient manner.
+
+ The second image.
+ The defining the pixel operations.
+ The pixel type of the second image.
+
+
+
+ Execute to process pixels of multiple images in a safe and efficient manner.
+
+ The second image.
+ The third image.
+ The defining the pixel operations.
+ The pixel type of the second image.
+ The pixel type of the third image.
+
+
+
+ Copy image pixels to .
+
+ The to copy image pixels to.
+
+
+
+ Copy image pixels to .
+
+ The of to copy image pixels to.
+
+
+
+ Gets the representation of the pixels as a in the source image's pixel format
+ stored in row major order, if the backing buffer is contiguous.
+
+ To ensure the memory is contiguous, should be set
+ to true, preferably on a non-global configuration instance (not ).
+
+ WARNING: Disposing or leaking the underlying image while still working with the 's
+ might lead to memory corruption.
+
+ The referencing the image buffer.
+ The indicating the success.
+
+
+
+ Clones the current image
+
+ Returns a new image with all the same metadata as the original.
+
+
+
+ Clones the current image with the given configuration.
+
+ The configuration providing initialization code which allows extending the library.
+ Returns a new with all the same pixel data as the original.
+
+
+
+ Returns a copy of the image in the given pixel format.
+
+ The pixel format.
+ The configuration providing initialization code which allows extending the library.
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Switches the buffers used by the image and the pixelSource meaning that the Image will "own" the buffer from the pixelSource and the pixelSource will now own the Images buffer.
+
+ The pixel source.
+
+
+
+ A pixel-specific image frame where each pixel buffer value represents an index in a color palette.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+
+ The configuration which allows altering default behaviour or extending the library.
+
+ The frame width.
+ The frame height.
+ The color palette.
+
+
+
+ Gets the configuration which allows altering default behaviour or extending the library.
+
+
+
+
+ Gets the width of this .
+
+
+
+
+ Gets the height of this .
+
+
+
+
+ Gets the color palette of this .
+
+
+
+
+
+
+
+ Gets the representation of the pixels as a of contiguous memory
+ at row beginning from the first pixel on that row.
+
+ WARNING: Disposing or leaking the underlying while still working with it's
+ might lead to memory corruption.
+
+ The row index in the pixel buffer.
+ The pixel row as a .
+
+
+
+
+ Gets the representation of the pixels as a of contiguous memory
+ at row beginning from the first pixel on that row.
+
+
+ Note: Values written to this span are not sanitized against the palette length.
+ Care should be taken during assignment to prevent out-of-bounds errors.
+
+
+ The row index in the pixel buffer.
+ The pixel row as a .
+
+
+
+
+
+
+ A readonly stream that add a secondary level buffer in addition to native stream
+ buffered reading to reduce the overhead of small incremental reads.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The input stream.
+
+
+
+ Gets the number indicating the EOF hits occured while reading from this instance.
+
+
+
+
+ Gets the size, in bytes, of the underlying buffer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets remaining byte count available to read.
+
+
+
+
+ Gets the underlying stream.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This operation is not supported in .
+
+
+
+
+
+ This operation is not supported in .
+
+
+
+
+
+
+
+ Provides an in-memory stream composed of non-contiguous chunks that doesn't need to be resized.
+ Chunks are allocated by the assigned via the constructor
+ and is designed to take advantage of buffer pooling when available.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copy entire buffer into an array.
+
+ The .
+
+
+
+ Write remainder of this stream to another stream.
+
+ The stream to write to.
+
+
+
+ A simple interface representing the filesystem.
+
+
+
+
+ Returns a readable stream as defined by the path.
+
+ Path to the file to open.
+ A stream representing the file to open.
+
+
+
+ Creates or opens a file and returns it as a writable stream as defined by the path.
+
+ Path to the file to open.
+ A stream representing the file to open.
+
+
+
+ A wrapper around the local File apis.
+
+
+
+
+
+
+
+
+
+
+ Options for allocating buffers.
+
+
+
+
+ Indicates that the buffer should just be allocated.
+
+
+
+
+ Indicates that the allocated buffer should be cleaned following allocation.
+
+
+
+
+ Wraps an array as an instance.
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The array.
+ The length of the buffer.
+
+
+
+ Initializes a new instance of the class.
+
+ The array.
+
+
+
+ Gets the array.
+
+
+
+
+ Gets the length.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines an common interface for ref-counted objects.
+
+
+
+
+ Increments the reference counter.
+
+
+
+
+ Decrements the reference counter.
+
+
+
+
+ Provides a base class for implementations by implementing pinning logic for adaption.
+
+ The element type.
+
+
+
+
+
+
+
+
+
+ Gets the object that should be pinned.
+
+ The pinnable .
+
+
+
+ Implements reference counting lifetime guard mechanism for memory resources
+ and maintains the value of .
+
+
+
+
+ Rent a single buffer. If the pool is full, return .
+
+
+
+
+ Rent buffers or return 'null' if the pool is full.
+
+
+
+
+ Defines a strategy for managing unmanaged memory ownership.
+
+
+
+
+ Allocates and provides an implementation giving
+ access to unmanaged buffers allocated by .
+
+ The element type.
+
+
+
+
+
+
+
+
+
+
+
+
+ Encapsulates the functionality around allocating and releasing unmanaged memory. NOT a .
+
+
+
+
+ Gets the total outstanding handle allocations for testing purposes.
+
+
+
+
+ Gets the total number -s retried.
+
+
+
+
+ Memory managers are used to allocate memory for image processing operations.
+
+
+
+
+ Gets the default platform-specific global instance that
+ serves as the default value for .
+
+ This is a get-only property,
+ you should set 's
+ to change the default allocator used by and it's operations.
+
+
+
+
+ Gets the length of the largest contiguous buffer that can be handled by this allocator instance in bytes.
+
+ The length of the largest contiguous buffer that can be handled by this allocator instance.
+
+
+
+ Creates a default instance of a optimized for the executing platform.
+
+ The .
+
+
+
+ Creates the default using the provided options.
+
+ The .
+ The .
+
+
+
+ Allocates an , holding a of length .
+
+ Type of the data stored in the buffer.
+ Size of the buffer to allocate.
+ The allocation options.
+ A buffer of values of type .
+ When length is zero or negative.
+ When length is over the capacity of the allocator.
+
+
+
+ Releases all retained resources not being in use.
+ Eg: by resetting array pools and letting GC to free the arrays.
+
+
+
+
+ Allocates a .
+
+ The type of element to allocate.
+ The total length of the buffer.
+ The expected alignment (eg. to make sure image rows fit into single buffers).
+ The .
+ A new .
+ Thrown when 'blockAlignment' converted to bytes is greater than the buffer capacity of the allocator.
+
+
+
+ Defines options for creating the default .
+
+
+
+
+ Gets or sets a value defining the maximum size of the 's internal memory pool
+ in Megabytes. means platform default.
+
+
+
+
+ Gets or sets a value defining the maximum (discontiguous) buffer size that can be allocated by the allocator in Megabytes.
+ means platform default: 1GB on 32-bit processes, 4GB on 64-bit processes.
+
+
+
+
+ Implements by newing up managed arrays on every allocation request.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A implementation that allocates memory on the unmanaged heap
+ without any pooling.
+
+
+
+
+ Defines extension methods for .
+
+
+
+
+ Gets the backing .
+
+ The buffer.
+ The element type.
+ The MemoryGroup.
+
+
+
+ TODO: Does not work with multi-buffer groups, should be specific to Resize.
+ Copy columns of inplace,
+ from positions starting at to positions at .
+
+
+
+
+ Returns a representing the full area of the buffer.
+
+ The element type
+ The
+ The
+
+
+
+ Return a to the subregion represented by 'rectangle'
+
+ The element type
+ The
+ The rectangle subregion
+ The
+
+
+
+ Return a to the whole area of 'buffer'
+
+ The element type
+ The
+ The
+
+
+
+ Returns the size of the buffer.
+
+ The element type
+ The
+ The of the buffer
+
+
+
+ Gets the bounds of the buffer.
+
+ The
+
+
+
+ Represents a rectangular region inside a 2D memory buffer ().
+
+ The element type.
+
+
+
+ Initializes a new instance of the struct.
+
+ The .
+ The defining a rectangular area within the buffer.
+
+
+
+ Initializes a new instance of the struct.
+
+ The .
+
+
+
+ Gets the rectangle specifying the boundaries of the area in .
+
+
+
+
+ Gets the being pointed by this instance.
+
+
+
+
+ Gets the width
+
+
+
+
+ Gets the height
+
+
+
+
+ Gets the pixel stride which is equal to the width of .
+
+
+
+
+ Gets the size of the area.
+
+
+
+
+ Gets a value indicating whether the area refers to the entire
+
+
+
+
+ Gets or sets a value at the given index.
+
+ The position inside a row
+ The row index
+ The reference to the value
+
+
+
+ Gets a span to row 'y' inside this area.
+
+ The row index
+ The span
+
+
+
+ Returns a subregion as . (Similar to .)
+
+ The x index at the subregion origin.
+ The y index at the subregion origin.
+ The desired width of the subregion.
+ The desired height of the subregion.
+ The subregion
+
+
+
+ Returns a subregion as . (Similar to .)
+
+ The specifying the boundaries of the subregion
+ The subregion
+
+
+
+ Gets a reference to the [0,0] element.
+
+ The reference to the [0,0] element
+
+
+
+ Represents a buffer of value type objects
+ interpreted as a 2D region of x elements.
+
+
+ Before RC1, this class might be target of API changes, use it on your own risk!
+
+ The value type.
+
+
+
+ Initializes a new instance of the class.
+
+ The to wrap.
+ The number of elements in a row.
+ The number of rows.
+
+
+
+ Gets the width.
+
+
+
+
+ Gets the height.
+
+
+
+
+ Gets the backing .
+
+ The MemoryGroup.
+
+
+
+ Gets the backing without the view abstraction.
+
+
+ This property has been kept internal intentionally.
+ It's public counterpart is ,
+ which only exposes the view of the MemoryGroup.
+
+
+
+
+ Gets a reference to the element at the specified position.
+
+ The x coordinate (row)
+ The y coordinate (position at row)
+ A reference to the element.
+ When index is out of range of the buffer.
+
+
+
+ Disposes the instance
+
+
+
+
+ Gets a to the row 'y' beginning from the pixel at the first pixel on that row.
+
+
+ This method does not validate the y argument for performance reason,
+ is being propagated from lower levels.
+
+ The row index.
+ The of the pixels in the row.
+ Thrown when row index is out of range.
+
+
+
+ Gets a to the row 'y' beginning from the pixel at the first pixel on that row.
+
+ The y (row) coordinate.
+ The .
+
+
+
+ Gets a to the backing data if the backing group consists of a single contiguous memory buffer.
+ Throws otherwise.
+
+ The referencing the memory area.
+
+ Thrown when the backing group is discontiguous.
+
+
+
+
+ Gets a to the backing data of if the backing group consists of a single contiguous memory buffer.
+ Throws otherwise.
+
+ The .
+
+ Thrown when the backing group is discontiguous.
+
+
+
+
+ Swaps the contents of 'destination' with 'source' if the buffers are owned (1),
+ copies the contents of 'source' to 'destination' otherwise (2). Buffers should be of same size in case 2!
+
+
+
+
+ A custom that can wrap of instances
+ and cast them to be for any arbitrary unmanaged value type.
+
+ The value type to use when casting the wrapped instance.
+
+
+
+ The wrapped of instance.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The of instance to wrap.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A custom that can wrap of instances
+ and cast them to be for any arbitrary unmanaged value type.
+
+ The value type to use when casting the wrapped instance.
+
+
+
+ Initializes a new instance of the class.
+
+ The of instance to wrap.
+
+
+
+
+
+
+
+
+
+ Represents discontiguous group of multiple uniformly-sized memory segments.
+ The last segment can be smaller than the preceding ones.
+
+ The element type.
+
+
+
+ Gets the number of elements per contiguous sub-buffer preceding the last buffer.
+ The last buffer is allowed to be smaller.
+
+
+
+
+ Gets the aggregate number of elements in the group.
+
+
+
+
+ Gets a value indicating whether the group has been invalidated.
+
+
+ Invalidation usually occurs when an image processor capable to alter the image dimensions replaces
+ the image buffers internally.
+
+
+
+
+ Returns a value-type implementing an allocation-free enumerator of the memory groups in the current
+ instance. The return type shouldn't be used directly: just use a block on
+ the instance in use and the C# compiler will automatically invoke this
+ method behind the scenes. This method takes precedence over the
+ implementation, which is still available when casting to one of the underlying interfaces.
+
+ A new instance mapping the current values in use.
+
+
+
+ A value-type enumerator for instances.
+
+ The element type.
+
+
+
+
+
+
+
+
+
+ Returns a slice that is expected to be within the bounds of a single buffer.
+ Otherwise is thrown.
+
+
+
+
+ Cached pointer or array data enabling fast access from
+ known implementations.
+
+
+
+
+ Implements , defining a view for
+ rather than owning the segments.
+
+
+ This type provides an indirection, protecting the users of publicly exposed memory API-s
+ from internal memory-swaps. Whenever an internal swap happens, the
+ instance becomes invalid, throwing an exception on all operations.
+
+ The element type.
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents discontinuous group of multiple uniformly-sized memory segments.
+ The underlying buffers may change with time, therefore it's not safe to expose them directly on
+ and .
+
+ The element type.
+
+
+
+ A implementation that consumes the underlying memory buffers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates a new memory group, allocating it's buffers with the provided allocator.
+
+ The to use.
+ The total length of the buffer.
+ The expected alignment (eg. to make sure image rows fit into single buffers).
+ The .
+ A new .
+ Thrown when 'blockAlignment' converted to bytes is greater than the buffer capacity of the allocator.
+
+
+
+ Returns the slice of the buffer starting at global index that goes until the end of the buffer.
+
+
+
+
+ A implementation that owns the underlying memory buffers.
+
+
+
+
+
+
+
+
+
+
+ Selects active values in .
+
+
+
+
+ Exception thrown when the library detects an invalid memory allocation request,
+ or an attempt has been made to use an invalidated .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception message text.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Extension methods for .
+
+
+
+
+ Allocates a buffer of value type objects interpreted as a 2D region
+ of x elements.
+
+ The type of buffer items to allocate.
+ The memory allocator.
+ The buffer width.
+ The buffer height.
+ A value indicating whether the allocated buffer should be contiguous, unless bigger than .
+ The allocation options.
+ The .
+
+
+
+ Allocates a buffer of value type objects interpreted as a 2D region
+ of x elements.
+
+ The type of buffer items to allocate.
+ The memory allocator.
+ The buffer width.
+ The buffer height.
+ The allocation options.
+ The .
+
+
+
+ Allocates a buffer of value type objects interpreted as a 2D region
+ of width x height elements.
+
+ The type of buffer items to allocate.
+ The memory allocator.
+ The buffer size.
+ A value indicating whether the allocated buffer should be contiguous, unless bigger than .
+ The allocation options.
+ The .
+
+
+
+ Allocates a buffer of value type objects interpreted as a 2D region
+ of width x height elements.
+
+ The type of buffer items to allocate.
+ The memory allocator.
+ The buffer size.
+ The allocation options.
+ The .
+
+
+
+ Allocates padded buffers. Generally used by encoder/decoders.
+
+ The .
+ Pixel count in the row
+ The pixel size in bytes, eg. 3 for RGB.
+ The padding.
+ A .
+
+
+
+ Extension methods for
+
+
+
+
+ Gets a from an instance.
+
+ The buffer
+ The
+
+
+
+ Gets the length of an internal buffer.
+
+ The buffer
+ The length of the buffer
+
+
+
+ Gets a to an offsetted position inside the buffer.
+
+ The buffer
+ The start
+ The
+
+
+
+ Gets a to an offsetted position inside the buffer.
+
+ The buffer
+ The start
+ The length of the slice
+ The
+
+
+
+ Clears the contents of this buffer.
+
+ The buffer
+
+
+
+ Gets a reference to the first item in the internal buffer for an instance.
+
+ The buffer
+ A reference to the first item within the memory wrapped by
+
+
+
+ Represents an interval of rows in a and/or
+
+
+ Before RC1, this class might be target of API changes, use it on your own risk!
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The inclusive minimum row.
+ The exclusive maximum row.
+
+
+
+ Gets the inclusive minimum row.
+
+
+
+
+ Gets the exclusive maximum row.
+
+
+
+
+ Gets the difference ( - ).
+
+
+
+
+ Returns a boolean indicating whether the given two -s are equal.
+
+ The first to compare.
+ The second to compare.
+ True if the given -s are equal; False otherwise.
+
+
+
+ Returns a boolean indicating whether the given two -s are not equal.
+
+ The first to compare.
+ The second to compare.
+ True if the given -s are not equal; False otherwise.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A custom that can wrap a rawpointer to a buffer of a specified type.
+
+ The value type to use when casting the wrapped instance.
+ This manager doesn't own the memory buffer that it points to.
+
+
+
+ The pointer to the memory buffer.
+
+
+
+
+ The length of the memory area.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The pointer to the memory buffer.
+ The length of the memory area.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enumerated frame process modes to apply to multi-frame images.
+
+
+
+
+ Decodes all the frames of a multi-frame image.
+
+
+
+
+ Decodes only the first frame of a multi-frame image.
+
+
+
+
+ Encapsulates the metadata of an image frame.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ by making a copy from other metadata.
+
+
+ The other to create this instance from.
+
+
+
+
+ Gets or sets the Exif profile.
+
+
+
+
+ Gets or sets the XMP profile.
+
+
+
+
+ Gets or sets the list of ICC profiles.
+
+
+
+
+ Gets or sets the iptc profile.
+
+
+
+
+
+
+
+ Gets the metadata value associated with the specified key.
+
+ The type of format metadata.
+ The type of format frame metadata.
+ The key of the value to get.
+
+ The .
+
+
+
+
+ Encapsulates the metadata of an image.
+
+
+
+
+ The default horizontal resolution value (dots per inch) in x direction.
+ The default value is 96 .
+
+
+
+
+ The default vertical resolution value (dots per inch) in y direction.
+ The default value is 96 .
+
+
+
+
+ The default pixel resolution units.
+ The default value is .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ by making a copy from other metadata.
+
+
+ The other to create this instance from.
+
+
+
+
+ Gets or sets the resolution of the image in x- direction.
+ It is defined as the number of dots per and should be an positive value.
+
+ The density of the image in x- direction.
+
+
+
+ Gets or sets the resolution of the image in y- direction.
+ It is defined as the number of dots per and should be an positive value.
+
+ The density of the image in y- direction.
+
+
+
+ Gets or sets unit of measure used when reporting resolution.
+
+
+ Value
+ Unit
+
+ -
+ AspectRatio (00)
+ No units; width:height pixel aspect ratio = Ydensity:Xdensity
+
+ -
+ PixelsPerInch (01)
+ Pixels per inch (2.54 cm)
+
+ -
+ PixelsPerCentimeter (02)
+ Pixels per centimeter
+
+ -
+ PixelsPerMeter (03)
+ Pixels per meter (100 cm)
+
+
+
+
+
+
+ Gets or sets the Exif profile.
+
+
+
+
+ Gets or sets the XMP profile.
+
+
+
+
+ Gets or sets the list of ICC profiles.
+
+
+
+
+ Gets or sets the IPTC profile.
+
+
+
+
+ Gets the metadata value associated with the specified key.
+
+ The type of metadata.
+ The key of the value to get.
+
+ The .
+
+
+
+
+
+
+
+ Synchronizes the profiles with the current metadata.
+
+
+
+
+ Provides enumeration of available pixel density units.
+
+
+
+
+ No units; width:height pixel aspect ratio.
+
+
+
+
+ Pixels per inch (2.54 cm).
+
+
+
+
+ Pixels per centimeter.
+
+
+
+
+ Pixels per meter (100 cm).
+
+
+
+
+ Specifies exif data types.
+
+
+
+
+ Unknown
+
+
+
+
+ An 8-bit unsigned integer.
+
+
+
+
+ An 8-bit byte containing one 7-bit ASCII code. The final byte is terminated with NULL.
+
+ Although the standard defines ASCII this has commonly been ignored as
+ ASCII cannot properly encode text in many languages.
+
+
+
+
+
+ A 16-bit (2-byte) unsigned integer.
+
+
+
+
+ A 32-bit (4-byte) unsigned integer.
+
+
+
+
+ Two LONGs. The first LONG is the numerator and the second LONG expresses the denominator.
+
+
+
+
+ An 8-bit signed integer.
+
+
+
+
+ An 8-bit byte that can take any value depending on the field definition.
+
+
+
+
+ A 16-bit (2-byte) signed integer.
+
+
+
+
+ A 32-bit (4-byte) signed integer (2's complement notation).
+
+
+
+
+ Two SLONGs. The first SLONG is the numerator and the second SLONG is the denominator.
+
+
+
+
+ A 32-bit single precision floating point value.
+
+
+
+
+ A 64-bit double precision floating point value.
+
+
+
+
+ Reference to an IFD (32-bit (4-byte) unsigned integer).
+
+
+
+
+ A 64-bit (8-byte) unsigned integer.
+
+
+
+
+ A 64-bit (8-byte) signed integer (2's complement notation).
+
+
+
+
+ Reference to an IFD (64-bit (8-byte) unsigned integer).
+
+
+
+
+ Gets the size in bytes of the given data type.
+
+ The data type.
+
+ The .
+
+
+ Thrown if the type is unsupported.
+
+
+
+
+ Specifies which parts will be written when the profile is added to an image.
+
+
+
+
+ None
+
+
+
+
+ IfdTags
+
+
+
+
+ ExifTags
+
+
+
+
+ GPSTags
+
+
+
+
+ All
+
+
+
+
+ Represents an EXIF profile providing access to the collection of values.
+
+
+
+
+ The byte array to read the EXIF profile from.
+
+
+
+
+ The collection of EXIF values
+
+
+
+
+ The thumbnail offset position in the byte stream
+
+
+
+
+ The thumbnail length in the byte stream
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The byte array to read the EXIF profile from.
+
+
+
+ Initializes a new instance of the class.
+
+ The values.
+ The invalid tags.
+
+
+
+ Initializes a new instance of the class
+ by making a copy from another EXIF profile.
+
+ The other EXIF profile, where the clone should be made from.
+ is null.>
+
+
+
+ Gets or sets which parts will be written when the profile is added to an image.
+
+
+
+
+ Gets the tags that where found but contained an invalid value.
+
+
+
+
+ Gets the values of this EXIF profile.
+
+
+
+
+ Returns the thumbnail in the EXIF profile when available.
+
+
+ The .
+
+
+
+
+ Returns the thumbnail in the EXIF profile when available.
+
+ The pixel format.
+
+ The .
+
+
+
+
+ Returns the value with the specified tag.
+
+ The tag of the exif value.
+ The value with the specified tag.
+ The data type of the tag.
+
+
+
+ Removes the value with the specified tag.
+
+ The tag of the EXIF value.
+
+ True, if the value was removed, otherwise false.
+
+
+
+
+ Sets the value of the specified tag.
+
+ The tag of the exif value.
+ The value.
+ The data type of the tag.
+
+
+
+ Converts this instance to a byte array.
+
+ The
+
+
+
+
+
+
+ Returns the value with the specified tag.
+
+ The tag of the exif value.
+ The value with the specified tag.
+
+
+
+ Sets the value of the specified tag.
+
+ The tag of the exif value.
+ The value.
+
+
+
+ Synchronizes the profiles with the specified metadata.
+
+ The metadata.
+
+
+
+ Reads and returns the collection of EXIF values.
+
+
+ The .
+
+
+
+
+ Reads and parses EXIF data from a stream.
+
+
+
+
+ Gets the invalid tags.
+
+
+
+
+ Gets or sets the thumbnail length in the byte stream.
+
+
+
+
+ Gets or sets the thumbnail offset position in the byte stream.
+
+
+
+
+ Reads the values to the values collection.
+
+ The values.
+ The IFD offset.
+
+
+
+ Class that provides a description for an ExifTag value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The value of the exif tag.
+ The description for the value of the exif tag.
+
+
+
+ Gets the tag description from any custom attributes.
+
+ The tag.
+ The value.
+
+ The .
+
+
+
+
+ Contains methods for writing EXIF metadata.
+
+
+
+
+ Which parts will be written.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The values.
+ The allowed parts.
+
+
+
+ Returns the EXIF data.
+
+
+ The .
+
+
+
+
+
+
+ Class that represents an exif tag from the Exif standard 2.31.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the FaxProfile exif tag.
+
+
+
+
+ Gets the ModeNumber exif tag.
+
+
+
+
+ Gets the GPSAltitudeRef exif tag.
+
+
+
+
+ Gets the ClipPath exif tag.
+
+
+
+
+ Gets the VersionYear exif tag.
+
+
+
+
+ Gets the XMP exif tag.
+
+
+
+
+ Gets the IPTC exif tag.
+
+
+
+
+ Gets the IccProfile exif tag.
+
+
+
+
+ Gets the CFAPattern2 exif tag.
+
+
+
+
+ Gets the TIFFEPStandardID exif tag.
+
+
+
+
+ Gets the GPSVersionID exif tag.
+
+
+
+
+ Converts the specified to a .
+
+ The to convert.
+
+
+
+ Determines whether the specified instances are considered equal.
+
+ The first to compare.
+ The second to compare.
+
+
+
+ Determines whether the specified instances are not considered equal.
+
+ The first to compare.
+ The second to compare.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the PixelScale exif tag.
+
+
+
+
+ Gets the IntergraphMatrix exif tag.
+
+
+
+
+ Gets the ModelTiePoint exif tag.
+
+
+
+
+ Gets the ModelTransform exif tag.
+
+
+
+
+ Gets the UserComment exif tag.
+
+
+
+
+ Gets the GPSProcessingMethod exif tag.
+
+
+
+
+ Gets the GPSAreaInformation exif tag.
+
+
+
+
+ Gets the SubfileType exif tag.
+
+
+
+
+ Gets the SubIFDOffset exif tag.
+
+
+
+
+ Gets the GPSIFDOffset exif tag.
+
+
+
+
+ Gets the T4Options exif tag.
+
+
+
+
+ Gets the T6Options exif tag.
+
+
+
+
+ Gets the XClipPathUnits exif tag.
+
+
+
+
+ Gets the YClipPathUnits exif tag.
+
+
+
+
+ Gets the ProfileType exif tag.
+
+
+
+
+ Gets the CodingMethods exif tag.
+
+
+
+
+ Gets the T82ptions exif tag.
+
+
+
+
+ Gets the JPEGInterchangeFormat exif tag.
+
+
+
+
+ Gets the JPEGInterchangeFormatLength exif tag.
+
+
+
+
+ Gets the MDFileTag exif tag.
+
+
+
+
+ Gets the StandardOutputSensitivity exif tag.
+
+
+
+
+ Gets the RecommendedExposureIndex exif tag.
+
+
+
+
+ Gets the ISOSpeed exif tag.
+
+
+
+
+ Gets the ISOSpeedLatitudeyyy exif tag.
+
+
+
+
+ Gets the ISOSpeedLatitudezzz exif tag.
+
+
+
+
+ Gets the FaxRecvParams exif tag.
+
+
+
+
+ Gets the FaxRecvTime exif tag.
+
+
+
+
+ Gets the ImageNumber exif tag.
+
+
+
+
+ Gets the FreeOffsets exif tag.
+
+
+
+
+ Gets the FreeByteCounts exif tag.
+
+
+
+
+ Gets the ColorResponseUnit exif tag.
+
+
+
+
+ Gets the TileOffsets exif tag.
+
+
+
+
+ Gets the SMinSampleValue exif tag.
+
+
+
+
+ Gets the SMaxSampleValue exif tag.
+
+
+
+
+ Gets the JPEGQTables exif tag.
+
+
+
+
+ Gets the JPEGDCTables exif tag.
+
+
+
+
+ Gets the JPEGACTables exif tag.
+
+
+
+
+ Gets the StripRowCounts exif tag.
+
+
+
+
+ Gets the IntergraphRegisters exif tag.
+
+
+
+
+ Gets the TimeZoneOffset exif tag.
+
+
+
+
+ Gets the offset to child IFDs exif tag.
+
+
+
+
+ Gets the ImageWidth exif tag.
+
+
+
+
+ Gets the ImageLength exif tag.
+
+
+
+
+ Gets the RowsPerStrip exif tag.
+
+
+
+
+ Gets the TileWidth exif tag.
+
+
+
+
+ Gets the TileLength exif tag.
+
+
+
+
+ Gets the BadFaxLines exif tag.
+
+
+
+
+ Gets the ConsecutiveBadFaxLines exif tag.
+
+
+
+
+ Gets the PixelXDimension exif tag.
+
+
+
+
+ Gets the PixelYDimension exif tag.
+
+
+
+
+ Gets the StripOffsets exif tag.
+
+
+
+
+ Gets the StripByteCounts exif tag.
+
+
+
+
+ Gets the TileByteCounts exif tag.
+
+
+
+
+ Gets the ImageLayer exif tag.
+
+
+
+
+ Gets the XPosition exif tag.
+
+
+
+
+ Gets the YPosition exif tag.
+
+
+
+
+ Gets the XResolution exif tag.
+
+
+
+
+ Gets the YResolution exif tag.
+
+
+
+
+ Gets the BatteryLevel exif tag.
+
+
+
+
+ Gets the ExposureTime exif tag.
+
+
+
+
+ Gets the FNumber exif tag.
+
+
+
+
+ Gets the MDScalePixel exif tag.
+
+
+
+
+ Gets the CompressedBitsPerPixel exif tag.
+
+
+
+
+ Gets the ApertureValue exif tag.
+
+
+
+
+ Gets the MaxApertureValue exif tag.
+
+
+
+
+ Gets the SubjectDistance exif tag.
+
+
+
+
+ Gets the FocalLength exif tag.
+
+
+
+
+ Gets the FlashEnergy2 exif tag.
+
+
+
+
+ Gets the FocalPlaneXResolution2 exif tag.
+
+
+
+
+ Gets the FocalPlaneYResolution2 exif tag.
+
+
+
+
+ Gets the ExposureIndex2 exif tag.
+
+
+
+
+ Gets the Humidity exif tag.
+
+
+
+
+ Gets the Pressure exif tag.
+
+
+
+
+ Gets the Acceleration exif tag.
+
+
+
+
+ Gets the FlashEnergy exif tag.
+
+
+
+
+ Gets the FocalPlaneXResolution exif tag.
+
+
+
+
+ Gets the FocalPlaneYResolution exif tag.
+
+
+
+
+ Gets the ExposureIndex exif tag.
+
+
+
+
+ Gets the DigitalZoomRatio exif tag.
+
+
+
+
+ Gets the GPSAltitude exif tag.
+
+
+
+
+ Gets the GPSDOP exif tag.
+
+
+
+
+ Gets the GPSSpeed exif tag.
+
+
+
+
+ Gets the GPSTrack exif tag.
+
+
+
+
+ Gets the GPSImgDirection exif tag.
+
+
+
+
+ Gets the GPSDestBearing exif tag.
+
+
+
+
+ Gets the GPSDestDistance exif tag.
+
+
+
+
+ Gets the WhitePoint exif tag.
+
+
+
+
+ Gets the PrimaryChromaticities exif tag.
+
+
+
+
+ Gets the YCbCrCoefficients exif tag.
+
+
+
+
+ Gets the ReferenceBlackWhite exif tag.
+
+
+
+
+ Gets the GPSLatitude exif tag.
+
+
+
+
+ Gets the GPSLongitude exif tag.
+
+
+
+
+ Gets the GPSTimestamp exif tag.
+
+
+
+
+ Gets the GPSDestLatitude exif tag.
+
+
+
+
+ Gets the GPSDestLongitude exif tag.
+
+
+
+
+ Gets the LensSpecification exif tag.
+
+
+
+
+ Gets the OldSubfileType exif tag.
+
+
+
+
+ Gets the Compression exif tag.
+
+
+
+
+ Gets the PhotometricInterpretation exif tag.
+
+
+
+
+ Gets the Thresholding exif tag.
+
+
+
+
+ Gets the CellWidth exif tag.
+
+
+
+
+ Gets the CellLength exif tag.
+
+
+
+
+ Gets the FillOrder exif tag.
+
+
+
+
+ Gets the Orientation exif tag.
+
+
+
+
+ Gets the SamplesPerPixel exif tag.
+
+
+
+
+ Gets the PlanarConfiguration exif tag.
+
+
+
+
+ Gets the Predictor exif tag.
+
+
+
+
+ Gets the GrayResponseUnit exif tag.
+
+
+
+
+ Gets the ResolutionUnit exif tag.
+
+
+
+
+ Gets the CleanFaxData exif tag.
+
+
+
+
+ Gets the InkSet exif tag.
+
+
+
+
+ Gets the NumberOfInks exif tag.
+
+
+
+
+ Gets the DotRange exif tag.
+
+
+
+
+ Gets the Indexed exif tag.
+
+
+
+
+ Gets the OPIProxy exif tag.
+
+
+
+
+ Gets the JPEGProc exif tag.
+
+
+
+
+ Gets the JPEGRestartInterval exif tag.
+
+
+
+
+ Gets the YCbCrPositioning exif tag.
+
+
+
+
+ Gets the Rating exif tag.
+
+
+
+
+ Gets the RatingPercent exif tag.
+
+
+
+
+ Gets the ExposureProgram exif tag.
+
+
+
+
+ Gets the Interlace exif tag.
+
+
+
+
+ Gets the SelfTimerMode exif tag.
+
+
+
+
+ Gets the SensitivityType exif tag.
+
+
+
+
+ Gets the MeteringMode exif tag.
+
+
+
+
+ Gets the LightSource exif tag.
+
+
+
+
+ Gets the FocalPlaneResolutionUnit2 exif tag.
+
+
+
+
+ Gets the SensingMethod2 exif tag.
+
+
+
+
+ Gets the Flash exif tag.
+
+
+
+
+ Gets the ColorSpace exif tag.
+
+
+
+
+ Gets the FocalPlaneResolutionUnit exif tag.
+
+
+
+
+ Gets the SensingMethod exif tag.
+
+
+
+
+ Gets the CustomRendered exif tag.
+
+
+
+
+ Gets the ExposureMode exif tag.
+
+
+
+
+ Gets the WhiteBalance exif tag.
+
+
+
+
+ Gets the FocalLengthIn35mmFilm exif tag.
+
+
+
+
+ Gets the SceneCaptureType exif tag.
+
+
+
+
+ Gets the GainControl exif tag.
+
+
+
+
+ Gets the Contrast exif tag.
+
+
+
+
+ Gets the Saturation exif tag.
+
+
+
+
+ Gets the Sharpness exif tag.
+
+
+
+
+ Gets the SubjectDistanceRange exif tag.
+
+
+
+
+ Gets the GPSDifferential exif tag.
+
+
+
+
+ Gets the BitsPerSample exif tag.
+
+
+
+
+ Gets the MinSampleValue exif tag.
+
+
+
+
+ Gets the MaxSampleValue exif tag.
+
+
+
+
+ Gets the GrayResponseCurve exif tag.
+
+
+
+
+ Gets the ColorMap exif tag.
+
+
+
+
+ Gets the ExtraSamples exif tag.
+
+
+
+
+ Gets the PageNumber exif tag.
+
+
+
+
+ Gets the TransferFunction exif tag.
+
+
+
+
+ Gets the HalftoneHints exif tag.
+
+
+
+
+ Gets the SampleFormat exif tag.
+
+
+
+
+ Gets the TransferRange exif tag.
+
+
+
+
+ Gets the DefaultImageColor exif tag.
+
+
+
+
+ Gets the JPEGLosslessPredictors exif tag.
+
+
+
+
+ Gets the JPEGPointTransforms exif tag.
+
+
+
+
+ Gets the YCbCrSubsampling exif tag.
+
+
+
+
+ Gets the CFARepeatPatternDim exif tag.
+
+
+
+
+ Gets the IntergraphPacketData exif tag.
+
+
+
+
+ Gets the ISOSpeedRatings exif tag.
+
+
+
+
+ Gets the SubjectArea exif tag.
+
+
+
+
+ Gets the SubjectLocation exif tag.
+
+
+
+
+ Gets the ShutterSpeedValue exif tag.
+
+
+
+
+ Gets the BrightnessValue exif tag.
+
+
+
+
+ Gets the ExposureBiasValue exif tag.
+
+
+
+
+ Gets the AmbientTemperature exif tag.
+
+
+
+
+ Gets the WaterDepth exif tag.
+
+
+
+
+ Gets the CameraElevationAngle exif tag.
+
+
+
+
+ Gets the Decode exif tag.
+
+
+
+
+ Gets the ImageDescription exif tag.
+
+
+
+
+ Gets the Make exif tag.
+
+
+
+
+ Gets the Model exif tag.
+
+
+
+
+ Gets the Software exif tag.
+
+
+
+
+ Gets the DateTime exif tag.
+
+
+
+
+ Gets the Artist exif tag.
+
+
+
+
+ Gets the HostComputer exif tag.
+
+
+
+
+ Gets the Copyright exif tag.
+
+
+
+
+ Gets the DocumentName exif tag.
+
+
+
+
+ Gets the PageName exif tag.
+
+
+
+
+ Gets the InkNames exif tag.
+
+
+
+
+ Gets the TargetPrinter exif tag.
+
+
+
+
+ Gets the ImageID exif tag.
+
+
+
+
+ Gets the MDLabName exif tag.
+
+
+
+
+ Gets the MDSampleInfo exif tag.
+
+
+
+
+ Gets the MDPrepDate exif tag.
+
+
+
+
+ Gets the MDPrepTime exif tag.
+
+
+
+
+ Gets the MDFileUnits exif tag.
+
+
+
+
+ Gets the SEMInfo exif tag.
+
+
+
+
+ Gets the SpectralSensitivity exif tag.
+
+
+
+
+ Gets the DateTimeOriginal exif tag.
+
+
+
+
+ Gets the DateTimeDigitized exif tag.
+
+
+
+
+ Gets the SubsecTime exif tag.
+
+
+
+
+ Gets the SubsecTimeOriginal exif tag.
+
+
+
+
+ Gets the SubsecTimeDigitized exif tag.
+
+
+
+
+ Gets the RelatedSoundFile exif tag.
+
+
+
+
+ Gets the FaxSubaddress exif tag.
+
+
+
+
+ Gets the OffsetTime exif tag.
+
+
+
+
+ Gets the OffsetTimeOriginal exif tag.
+
+
+
+
+ Gets the OffsetTimeDigitized exif tag.
+
+
+
+
+ Gets the SecurityClassification exif tag.
+
+
+
+
+ Gets the ImageHistory exif tag.
+
+
+
+
+ Gets the ImageUniqueID exif tag.
+
+
+
+
+ Gets the OwnerName exif tag.
+
+
+
+
+ Gets the SerialNumber exif tag.
+
+
+
+
+ Gets the LensMake exif tag.
+
+
+
+
+ Gets the LensModel exif tag.
+
+
+
+
+ Gets the LensSerialNumber exif tag.
+
+
+
+
+ Gets the GDALMetadata exif tag.
+
+
+
+
+ Gets the GDALNoData exif tag.
+
+
+
+
+ Gets the GPSLatitudeRef exif tag.
+
+
+
+
+ Gets the GPSLongitudeRef exif tag.
+
+
+
+
+ Gets the GPSSatellites exif tag.
+
+
+
+
+ Gets the GPSStatus exif tag.
+
+
+
+
+ Gets the GPSMeasureMode exif tag.
+
+
+
+
+ Gets the GPSSpeedRef exif tag.
+
+
+
+
+ Gets the GPSTrackRef exif tag.
+
+
+
+
+ Gets the GPSImgDirectionRef exif tag.
+
+
+
+
+ Gets the GPSMapDatum exif tag.
+
+
+
+
+ Gets the GPSDestLatitudeRef exif tag.
+
+
+
+
+ Gets the GPSDestLongitudeRef exif tag.
+
+
+
+
+ Gets the GPSDestBearingRef exif tag.
+
+
+
+
+ Gets the GPSDestDistanceRef exif tag.
+
+
+
+
+ Gets the GPSDateStamp exif tag.
+
+
+
+
+ Gets the title tag used by Windows (encoded in UCS2).
+
+
+
+
+ Gets the comment tag used by Windows (encoded in UCS2).
+
+
+
+
+ Gets the author tag used by Windows (encoded in UCS2).
+
+
+
+
+ Gets the keywords tag used by Windows (encoded in UCS2).
+
+
+
+
+ Gets the subject tag used by Windows (encoded in UCS2).
+
+
+
+
+ Gets the JPEGTables exif tag.
+
+
+
+
+ Gets the OECF exif tag.
+
+
+
+
+ Gets the ExifVersion exif tag.
+
+
+
+
+ Gets the ComponentsConfiguration exif tag.
+
+
+
+
+ Gets the MakerNote exif tag.
+
+
+
+
+ Gets the FlashpixVersion exif tag.
+
+
+
+
+ Gets the SpatialFrequencyResponse exif tag.
+
+
+
+
+ Gets the SpatialFrequencyResponse2 exif tag.
+
+
+
+
+ Gets the Noise exif tag.
+
+
+
+
+ Gets the CFAPattern exif tag.
+
+
+
+
+ Gets the DeviceSettingDescription exif tag.
+
+
+
+
+ Gets the ImageSourceData exif tag.
+
+
+
+
+ Gets the FileSource exif tag.
+
+
+
+
+ Gets the ImageDescription exif tag.
+
+
+
+
+ All exif tags from the Exif standard 2.31.
+
+
+
+
+ Unknown
+
+
+
+
+ SubIFDOffset
+
+
+
+
+ GPSIFDOffset
+
+
+
+
+ Indicates the identification of the Interoperability rule.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/privateifd/interoperability/interoperabilityindex.html
+
+
+
+
+ A general indication of the kind of data contained in this subfile.
+ See Section 8: Baseline Fields.
+
+
+
+
+ A general indication of the kind of data contained in this subfile.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The number of columns in the image, i.e., the number of pixels per row.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The number of rows of pixels in the image.
+ See Section 8: Baseline Fields.
+
+
+
+
+ Number of bits per component.
+ See Section 8: Baseline Fields.
+
+
+
+
+ Compression scheme used on the image data.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The color space of the image data.
+ See Section 8: Baseline Fields.
+
+
+
+
+ For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The logical order of bits within a byte.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The name of the document from which this image was scanned.
+ See Section 12: Document Storage and Retrieval.
+
+
+
+
+ A string that describes the subject of the image.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The scanner manufacturer.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The scanner model name or number.
+ See Section 8: Baseline Fields.
+
+
+
+
+ For each strip, the byte offset of that strip.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The orientation of the image with respect to the rows and columns.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The number of components per pixel.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The number of rows per strip.
+ See Section 8: Baseline Fields.
+
+
+
+
+ For each strip, the number of bytes in the strip after compression.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The minimum component value used.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The maximum component value used.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The number of pixels per ResolutionUnit in the ImageWidth direction.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The number of pixels per ResolutionUnit in the direction.
+ See Section 8: Baseline Fields.
+
+
+
+
+ How the components of each pixel are stored.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The name of the page from which this image was scanned.
+ See Section 12: Document Storage and Retrieval.
+
+
+
+
+ X position of the image.
+ See Section 12: Document Storage and Retrieval.
+
+
+
+
+ Y position of the image.
+ See Section 12: Document Storage and Retrieval.
+
+
+
+
+ For each string of contiguous unused bytes in a TIFF file, the byte offset of the string.
+ See Section 8: Baseline Fields.
+
+
+
+
+ For each string of contiguous unused bytes in a TIFF file, the number of bytes in the string.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The precision of the information contained in the GrayResponseCurve.
+ See Section 8: Baseline Fields.
+
+
+
+
+ For grayscale data, the optical density of each possible pixel value.
+ See Section 8: Baseline Fields.
+
+
+
+
+ Options for Group 3 Fax compression.
+
+
+
+
+ Options for Group 4 Fax compression.
+
+
+
+
+ The unit of measurement for XResolution and YResolution.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The page number of the page from which this image was scanned.
+ See Section 12: Document Storage and Retrieval.
+
+
+
+
+ ColorResponseUnit
+
+
+
+
+ TransferFunction
+
+
+
+
+ Name and version number of the software package(s) used to create the image.
+ See Section 8: Baseline Fields.
+
+
+
+
+ Date and time of image creation.
+ See Section 8: Baseline Fields.
+
+
+
+
+ Person who created the image.
+ See Section 8: Baseline Fields.
+
+
+
+
+ The computer and/or operating system in use at the time of image creation.
+ See Section 8: Baseline Fields.
+
+
+
+
+ Predictor
+
+
+
+
+ WhitePoint
+
+
+
+
+ PrimaryChromaticities
+
+
+
+
+ A color map for palette color images.
+ See Section 8: Baseline Fields.
+
+
+
+
+ HalftoneHints
+
+
+
+
+ TileWidth
+
+
+
+
+ TileLength
+
+
+
+
+ TileOffsets
+
+
+
+
+ TileByteCounts
+
+
+
+
+ BadFaxLines
+
+
+
+
+ CleanFaxData
+
+
+
+
+ ConsecutiveBadFaxLines
+
+
+
+
+ Offset to child IFDs.
+ See TIFF Supplement 1: Adobe Pagemaker 6.0.
+ Each value is an offset (from the beginning of the TIFF file, as always) to a child IFD. Child images provide extra information for the parent image - such as a subsampled version of the parent image.
+ TIFF data type is Long or 13, IFD. The IFD type is identical to LONG, except that it is only used to point to other valid IFDs.
+
+
+
+
+ InkSet
+
+
+
+
+ InkNames
+
+
+
+
+ NumberOfInks
+
+
+
+
+ DotRange
+
+
+
+
+ TargetPrinter
+
+
+
+
+ Description of extra components.
+ See Section 8: Baseline Fields.
+
+
+
+
+ SampleFormat
+
+
+
+
+ SMinSampleValue
+
+
+
+
+ SMaxSampleValue
+
+
+
+
+ TransferRange
+
+
+
+
+ ClipPath
+
+
+
+
+ XClipPathUnits
+
+
+
+
+ YClipPathUnits
+
+
+
+
+ Indexed
+
+
+
+
+ JPEGTables
+
+
+
+
+ OPIProxy
+
+
+
+
+ Used in the TIFF-FX standard to point to an IFD containing tags that are globally applicable to the complete TIFF file.
+ See RFC2301: TIFF-F/FX Specification.
+ It is recommended that a TIFF writer place this field in the first IFD, where a TIFF reader would find it quickly.
+ Each field in the GlobalParametersIFD is a TIFF field that is legal in any IFD. Required baseline fields should not be located in the GlobalParametersIFD, but should be in each image IFD. If a conflict exists between fields in the GlobalParametersIFD and in the image IFDs, then the data in the image IFD shall prevail.
+
+
+
+
+ ProfileType
+
+
+
+
+ FaxProfile
+
+
+
+
+ CodingMethods
+
+
+
+
+ VersionYear
+
+
+
+
+ ModeNumber
+
+
+
+
+ Decode
+
+
+
+
+ DefaultImageColor
+
+
+
+
+ T82ptions
+
+
+
+
+ JPEGProc
+
+
+
+
+ JPEGInterchangeFormat
+
+
+
+
+ JPEGInterchangeFormatLength
+
+
+
+
+ JPEGRestartInterval
+
+
+
+
+ JPEGLosslessPredictors
+
+
+
+
+ JPEGPointTransforms
+
+
+
+
+ JPEGQTables
+
+
+
+
+ JPEGDCTables
+
+
+
+
+ JPEGACTables
+
+
+
+
+ YCbCrCoefficients
+
+
+
+
+ YCbCrSubsampling
+
+
+
+
+ YCbCrPositioning
+
+
+
+
+ ReferenceBlackWhite
+
+
+
+
+ StripRowCounts
+
+
+
+
+ XMP
+
+
+
+
+ Rating
+
+
+
+
+ RatingPercent
+
+
+
+
+ ImageID
+
+
+
+
+ Annotation data, as used in 'Imaging for Windows'.
+ See Other Private TIFF tags: http://www.awaresystems.be/imaging/tiff/tifftags/private.html
+
+
+
+
+ CFARepeatPatternDim
+
+
+
+
+ CFAPattern2
+
+
+
+
+ BatteryLevel
+
+
+
+
+ Copyright notice.
+ See Section 8: Baseline Fields.
+
+
+
+
+ ExposureTime
+
+
+
+
+ FNumber
+
+
+
+
+ Specifies the pixel data format encoding in the Molecular Dynamics GEL file format.
+ See Molecular Dynamics GEL File Format and Private Tags: https://www.awaresystems.be/imaging/tiff/tifftags/docs/gel.html
+
+
+
+
+ Specifies a scale factor in the Molecular Dynamics GEL file format.
+ See Molecular Dynamics GEL File Format and Private Tags: https://www.awaresystems.be/imaging/tiff/tifftags/docs/gel.html
+ The scale factor is to be applies to each pixel before presenting it to the user.
+
+
+
+
+ Used to specify the conversion from 16bit to 8bit in the Molecular Dynamics GEL file format.
+ See Molecular Dynamics GEL File Format and Private Tags: https://www.awaresystems.be/imaging/tiff/tifftags/docs/gel.html
+ Since the display is only 9bit, the 16bit data must be converted before display.
+ 8bit value = (16bit value - low range ) * 255 / (high range - low range)
+ Count: n.
+
+
+
+
+ Name of the lab that scanned this file, as used in the Molecular Dynamics GEL file format.
+ See Molecular Dynamics GEL File Format and Private Tags: https://www.awaresystems.be/imaging/tiff/tifftags/docs/gel.html
+
+
+
+
+ Information about the sample, as used in the Molecular Dynamics GEL file format.
+ See Molecular Dynamics GEL File Format and Private Tags: https://www.awaresystems.be/imaging/tiff/tifftags/docs/gel.html
+ This information is entered by the person that scanned the file.
+ Note that the word 'sample' as used here, refers to the scanned sample, not an image channel.
+
+
+
+
+ Date the sample was prepared, as used in the Molecular Dynamics GEL file format.
+ See Molecular Dynamics GEL File Format and Private Tags: https://www.awaresystems.be/imaging/tiff/tifftags/docs/gel.html
+ The format of this data is YY/MM/DD.
+ Note that the word 'sample' as used here, refers to the scanned sample, not an image channel.
+
+
+
+
+ Time the sample was prepared, as used in the Molecular Dynamics GEL file format.
+ See Molecular Dynamics GEL File Format and Private Tags: https://www.awaresystems.be/imaging/tiff/tifftags/docs/gel.html
+ Format of this data is HH:MM using the 24-hour clock.
+ Note that the word 'sample' as used here, refers to the scanned sample, not an image channel.
+
+
+
+
+ Units for data in this file, as used in the Molecular Dynamics GEL file format.
+ See Molecular Dynamics GEL File Format and Private Tags: https://www.awaresystems.be/imaging/tiff/tifftags/docs/gel.html
+
+
+
+
+ PixelScale
+
+
+
+
+ IPTC (International Press Telecommunications Council) metadata.
+ See IPTC 4.1 specification.
+
+
+
+
+ IntergraphPacketData
+
+
+
+
+ IntergraphRegisters
+
+
+
+
+ IntergraphMatrix
+
+
+
+
+ ModelTiePoint
+
+
+
+
+ SEMInfo
+
+
+
+
+ ModelTransform
+
+
+
+
+ Collection of Photoshop 'Image Resource Blocks' (Embedded Metadata).
+ See Extracting the Thumbnail from the PhotoShop private TIFF Tag: https://www.awaresystems.be/imaging/tiff/tifftags/docs/photoshopthumbnail.html
+
+
+
+
+ ICC profile data.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/iccprofile.html
+
+
+
+
+ Used in interchangeable GeoTIFF files.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/geokeydirectorytag.html
+ This tag is also know as 'ProjectionInfoTag' and 'CoordSystemInfoTag'
+ This tag may be used to store the GeoKey Directory, which defines and references the "GeoKeys".
+
+
+
+
+ Used in interchangeable GeoTIFF files.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/geodoubleparamstag.html
+ This tag is used to store all of the DOUBLE valued GeoKeys, referenced by the GeoKeyDirectoryTag. The meaning of any value of this double array is determined from the GeoKeyDirectoryTag reference pointing to it. FLOAT values should first be converted to DOUBLE and stored here.
+
+
+
+
+ Used in interchangeable GeoTIFF files.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/geoasciiparamstag.html
+ This tag is used to store all of the ASCII valued GeoKeys, referenced by the GeoKeyDirectoryTag. Since keys use offsets into tags, any special comments may be placed at the beginning of this tag. For the most part, the only keys that are ASCII valued are "Citation" keys, giving documentation and references for obscure projections, datums, etc.
+
+
+
+
+ ImageLayer
+
+
+
+
+ ExposureProgram
+
+
+
+
+ SpectralSensitivity
+
+
+
+
+ ISOSpeedRatings
+
+
+
+
+ OECF
+
+
+
+
+ Interlace
+
+
+
+
+ TimeZoneOffset
+
+
+
+
+ SelfTimerMode
+
+
+
+
+ SensitivityType
+
+
+
+
+ StandardOutputSensitivity
+
+
+
+
+ RecommendedExposureIndex
+
+
+
+
+ ISOSpeed
+
+
+
+
+ ISOSpeedLatitudeyyy
+
+
+
+
+ ISOSpeedLatitudezzz
+
+
+
+
+ FaxRecvParams
+
+
+
+
+ FaxSubaddress
+
+
+
+
+ FaxRecvTime
+
+
+
+
+ ExifVersion
+
+
+
+
+ DateTimeOriginal
+
+
+
+
+ DateTimeDigitized
+
+
+
+
+ OffsetTime
+
+
+
+
+ OffsetTimeOriginal
+
+
+
+
+ OffsetTimeDigitized
+
+
+
+
+ ComponentsConfiguration
+
+
+
+
+ CompressedBitsPerPixel
+
+
+
+
+ ShutterSpeedValue
+
+
+
+
+ ApertureValue
+
+
+
+
+ BrightnessValue
+
+
+
+
+ ExposureBiasValue
+
+
+
+
+ MaxApertureValue
+
+
+
+
+ SubjectDistance
+
+
+
+
+ MeteringMode
+
+
+
+
+ LightSource
+
+
+
+
+ Flash
+
+
+
+
+ FocalLength
+
+
+
+
+ FlashEnergy2
+
+
+
+
+ SpatialFrequencyResponse2
+
+
+
+
+ Noise
+
+
+
+
+ FocalPlaneXResolution2
+
+
+
+
+ FocalPlaneYResolution2
+
+
+
+
+ FocalPlaneResolutionUnit2
+
+
+
+
+ ImageNumber
+
+
+
+
+ SecurityClassification
+
+
+
+
+ ImageHistory
+
+
+
+
+ SubjectArea
+
+
+
+
+ ExposureIndex2
+
+
+
+
+ TIFFEPStandardID
+
+
+
+
+ SensingMethod
+
+
+
+
+ MakerNote
+
+
+
+
+ UserComment
+
+
+
+
+ SubsecTime
+
+
+
+
+ SubsecTimeOriginal
+
+
+
+
+ SubsecTimeDigitized
+
+
+
+
+ ImageSourceData
+
+
+
+
+ AmbientTemperature
+
+
+
+
+ Humidity
+
+
+
+
+ Pressure
+
+
+
+
+ WaterDepth
+
+
+
+
+ Acceleration
+
+
+
+
+ CameraElevationAngle
+
+
+
+
+ XPTitle
+
+
+
+
+ XPComment
+
+
+
+
+ XPAuthor
+
+
+
+
+ XPKeywords
+
+
+
+
+ XPSubject
+
+
+
+
+ FlashpixVersion
+
+
+
+
+ ColorSpace
+
+
+
+
+ PixelXDimension
+
+
+
+
+ PixelYDimension
+
+
+
+
+ RelatedSoundFile
+
+
+
+
+ A pointer to the Exif-related Interoperability IFD.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/privateifd/interoperability.html
+ Interoperability IFD is composed of tags which stores the information to ensure the Interoperability.
+ The Interoperability structure of Interoperability IFD is same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD.
+
+
+
+
+ FlashEnergy
+
+
+
+
+ SpatialFrequencyResponse
+
+
+
+
+ FocalPlaneXResolution
+
+
+
+
+ FocalPlaneYResolution
+
+
+
+
+ FocalPlaneResolutionUnit
+
+
+
+
+ SubjectLocation
+
+
+
+
+ ExposureIndex
+
+
+
+
+ SensingMethod
+
+
+
+
+ FileSource
+
+
+
+
+ SceneType
+
+
+
+
+ CFAPattern
+
+
+
+
+ CustomRendered
+
+
+
+
+ ExposureMode
+
+
+
+
+ WhiteBalance
+
+
+
+
+ DigitalZoomRatio
+
+
+
+
+ FocalLengthIn35mmFilm
+
+
+
+
+ SceneCaptureType
+
+
+
+
+ GainControl
+
+
+
+
+ Contrast
+
+
+
+
+ Saturation
+
+
+
+
+ Sharpness
+
+
+
+
+ DeviceSettingDescription
+
+
+
+
+ SubjectDistanceRange
+
+
+
+
+ ImageUniqueID
+
+
+
+
+ OwnerName
+
+
+
+
+ SerialNumber
+
+
+
+
+ LensSpecification
+
+
+
+
+ LensMake
+
+
+
+
+ LensModel
+
+
+
+
+ LensSerialNumber
+
+
+
+
+ GDALMetadata
+
+
+
+
+ GDALNoData
+
+
+
+
+ GPSVersionID
+
+
+
+
+ GPSLatitudeRef
+
+
+
+
+ GPSLatitude
+
+
+
+
+ GPSLongitudeRef
+
+
+
+
+ GPSLongitude
+
+
+
+
+ GPSAltitudeRef
+
+
+
+
+ GPSAltitude
+
+
+
+
+ GPSTimestamp
+
+
+
+
+ GPSSatellites
+
+
+
+
+ GPSStatus
+
+
+
+
+ GPSMeasureMode
+
+
+
+
+ GPSDOP
+
+
+
+
+ GPSSpeedRef
+
+
+
+
+ GPSSpeed
+
+
+
+
+ GPSTrackRef
+
+
+
+
+ GPSTrack
+
+
+
+
+ GPSImgDirectionRef
+
+
+
+
+ GPSImgDirection
+
+
+
+
+ GPSMapDatum
+
+
+
+
+ GPSDestLatitudeRef
+
+
+
+
+ GPSDestLatitude
+
+
+
+
+ GPSDestLongitudeRef
+
+
+
+
+ GPSDestLongitude
+
+
+
+
+ GPSDestBearingRef
+
+
+
+
+ GPSDestBearing
+
+
+
+
+ GPSDestDistanceRef
+
+
+
+
+ GPSDestDistance
+
+
+
+
+ GPSProcessingMethod
+
+
+
+
+ GPSAreaInformation
+
+
+
+
+ GPSDateStamp
+
+
+
+
+ GPSDifferential
+
+
+
+
+ Used in the Oce scanning process.
+ Identifies the scanticket used in the scanning process.
+ Includes a trailing zero.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/docs/oce.html
+
+
+
+
+ Used in the Oce scanning process.
+ Identifies the application to process the TIFF file that results from scanning.
+ Includes a trailing zero.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/docs/oce.html
+
+
+
+
+ Used in the Oce scanning process.
+ This is the user's answer to an optional question embedded in the Oce scanticket, and presented to that user before scanning. It can serve in further determination of the workflow.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/docs/oce.html
+
+
+
+
+ Used in the Oce scanning process.
+ This tag encodes the imageprocessing done by the Oce ImageLogic module in the scanner to ensure optimal quality for certain workflows.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/docs/oce.html
+
+
+
+
+ Alias Sketchbook Pro layer usage description.
+ See https://www.awaresystems.be/imaging/tiff/tifftags/docs/alias.html
+
+
+
+
+ Class that represents an exif tag from the Exif standard 2.31 with as the data type of the tag.
+
+ The data type of the tag.
+
+
+
+ The EXIF encoded string structure.
+
+
+
+
+ Initializes a new instance of the struct.
+ Default use Unicode character code.
+
+ The text value.
+
+
+
+ Initializes a new instance of the struct.
+
+ The character code.
+ The text value.
+
+
+
+ The 8-byte character code enum.
+
+
+
+
+ The ASCII (ITU-T T.50 IA5) character code.
+
+
+
+
+ The JIS (X208-1990) character code.
+
+
+
+
+ The Unicode character code.
+
+
+
+
+ The undefined character code.
+
+
+
+
+ Gets the character ode.
+
+
+
+
+ Gets the text.
+
+
+
+
+ Converts the specified to an instance of this type.
+
+ The text value.
+
+
+
+ Converts the specified to a .
+
+ The to convert.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enumerates the available orientation values supplied by EXIF metadata.
+
+
+
+
+ Unknown rotation.
+
+
+
+
+ The 0th row at the top, the 0th column on the left.
+
+
+
+
+ The 0th row at the top, the 0th column on the right.
+
+
+
+
+ The 0th row at the bottom, the 0th column on the right.
+
+
+
+
+ The 0th row at the bottom, the 0th column on the left.
+
+
+
+
+ The 0th row on the left, the 0th column at the top.
+
+
+
+
+ The 0th row at the right, the 0th column at the top.
+
+
+
+
+ The 0th row on the right, the 0th column at the bottom.
+
+
+
+
+ The 0th row on the left, the 0th column at the bottom.
+
+
+
+
+ Gets the value of the current instance as a string.
+
+
+
+
+ A value of the exif profile.
+
+
+
+
+ Gets the data type of the exif value.
+
+
+
+
+ Gets a value indicating whether the value is an array.
+
+
+
+
+ Gets the tag of the exif value.
+
+
+
+
+ Gets the value of this exif value.
+
+ The value of this exif value.
+
+
+
+ Sets the value of this exif value.
+
+ The value of this exif value.
+ A value indicating whether the value could be set.
+
+
+
+ A value of the exif profile.
+
+ The type of the value.
+
+
+
+ Gets or sets the value.
+
+
+
+
+ A segment of a curve
+
+
+
+
+ Initializes a new instance of the class.
+
+ The signature of this segment
+
+
+
+ Gets the signature of this segment
+
+
+
+
+
+
+
+ A formula based curve segment
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type of this segment
+ Gamma segment parameter
+ A segment parameter
+ B segment parameter
+ C segment parameter
+ D segment parameter
+ E segment parameter
+
+
+
+ Gets the type of this curve
+
+
+
+
+ Gets the gamma curve parameter
+
+
+
+
+ Gets the A curve parameter
+
+
+
+
+ Gets the B curve parameter
+
+
+
+
+ Gets the C curve parameter
+
+
+
+
+ Gets the D curve parameter
+
+
+
+
+ Gets the E curve parameter
+
+
+
+
+
+
+
+
+
+
+ A one dimensional ICC curve.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The break points of this curve
+ The segments of this curve
+
+
+
+ Gets the breakpoints that separate two curve segments
+
+
+
+
+ Gets an array of curve segments
+
+
+
+
+
+
+
+ A parametric curve
+
+
+
+
+ Initializes a new instance of the class.
+
+ G curve parameter
+
+
+
+ Initializes a new instance of the class.
+
+ G curve parameter
+ A curve parameter
+ B curve parameter
+
+
+
+ Initializes a new instance of the class.
+
+ G curve parameter
+ A curve parameter
+ B curve parameter
+ C curve parameter
+
+
+
+ Initializes a new instance of the class.
+
+ G curve parameter
+ A curve parameter
+ B curve parameter
+ C curve parameter
+ D curve parameter
+
+
+
+ Initializes a new instance of the class.
+
+ G curve parameter
+ A curve parameter
+ B curve parameter
+ C curve parameter
+ D curve parameter
+ E curve parameter
+ F curve parameter
+
+
+
+ Gets the type of this curve
+
+
+
+
+ Gets the G curve parameter
+
+
+
+
+ Gets the A curve parameter
+
+
+
+
+ Gets the B curve parameter
+
+
+
+
+ Gets the C curve parameter
+
+
+
+
+ Gets the D curve parameter
+
+
+
+
+ Gets the E curve parameter
+
+
+
+
+ Gets the F curve parameter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A response curve
+
+
+
+
+ Initializes a new instance of the class.
+
+ The type of this curve
+ The XYZ values
+ The response arrays
+
+
+
+ Gets the type of this curve
+
+
+
+
+ Gets the XYZ values
+
+
+
+
+ Gets the response arrays
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A sampled curve segment
+
+
+
+
+ Initializes a new instance of the class.
+
+ The curve values of this segment
+
+
+
+ Gets the curve values of this segment
+
+
+
+
+
+
+
+
+
+
+ Provides methods to read ICC data types
+
+
+ Provides methods to read ICC data types
+
+
+ Provides methods to read ICC data types
+
+
+ Provides methods to read ICC data types
+
+
+ Provides methods to read ICC data types
+
+
+ Provides methods to read ICC data types
+
+
+ Provides methods to read ICC data types
+
+
+ Provides methods to read ICC data types
+
+
+
+
+ The data that is read
+
+
+
+
+ The current reading position
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data to read
+
+
+
+ Gets the length in bytes of the raw data
+
+
+
+
+ Sets the reading position to the given value
+
+ The new index position
+
+
+
+ Returns the current without increment and adds the given increment
+
+ The value to increment
+ The current without the increment
+
+
+
+ Calculates the 4 byte padding and adds it to the variable
+
+
+
+
+ Calculates the 4 byte padding
+
+ the number of bytes to pad
+
+
+
+ Gets the bit value at a specified position
+
+ The value from where the bit will be extracted
+ Position of the bit. Zero based index from left to right.
+ The bit value at specified position
+
+
+
+ Reads a
+
+ The read curve
+
+
+
+ Reads a
+
+ The number of channels
+ The read curve
+
+
+
+ Reads a
+
+ The read curve
+
+
+
+ Reads a
+
+ The read segment
+
+
+
+ Reads a
+
+ The read segment
+
+
+
+ Reads a
+
+ The read segment
+
+
+
+ Reads curve data
+
+ Number of input channels
+ The curve data
+
+
+
+ Reads an 8bit lookup table
+
+ The read LUT
+
+
+
+ Reads a 16bit lookup table
+
+ The number of entries
+ The read LUT
+
+
+
+ Reads a CLUT depending on type
+
+ Input channel count
+ Output channel count
+ If true, it's read as CLUTf32,
+ else read as either CLUT8 or CLUT16 depending on embedded information
+ The read CLUT
+
+
+
+ Reads an 8 bit CLUT
+
+ Input channel count
+ Output channel count
+ Grid point count for each CLUT channel
+ The read CLUT8
+
+
+
+ Reads a 16 bit CLUT
+
+ Input channel count
+ Output channel count
+ Grid point count for each CLUT channel
+ The read CLUT16
+
+
+
+ Reads a 32bit floating point CLUT
+
+ Input channel count
+ Output channel count
+ Grid point count for each CLUT channel
+ The read CLUTf32
+
+
+
+ Reads a two dimensional matrix
+
+ Number of values in X
+ Number of values in Y
+ True if the values are encoded as Single; false if encoded as Fix16
+ The read matrix
+
+
+
+ Reads a one dimensional matrix
+
+ Number of values
+ True if the values are encoded as Single; false if encoded as Fix16
+ The read matrix
+
+
+
+ Reads a
+
+ The read
+
+
+
+ Reads a CurveSet
+
+ Number of input channels
+ Number of output channels
+ The read
+
+
+
+ Reads a Matrix
+
+ Number of input channels
+ Number of output channels
+ The read
+
+
+
+ Reads a CLUT
+
+ Number of input channels
+ Number of output channels
+ The read
+
+
+
+ Reads a DateTime
+
+ the value
+
+
+
+ Reads an ICC profile version number
+
+ the version number
+
+
+
+ Reads an XYZ number
+
+ the XYZ number
+
+
+
+ Reads a profile ID
+
+ the profile ID
+
+
+
+ Reads a position number
+
+ the position number
+
+
+
+ Reads a response number
+
+ the response number
+
+
+
+ Reads a named color
+
+ Number of device coordinates
+ the named color
+
+
+
+ Reads a profile description
+
+ the profile description
+
+
+
+ Reads a colorant table entry
+
+ the profile description
+
+
+
+ Reads a screening channel
+
+ the screening channel
+
+
+
+ Reads an ushort
+
+ the value
+
+
+
+ Reads a short
+
+ the value
+
+
+
+ Reads an uint
+
+ the value
+
+
+
+ Reads an int
+
+ the value
+
+
+
+ Reads an ulong
+
+ the value
+
+
+
+ Reads a long
+
+ the value
+
+
+
+ Reads a float.
+
+ the value
+
+
+
+ Reads a double
+
+ the value
+
+
+
+ Reads an ASCII encoded string.
+
+ number of bytes to read
+ The value as a string
+
+
+
+ Reads an UTF-16 big-endian encoded string.
+
+ number of bytes to read
+ The value as a string
+
+
+
+ Reads a signed 32bit number with 1 sign bit, 15 value bits and 16 fractional bits.
+
+ The number as double
+
+
+
+ Reads an unsigned 32bit number with 16 value bits and 16 fractional bits.
+
+ The number as double
+
+
+
+ Reads an unsigned 16bit number with 1 value bit and 15 fractional bits.
+
+ The number as double
+
+
+
+ Reads an unsigned 16bit number with 8 value bits and 8 fractional bits.
+
+ The number as double
+
+
+
+ Reads a number of bytes and advances the index.
+
+ The number of bytes to read
+ The read bytes
+
+
+
+ Reads a tag data entry
+
+ The table entry with reading information
+ the tag data entry
+
+
+
+ Reads the header of a
+
+ The read signature
+
+
+
+ Reads the header of a and checks if it's the expected value
+
+ expected value to check against
+
+
+
+ Reads a with an unknown
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The read entry
+
+
+
+ Reads a
+
+ The size of the entry in bytes
+ The read entry
+
+
+
+ Provides methods to write ICC data types
+
+
+ Provides methods to write ICC data types
+
+
+ Provides methods to write ICC data types
+
+
+ Provides methods to write ICC data types
+
+
+ Provides methods to write ICC data types
+
+
+ Provides methods to write ICC data types
+
+
+ Provides methods to write ICC data types
+
+
+ Provides methods to write ICC data types
+
+
+
+
+ The underlying stream where the data is written to
+
+
+
+
+ To detect redundant calls
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the currently written length in bytes
+
+
+
+
+ Gets the written data bytes
+
+ The written data
+
+
+
+ Sets the writing position to the given value
+
+ The new index position
+
+
+
+ Writes a byte array
+
+ The array to write
+ The number of bytes written
+
+
+
+ Writes a ushort array
+
+ The array to write
+ The number of bytes written
+
+
+
+ Writes a short array
+
+ The array to write
+ The number of bytes written
+
+
+
+ Writes a uint array
+
+ The array to write
+ The number of bytes written
+
+
+
+ Writes an int array
+
+ The array to write
+ The number of bytes written
+
+
+
+ Writes a ulong array
+
+ The array to write
+ The number of bytes written
+
+
+
+ Write a number of empty bytes
+
+ The number of bytes to write
+ The number of bytes written
+
+
+
+ Writes empty bytes to a 4-byte margin
+
+ The number of bytes written
+
+
+
+
+
+
+ Writes given bytes from pointer
+
+ Pointer to the bytes to write
+ The number of bytes to write
+ The number of bytes written
+
+
+
+ Writes given bytes from pointer ignoring endianness
+
+ Pointer to the bytes to write
+ The number of bytes to write
+ The number of bytes written
+
+
+
+ Writes curve data
+
+ The curves to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The curve to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The curve to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The curve to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The curve to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The curve to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The curve to write
+ The number of bytes written
+
+
+
+ Writes an 8bit lookup table
+
+ The LUT to write
+ The number of bytes written
+
+
+
+ Writes an 16bit lookup table
+
+ The LUT to write
+ The number of bytes written
+
+
+
+ Writes an color lookup table
+
+ The CLUT to write
+ The number of bytes written
+
+
+
+ Writes a 8bit color lookup table
+
+ The CLUT to write
+ The number of bytes written
+
+
+
+ Writes a 16bit color lookup table
+
+ The CLUT to write
+ The number of bytes written
+
+
+
+ Writes a 32bit float color lookup table
+
+ The CLUT to write
+ The number of bytes written
+
+
+
+ Writes a two dimensional matrix
+
+ The matrix to write
+ True if the values are encoded as Single; false if encoded as Fix16
+ The number of bytes written
+
+
+
+ Writes a two dimensional matrix
+
+ The matrix to write
+ True if the values are encoded as Single; false if encoded as Fix16
+ The number of bytes written
+
+
+
+ Writes a two dimensional matrix
+
+ The matrix to write
+ True if the values are encoded as Single; false if encoded as Fix16
+ The number of bytes written
+
+
+
+ Writes a one dimensional matrix
+
+ The matrix to write
+ True if the values are encoded as Single; false if encoded as Fix16
+ The number of bytes written
+
+
+
+ Writes a one dimensional matrix
+
+ The matrix to write
+ True if the values are encoded as Single; false if encoded as Fix16
+ The number of bytes written
+
+
+
+ Writes a
+
+ The element to write
+ The number of bytes written
+
+
+
+ Writes a CurveSet
+
+ The element to write
+ The number of bytes written
+
+
+
+ Writes a Matrix
+
+ The element to write
+ The number of bytes written
+
+
+
+ Writes a CLUT
+
+ The element to write
+ The number of bytes written
+
+
+
+ Writes a DateTime
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an ICC profile version number
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an XYZ number
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a profile ID
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a position number
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a response number
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a named color
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a profile description
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a screening channel
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a byte
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an ushort
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a short
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an uint
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an int
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an ulong
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a long
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a float
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a double
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes a signed 32bit number with 1 sign bit, 15 value bits and 16 fractional bits
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an unsigned 32bit number with 16 value bits and 16 fractional bits
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an unsigned 16bit number with 1 value bit and 15 fractional bits
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an unsigned 16bit number with 8 value bits and 8 fractional bits
+
+ The value to write
+ the number of bytes written
+
+
+
+ Writes an ASCII encoded string
+
+ the string to write
+ the number of bytes written
+
+
+
+ Writes an ASCII encoded string resizes it to the given length
+
+ The string to write
+ The desired length of the string (including potential null terminator)
+ If True, there will be a \0 added at the end
+ the number of bytes written
+
+
+
+ Writes an UTF-16 big-endian encoded string
+
+ the string to write
+ the number of bytes written
+
+
+
+ Writes a tag data entry
+
+ The entry to write
+ The table entry for the written data entry
+ The number of bytes written (excluding padding)
+
+
+
+ Writes a tag data entry (without padding)
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes the header of a
+
+ The signature of the entry
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Writes a
+
+ The entry to write
+ The number of bytes written
+
+
+
+ Color lookup table data type
+
+
+
+
+ 32bit floating point
+
+
+
+
+ 8bit unsigned integer (byte)
+
+
+
+
+ 16bit unsigned integer (ushort)
+
+
+
+
+ Colorant Encoding
+
+
+
+
+ Unknown colorant encoding
+
+
+
+
+ ITU-R BT.709-2 colorant encoding
+
+
+
+
+ SMPTE RP145 colorant encoding
+
+
+
+
+ EBU Tech.3213-E colorant encoding
+
+
+
+
+ P22 colorant encoding
+
+
+
+
+ Color Space Type
+
+
+
+
+ CIE XYZ
+
+
+
+
+ CIE Lab
+
+
+
+
+ CIE Luv
+
+
+
+
+ YCbCr
+
+
+
+
+ CIE Yxy
+
+
+
+
+ RGB
+
+
+
+
+ Gray
+
+
+
+
+ HSV
+
+
+
+
+ HLS
+
+
+
+
+ CMYK
+
+
+
+
+ CMY
+
+
+
+
+ Generic 2 channel color
+
+
+
+
+ Generic 3 channel color
+
+
+
+
+ Generic 4 channel color
+
+
+
+
+ Generic 5 channel color
+
+
+
+
+ Generic 6 channel color
+
+
+
+
+ Generic 7 channel color
+
+
+
+
+ Generic 8 channel color
+
+
+
+
+ Generic 9 channel color
+
+
+
+
+ Generic 10 channel color
+
+
+
+
+ Generic 11 channel color
+
+
+
+
+ Generic 12 channel color
+
+
+
+
+ Generic 13 channel color
+
+
+
+
+ Generic 14 channel color
+
+
+
+
+ Generic 15 channel color
+
+
+
+
+ Curve Measurement Encodings
+
+
+
+
+ ISO 5-3 densitometer response. This is the accepted standard for
+ reflection densitometers for measuring photographic color prints
+
+
+
+
+ ISO 5-3 densitometer response which is the accepted standard in
+ Europe for color reflection densitometers
+
+
+
+
+ ISO 5-3 densitometer response commonly referred to as narrow band
+ or interference-type response.
+
+
+
+
+ ISO 5-3 wide band color reflection densitometer response which is
+ the accepted standard in the United States for color reflection densitometers
+
+
+
+
+ ISO 5-3 densitometer response for measuring color negatives
+
+
+
+
+ DIN 16536-2 densitometer response, with no polarizing filter
+
+
+
+
+ DIN 16536-2 densitometer response, with polarizing filter
+
+
+
+
+ DIN 16536-2 narrow band densitometer response, with no polarizing filter
+
+
+
+
+ DIN 16536-2 narrow band densitometer response, with polarizing filter
+
+
+
+
+ Curve Segment Signature
+
+
+
+
+ Curve defined by a formula
+
+
+
+
+ Curve defined by multiple segments
+
+
+
+
+ Enumerates the basic data types as defined in ICC.1:2010 version 4.3.0.0
+ Section 4.2 to 4.15
+
+
+
+
+ A 12-byte value representation of the time and date
+
+
+
+
+ A single-precision 32-bit floating-point as specified in IEEE 754,
+ excluding un-normalized s, infinities, and not a "" (NaN) values
+
+
+
+
+ Positions of some data elements are indicated using a position offset with the data element's size.
+
+
+
+
+ An 8-byte value, used to associate a normalized device code with a measurement value
+
+
+
+
+ A fixed signed 4-byte (32-bit) quantity which has 16 fractional bits
+
+
+
+
+ A fixed unsigned 4-byte (32-bit) quantity having 16 fractional bits
+
+
+
+
+ A fixed unsigned 2-byte (16-bit) quantity having15 fractional bits
+
+
+
+
+ A fixed unsigned 2-byte (16-bit) quantity having 8 fractional bits
+
+
+
+
+ An unsigned 2-byte (16-bit) integer
+
+
+
+
+ An unsigned 4-byte (32-bit) integer
+
+
+
+
+ An unsigned 8-byte (64-bit) integer
+
+
+
+
+ An unsigned 1-byte (8-bit) integer
+
+
+
+
+ A set of three fixed signed 4-byte (32-bit) quantities used to encode CIEXYZ, nCIEXYZ, and PCSXYZ tristimulus values
+
+
+
+
+ Alpha-numeric values, and other input and output codes, shall conform to the American Standard Code for
+ Information Interchange (ASCII) specified in ISO/IEC 646.
+
+
+
+
+ Device attributes. Can be combined with a logical OR
+ The least-significant 32 bits are defined by the ICC,
+ the rest can be used for vendor specific values
+
+
+
+
+ Opacity transparent
+
+
+
+
+ Opacity reflective
+
+
+
+
+ Reflectivity matte
+
+
+
+
+ Reflectivity glossy
+
+
+
+
+ Polarity negative
+
+
+
+
+ Polarity positive
+
+
+
+
+ Chroma black and white
+
+
+
+
+ Chroma color
+
+
+
+
+ Formula curve segment type
+
+
+
+
+ Type 1: Y = (a * X + b)^γ + c
+
+
+
+
+ Type 1: Y = a * log10 (b * X^γ + c) + d
+
+
+
+
+ Type 3: Y = a * b^(c * X + d) + e
+
+
+
+
+ Measurement Geometry
+
+
+
+
+ Unknown geometry
+
+
+
+
+ Geometry of 0°:45° or 45°:0°
+
+
+
+
+ Geometry of 0°:d or d:0°
+
+
+
+
+ Multi process element signature
+
+
+
+
+ Set of curves
+
+
+
+
+ Matrix transformation
+
+
+
+
+ Color lookup table
+
+
+
+
+ Reserved for future expansion. Do not use!
+
+
+
+
+ Reserved for future expansion. Do not use!
+
+
+
+
+ Formula curve segment type
+
+
+
+
+ Type 1: Y = X^g
+
+
+
+
+ CIE 122-1996:
+ For X >= -b/a: Y =(a * X + b)^g
+ For X $lt; -b/a: Y = 0
+
+
+
+
+ IEC 61966-3:
+ For X >= -b/a: Y =(a * X + b)^g + c
+ For X $lt; -b/a: Y = c
+
+
+
+
+ IEC 61966-2-1 (sRGB):
+ For X >= d: Y =(a * X + b)^g
+ For X $lt; d: Y = c * X
+
+
+
+
+ Type 5:
+ For X >= d: Y =(a * X + b)^g + c
+ For X $lt; d: Y = c * X + f
+
+
+
+
+ Enumerates the primary platform/operating system framework for which the profile was created
+
+
+
+
+ No platform identified
+
+
+
+
+ Apple Computer, Inc.
+
+
+
+
+ Microsoft Corporation
+
+
+
+
+ Silicon Graphics, Inc.
+
+
+
+
+ Sun Microsystems, Inc.
+
+
+
+
+ Profile Class Name
+
+
+
+
+ Input profiles are generally used with devices such as scanners and
+ digital cameras. The types of profiles available for use as Input
+ profiles are N-component LUT-based, Three-component matrix-based,
+ and monochrome.
+
+
+
+
+ This class of profiles represents display devices such as monitors.
+ The types of profiles available for use as Display profiles are
+ N-component LUT-based, Three-component matrix-based, and monochrome.
+
+
+
+
+ Output profiles are used to support devices such as printers and
+ film recorders. The types of profiles available for use as Output
+ profiles are N-component LUT-based and Monochrome.
+
+
+
+
+ This profile contains a pre-evaluated transform that cannot be undone,
+ which represents a one-way link or connection between devices. It does
+ not represent any device model nor can it be embedded into images.
+
+
+
+
+ This profile provides the relevant information to perform a transformation
+ between color encodings and the PCS. This type of profile is based on
+ modeling rather than device measurement or characterization data.
+ ColorSpace profiles may be embedded in images.
+
+
+
+
+ This profile represents abstract transforms and does not represent any
+ device model. Color transformations using Abstract profiles are performed
+ from PCS to PCS. Abstract profiles cannot be embedded in images.
+
+
+
+
+ NamedColor profiles can be thought of as sibling profiles to device profiles.
+ For a given device there would be one or more device profiles to handle
+ process color conversions and one or more named color profiles to handle
+ named colors.
+
+
+
+
+ Profile flags. Can be combined with a logical OR.
+ The least-significant 16 bits are reserved for the ICC,
+ the rest can be used for vendor specific values
+
+
+
+
+ No flags (equivalent to NotEmbedded and Independent)
+
+
+
+
+ Profile is embedded within another file
+
+
+
+
+ Profile is embedded within another file
+
+
+
+
+ Profile cannot be used independently of the embedded color data
+
+
+
+
+ Profile can be used independently of the embedded color data
+
+
+
+
+ Enumerates the ICC Profile Tags as defined in ICC.1:2010 version 4.3.0.0
+ Section 9
+
+ Each tag value represent the size of the tag in the profile.
+
+
+
+
+
+ Unknown tag
+
+
+
+
+ A2B0 - This tag defines a color transform from Device, Color Encoding or PCS, to PCS, or a color transform
+ from Device 1 to Device 2, using lookup table tag element structures
+
+
+
+
+ A2B2 - This tag describes the color transform from Device or Color Encoding to PCS using lookup table tag element structures
+
+
+
+
+ A2B2 - This tag describes the color transform from Device or Color Encoding to PCS using lookup table tag element structures
+
+
+
+
+ bXYZ - This tag contains the third column in the matrix used in matrix/TRC transforms.
+
+
+
+
+ bTRC - This tag contains the blue channel tone reproduction curve. The first element represents no colorant (white) or
+ phosphor (black) and the last element represents 100 % colorant (blue) or 100 % phosphor (blue).
+
+
+
+
+ B2A0 - This tag defines a color transform from PCS to Device or Color Encoding using the lookup table tag element structures
+
+
+
+
+ B2A1 - This tag defines a color transform from PCS to Device or Color Encoding using the lookup table tag element structures.
+
+
+
+
+ B2A2 - This tag defines a color transform from PCS to Device or Color Encoding using the lookup table tag element structures.
+
+
+
+
+ B2D0 - This tag defines a color transform from PCS to Device. It supports float32Number-encoded input range, output range and transform, and
+ provides a means to override the BToA0 tag.
+
+
+
+
+ B2D1 - This tag defines a color transform from PCS to Device. It supports float32Number-encoded input range, output range and transform, and
+ provides a means to override the BToA1 tag.
+
+
+
+
+ B2D2 - This tag defines a color transform from PCS to Device. It supports float32Number-encoded input range, output range and transform, and
+ provides a means to override the BToA2 tag.
+
+
+
+
+ B2D3 - This tag defines a color transform from PCS to Device. It supports float32Number-encoded input range, output range and transform, and
+ provides a means to override the BToA1 tag.
+
+
+
+
+ calt - This tag contains the profile calibration date and time. This allows applications and utilities to verify if this profile matches a
+ vendor's profile and how recently calibration has been performed.
+
+
+
+
+ targ - This tag contains the name of the registered characterization data set, or it contains the measurement
+ data for a characterization target.
+
+
+
+
+ chad - This tag contains a matrix, which shall be invertible, and which converts an nCIEXYZ color, measured using the actual illumination
+ conditions and relative to the actual adopted white, to an nCIEXYZ color relative to the PCS adopted white
+
+
+
+
+ chrm - This tag contains the type and the data of the phosphor/colorant chromaticity set used.
+
+
+
+
+ clro - This tag specifies the laydown order of colorants.
+
+
+
+
+ clrt
+
+
+
+
+ clot - This tag identifies the colorants used in the profile by a unique name and set of PCSXYZ or PCSLAB values.
+ When used in DeviceLink profiles only the PCSLAB values shall be permitted.
+
+
+
+
+ ciis - This tag indicates the image state of PCS colorimetry produced using the colorimetric intent transforms.
+
+
+
+
+ cprt - This tag contains the text copyright information for the profile.
+
+
+
+
+ crdi - Removed in V4
+
+
+
+
+ data - Removed in V4
+
+
+
+
+ dtim - Removed in V4
+
+
+
+
+ dmnd - This tag describes the structure containing invariant and localizable
+ versions of the device manufacturer for display
+
+
+
+
+ dmdd - This tag describes the structure containing invariant and localizable
+ versions of the device model for display.
+
+
+
+
+ devs - Removed in V4
+
+
+
+
+ D2B0 - This tag defines a color transform from Device to PCS. It supports float32Number-encoded
+ input range, output range and transform, and provides a means to override the AToB0 tag
+
+
+
+
+ D2B1 - This tag defines a color transform from Device to PCS. It supports float32Number-encoded
+ input range, output range and transform, and provides a means to override the AToB1 tag
+
+
+
+
+ D2B2 - This tag defines a color transform from Device to PCS. It supports float32Number-encoded
+ input range, output range and transform, and provides a means to override the AToB1 tag
+
+
+
+
+ D2B3 - This tag defines a color transform from Device to PCS. It supports float32Number-encoded
+ input range, output range and transform, and provides a means to override the AToB1 tag
+
+
+
+
+ gamt - This tag provides a table in which PCS values are the input and a single
+ output value for each input value is the output. If the output value is 0, the PCS color is in-gamut.
+ If the output is non-zero, the PCS color is out-of-gamut
+
+
+
+
+ kTRC - This tag contains the grey tone reproduction curve. The tone reproduction curve provides the necessary
+ information to convert between a single device channel and the PCSXYZ or PCSLAB encoding.
+
+
+
+
+ gXYZ - This tag contains the second column in the matrix, which is used in matrix/TRC transforms.
+
+
+
+
+ gTRC - This tag contains the green channel tone reproduction curve. The first element represents no
+ colorant (white) or phosphor (black) and the last element represents 100 % colorant (green) or 100 % phosphor (green).
+
+
+
+
+ lumi - This tag contains the absolute luminance of emissive devices in candelas per square meter as described by the Y channel.
+
+
+
+
+ meas - This tag describes the alternative measurement specification, such as a D65 illuminant instead of the default D50.
+
+
+
+
+ bkpt - Removed in V4
+
+
+
+
+ wtpt - This tag, which is used for generating the ICC-absolute colorimetric intent, specifies the chromatically
+ adapted nCIEXYZ tristimulus values of the media white point.
+
+
+
+
+ ncol - OBSOLETE, use
+
+
+
+
+ ncl2 - This tag contains the named color information providing a PCS and optional device representation
+ for a list of named colors.
+
+
+
+
+ resp - This tag describes the structure containing a description of the device response for which the profile is intended.
+
+
+
+
+ rig0 - There is only one standard reference medium gamut, as defined in ISO 12640-3
+
+
+
+
+ pre0 - This tag contains the preview transformation from PCS to device space and back to the PCS.
+
+
+
+
+ pre1 - This tag defines the preview transformation from PCS to device space and back to the PCS.
+
+
+
+
+ pre2 - This tag contains the preview transformation from PCS to device space and back to the PCS.
+
+
+
+
+ desc - This tag describes the structure containing invariant and localizable versions of the profile
+ description for display.
+
+
+
+
+ pseq - This tag describes the structure containing a description of the profile sequence from source to
+ destination, typically used with the DeviceLink profile.
+
+
+
+
+ psd0 - Removed in V4
+
+
+
+
+ psd1 - Removed in V4
+
+
+
+
+ psd2 - Removed in V4
+
+
+
+
+ psd3 - Removed in V4
+
+
+
+
+ ps2s - Removed in V4
+
+
+
+
+ psd2i- Removed in V4
+
+
+
+
+ rXYZ - This tag contains the first column in the matrix, which is used in matrix/TRC transforms.
+
+
+
+
+ This tag contains the red channel tone reproduction curve. The first element represents no colorant
+ (white) or phosphor (black) and the last element represents 100 % colorant (red) or 100 % phosphor (red).
+
+
+
+
+ rig2 - There is only one standard reference medium gamut, as defined in ISO 12640-3.
+
+
+
+
+ scrd - Removed in V4
+
+
+
+
+ scrn - Removed in V4
+
+
+
+
+ tech - The device technology signature
+
+
+
+
+ bfd - Removed in V4
+
+
+
+
+ vued - This tag describes the structure containing invariant and localizable
+ versions of the viewing conditions.
+
+
+
+
+ view - This tag defines the viewing conditions parameters
+
+
+
+
+ Rendering intent
+
+
+
+
+ In perceptual transforms the PCS values represent hypothetical
+ measurements of a color reproduction on the reference reflective
+ medium. By extension, for the perceptual intent, the PCS represents
+ the appearance of that reproduction as viewed in the reference viewing
+ environment by a human observer adapted to that environment. The exact
+ color rendering of the perceptual intent is vendor specific.
+
+
+
+
+ Transformations for this intent shall re-scale the in-gamut,
+ chromatically adapted tristimulus values such that the white
+ point of the actual medium is mapped to the PCS white point
+ (for either input or output)
+
+
+
+
+ The exact color rendering of the saturation intent is vendor
+ specific and involves compromises such as trading off
+ preservation of hue in order to preserve the vividness of pure colors.
+
+
+
+
+ Transformations for this intent shall leave the chromatically
+ adapted nCIEXYZ tristimulus values of the in-gamut colors unchanged.
+
+
+
+
+ Screening flags. Can be combined with a logical OR.
+
+
+
+
+ No flags (equivalent to NotDefaultScreens and UnitLinesPerCm)
+
+
+
+
+ Use printer default screens
+
+
+
+
+ Don't use printer default screens
+
+
+
+
+ Frequency units in Lines/Inch
+
+
+
+
+ Frequency units in Lines/cm
+
+
+
+
+ Enumerates the screening spot types
+
+
+
+
+ Unknown spot type
+
+
+
+
+ Default printer spot type
+
+
+
+
+ Round stop type
+
+
+
+
+ Diamond spot type
+
+
+
+
+ Ellipse spot type
+
+
+
+
+ Line spot type
+
+
+
+
+ Square spot type
+
+
+
+
+ Cross spot type
+
+
+
+
+ Signature Name
+
+
+
+
+ Unknown signature
+
+
+
+
+ Scene Colorimetry Estimates
+
+
+
+
+ Scene Appearance Estimates
+
+
+
+
+ Focal Plane Colorimetry Estimates
+
+
+
+
+ Reflection Hardcopy Original Colorimetry
+
+
+
+
+ Reflection Print Output Colorimetry
+
+
+
+
+ Perceptual Reference Medium Gamut
+
+
+
+
+ Film Scanner
+
+
+
+
+ Digital Camera
+
+
+
+
+ Reflective Scanner
+
+
+
+
+ InkJet Printer
+
+
+
+
+ Thermal Wax Printer
+
+
+
+
+ Electrophotographic Printer
+
+
+
+
+ Electrostatic Printer
+
+
+
+
+ Dye Sublimation Printer
+
+
+
+
+ Photographic Paper Printer
+
+
+
+
+ Film Writer
+
+
+
+
+ Video Monitor
+
+
+
+
+ Video Camera
+
+
+
+
+ Projection Television
+
+
+
+
+ Cathode Ray Tube Display
+
+
+
+
+ Passive Matrix Display
+
+
+
+
+ Active Matrix Display
+
+
+
+
+ Photo CD
+
+
+
+
+ Photographic Image Setter
+
+
+
+
+ Gravure
+
+
+
+
+ Offset Lithography
+
+
+
+
+ Silkscreen
+
+
+
+
+ Flexography
+
+
+
+
+ Motion Picture Film Scanner
+
+
+
+
+ Motion Picture Film Recorder
+
+
+
+
+ Digital Motion Picture Camera
+
+
+
+
+ Digital Cinema Projector
+
+
+
+
+ Standard Illuminant
+
+
+
+
+ Unknown illuminant
+
+
+
+
+ D50 illuminant
+
+
+
+
+ D65 illuminant
+
+
+
+
+ D93 illuminant
+
+
+
+
+ F2 illuminant
+
+
+
+
+ D55 illuminant
+
+
+
+
+ A illuminant
+
+
+
+
+ D50 illuminant
+
+
+
+
+ F8 illuminant
+
+
+
+
+ Standard Observer
+
+
+
+
+ Unknown observer
+
+
+
+
+ CIE 1931 observer
+
+
+
+
+ CIE 1964 observer
+
+
+
+
+ Type Signature
+
+
+
+
+ Unknown type signature
+
+
+
+
+ The chromaticity tag type provides basic chromaticity data and type of
+ phosphors or colorants of a monitor to applications and utilities
+
+
+
+
+ This is an optional tag which specifies the laydown order in which colorants
+ will be printed on an n-colorant device. The laydown order may be the same
+ as the channel generation order listed in the colorantTableTag or the channel
+ order of a color encoding type such as CMYK, in which case this tag is not
+ needed. When this is not the case (for example, ink-towers sometimes use
+ the order KCMY), this tag may be used to specify the laydown order of the
+ colorants
+
+
+
+
+ The purpose of this tag is to identify the colorants used in the profile
+ by a unique name and set of PCSXYZ or PCSLAB values to give the colorant
+ an unambiguous value. The first colorant listed is the colorant of the
+ first device channel of a LUT tag. The second colorant listed is the
+ colorant of the second device channel of a LUT tag, and so on
+
+
+
+
+ The curveType embodies a one-dimensional function which maps an input
+ value in the domain of the function to an output value in the range
+ of the function
+
+
+
+
+ The dataType is a simple data structure that contains either 7-bit ASCII
+ or binary data
+
+
+
+
+ Date and time defined by 6 unsigned 16bit integers
+ (year, month, day, hour, minute, second)
+
+
+
+
+ This structure represents a color transform using tables with 16-bit
+ precision. This type contains four processing elements: a 3 × 3 matrix
+ (which shall be the identity matrix unless the input color space is
+ PCSXYZ), a set of one-dimensional input tables, a multi-dimensional
+ lookup table, and a set of one-dimensional output tables
+
+
+
+
+ This structure represents a color transform using tables of 8-bit
+ precision. This type contains four processing elements: a 3 × 3 matrix
+ (which shall be the identity matrix unless the input color space is
+ PCSXYZ), a set of one-dimensional input tables, a multi-dimensional
+ lookup table, and a set of one-dimensional output tables.
+
+
+
+
+ This structure represents a color transform. The type contains up
+ to five processing elements which are stored in the AToBTag tag
+ in the following order: a set of one-dimensional curves, a 3 × 3
+ matrix with offset terms, a set of one-dimensional curves, a
+ multi-dimensional lookup table, and a set of one-dimensional
+ output curves
+
+
+
+
+ This structure represents a color transform. The type contains
+ up to five processing elements which are stored in the BToATag
+ in the following order: a set of one-dimensional curves, a 3 × 3
+ matrix with offset terms, a set of one-dimensional curves, a
+ multi-dimensional lookup table, and a set of one-dimensional curves.
+
+
+
+
+ This information refers only to the internal
+ profile data and is meant to provide profile makers an alternative
+ to the default measurement specifications
+
+
+
+
+ This tag structure contains a set of records each referencing a
+ multilingual Unicode string associated with a profile. Each string
+ is referenced in a separate record with the information about what
+ language and region the string is for.
+
+
+
+
+ This structure represents a color transform, containing a sequence
+ of processing elements. The processing elements contained in the
+ structure are defined in the structure itself, allowing for a flexible
+ structure. Currently supported processing elements are: a set of one
+ dimensional curves, a matrix with offset terms, and a multidimensional
+ lookup table (CLUT). Other processing element types may be added in
+ the future. Each type of processing element may be contained any
+ number of times in the structure.
+
+
+
+
+ This type is a count value and array of structures that provide color
+ coordinates for color names. For each named color, a PCS and optional
+ device representation of the color are given. Both representations are
+ 16-bit values and PCS values shall be relative colorimetric. The device
+ representation corresponds to the header’s "data color space" field.
+ This representation should be consistent with the "number of device
+ coordinates" field in the namedColor2Type. If this field is 0, device
+ coordinates are not provided. The PCS representation corresponds to the
+ header's PCS field. The PCS representation is always provided. Color
+ names are fixed-length, 32-byte fields including null termination. In
+ order to maintain maximum portability, it is strongly recommended that
+ special characters of the 7-bit ASCII set not be used.
+
+
+
+
+ This type describes a one-dimensional curve by specifying one of a
+ predefined set of functions using the parameters.
+
+
+
+
+ This type is an array of structures, each of which contains information
+ from the header fields and tags from the original profiles which were
+ combined to create the final profile. The order of the structures is
+ the order in which the profiles were combined and includes a structure
+ for the final profile. This provides a description of the profile
+ sequence from source to destination, typically used with the DeviceLink
+ profile.
+
+
+
+
+ This type is an array of structures, each of which contains information
+ for identification of a profile used in a sequence.
+
+
+
+
+ The purpose of this tag type is to provide a mechanism to relate physical
+ colorant amounts with the normalized device codes produced by lut8Type,
+ lut16Type, lutAToBType, lutBToAType or multiProcessElementsType tags
+ so that corrections can be made for variation in the device without
+ having to produce a new profile. The mechanism can be used by applications
+ to allow users with relatively inexpensive and readily available
+ instrumentation to apply corrections to individual output color
+ channels in order to achieve consistent results.
+
+
+
+
+ Array of signed floating point numbers with 1 sign bit, 15 value bits and 16 fractional bits
+
+
+
+
+ The signatureType contains a 4-byte sequence. Sequences of less than four
+ characters are padded at the end with spaces. Typically this type is used
+ for registered tags that can be displayed on many development systems as
+ a sequence of four characters.
+
+
+
+
+ Simple ASCII text
+
+
+
+
+ Array of unsigned floating point numbers with 16 value bits and 16 fractional bits
+
+
+
+
+ Array of unsigned 16bit integers (ushort)
+
+
+
+
+ Array of unsigned 32bit integers (uint)
+
+
+
+
+ Array of unsigned 64bit integers (ulong)
+
+
+
+
+ Array of unsigned 8bit integers (byte)
+
+
+
+
+ This type represents a set of viewing condition parameters.
+
+
+
+
+ 3 floating point values describing a XYZ color value
+
+
+
+
+ REMOVED IN V4 - The textDescriptionType is a complex structure that contains three
+ types of text description structures: 7-bit ASCII, Unicode and ScriptCode. Since no
+ single standard method for specifying localizable character sets exists across
+ the major platform vendors, including all three provides access for the major
+ operating systems. The 7-bit ASCII description is to be an invariant,
+ nonlocalizable name for consistent reference. It is preferred that both the
+ Unicode and ScriptCode structures be properly localized.
+
+
+
+
+ REMOVED IN V4 - This type contains the PostScript product name to which this
+ profile corresponds and the names of the companion CRDs
+
+
+
+
+ REMOVED IN V4 - The screeningType describes various screening parameters including
+ screen frequency, screening angle, and spot shape
+
+
+
+
+ REMOVED IN V4 - This type contains curves representing the under color removal and
+ black generation and a text string which is a general description of the method
+ used for the UCR and BG
+
+
+
+
+ REMOVED IN V4 - This type is an array of structures each of which contains
+ platform-specific information about the settings of the device for which
+ this profile is valid. This type is not supported.
+
+
+
+
+ REMOVED IN V2 - use instead. This type is not supported.
+
+
+
+
+ Represents an error that happened while reading or writing a corrupt/invalid ICC profile
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error
+
+
+
+ Initializes a new instance of the class.
+
+ The message that describes the error
+ The exception that is the cause of the current exception, or a null reference
+ (Nothing in Visual Basic) if no inner exception is specified
+
+
+
+ Represents an ICC profile
+
+
+
+
+ The byte array to read the ICC profile from
+
+
+
+
+ The backing file for the property
+
+
+
+
+ ICC profile header
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The raw ICC profile data
+
+
+
+ Initializes a new instance of the class.
+
+ The profile header
+ The actual profile data
+
+
+
+ Initializes a new instance of the class
+ by making a copy from another ICC profile.
+
+ The other ICC profile, where the clone should be made from.
+ is null.>
+
+
+
+ Gets or sets the profile header
+
+
+
+
+ Gets the actual profile data
+
+
+
+
+
+
+
+ Calculates the MD5 hash value of an ICC profile
+
+ The data of which to calculate the hash value
+ The calculated hash
+
+
+
+ Checks for signs of a corrupt profile.
+
+ This is not an absolute proof of validity but should weed out most corrupt data.
+ True if the profile is valid; False otherwise
+
+
+
+ Converts this instance to a byte array.
+
+ The
+
+
+
+ Contains all values of an ICC profile header.
+
+
+
+
+ Gets or sets the profile size in bytes (will be ignored when writing a profile).
+
+
+
+
+ Gets or sets the preferred CMM (Color Management Module) type.
+
+
+
+
+ Gets or sets the profiles version number.
+
+
+
+
+ Gets or sets the type of the profile.
+
+
+
+
+ Gets or sets the data colorspace.
+
+
+
+
+ Gets or sets the profile connection space.
+
+
+
+
+ Gets or sets the date and time this profile was created.
+
+
+
+
+ Gets or sets the file signature. Should always be "acsp".
+ Value will be ignored when writing a profile.
+
+
+
+
+ Gets or sets the primary platform this profile as created for
+
+
+
+
+ Gets or sets the profile flags to indicate various options for the CMM
+ such as distributed processing and caching options.
+
+
+
+
+ Gets or sets the device manufacturer of the device for which this profile is created.
+
+
+
+
+ Gets or sets the model of the device for which this profile is created.
+
+
+
+
+ Gets or sets the device attributes unique to the particular device setup such as media type.
+
+
+
+
+ Gets or sets the rendering Intent.
+
+
+
+
+ Gets or sets The normalized XYZ values of the illuminant of the PCS.
+
+
+
+
+ Gets or sets profile creator signature.
+
+
+
+
+ Gets or sets the profile ID (hash).
+
+
+
+
+ Reads and parses ICC data from a byte array
+
+
+
+
+ Reads an ICC profile
+
+ The raw ICC data
+ The read ICC profile
+
+
+
+ Reads an ICC profile header
+
+ The raw ICC data
+ The read ICC profile header
+
+
+
+ Reads the ICC profile tag data
+
+ The raw ICC data
+ The read ICC profile tag data
+
+
+
+ The data of an ICC tag entry
+
+
+
+
+ Initializes a new instance of the class.
+ TagSignature will be
+
+ Type Signature
+
+
+
+ Initializes a new instance of the class.
+
+ Type Signature
+ Tag Signature
+
+
+
+ Gets the type Signature
+
+
+
+
+ Gets or sets the tag Signature
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Contains methods for writing ICC profiles.
+
+
+
+
+ Writes the ICC profile into a byte array
+
+ The ICC profile to write
+ The ICC profile as a byte array
+
+
+
+ A placeholder (might be used for future ICC versions)
+
+
+
+
+ Initializes a new instance of the class.
+
+ Number of input channels
+ Number of output channels
+
+
+
+
+
+
+ A CLUT (color lookup table) element to process data
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color lookup table of this element
+
+
+
+ Gets the color lookup table of this element
+
+
+
+
+
+
+
+
+
+
+ A set of curves to process data
+
+
+
+
+ Initializes a new instance of the class.
+
+ An array with one dimensional curves
+
+
+
+ Gets an array of one dimensional curves
+
+
+
+
+
+
+
+
+
+
+ A placeholder (might be used for future ICC versions)
+
+
+
+
+ Initializes a new instance of the class.
+
+ Number of input channels
+ Number of output channels
+
+
+
+
+
+
+ A matrix element to process data
+
+
+
+
+ Initializes a new instance of the class.
+
+ Two dimensional matrix with size of Input-Channels x Output-Channels
+ One dimensional matrix with size of Output-Channels x 1
+
+
+
+ Gets the two dimensional matrix with size of Input-Channels x Output-Channels
+
+
+
+
+ Gets the one dimensional matrix with size of Output-Channels x 1
+
+
+
+
+
+
+
+
+
+
+ An element to process data
+
+
+
+
+ Initializes a new instance of the class.
+
+ The signature of this element
+ Number of input channels
+ Number of output channels
+
+
+
+ Gets the signature of this element,
+
+
+
+
+ Gets the number of input channels
+
+
+
+
+ Gets the number of output channels.
+
+
+
+
+
+
+
+ The chromaticity tag type provides basic chromaticity data
+ and type of phosphors or colorants of a monitor to applications and utilities.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Colorant Type
+
+
+
+ Initializes a new instance of the class.
+
+ Values per channel
+
+
+
+ Initializes a new instance of the class.
+
+ Colorant Type
+ Tag Signature
+
+
+
+ Initializes a new instance of the class.
+
+ Values per channel
+ Tag Signature
+
+
+
+ Gets the number of channels
+
+
+
+
+ Gets the colorant type
+
+
+
+
+ Gets the values per channel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This tag specifies the laydown order in which colorants
+ will be printed on an n-colorant device.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Colorant order numbers
+
+
+
+ Initializes a new instance of the class.
+
+ Colorant order numbers
+ Tag Signature
+
+
+
+ Gets the colorant order numbers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The purpose of this tag is to identify the colorants used in
+ the profile by a unique name and set of PCSXYZ or PCSLAB values
+ to give the colorant an unambiguous value.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Colorant Data
+
+
+
+ Initializes a new instance of the class.
+
+ Colorant Data
+ Tag Signature
+
+
+
+ Gets the colorant data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type contains the PostScript product name to which this profile
+ corresponds and the names of the companion CRDs
+
+
+
+
+ Initializes a new instance of the class.
+
+ the PostScript product name
+ the rendering intent 0 CRD name
+ the rendering intent 1 CRD name
+ the rendering intent 2 CRD name
+ the rendering intent 3 CRD name
+
+
+
+ Initializes a new instance of the class.
+
+ the PostScript product name
+ the rendering intent 0 CRD name
+ the rendering intent 1 CRD name
+ the rendering intent 2 CRD name
+ the rendering intent 3 CRD name
+ Tag Signature
+
+
+
+ Gets the PostScript product name
+
+
+
+
+ Gets the rendering intent 0 CRD name
+
+
+
+
+ Gets the rendering intent 1 CRD name
+
+
+
+
+ Gets the rendering intent 2 CRD name
+
+
+
+
+ Gets the rendering intent 3 CRD name
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The type contains a one-dimensional table of double values.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Gamma value
+
+
+
+ Initializes a new instance of the class.
+
+ Curve Data
+
+
+
+ Initializes a new instance of the class.
+
+ Tag Signature
+
+
+
+ Initializes a new instance of the class.
+
+ Gamma value
+ Tag Signature
+
+
+
+ Initializes a new instance of the class.
+
+ Curve Data
+ Tag Signature
+
+
+
+ Gets the curve data
+
+
+
+
+ Gets the gamma value.
+ Only valid if is true
+
+
+
+
+ Gets a value indicating whether the curve maps input directly to output.
+
+
+
+
+ Gets a value indicating whether the curve is a gamma curve.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The dataType is a simple data structure that contains
+ either 7-bit ASCII or binary data, i.e. textType data or transparent bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The raw data
+
+
+
+ Initializes a new instance of the class.
+
+ The raw data
+ True if the given data is 7bit ASCII encoded text
+
+
+
+ Initializes a new instance of the class.
+
+ The raw data
+ True if the given data is 7bit ASCII encoded text
+ Tag Signature
+
+
+
+ Gets the raw Data
+
+
+
+
+ Gets a value indicating whether the represents 7bit ASCII encoded text
+
+
+
+
+ Gets the decoded as 7bit ASCII.
+ If is false, returns null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type is a representation of the time and date.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The DateTime value
+
+
+
+ Initializes a new instance of the class.
+
+ The DateTime value
+ Tag Signature
+
+
+
+ Gets the date and time value
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type represents an array of doubles (from 32bit fixed point values).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+ Tag Signature
+
+
+
+ Gets the array data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This structure represents a color transform using tables
+ with 16-bit precision.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Input LUT
+ CLUT
+ Output LUT
+
+
+
+ Initializes a new instance of the class.
+
+ Input LUT
+ CLUT
+ Output LUT
+ Tag Signature
+
+
+
+ Initializes a new instance of the class.
+
+ Conversion matrix (must be 3x3)
+ Input LUT
+ CLUT
+ Output LUT
+
+
+
+ Initializes a new instance of the class.
+
+ Conversion matrix (must be 3x3)
+ Input LUT
+ CLUT
+ Output LUT
+ Tag Signature
+
+
+
+ Gets the number of input channels
+
+
+
+
+ Gets the number of output channels
+
+
+
+
+ Gets the conversion matrix
+
+
+
+
+ Gets the input lookup table
+
+
+
+
+ Gets the color lookup table
+
+
+
+
+ Gets the output lookup table
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This structure represents a color transform using tables
+ with 8-bit precision.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Input LUT
+ CLUT
+ Output LUT
+
+
+
+ Initializes a new instance of the class.
+
+ Input LUT
+ CLUT
+ Output LUT
+ Tag Signature
+
+
+
+ Initializes a new instance of the class.
+
+ Conversion matrix (must be 3x3)
+ Input LUT
+ CLUT
+ Output LUT
+
+
+
+ Initializes a new instance of the class.
+
+ Conversion matrix (must be 3x3)
+ Input LUT
+ CLUT
+ Output LUT
+ Tag Signature
+
+
+
+ Gets the number of input channels
+
+
+
+
+ Gets the number of output channels
+
+
+
+
+ Gets the conversion matrix
+
+
+
+
+ Gets the input lookup table
+
+
+
+
+ Gets the color lookup table
+
+
+
+
+ Gets the output lookup table
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This structure represents a color transform.
+
+
+
+
+ Initializes a new instance of the class.
+
+ B Curve
+ Two dimensional conversion matrix (3x3)
+ One dimensional conversion matrix (3x1)
+ M Curve
+ CLUT
+ A Curve
+
+
+
+ Initializes a new instance of the class.
+
+ B Curve
+ Two dimensional conversion matrix (3x3)
+ One dimensional conversion matrix (3x1)
+ M Curve
+ CLUT
+ A Curve
+ Tag Signature
+
+
+
+ Gets the number of input channels
+
+
+
+
+ Gets the number of output channels
+
+
+
+
+ Gets the two dimensional conversion matrix (3x3)
+
+
+
+
+ Gets the one dimensional conversion matrix (3x1)
+
+
+
+
+ Gets the color lookup table
+
+
+
+
+ Gets the B Curve
+
+
+
+
+ Gets the M Curve
+
+
+
+
+ Gets the A Curve
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This structure represents a color transform.
+
+
+
+
+ Initializes a new instance of the class.
+
+ B Curve
+ Two dimensional conversion matrix (3x3)
+ One dimensional conversion matrix (3x1)
+ M Curve
+ CLUT
+ A Curve
+
+
+
+ Initializes a new instance of the class.
+
+ B Curve
+ Two dimensional conversion matrix (3x3)
+ One dimensional conversion matrix (3x1)
+ M Curve
+ CLUT
+ A Curve
+ Tag Signature
+
+
+
+ Gets the number of input channels
+
+
+
+
+ Gets the number of output channels
+
+
+
+
+ Gets the two dimensional conversion matrix (3x3)
+
+
+
+
+ Gets the one dimensional conversion matrix (3x1)
+
+
+
+
+ Gets the color lookup table
+
+
+
+
+ Gets the B Curve
+
+
+
+
+ Gets the M Curve
+
+
+
+
+ Gets the A Curve
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The measurementType information refers only to the internal
+ profile data and is meant to provide profile makers an alternative
+ to the default measurement specifications.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Observer
+ XYZ Backing values
+ Geometry
+ Flare
+ Illuminant
+
+
+
+ Initializes a new instance of the class.
+
+ Observer
+ XYZ Backing values
+ Geometry
+ Flare
+ Illuminant
+ Tag Signature
+
+
+
+ Gets the observer
+
+
+
+
+ Gets the XYZ Backing values
+
+
+
+
+ Gets the geometry
+
+
+
+
+ Gets the flare
+
+
+
+
+ Gets the illuminant
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This tag structure contains a set of records each referencing
+ a multilingual string associated with a profile.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Localized Text
+
+
+
+ Initializes a new instance of the class.
+
+ Localized Text
+ Tag Signature
+
+
+
+ Gets the localized texts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This structure represents a color transform, containing
+ a sequence of processing elements.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Processing elements
+
+
+
+ Initializes a new instance of the class.
+
+ Processing elements
+ Tag Signature
+
+
+
+ Gets the number of input channels
+
+
+
+
+ Gets the number of output channels
+
+
+
+
+ Gets the processing elements
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The namedColor2Type is a count value and array of structures
+ that provide color coordinates for color names.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The named colors
+
+
+
+ Initializes a new instance of the class.
+
+ Prefix
+ Suffix
+ /// The named colors
+
+
+
+ Initializes a new instance of the class.
+
+ Vendor specific flags
+ Prefix
+ Suffix
+ The named colors
+
+
+
+ Initializes a new instance of the class.
+
+ The named colors
+ Tag Signature
+
+
+
+ Initializes a new instance of the class.
+
+ Prefix
+ Suffix
+ The named colors
+ Tag Signature
+
+
+
+ Initializes a new instance of the class.
+
+ Vendor specific flags
+ Prefix
+ Suffix
+ The named colors
+ Tag Signature
+
+
+
+ Gets the number of coordinates
+
+
+
+
+ Gets the prefix
+
+
+
+
+ Gets the suffix
+
+
+
+
+ Gets the vendor specific flags
+
+
+
+
+ Gets the named colors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The parametricCurveType describes a one-dimensional curve by
+ specifying one of a predefined set of functions using the parameters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The Curve
+
+
+
+ Initializes a new instance of the class.
+
+ The Curve
+ Tag Signature
+
+
+
+ Gets the Curve
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type is an array of structures, each of which contains information
+ from the header fields and tags from the original profiles which were
+ combined to create the final profile.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Profile Descriptions
+
+
+
+ Initializes a new instance of the class.
+
+ Profile Descriptions
+ Tag Signature
+
+
+
+ Gets the profile descriptions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type is an array of structures, each of which contains information
+ for identification of a profile used in a sequence.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Profile Identifiers
+
+
+
+ Initializes a new instance of the class.
+
+ Profile Identifiers
+ Tag Signature
+
+
+
+ Gets the profile identifiers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The purpose of this tag type is to provide a mechanism to relate physical
+ colorant amounts with the normalized device codes produced by lut8Type, lut16Type,
+ lutAToBType, lutBToAType or multiProcessElementsType tags so that corrections can
+ be made for variation in the device without having to produce a new profile.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The Curves
+
+
+
+ Initializes a new instance of the class.
+
+ The Curves
+ Tag Signature
+
+
+
+ Gets the number of channels
+
+
+
+
+ Gets the curves
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type describes various screening parameters including
+ screen frequency, screening angle, and spot shape.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Screening flags
+ Channel information
+
+
+
+ Initializes a new instance of the class.
+
+ Screening flags
+ Channel information
+ Tag Signature
+
+
+
+ Gets the screening flags
+
+
+
+
+ Gets the channel information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Typically this type is used for registered tags that can
+ be displayed on many development systems as a sequence of four characters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The Signature
+
+
+
+ Initializes a new instance of the class.
+
+ The Signature
+ Tag Signature
+
+
+
+ Gets the signature data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The TextDescriptionType contains three types of text description.
+
+
+
+
+ Initializes a new instance of the class.
+
+ ASCII text
+ Unicode text
+ ScriptCode text
+ Unicode Language-Code
+ ScriptCode Code
+
+
+
+ Initializes a new instance of the class.
+
+ ASCII text
+ Unicode text
+ ScriptCode text
+ Unicode Language-Code
+ ScriptCode Code
+ Tag Signature
+
+
+
+ Gets the ASCII text
+
+
+
+
+ Gets the Unicode text
+
+
+
+
+ Gets the ScriptCode text
+
+
+
+
+ Gets the Unicode Language-Code
+
+
+
+
+ Gets the ScriptCode Code
+
+
+
+
+ Performs an explicit conversion from
+ to .
+
+ The entry to convert
+ The converted entry
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is a simple text structure that contains a text string.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The Text
+
+
+
+ Initializes a new instance of the class.
+
+ The Text
+ Tag Signature
+
+
+
+ Gets the Text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type contains curves representing the under color removal and black generation
+ and a text string which is a general description of the method used for the UCR and BG.
+
+
+
+
+ Initializes a new instance of the class.
+
+ UCR (under color removal) curve values
+ BG (black generation) curve values
+ Description of the used UCR and BG method
+
+
+
+ Initializes a new instance of the class.
+
+ UCR (under color removal) curve values
+ BG (black generation) curve values
+ Description of the used UCR and BG method
+ Tag Signature
+
+
+
+ Gets the UCR (under color removal) curve values
+
+
+
+
+ Gets the BG (black generation) curve values
+
+
+
+
+ Gets a description of the used UCR and BG method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type represents an array of doubles (from 32bit values).
+
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+ Tag Signature
+
+
+
+ Gets the array data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type represents an array of unsigned shorts.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+ Tag Signature
+
+
+
+ Gets the array data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type represents an array of unsigned 32bit integers.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+ Tag Signature
+
+
+
+ Gets the array data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type represents an array of unsigned 64bit integers.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+ Tag Signature
+
+
+
+ Gets the array data
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type represents an array of bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+
+
+
+ Initializes a new instance of the class.
+
+ The array data
+ Tag Signature
+
+
+
+ Gets the array data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This tag stores data of an unknown tag data entry
+
+
+
+
+ Initializes a new instance of the class.
+
+ The raw data of the entry
+
+
+
+ Initializes a new instance of the class.
+
+ The raw data of the entry
+ Tag Signature
+
+
+
+ Gets the raw data of the entry.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type represents a set of viewing condition parameters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ XYZ values of Illuminant
+ XYZ values of Surrounding
+ Illuminant
+
+
+
+ Initializes a new instance of the class.
+
+ XYZ values of Illuminant
+ XYZ values of Surrounding
+ Illuminant
+ Tag Signature
+
+
+
+ Gets the XYZ values of illuminant.
+
+
+
+
+ Gets the XYZ values of Surrounding
+
+
+
+
+ Gets the illuminant.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The XYZType contains an array of XYZ values.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The XYZ numbers.
+
+
+
+ Initializes a new instance of the class.
+
+ The XYZ numbers
+ Tag Signature
+
+
+
+ Gets the XYZ numbers.
+
+
+
+
+
+
+
+
+
+
+ Color Lookup Table
+
+
+
+
+ Initializes a new instance of the class.
+
+ The CLUT values
+ The gridpoint count
+ The data type of this CLUT
+
+
+
+ Initializes a new instance of the class.
+
+ The CLUT values
+ The gridpoint count
+
+
+
+ Initializes a new instance of the class.
+
+ The CLUT values
+ The gridpoint count
+
+
+
+ Gets the values that make up this table
+
+
+
+
+ Gets the CLUT data type (important when writing a profile)
+
+
+
+
+ Gets the number of input channels
+
+
+
+
+ Gets the number of output channels
+
+
+
+
+ Gets the number of grid points per input channel
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Entry of ICC colorant table
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Name of the colorant
+
+
+
+ Initializes a new instance of the struct.
+
+ Name of the colorant
+ First PCS value
+ Second PCS value
+ Third PCS value
+
+
+
+ Gets the colorant name.
+
+
+
+
+ Gets the first PCS value.
+
+
+
+
+ Gets the second PCS value.
+
+
+
+
+ Gets the third PCS value.
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A string with a specific locale.
+
+
+
+
+ Initializes a new instance of the struct.
+ The culture will be
+
+ The text value of this string
+
+
+
+ Initializes a new instance of the struct.
+ The culture will be
+
+ The culture of this string
+ The text value of this string
+
+
+
+ Gets the text value.
+
+
+
+
+ Gets the culture of text.
+
+
+
+
+
+
+
+
+
+
+ Lookup Table
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The LUT values
+
+
+
+ Initializes a new instance of the struct.
+
+ The LUT values
+
+
+
+ Initializes a new instance of the struct.
+
+ The LUT values
+
+
+
+ Gets the values that make up this table
+
+
+
+
+
+
+
+ A specific color with a name
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Name of the color
+ Coordinates of the color in the profiles PCS
+ Coordinates of the color in the profiles Device-Space
+
+
+
+ Gets the name of the color
+
+
+
+
+ Gets the coordinates of the color in the profiles PCS
+
+
+
+
+ Gets the coordinates of the color in the profiles Device-Space
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Position of an object within an ICC profile
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Offset in bytes
+ Size in bytes
+
+
+
+ Gets the offset in bytes
+
+
+
+
+ Gets the size in bytes
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ICC Profile description
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Device Manufacturer
+ Device Model
+ Device Attributes
+ Technology Information
+ Device Manufacturer Info
+ Device Model Info
+
+
+
+ Gets the device manufacturer.
+
+
+
+
+ Gets the device model.
+
+
+
+
+ Gets the device attributes.
+
+
+
+
+ Gets the technology information.
+
+
+
+
+ Gets the device manufacturer info.
+
+
+
+
+ Gets the device model info.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ICC Profile ID
+
+
+
+
+ A profile ID with all values set to zero
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Part 1 of the ID
+ Part 2 of the ID
+ Part 3 of the ID
+ Part 4 of the ID
+
+
+
+ Gets the first part of the ID.
+
+
+
+
+ Gets the second part of the ID.
+
+
+
+
+ Gets the third part of the ID.
+
+
+
+
+ Gets the fourth part of the ID.
+
+
+
+
+ Gets a value indicating whether the ID is set or just consists of zeros.
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Description of a profile within a sequence.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ ID of the profile
+ Description of the profile
+
+
+
+ Gets the ID of the profile.
+
+
+
+
+ Gets the description of the profile.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Associates a normalized device code with a measurement value
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Device Code
+ Measurement Value
+
+
+
+ Gets the device code
+
+
+
+
+ Gets the measurement value
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A single channel of a
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Screen frequency
+ Angle in degrees
+ Spot shape
+
+
+
+ Gets the screen frequency.
+
+
+
+
+ Gets the angle in degrees.
+
+
+
+
+ Gets the spot shape
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Entry of ICC tag table
+
+
+
+
+ Initializes a new instance of the struct.
+
+ Signature of the tag
+ Offset of entry in bytes
+ Size of entry in bytes
+
+
+
+ Gets the signature of the tag.
+
+
+
+
+ Gets the offset of entry in bytes.
+
+
+
+
+ Gets the size of entry in bytes.
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents the ICC profile version number.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The major version number.
+ The minor version number.
+ The patch version number.
+
+
+
+ Gets the major version number.
+
+
+
+
+ Gets the minor version number.
+
+
+
+
+ Gets the patch number.
+
+
+
+
+
+
+
+
+
+
+ Represents an IPTC profile providing access to the collection of values.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The byte array to read the iptc profile from.
+
+
+
+ Initializes a new instance of the class
+ by making a copy from another IPTC profile.
+
+ The other IPTC profile, from which the clone should be made from.
+
+
+
+ Gets the byte data of the IPTC profile.
+
+
+
+
+ Gets the values of this iptc profile.
+
+
+
+
+
+
+
+ Returns all values with the specified tag.
+
+ The tag of the iptc value.
+ The values found with the specified tag.
+
+
+
+ Removes all values with the specified tag.
+
+ The tag of the iptc value to remove.
+ True when the value was found and removed.
+
+
+
+ Removes values with the specified tag and value.
+
+ The tag of the iptc value to remove.
+ The value of the iptc item to remove.
+ True when the value was found and removed.
+
+
+
+ Changes the encoding for all the values.
+
+ The encoding to use when storing the bytes.
+
+
+
+ Sets the value for the specified tag.
+
+ The tag of the iptc value.
+ The encoding to use when storing the bytes.
+ The value.
+
+ Indicates if length restrictions from the specification should be followed strictly.
+ Defaults to true.
+
+
+
+
+ Makes sure the datetime is formatted according to the iptc specification.
+
+ A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989.
+ A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time,
+ two hours ahead of UTC.
+
+
+ The tag of the iptc value.
+ The datetime.
+
+
+
+ Sets the value of the specified tag.
+
+ The tag of the iptc value.
+ The value.
+
+ Indicates if length restrictions from the specification should be followed strictly.
+ Defaults to true.
+
+
+
+
+ Updates the data of the profile.
+
+
+
+
+ Provides enumeration of all IPTC tags relevant for images.
+
+
+
+
+ Unknown.
+
+
+
+
+ Record version identifying the version of the Information Interchange Model.
+ Not repeatable. Max length is 2.
+
+
+
+
+ Object type, not repeatable. Max Length is 67.
+
+
+
+
+ Object attribute. Max length is 68.
+
+
+
+
+ Object Name, not repeatable. Max length is 64.
+
+
+
+
+ Edit status, not repeatable. Max length is 64.
+
+
+
+
+ Editorial update, not repeatable. Max length is 2.
+
+
+
+
+ Urgency, not repeatable. Max length is 2.
+
+
+
+
+ Subject Reference. Max length is 236.
+
+
+
+
+ Category, not repeatable. Max length is 3.
+
+
+
+
+ Supplemental categories. Max length is 32.
+
+
+
+
+ Fixture identifier, not repeatable. Max length is 32.
+
+
+
+
+ Keywords. Max length is 64.
+
+
+
+
+ Location code. Max length is 3.
+
+
+
+
+ Location name. Max length is 64.
+
+
+
+
+ Release date. Format should be CCYYMMDD.
+ Not repeatable, max length is 8.
+
+ A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989.
+
+
+
+
+
+ Release time. Format should be HHMMSS±HHMM.
+ Not repeatable, max length is 11.
+
+ A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time,
+ two hours ahead of UTC.
+
+
+
+
+
+ Expiration date. Format should be CCYYMMDD.
+ Not repeatable, max length is 8.
+
+ A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989.
+
+
+
+
+
+ Expiration time. Format should be HHMMSS±HHMM.
+ Not repeatable, max length is 11.
+
+ A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time,
+ two hours ahead of UTC.
+
+
+
+
+
+ Special instructions, not repeatable. Max length is 256.
+
+
+
+
+ Action advised, not repeatable. Max length is 2.
+
+
+
+
+ Reference service. Max length is 10.
+
+
+
+
+ Reference date. Format should be CCYYMMDD.
+ Not repeatable, max length is 8.
+
+ A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989.
+
+
+
+
+
+ ReferenceNumber. Max length is 8.
+
+
+
+
+ Created date. Format should be CCYYMMDD.
+ Not repeatable, max length is 8.
+
+ A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989.
+
+
+
+
+
+ Created time. Format should be HHMMSS±HHMM.
+ Not repeatable, max length is 11.
+
+ A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time,
+ two hours ahead of UTC.
+
+
+
+
+
+ Digital creation date. Format should be CCYYMMDD.
+ Not repeatable, max length is 8.
+
+ A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989.
+
+
+
+
+
+ Digital creation time. Format should be HHMMSS±HHMM.
+ Not repeatable, max length is 11.
+
+ A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time,
+ two hours ahead of UTC.
+
+
+
+
+
+ Originating program, not repeatable. Max length is 32.
+
+
+
+
+ Program version, not repeatable. Max length is 10.
+
+
+
+
+ Object cycle, not repeatable. Max length is 1.
+
+
+
+
+ Byline. Max length is 32.
+
+
+
+
+ Byline title. Max length is 32.
+
+
+
+
+ City, not repeatable. Max length is 32.
+
+
+
+
+ Sub location, not repeatable. Max length is 32.
+
+
+
+
+ Province/State, not repeatable. Max length is 32.
+
+
+
+
+ Country code, not repeatable. Max length is 3.
+
+
+
+
+ Country, not repeatable. Max length is 64.
+
+
+
+
+ Original transmission reference, not repeatable. Max length is 32.
+
+
+
+
+ Headline, not repeatable. Max length is 256.
+
+
+
+
+ Credit, not repeatable. Max length is 32.
+
+
+
+
+ Source, not repeatable. Max length is 32.
+
+
+
+
+ Copyright notice, not repeatable. Max length is 128.
+
+
+
+
+ Contact. Max length 128.
+
+
+
+
+ Caption, not repeatable. Max length is 2000.
+
+
+
+
+ Local caption.
+
+
+
+
+ Caption writer. Max length is 32.
+
+
+
+
+ Image type, not repeatable. Max length is 2.
+
+
+
+
+ Image orientation, not repeatable. Max length is 1.
+
+
+
+
+ Custom field 1
+
+
+
+
+ Custom field 2
+
+
+
+
+ Custom field 3
+
+
+
+
+ Custom field 4
+
+
+
+
+ Custom field 5
+
+
+
+
+ Custom field 6
+
+
+
+
+ Custom field 7
+
+
+
+
+ Custom field 8
+
+
+
+
+ Custom field 9
+
+
+
+
+ Custom field 10
+
+
+
+
+ Custom field 11
+
+
+
+
+ Custom field 12
+
+
+
+
+ Custom field 13
+
+
+
+
+ Custom field 14
+
+
+
+
+ Custom field 15
+
+
+
+
+ Custom field 16
+
+
+
+
+ Custom field 17
+
+
+
+
+ Custom field 18
+
+
+
+
+ Custom field 19
+
+
+
+
+ Custom field 20
+
+
+
+
+ Extension methods for IPTC tags.
+
+
+
+
+ Maximum length of the IPTC value with the given tag according to the specification.
+
+ The tag to check the max length for.
+ The maximum length.
+
+
+
+ Determines if the given tag can be repeated according to the specification.
+
+ The tag to check.
+ True, if the tag can occur multiple times.
+
+
+
+ Determines if the tag is a datetime tag which needs to be formatted as CCYYMMDD.
+
+ The tag to check.
+ True, if its a datetime tag.
+
+
+
+ Determines if the tag is a time tag which need to be formatted as HHMMSS±HHMM.
+
+ The tag to check.
+ True, if its a time tag.
+
+
+
+ Represents a single value of the IPTC profile.
+
+
+
+
+ Gets or sets the encoding to use for the Value.
+
+
+
+
+ Gets the tag of the iptc value.
+
+
+
+
+ Gets or sets a value indicating whether to be enforce value length restrictions according
+ to the specification.
+
+
+
+
+ Gets or sets the value.
+
+
+
+
+ Gets the length of the value.
+
+
+
+
+
+
+
+ Determines whether the specified object is equal to the current .
+
+ The object to compare this with.
+ True when the specified object is equal to the current .
+
+
+
+ Determines whether the specified iptc value is equal to the current .
+
+ The iptc value to compare this with.
+ True when the specified iptc value is equal to the current .
+
+
+
+ Serves as a hash of this type.
+
+ A hash code for the current instance.
+
+
+
+ Converts this instance to a byte array.
+
+ A array.
+
+
+
+ Returns a string that represents the current value.
+
+ A string that represents the current value.
+
+
+
+ Returns a string that represents the current value with the specified encoding.
+
+ The encoding to use.
+ A string that represents the current value with the specified encoding.
+
+
+
+ Represents an XMP profile, providing access to the raw XML.
+ See for the full specification.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The UTF8 encoded byte array to read the XMP profile from.
+
+
+
+ Initializes a new instance of the class
+ by making a copy from another XMP profile.
+
+ The other XMP profile, from which the clone should be made from.
+
+
+
+ Gets the XMP raw data byte array.
+
+
+
+
+ Gets the raw XML document containing the XMP profile.
+
+ The
+
+
+
+ Convert the content of this into a byte array.
+
+ The
+
+
+
+
+
+
+ A delegate to be executed on a .
+
+ The pixel type.
+
+
+
+ A delegate to be executed on two instances of .
+
+ The first pixel type.
+ The second pixel type.
+
+
+
+ A delegate to be executed on three instances of .
+
+ The first pixel type.
+ The second pixel type.
+ The third pixel type.
+
+
+
+ Provides efficient access the pixel buffers of an .
+
+ The pixel type.
+
+
+
+ Gets the width of the backing .
+
+
+
+
+ Gets the height of the backing .
+
+
+
+
+ Gets the representation of the pixels as a of contiguous memory
+ at row beginning from the first pixel on that row.
+
+ The row index.
+ The .
+ Thrown when row index is out of range.
+
+
+
+ Helper methods for packing and unpacking floating point values
+
+
+
+
+ Packs a into an
+
+ The float to pack
+ The
+
+
+
+ Packs an into a
+
+ The integer to pack.
+ The
+
+
+
+ Unpacks a into a .
+
+ The value.
+ The .
+
+
+
+ Maps the position of number types in memory
+
+
+
+
+ The float.
+
+
+
+
+ The integer.
+
+
+
+
+ The unsigned integer.
+
+
+
+
+ This interface exists for ensuring signature compatibility to MonoGame and XNA packed color types.
+
+
+ The packed format. uint, long, float.
+
+
+
+ Gets or sets the packed representation of the value.
+
+
+
+
+ An interface that represents a generic pixel type.
+ The naming convention of each pixel format is to order the color components from least significant to most significant, reading from left to right.
+ For example in the pixel format the R component is the least significant byte, and the A component is the most significant.
+
+ The type implementing this interface
+
+
+
+ Creates a instance for this pixel type.
+ This method is not intended to be consumed directly. Use instead.
+
+ The instance.
+
+
+
+ A base interface for all pixels, defining the mandatory operations to be implemented by a pixel type.
+
+
+
+
+ Initializes the pixel instance from a generic ("scaled") .
+
+ The vector to load the pixel from.
+
+
+
+ Expands the pixel into a generic ("scaled") representation
+ with values scaled and clamped between 0 and 1.
+ The vector components are typically expanded in least to greatest significance order.
+
+ The .
+
+
+
+ Initializes the pixel instance from a which is specific to the current pixel type.
+
+ The vector to load the pixel from.
+
+
+
+ Expands the pixel into a which is specific to the current pixel type.
+ The vector components are typically expanded in least to greatest significance order.
+
+ The .
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Convert the pixel instance into representation.
+
+ The reference to the destination pixel
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Initializes the pixel instance from an value.
+
+ The value.
+
+
+
+ Enumerates the various alpha composition modes.
+
+
+
+
+ Returns the destination over the source.
+
+
+
+
+ Returns the source colors.
+
+
+
+
+ Returns the source over the destination.
+
+
+
+
+ The source where the destination and source overlap.
+
+
+
+
+ The destination where the destination and source overlap.
+
+
+
+
+ The destination where the source does not overlap it.
+
+
+
+
+ The source where they don't overlap otherwise dest in overlapping parts.
+
+
+
+
+ The destination over the source.
+
+
+
+
+ The destination where the destination and source overlap.
+
+
+
+
+ The source where the destination and source overlap.
+
+
+
+
+ The clear.
+
+
+
+
+ Clear where they overlap.
+
+
+
+
+ Provides enumeration of the alpha value transparency behavior of a pixel format.
+
+
+
+
+ Indicates that the pixel format does not contain an alpha channel.
+
+
+
+
+ Indicates that the transparency behavior is premultiplied.
+ Each color is first scaled by the alpha value. The alpha value itself is the same
+ in both straight and premultiplied alpha. Typically, no color channel value is
+ greater than the alpha channel value.
+ If a color channel value in a premultiplied format is greater than the alpha
+ channel, the standard source-over blending math results in an additive blend.
+
+
+
+
+ Indicates that the transparency behavior is not premultiplied.
+ The alpha channel indicates the transparency of the color.
+
+
+
+
+ Collection of Porter Duff alpha blending functions applying different composition models.
+
+
+ These functions are designed to be a general solution for all color cases,
+ that is, they take in account the alpha value of both the backdrop
+ and source, and there's no need to alpha-premultiply neither the backdrop
+ nor the source.
+ Note there are faster functions for when the backdrop color is known
+ to be opaque
+
+
+
+
+ A pixel blender that implements the "NormalSrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplySrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddSrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractSrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenSrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenSrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenSrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlaySrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightSrc" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalSrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplySrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddSrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractSrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenSrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenSrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenSrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlaySrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightSrcAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalSrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplySrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddSrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractSrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenSrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenSrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenSrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlaySrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightSrcOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalSrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplySrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddSrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractSrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenSrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenSrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenSrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlaySrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightSrcIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalSrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplySrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddSrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractSrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenSrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenSrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenSrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlaySrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightSrcOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplyDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlayDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightDest" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplyDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlayDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightDestAtop" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplyDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlayDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightDestOver" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplyDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlayDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightDestIn" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplyDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlayDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightDestOut" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplyClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlayClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightClear" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "NormalXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "MultiplyXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "AddXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "SubtractXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "ScreenXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "DarkenXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "LightenXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "OverlayXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A pixel blender that implements the "HardLightXor" composition equation.
+
+
+
+
+ Gets the static instance of this blender.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Collection of Porter Duff Color Blending and Alpha Composition Functions.
+
+
+ These functions are designed to be a general solution for all color cases,
+ that is, they take in account the alpha value of both the backdrop
+ and source, and there's no need to alpha-premultiply neither the backdrop
+ nor the source.
+ Note there are faster functions for when the backdrop color is known
+ to be opaque
+
+
+
+
+ Returns the result of the "Normal" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "Multiply" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "Add" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "Subtract" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "Screen" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "Darken" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "Lighten" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "Overlay" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "HardLight" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The .
+
+
+
+ Helper function for Overlay andHardLight modes
+
+ Backdrop color element
+ Source color element
+ Overlay value
+
+
+
+ Returns the result of the "Over" compositing equation.
+
+ The destination vector.
+ The source vector.
+ The amount to blend. Range 0..1
+ The .
+
+
+
+ Returns the result of the "Atop" compositing equation.
+
+ The destination vector.
+ The source vector.
+ The amount to blend. Range 0..1
+ The .
+
+
+
+ Returns the result of the "In" compositing equation.
+
+ The destination vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "Out" compositing equation.
+
+ The destination vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "XOr" compositing equation.
+
+ The destination vector.
+ The source vector.
+ The .
+
+
+
+ Returns the result of the "NormalSrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalSrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "NormalXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplySrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "MultiplyXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddSrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "AddXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractSrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "SubtractXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenSrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "ScreenXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenSrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "DarkenXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenSrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "LightenXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlaySrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "OverlayXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrc" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrcAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrcOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrcIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrcOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDest" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDestAtop" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDestOver" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDestIn" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDestOut" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightXor" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightClear" compositing equation.
+
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrc" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrcAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrcOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrcIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightSrcOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDest" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDestAtop" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDestOver" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDestIn" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightDestOut" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightClear" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Returns the result of the "HardLightXor" compositing equation.
+
+ The pixel format.
+ The backdrop vector.
+ The source vector.
+ The source opacity. Range 0..1
+ The .
+
+
+
+ Abstract base class for calling pixel composition functions
+
+ The type of the pixel
+
+
+
+ Blend 2 pixels together.
+
+ The background color.
+ The source color.
+
+ A value between 0 and 1 indicating the weight of the second source vector.
+ At amount = 0, "background" is returned, at amount = 1, "source" is returned.
+
+ The final pixel value after composition.
+
+
+
+ Blends 2 rows together
+
+ the pixel format of the source span
+ to use internally
+ the destination span
+ the background span
+ the source span
+
+ A value between 0 and 1 indicating the weight of the second source vector.
+ At amount = 0, "background" is returned, at amount = 1, "source" is returned.
+
+
+
+
+ Blends 2 rows together
+
+ to use internally
+ the destination span
+ the background span
+ the source span
+
+ A span with values between 0 and 1 indicating the weight of the second source vector.
+ At amount = 0, "background" is returned, at amount = 1, "source" is returned.
+
+
+
+
+ Blends 2 rows together
+
+ the pixel format of the source span
+ to use internally
+ the destination span
+ the background span
+ the source span
+
+ A span with values between 0 and 1 indicating the weight of the second source vector.
+ At amount = 0, "background" is returned, at amount = 1, "source" is returned.
+
+
+
+
+ Blend 2 rows together.
+
+ destination span
+ the background span
+ the source span
+
+ A value between 0 and 1 indicating the weight of the second source vector.
+ At amount = 0, "background" is returned, at amount = 1, "source" is returned.
+
+
+
+
+ Blend 2 rows together.
+
+ destination span
+ the background span
+ the source span
+
+ A span with values between 0 and 1 indicating the weight of the second source vector.
+ At amount = 0, "background" is returned, at amount = 1, "source" is returned.
+
+
+
+
+ Enumerates the various color blending modes.
+
+
+
+
+ Default blending mode, also known as "Normal" or "Alpha Blending"
+
+
+
+
+ Blends the 2 values by multiplication.
+
+
+
+
+ Blends the 2 values by addition.
+
+
+
+
+ Blends the 2 values by subtraction.
+
+
+
+
+ Multiplies the complements of the backdrop and source values, then complements the result.
+
+
+
+
+ Selects the minimum of the backdrop and source values.
+
+
+
+
+ Selects the max of the backdrop and source values.
+
+
+
+
+ Multiplies or screens the values, depending on the backdrop vector values.
+
+
+
+
+ Multiplies or screens the colors, depending on the source value.
+
+
+
+
+ Flags responsible to select additional operations which could be efficiently applied in
+
+ or
+
+ knowing the pixel type.
+
+
+
+
+ No special operation is selected
+
+
+
+
+ Select and instead the standard (non scaled) variants.
+
+
+
+
+ Enable alpha premultiplication / unpremultiplication
+
+
+
+
+ Enable SRGB companding (defined in ).
+
+
+
+
+ Extension and utility methods for .
+
+
+
+
+ Applies the union of and ,
+ if is true, returns unmodified otherwise.
+
+
+ and
+ should be always used together!
+
+
+
+
+ Packed pixel type containing a single 8-bit normalized alpha value.
+
+ Ranges from [0, 0, 0, 0] to [0, 0, 0, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The alpha component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The alpha component.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Compares an object with the packed vector.
+
+ The object to compare.
+ True if the object is equal to the packed vector.
+
+
+
+ Compares another A8 packed vector with the packed vector.
+
+ The A8 packed vector to compare.
+ True if the packed vectors are equal.
+
+
+
+ Gets a string representation of the packed vector.
+
+ A string representation of the packed vector.
+
+
+
+
+
+
+ Packs a into a byte.
+
+ The float containing the value to pack.
+ The containing the packed values.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255.
+ The color components are stored in alpha, red, green, and blue order (least significant to most significant byte).
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Gets or sets the alpha component.
+
+
+
+
+ Gets or sets the blue component.
+
+
+
+
+ Gets or sets the green component.
+
+
+
+
+ Gets or sets the red component.
+
+
+
+
+ The maximum byte value.
+
+
+
+
+ The half vector value.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The vector containing the components for the packed vector.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The vector containing the components for the packed vector.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The packed value.
+
+
+
+
+ Gets or sets the packed representation of the Abgrb32 struct.
+
+
+
+
+
+
+
+ Converts an to .
+
+ The .
+ The .
+
+
+
+ Converts a to .
+
+ The .
+ The .
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets a string representation of the packed vector.
+
+ A string representation of the packed vector.
+
+
+
+
+
+
+ Packs the four floats into a color.
+
+ The x-component
+ The y-component
+ The z-component
+ The w-component
+
+
+
+ Packs a into a uint.
+
+ The vector containing the values to pack.
+
+
+
+ Packs a into a color.
+
+ The vector containing the values to pack.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255.
+ The color components are stored in alpha, red, green, and blue order (least significant to most significant byte).
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Gets or sets the alpha component.
+
+
+
+
+ Gets or sets the red component.
+
+
+
+
+ Gets or sets the green component.
+
+
+
+
+ Gets or sets the blue component.
+
+
+
+
+ The maximum byte value.
+
+
+
+
+ The half vector value.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The vector containing the components for the packed vector.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The vector containing the components for the packed vector.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The packed value.
+
+
+
+
+ Gets or sets the packed representation of the Argb32 struct.
+
+
+
+
+
+
+
+ Converts an to .
+
+ The .
+ The .
+
+
+
+ Converts a to .
+
+ The .
+ The .
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets a string representation of the packed vector.
+
+ A string representation of the packed vector.
+
+
+
+
+
+
+ Packs the four floats into a color.
+
+ The x-component
+ The y-component
+ The z-component
+ The w-component
+
+
+
+ Packs a into a uint.
+
+ The vector containing the values to pack.
+
+
+
+ Packs a into a color.
+
+ The vector containing the values to pack.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pixel type containing three 8-bit unsigned normalized values ranging from 0 to 255.
+ The color components are stored in blue, green, red order (least significant to most significant byte).
+
+ Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ The blue component.
+
+
+
+
+ The green component.
+
+
+
+
+ The red component.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+
+
+
+ Converts an to .
+
+ The .
+ The .
+
+
+
+ Converts a to .
+
+ The .
+ The .
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packed pixel type containing unsigned normalized values ranging from 0 to 1.
+ The x and z components use 5 bits, and the y component uses 6 bits.
+
+ Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component
+ The y-component
+ The z-component
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The vector containing the components for the packed value.
+
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Expands the packed representation into a .
+ The vector components are typically expanded in least to greatest significance order.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255.
+ The color components are stored in blue, green, red, and alpha order (least significant to most significant byte).
+ The format is binary compatible with System.Drawing.Imaging.PixelFormat.Format32bppArgb
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Gets or sets the blue component.
+
+
+
+
+ Gets or sets the green component.
+
+
+
+
+ Gets or sets the red component.
+
+
+
+
+ Gets or sets the alpha component.
+
+
+
+
+ The maximum byte value.
+
+
+
+
+ The half vector value.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Gets or sets the packed representation of the Bgra32 struct.
+
+
+
+
+
+
+
+ Converts an to .
+
+ The .
+ The .
+
+
+
+ Converts a to .
+
+ The .
+ The .
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packs a into a color.
+
+ The vector containing the values to pack.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packed pixel type containing unsigned normalized values, ranging from 0 to 1, using 4 bits each for x, y, z, and w.
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component
+ The y-component
+ The z-component
+ The w-component
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector containing the components for the packed vector.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing unsigned normalized values ranging from 0 to 1.
+ The x , y and z components use 5 bits, and the w component uses 1 bit.
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component
+ The y-component
+ The z-component
+ The w-component
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The vector containing the components for the packed vector.
+
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packed pixel type containing four 8-bit unsigned integer values, ranging from 0 to 255.
+
+ Ranges from [0, 0, 0, 0] to [255, 255, 255, 255] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ A vector containing the initial values for the components of the Byte4 structure.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component
+ The y-component
+ The z-component
+ The w-component
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packs a vector into a uint.
+
+ The vector containing the values to pack.
+ The containing the packed values.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing a single 16 bit floating point value.
+
+ Ranges from [-1, 0, 0, 1] to [1, 0, 0, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The single component.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Expands the packed representation into a .
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing two 16-bit floating-point values.
+
+ Ranges from [-1, -1, 0, 1] to [1, 1, 0, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component.
+ The y-component.
+
+
+
+ Initializes a new instance of the struct.
+
+ A vector containing the initial values for the components.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Expands the packed representation into a .
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing four 16-bit floating-point values.
+
+ Ranges from [-1, -1, -1, -1] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component.
+ The y-component.
+ The z-component.
+ The w-component.
+
+
+
+ Initializes a new instance of the struct.
+
+ A vector containing the initial values for the components
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packs a into a .
+
+ The vector containing the values to pack.
+ The containing the packed values.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing a single 16-bit normalized luminance value.
+
+ Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The luminance component
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packed pixel type containing a single 8-bit normalized luminance value.
+
+ Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The luminance component.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packed pixel type containing two 8-bit normalized values representing luminance and alpha.
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Gets or sets the luminance component.
+
+
+
+
+ Gets or sets the alpha component.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The luminance component.
+ The alpha component.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packed pixel type containing two 16-bit normalized values representing luminance and alpha.
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Gets or sets the luminance component.
+
+
+
+
+ Gets or sets the alpha component.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The luminance component.
+ The alpha component.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packed pixel type containing two 8-bit signed normalized values, ranging from −1 to 1.
+
+ Ranges from [-1, -1, 0, 1] to [1, 1, 0, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component.
+ The y-component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector containing the component values.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Expands the packed representation into a .
+ The vector components are typically expanded in least to greatest significance order.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing four 8-bit signed normalized values, ranging from −1 to 1.
+
+ Ranges from [-1, -1, -1, -1] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component.
+ The y-component.
+ The z-component.
+ The w-component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector containing the component values.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing two 16-bit signed normalized values, ranging from −1 to 1.
+
+ Ranges from [-1, -1, 0, 1] to [1, 1, 0, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component.
+ The y-component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector containing the component values.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Expands the packed representation into a .
+ The vector components are typically expanded in least to greatest significance order.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Packed pixel type containing four 16-bit signed normalized values, ranging from −1 to 1.
+
+ Ranges from [-1, -1, -1, -1] to [1, 1, 1, 1] in vector form.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component.
+ The y-component.
+ The z-component.
+ The w-component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector containing the component values.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Pixel type containing three 8-bit unsigned normalized values ranging from 0 to 255.
+ The color components are stored in red, green, blue order (least significant to most significant byte).
+
+ Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form.
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The red component.
+
+
+
+
+ The green component.
+
+
+
+
+ The blue component.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+
+
+
+ Converts an to .
+
+ The .
+ The .
+
+
+
+ Converts a to .
+
+ The .
+ The .
+
+
+
+ Allows the implicit conversion of an instance of to a
+ .
+
+ The instance of to convert.
+ An instance of .
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packs a into a color.
+
+ The vector containing the values to pack.
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Packed pixel type containing three 16-bit unsigned normalized values ranging from 0 to 635535.
+
+ Ranges from [0, 0, 0, 1] to [1, 1, 1, 1] in vector form.
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets or sets the red component.
+
+
+
+
+ Gets or sets the green component.
+
+
+
+
+ Gets or sets the blue component.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255.
+ The color components are stored in red, green, blue, and alpha order (least significant to most significant byte).
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ implementation optimized for .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets or sets the red component.
+
+
+
+
+ Gets or sets the green component.
+
+
+
+
+ Gets or sets the blue component.
+
+
+
+
+ Gets or sets the alpha component.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The vector containing the components for the packed vector.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The vector containing the components for the packed vector.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The packed value.
+
+
+
+
+ Gets or sets the packed representation of the Rgba32 struct.
+
+
+
+
+ Gets or sets the RGB components of this struct as
+
+
+
+
+ Gets or sets the RGB components of this struct as reverting the component order.
+
+
+
+
+
+
+
+ Converts an to .
+
+ The .
+ The .
+
+
+
+ Converts a to .
+
+ The .
+ The .
+
+
+
+ Allows the implicit conversion of an instance of to a
+ .
+
+ The instance of to convert.
+ An instance of .
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+ Creates a new instance of the struct
+ from the given hexadecimal string.
+
+
+ The hexadecimal representation of the combined color components arranged
+ in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax.
+
+
+ The .
+
+
+
+
+ Attempts to creates a new instance of the struct
+ from the given hexadecimal string.
+
+
+ The hexadecimal representation of the combined color components arranged
+ in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax.
+
+ When this method returns, contains the equivalent of the hexadecimal input.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converts the value of this instance to a hexadecimal string.
+
+ A hexadecimal string representation of the value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Packs a into a color returning a new instance as a result.
+
+ The vector containing the values to pack.
+ The
+
+
+
+ Packs the four floats into a color.
+
+ The x-component
+ The y-component
+ The z-component
+ The w-component
+
+
+
+ Packs a into a uint.
+
+ The vector containing the values to pack.
+
+
+
+ Packs a into a color.
+
+ The vector containing the values to pack.
+
+
+
+ Converts the specified hex value to an rrggbbaa hex value.
+
+ The hex value to convert.
+
+ A rrggbbaa hex value.
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Packed pixel type containing four 16-bit unsigned normalized values ranging from 0 to 65535.
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets or sets the red component.
+
+
+
+
+ Gets or sets the green component.
+
+
+
+
+ Gets or sets the blue component.
+
+
+
+
+ Gets or sets the alpha component.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Initializes a new instance of the struct.
+
+ A structure of 4 bytes in RGBA byte order.
+
+
+
+ Initializes a new instance of the struct.
+
+ A structure of 4 bytes in BGRA byte order.
+
+
+
+ Initializes a new instance of the struct.
+
+ A structure of 4 bytes in ARGB byte order.
+
+
+
+ Initializes a new instance of the struct.
+
+ A structure of 4 bytes in ABGR byte order.
+
+
+
+ Initializes a new instance of the struct.
+
+ A structure of 3 bytes in RGB byte order.
+
+
+
+ Initializes a new instance of the struct.
+
+ A structure of 3 bytes in BGR byte order.
+
+
+
+ Initializes a new instance of the struct.
+
+ The .
+
+
+
+ Gets or sets the RGB components of this struct as .
+
+
+
+
+
+
+
+ Converts an to .
+
+ The .
+ The .
+
+
+
+ Converts a to .
+
+ The .
+ The .
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Convert to .
+
+ The .
+
+
+
+ Convert to .
+
+ The .
+
+
+
+ Convert to .
+
+ The .
+
+
+
+ Convert to .
+
+ The .
+
+
+
+ Convert to .
+
+ The .
+
+
+
+ Convert to .
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Packed pixel type containing two 16-bit unsigned normalized values ranging from 0 to 1.
+
+ Ranges from [0, 0, 0, 1] to [1, 1, 0, 1] in vector form.
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component
+ The y-component
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector containing the component values.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Expands the packed representation into a .
+ The vector components are typically expanded in least to greatest significance order.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Packed vector type containing unsigned normalized values ranging from 0 to 1.
+ The x, y and z components use 10 bits, and the w component uses 2 bits.
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component
+ The y-component
+ The z-component
+ The w-component
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector containing the component values.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Unpacked pixel type containing four 32-bit floating-point values typically ranging from 0 to 1.
+ The color components are stored in red, green, blue, and alpha order.
+
+ Ranges from [0, 0, 0, 0] to [1, 1, 1, 1] in vector form.
+
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+
+
+ implementation optimized for .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets or sets the red component.
+
+
+
+
+ Gets or sets the green component.
+
+
+
+
+ Gets or sets the blue component.
+
+
+
+
+ Gets or sets the alpha component.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The red component.
+ The green component.
+ The blue component.
+ The alpha component.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+ Creates a new instance of the struct.
+
+
+ The hexadecimal representation of the combined color components arranged
+ in rgb, rgba, rrggbb, or rrggbbaa format to match web syntax.
+
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converts the value of this instance to a hexadecimal string.
+
+ A hexadecimal string representation of the value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Packed pixel type containing two 16-bit signed integer values.
+
+ Ranges from [-32767, -32767, 0, 1] to [32767, 32767, 0, 1] in vector form.
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component.
+ The y-component.
+
+
+
+ Initializes a new instance of the struct.
+
+ The vector containing the component values.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Expands the packed representation into a .
+ The vector components are typically expanded in least to greatest significance order.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+ Packed pixel type containing four 16-bit signed integer values.
+
+ Ranges from [-37267, -37267, -37267, -37267] to [37267, 37267, 37267, 37267] in vector form.
+
+
+
+
+
+ Provides optimized overrides for bulk operations.
+
+
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The x-component.
+ The y-component.
+ The z-component.
+ The w-component.
+
+
+
+ Initializes a new instance of the struct.
+
+ A vector containing the initial values for the components.
+
+
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the parameter is not equal to the parameter; otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the hash code for the current instance.
+
+ Hash code for the instance.
+
+
+
+
+
+
+ A stateless class implementing Strategy Pattern for batched pixel-data conversion operations
+ for pixel buffers of type .
+
+ The pixel format.
+
+ Provides access to pixel blenders
+
+
+
+
+ Gets the global instance for the pixel type
+
+
+
+
+ Gets the pixel type info for the given .
+
+ The .
+
+
+
+ Bulk version of converting 'sourceVectors.Length' pixels into 'destinationColors'.
+ The method is DESTRUCTIVE altering the contents of .
+
+
+ The destructive behavior is a design choice for performance reasons.
+ In a typical use case the contents of are abandoned after the conversion.
+
+ A to configure internal operations
+ The to the source vectors.
+ The to the destination colors.
+ The to apply during the conversion
+
+
+
+ Bulk version of converting 'sourceVectors.Length' pixels into 'destinationColors'.
+ The method is DESTRUCTIVE altering the contents of .
+
+
+ The destructive behavior is a design choice for performance reasons.
+ In a typical use case the contents of are abandoned after the conversion.
+
+ A to configure internal operations
+ The to the source vectors.
+ The to the destination colors.
+
+
+
+ Bulk version of converting 'sourceColors.Length' pixels into 'destinationVectors'.
+
+ A to configure internal operations
+ The to the source colors.
+ The to the destination vectors.
+ The to apply during the conversion
+
+
+
+ Bulk version of converting 'sourceColors.Length' pixels into 'destinationVectors'.
+
+ A to configure internal operations
+ The to the source colors.
+ The to the destination vectors.
+
+
+
+ Bulk operation that copies the to in
+ format.
+
+ The destination pixel type.
+ A to configure internal operations.
+ The to the source pixels.
+ The to the destination pixels.
+
+
+
+ Bulk operation that copies the to in
+ format.
+
+ The destination pixel type.
+ A to configure internal operations.
+ The to the source pixels.
+ The to the destination pixels.
+
+
+
+ Bulk operation that packs 3 seperate RGB channels to .
+ The destination must have a padding of 3.
+
+ A to configure internal operations.
+ A to the red values.
+ A to the green values.
+ A to the blue values.
+ A to the destination pixels.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels in 'source` span of into a span of -s.
+
+ A to configure internal operations.
+ The source of data.
+ The to the destination pixels.
+
+
+
+ A helper for that expects a byte span.
+ The layout of the data in 'sourceBytes' must be compatible with layout.
+
+ A to configure internal operations.
+ The to the source bytes.
+ The to the destination pixels.
+ The number of pixels to convert.
+
+
+
+ Converts all pixels of the 'sourcePixels` span to a span of -s.
+
+ A to configure internal operations
+ The span of source pixels
+ The destination span of data.
+
+
+
+ A helper for that expects a byte span as destination.
+ The layout of the data in 'destBytes' must be compatible with layout.
+
+ A to configure internal operations
+ The to the source pixels.
+ The to the destination bytes.
+ The number of pixels to convert.
+
+
+
+ Find an instance of the pixel blender.
+
+ the blending and composition to apply
+ A .
+
+
+
+ Find an instance of the pixel blender.
+
+ The color blending mode to apply
+ The alpha composition mode to apply
+ A .
+
+
+
+ Contains optimized implementations for conversion between pixel formats.
+
+
+ Implementations are based on ideas in:
+ https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/shared/System/Buffers/Binary/Reader.cs#L84
+ The JIT can detect and optimize rotation idioms ROTL (Rotate Left)
+ and ROTR (Rotate Right) emitting efficient CPU instructions:
+ https://github.com/dotnet/coreclr/pull/1830
+
+
+
+
+ Optimized converters from .
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Optimized converters from .
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Optimized converters from .
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Optimized converters from .
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Optimized converters from .
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Optimized converters from .
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Converts a representing a collection of
+ pixels to a representing
+ a collection of pixels.
+
+
+
+
+ Helper class for (bulk) conversion of buffers to/from other buffer types.
+
+
+ Contains
+
+
+
+
+ Apply modifiers used requested by ToVector4() conversion.
+
+
+
+
+ Apply modifiers used requested by FromVector4() conversion.
+
+
+
+
+ Provides default implementations for batched to/from conversion.
+ WARNING: The methods prefixed with "Unsafe" are operating without bounds checking and input validation!
+ Input validation is the responsibility of the caller!
+
+
+
+
+ Provides efficient implementations for batched to/from conversion.
+ which is applicable for -compatible pixel types where
+ returns the same scaled result as .
+ The method is works by internally converting to a therefore it's not applicable for that type!
+
+
+
+
+ It's not worth to bother the transitive pixel conversion method below this limit.
+ The value depends on the actual gain brought by the SIMD characteristics of the executing CPU and JIT.
+
+
+
+
+ Provides an efficient default implementation for
+ The method works by internally converting to a therefore it's not applicable for that type!
+
+
+
+
+ Provides an efficient default implementation for
+ The method is works by internally converting to a therefore it's not applicable for that type!
+
+
+
+
+ Enumerates the RGBA (red, green, blue, alpha) color components.
+
+
+
+
+ The red component.
+
+
+
+
+ The green component.
+
+
+
+
+ The blue component.
+
+
+
+
+ The alpha component.
+
+
+
+
+ A structure encapsulating a 5x4 matrix used for transforming the color and alpha components of an image.
+
+
+
+
+ Value at row 1, column 1 of the matrix.
+
+
+
+
+ Value at row 1, column 2 of the matrix.
+
+
+
+
+ Value at row 1, column 3 of the matrix.
+
+
+
+
+ Value at row 1, column 4 of the matrix.
+
+
+
+
+ Value at row 2, column 1 of the matrix.
+
+
+
+
+ Value at row 2, column 2 of the matrix.
+
+
+
+
+ Value at row 2, column 3 of the matrix.
+
+
+
+
+ Value at row 2, column 4 of the matrix.
+
+
+
+
+ Value at row 3, column 1 of the matrix.
+
+
+
+
+ Value at row 3, column 2 of the matrix.
+
+
+
+
+ Value at row 3, column 3 of the matrix.
+
+
+
+
+ Value at row 3, column 4 of the matrix.
+
+
+
+
+ Value at row 4, column 1 of the matrix.
+
+
+
+
+ Value at row 4, column 2 of the matrix.
+
+
+
+
+ Value at row 4, column 3 of the matrix.
+
+
+
+
+ Value at row 4, column 4 of the matrix.
+
+
+
+
+ Value at row 5, column 1 of the matrix.
+
+
+
+
+ Value at row 5, column 2 of the matrix.
+
+
+
+
+ Value at row 5, column 3 of the matrix.
+
+
+
+
+ Value at row 5, column 4 of the matrix.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The value at row 1, column 1 of the matrix.
+ The value at row 1, column 2 of the matrix.
+ The value at row 1, column 3 of the matrix.
+ The value at row 1, column 4 of the matrix.
+ The value at row 2, column 1 of the matrix.
+ The value at row 2, column 2 of the matrix.
+ The value at row 2, column 3 of the matrix.
+ The value at row 2, column 4 of the matrix.
+ The value at row 3, column 1 of the matrix.
+ The value at row 3, column 2 of the matrix.
+ The value at row 3, column 3 of the matrix.
+ The value at row 3, column 4 of the matrix.
+ The value at row 4, column 1 of the matrix.
+ The value at row 4, column 2 of the matrix.
+ The value at row 4, column 3 of the matrix.
+ The value at row 4, column 4 of the matrix.
+ The value at row 5, column 1 of the matrix.
+ The value at row 5, column 2 of the matrix.
+ The value at row 5, column 3 of the matrix.
+ The value at row 5, column 4 of the matrix.
+
+
+
+ Gets the multiplicative identity matrix.
+
+
+
+
+ Gets a value indicating whether the matrix is the identity matrix.
+
+
+
+
+ Adds two matrices together.
+
+ The first source matrix.
+ The second source matrix.
+ The resulting matrix.
+
+
+
+ Subtracts the second matrix from the first.
+
+ The first source matrix.
+ The second source matrix.
+ The result of the subtraction.
+
+
+
+ Returns a new matrix with the negated elements of the given matrix.
+
+ The source matrix.
+ The negated matrix.
+
+
+
+ Multiplies a matrix by another matrix.
+
+ The first source matrix.
+ The second source matrix.
+ The result of the multiplication.
+
+
+
+ Multiplies a matrix by a scalar value.
+
+ The source matrix.
+ The scaling factor.
+ The scaled matrix.
+
+
+
+ Returns a boolean indicating whether the given two matrices are equal.
+
+ The first matrix to compare.
+ The second matrix to compare.
+ True if the given matrices are equal; False otherwise.
+
+
+
+ Returns a boolean indicating whether the given two matrices are not equal.
+
+ The first matrix to compare.
+ The second matrix to compare.
+ True if the given matrices are equal; False otherwise.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a complex number, where the real and imaginary parts are stored as values.
+
+
+ This is a more efficient version of the type.
+
+
+
+
+ The real part of the complex number
+
+
+
+
+ The imaginary part of the complex number
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The real part in the complex number.
+ The imaginary part in the complex number.
+
+
+
+ Performs the multiplication operation between a instance and a scalar.
+
+ The value to multiply.
+ The scalar to use to multiply the value.
+ The result
+
+
+
+ Performs the multiplication operation between a instance and a .
+
+ The value to multiply.
+ The instance to use to multiply the value.
+ The result
+
+
+
+ Performs the multiplication operation between a instance and a .
+
+ The value to multiply.
+ The instance to use to multiply the value.
+ The result
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A vector with 4 values of type .
+
+
+
+
+ The real part of the complex vector
+
+
+
+
+ The imaginary part of the complex number
+
+
+
+
+ Sums the values in the input to the current instance
+
+ The input to sum
+
+
+
+ Performs a weighted sum on the current instance according to the given parameters
+
+ The 'a' parameter, for the real component
+ The 'b' parameter, for the imaginary component
+ The resulting value
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a dense matrix with arbitrary elements.
+ Components that are adjacent in a column of the matrix are adjacent in the storage array.
+ The components are said to be stored in column major order.
+
+ The type of elements in the matrix.
+
+
+
+ The 1D representation of the dense matrix.
+
+
+
+
+ Gets the number of columns in the dense matrix.
+
+
+
+
+ Gets the number of rows in the dense matrix.
+
+
+
+
+ Gets the size of the dense matrix.
+
+
+
+
+ Gets the number of items in the array.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The length of each side in the matrix.
+
+
+
+ Initializes a new instance of the struct.
+
+ The number of columns.
+ The number of rows.
+
+
+
+ Initializes a new instance of the struct.
+
+ The 2D array to provide access to.
+
+
+
+ Gets a span wrapping the .
+
+
+
+
+ Gets or sets the item at the specified position.
+
+ The row-coordinate of the item. Must be greater than or equal to zero and less than the height of the array.
+ The column-coordinate of the item. Must be greater than or equal to zero and less than the width of the array.
+ The at the specified position.
+
+
+
+ Performs an implicit conversion from a to a .
+
+ The source array.
+
+ The representation on the source data.
+
+
+
+
+ Performs an implicit conversion from a to a .
+
+ The source array.
+
+ The representation on the source data.
+
+
+
+
+ Compares the two instances to determine whether they are unequal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are equal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Transposes the rows and columns of the dense matrix.
+
+ The .
+
+
+
+ Fills the matrix with the given value
+
+ The value to fill each item with
+
+
+
+ Clears the matrix setting each value to the default value for the element type
+
+
+
+
+ Checks the coordinates to ensure they are within bounds.
+
+ The y-coordinate of the item. Must be greater than zero and smaller than the height of the matrix.
+ The x-coordinate of the item. Must be greater than zero and smaller than the width of the matrix.
+
+ Thrown if the coordinates are not within the bounds of the array.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a number that can be expressed as a fraction.
+
+
+ This is a very simplified implementation of a rational number designed for use with metadata only.
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The number above the line in a vulgar fraction showing how many of the parts
+ indicated by the denominator are taken.
+
+
+ The number below the line in a vulgar fraction; a divisor.
+
+
+
+
+ Gets the numerator of a number.
+
+
+
+
+ Gets the denominator of a number.
+
+
+
+
+ Gets a value indicating whether this instance is indeterminate.
+
+
+
+
+ Gets a value indicating whether this instance is an integer (n, 1)
+
+
+
+
+ Gets a value indicating whether this instance is equal to negative infinity (-1, 0)
+
+
+
+
+ Gets a value indicating whether this instance is equal to positive infinity (1, 0)
+
+
+
+
+ Gets a value indicating whether this instance is equal to 0 (0, 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converts the numeric value of this instance to its equivalent string representation using
+ the specified culture-specific format information.
+
+
+ An object that supplies culture-specific formatting information.
+
+ The
+
+
+
+ Create a new instance of the struct from a double value.
+
+ The to create the instance from.
+ Whether to use the best possible precision when parsing the value.
+
+
+
+ Finds the greatest common divisor of two values.
+
+ The first value
+ The second value
+ The
+
+
+
+ Simplifies the
+
+
+
+
+ Extension methods for the struct.
+
+
+
+
+ Creates a translation matrix from the given vector.
+
+ The translation position.
+ A translation matrix.
+
+
+
+ Creates a scale matrix that is offset by a given center point.
+
+ Value to scale by on the X-axis.
+ Value to scale by on the Y-axis.
+ The center point.
+ A scaling matrix.
+
+
+
+ Creates a scale matrix from the given vector scale.
+
+ The scale to use.
+ A scaling matrix.
+
+
+
+ Creates a scale matrix from the given vector scale with an offset from the given center point.
+
+ The scale to use.
+ The center offset.
+ A scaling matrix.
+
+
+
+ Creates a scale matrix that scales uniformly with the given scale with an offset from the given center.
+
+ The uniform scale to use.
+ The center offset.
+ A scaling matrix.
+
+
+
+ Creates a skew matrix from the given angles in degrees.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ A skew matrix.
+
+
+
+ Creates a skew matrix from the given angles in radians and a center point.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The center point.
+ A skew matrix.
+
+
+
+ Creates a skew matrix from the given angles in degrees and a center point.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The center point.
+ A skew matrix.
+
+
+
+ Creates a rotation matrix using the given rotation in degrees.
+
+ The amount of rotation, in degrees.
+ A rotation matrix.
+
+
+
+ Creates a rotation matrix using the given rotation in radians and a center point.
+
+ The amount of rotation, in radians.
+ The center point.
+ A rotation matrix.
+
+
+
+ Creates a rotation matrix using the given rotation in degrees and a center point.
+
+ The amount of rotation, in degrees.
+ The center point.
+ A rotation matrix.
+
+
+
+ Represents an integral number.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The value of the number.
+
+
+
+ Initializes a new instance of the struct.
+
+ The value of the number.
+
+
+
+ Converts the specified to an instance of this type.
+
+ The value.
+
+
+
+ Converts the specified to an instance of this type.
+
+ The value.
+
+
+
+ Converts the specified to an instance of this type.
+
+ The value.
+
+
+
+ Converts the specified to a .
+
+ The to convert.
+
+
+
+ Converts the specified to a .
+
+ The to convert.
+
+
+
+ Converts the specified to a .
+
+ The to convert.
+
+
+
+ Determines whether the specified instances are considered equal.
+
+ The first to compare.
+ The second to compare.
+
+
+
+ Determines whether the specified instances are not considered equal.
+
+ The first to compare.
+ The second to compare.
+
+
+
+ Determines whether the first is more than the second .
+
+ The first to compare.
+ The second to compare.
+
+
+
+ Determines whether the first is less than the second .
+
+ The first to compare.
+ The second to compare.
+
+
+
+ Determines whether the first is more than or equal to the second .
+
+ The first to compare.
+ The second to compare.
+
+
+
+ Determines whether the first is less than or equal to the second .
+
+ The first to compare.
+ The second to compare.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information.
+
+ An object that supplies culture-specific formatting information.
+ The string representation of the value of this instance, which consists of a sequence of digits ranging from 0 to 9, without a sign or leading zeros.
+
+
+
+ Represents an ordered pair of integer x- and y-coordinates that defines a point in
+ a two-dimensional plane.
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+
+
+ Represents a that has X and Y values set to zero.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The horizontal and vertical position of the point.
+
+
+
+ Initializes a new instance of the struct.
+
+ The horizontal position of the point.
+ The vertical position of the point.
+
+
+
+ Initializes a new instance of the struct from the given .
+
+ The size.
+
+
+
+ Gets or sets the x-coordinate of this .
+
+
+
+
+ Gets or sets the y-coordinate of this .
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+
+
+
+ Creates a with the coordinates of the specified .
+
+ The point.
+
+
+
+ Creates a with the coordinates of the specified .
+
+ The point.
+
+
+
+ Creates a with the coordinates of the specified .
+
+ The point.
+
+
+
+ Negates the given point by multiplying all values by -1.
+
+ The source point.
+ The negated point.
+
+
+
+ Translates a by a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ The .
+
+
+
+
+ Translates a by the negative of a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Multiplies by a producing .
+
+ Multiplier of type .
+ Multiplicand of type .
+ Product of type .
+
+
+
+ Multiplies by a producing .
+
+ Multiplicand of type .
+ Multiplier of type .
+ Product of type .
+
+
+
+ Divides by a producing .
+
+ Dividend of type .
+ Divisor of type .
+ Result of type .
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Translates a by the negative of a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Translates a by the negative of a given value.
+
+ The point on the left hand of the operand.
+ The value on the right hand of the operand.
+ The .
+
+
+
+ Translates a by the negative of a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Converts a to a by performing a ceiling operation on all the coordinates.
+
+ The point.
+ The .
+
+
+
+ Converts a to a by performing a round operation on all the coordinates.
+
+ The point.
+ The .
+
+
+
+ Converts a to a by performing a round operation on all the coordinates.
+
+ The vector.
+ The .
+
+
+
+ Converts a to a by performing a truncate operation on all the coordinates.
+
+ The point.
+ The .
+
+
+
+ Transforms a point by a specified 3x2 matrix.
+
+ The point to transform.
+ The transformation matrix used.
+ The transformed .
+
+
+
+ Deconstructs this point into two integers.
+
+ The out value for X.
+ The out value for Y.
+
+
+
+ Translates this by the specified amount.
+
+ The amount to offset the x-coordinate.
+ The amount to offset the y-coordinate.
+
+
+
+ Translates this by the specified amount.
+
+ The used offset this .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an ordered pair of single precision floating point x- and y-coordinates that defines a point in
+ a two-dimensional plane.
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+
+
+ Represents a that has X and Y values set to zero.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The horizontal position of the point.
+ The vertical position of the point.
+
+
+
+ Initializes a new instance of the struct from the given .
+
+ The size.
+
+
+
+ Gets or sets the x-coordinate of this .
+
+
+
+
+ Gets or sets the y-coordinate of this .
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+
+
+
+ Creates a with the coordinates of the specified .
+
+ The vector.
+
+ The .
+
+
+
+
+ Creates a with the coordinates of the specified .
+
+ The point.
+
+ The .
+
+
+
+
+ Creates a with the coordinates of the specified by truncating each of the coordinates.
+
+ The point.
+
+ The .
+
+
+
+
+ Negates the given point by multiplying all values by -1.
+
+ The source point.
+ The negated point.
+
+
+
+ Translates a by a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ The .
+
+
+
+
+ Translates a by the negative of a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Translates a by a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ The .
+
+
+
+
+ Translates a by the negative of a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Multiplies by a producing .
+
+ Multiplier of type .
+ Multiplicand of type .
+ Product of type .
+
+
+
+ Multiplies by a producing .
+
+ Multiplicand of type .
+ Multiplier of type .
+ Product of type .
+
+
+
+ Divides by a producing .
+
+ Dividend of type .
+ Divisor of type .
+ Result of type .
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Translates a by the given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Translates a by the given .
+
+ The point on the left hand of the operand.
+ The point on the right hand of the operand.
+ The .
+
+
+
+ Translates a by the negative of a given .
+
+ The point on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Translates a by the negative of a given .
+
+ The point on the left hand of the operand.
+ The point on the right hand of the operand.
+ The .
+
+
+
+ Translates a by the multiplying the X and Y by the given value.
+
+ The point on the left hand of the operand.
+ The value on the right hand of the operand.
+ The .
+
+
+
+ Transforms a point by a specified 3x2 matrix.
+
+ The point to transform.
+ The transformation matrix used.
+ The transformed .
+
+
+
+ Deconstructs this point into two floats.
+
+ The out value for X.
+ The out value for Y.
+
+
+
+ Translates this by the specified amount.
+
+ The amount to offset the x-coordinate.
+ The amount to offset the y-coordinate.
+
+
+
+ Translates this by the specified amount.
+
+ The used offset this .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a number that can be expressed as a fraction.
+
+
+ This is a very simplified implementation of a rational number designed for use with metadata only.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The to create the rational from.
+
+
+
+ Initializes a new instance of the struct.
+
+ The number above the line in a vulgar fraction showing how many of the parts indicated by the denominator are taken.
+ The number below the line in a vulgar fraction; a divisor.
+
+
+
+ Initializes a new instance of the struct.
+
+ The number above the line in a vulgar fraction showing how many of the parts indicated by the denominator are taken.
+ The number below the line in a vulgar fraction; a divisor.
+ Specified if the rational should be simplified.
+
+
+
+ Initializes a new instance of the struct.
+
+ The to create the instance from.
+
+
+
+ Initializes a new instance of the struct.
+
+ The to create the instance from.
+ Whether to use the best possible precision when parsing the value.
+
+
+
+ Gets the numerator of a number.
+
+
+
+
+ Gets the denominator of a number.
+
+
+
+
+ Determines whether the specified instances are considered equal.
+
+ The first to compare.
+ The second to compare.
+ The
+
+
+
+ Determines whether the specified instances are not considered equal.
+
+ The first to compare.
+ The second to compare.
+ The
+
+
+
+ Converts the specified to an instance of this type.
+
+ The to convert to an instance of this type.
+
+ The .
+
+
+
+
+ Converts the specified to an instance of this type.
+
+ The to convert to an instance of this type.
+ Whether to use the best possible precision when parsing the value.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converts a rational number to the nearest .
+
+
+ The .
+
+
+
+
+ Converts a rational number to the nearest .
+
+
+ The .
+
+
+
+
+
+
+
+ Converts the numeric value of this instance to its equivalent string representation using
+ the specified culture-specific format information.
+
+
+ An object that supplies culture-specific formatting information.
+
+ The
+
+
+
+ Stores a set of four integers that represent the location and size of a rectangle.
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+
+
+ Represents a that has X, Y, Width, and Height values set to zero.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The horizontal position of the rectangle.
+ The vertical position of the rectangle.
+ The width of the rectangle.
+ The height of the rectangle.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The which specifies the rectangles point in a two-dimensional plane.
+
+
+ The which specifies the rectangles height and width.
+
+
+
+
+ Gets or sets the x-coordinate of this .
+
+
+
+
+ Gets or sets the y-coordinate of this .
+
+
+
+
+ Gets or sets the width of this .
+
+
+
+
+ Gets or sets the height of this .
+
+
+
+
+ Gets or sets the coordinates of the upper-left corner of the rectangular region represented by this .
+
+
+
+
+ Gets or sets the size of this .
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+
+
+
+ Gets the y-coordinate of the top edge of this .
+
+
+
+
+ Gets the x-coordinate of the right edge of this .
+
+
+
+
+ Gets the y-coordinate of the bottom edge of this .
+
+
+
+
+ Gets the x-coordinate of the left edge of this .
+
+
+
+
+ Creates a with the coordinates of the specified .
+
+ The rectangle.
+
+
+
+ Creates a with the coordinates of the specified .
+
+ The rectangle.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Creates a new with the specified location and size.
+ The left coordinate of the rectangle.
+ The top coordinate of the rectangle.
+ The right coordinate of the rectangle.
+ The bottom coordinate of the rectangle.
+ The .
+
+
+
+ Returns the center point of the given .
+
+ The rectangle.
+ The .
+
+
+
+ Creates a rectangle that represents the intersection between and
+ . If there is no intersection, an empty rectangle is returned.
+
+ The first rectangle.
+ The second rectangle.
+ The .
+
+
+
+ Creates a that is inflated by the specified amount.
+
+ The rectangle.
+ The amount to inflate the width by.
+ The amount to inflate the height by.
+ A new .
+
+
+
+ Converts a to a by performing a ceiling operation on all the coordinates.
+
+ The rectangle.
+ The .
+
+
+
+ Transforms a rectangle by the given matrix.
+
+ The source rectangle.
+ The transformation matrix.
+ A transformed rectangle.
+
+
+
+ Converts a to a by performing a truncate operation on all the coordinates.
+
+ The rectangle.
+ The .
+
+
+
+ Converts a to a by performing a round operation on all the coordinates.
+
+ The rectangle.
+ The .
+
+
+
+ Creates a rectangle that represents the union between and .
+
+ The first rectangle.
+ The second rectangle.
+ The .
+
+
+
+ Deconstructs this rectangle into four integers.
+
+ The out value for X.
+ The out value for Y.
+ The out value for the width.
+ The out value for the height.
+
+
+
+ Creates a Rectangle that represents the intersection between this Rectangle and the .
+
+ The rectangle.
+
+
+
+ Inflates this by the specified amount.
+
+ The width.
+ The height.
+
+
+
+ Inflates this by the specified amount.
+
+ The size.
+
+
+
+ Determines if the specfied point is contained within the rectangular region defined by
+ this .
+
+ The x-coordinate of the given point.
+ The y-coordinate of the given point.
+ The .
+
+
+
+ Determines if the specified point is contained within the rectangular region defined by this .
+
+ The point.
+ The .
+
+
+
+ Determines if the rectangular region represented by is entirely contained
+ within the rectangular region represented by this .
+
+ The rectangle.
+ The .
+
+
+
+ Determines if the specfied intersects the rectangular region defined by
+ this .
+
+ The other Rectange.
+ The .
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The point.
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The amount to offset the x-coordinate.
+ The amount to offset the y-coordinate.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Stores a set of four single precision floating points that represent the location and size of a rectangle.
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+
+
+ Represents a that has X, Y, Width, and Height values set to zero.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The horizontal position of the rectangle.
+ The vertical position of the rectangle.
+ The width of the rectangle.
+ The height of the rectangle.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ The which specifies the rectangles point in a two-dimensional plane.
+
+
+ The which specifies the rectangles height and width.
+
+
+
+
+ Gets or sets the x-coordinate of this .
+
+
+
+
+ Gets or sets the y-coordinate of this .
+
+
+
+
+ Gets or sets the width of this .
+
+
+
+
+ Gets or sets the height of this .
+
+
+
+
+ Gets or sets the coordinates of the upper-left corner of the rectangular region represented by this .
+
+
+
+
+ Gets or sets the size of this .
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+
+
+
+ Gets the y-coordinate of the top edge of this .
+
+
+
+
+ Gets the x-coordinate of the right edge of this .
+
+
+
+
+ Gets the y-coordinate of the bottom edge of this .
+
+
+
+
+ Gets the x-coordinate of the left edge of this .
+
+
+
+
+ Creates a with the coordinates of the specified by truncating each coordinate.
+
+ The rectangle.
+
+
+
+ Compares two objects for equality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The on the left side of the operand.
+ The on the right side of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Creates a new with the specified location and size.
+ The left coordinate of the rectangle.
+ The top coordinate of the rectangle.
+ The right coordinate of the rectangle.
+ The bottom coordinate of the rectangle.
+ The .
+
+
+
+ Returns the center point of the given .
+
+ The rectangle.
+ The .
+
+
+
+ Creates a rectangle that represents the intersection between and
+ . If there is no intersection, an empty rectangle is returned.
+
+ The first rectangle.
+ The second rectangle.
+ The .
+
+
+
+ Creates a that is inflated by the specified amount.
+
+ The rectangle.
+ The amount to inflate the width by.
+ The amount to inflate the height by.
+ A new .
+
+
+
+ Transforms a rectangle by the given matrix.
+
+ The source rectangle.
+ The transformation matrix.
+ A transformed .
+
+
+
+ Creates a rectangle that represents the union between and .
+
+ The first rectangle.
+ The second rectangle.
+ The .
+
+
+
+ Deconstructs this rectangle into four floats.
+
+ The out value for X.
+ The out value for Y.
+ The out value for the width.
+ The out value for the height.
+
+
+
+ Creates a RectangleF that represents the intersection between this RectangleF and the .
+
+ The rectangle.
+
+
+
+ Inflates this by the specified amount.
+
+ The width.
+ The height.
+
+
+
+ Inflates this by the specified amount.
+
+ The size.
+
+
+
+ Determines if the specfied point is contained within the rectangular region defined by
+ this .
+
+ The x-coordinate of the given point.
+ The y-coordinate of the given point.
+ The .
+
+
+
+ Determines if the specified point is contained within the rectangular region defined by this .
+
+ The point.
+ The .
+
+
+
+ Determines if the rectangular region represented by is entirely contained
+ within the rectangular region represented by this .
+
+ The rectangle.
+ The .
+
+
+
+ Determines if the specfied intersects the rectangular region defined by
+ this .
+
+ The other Rectange.
+ The .
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The point.
+
+
+
+ Adjusts the location of this rectangle by the specified amount.
+
+ The amount to offset the x-coordinate.
+ The amount to offset the y-coordinate.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a number that can be expressed as a fraction.
+
+
+ This is a very simplified implementation of a rational number designed for use with metadata only.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The to create the rational from.
+
+
+
+ Initializes a new instance of the struct.
+
+ The number above the line in a vulgar fraction showing how many of the parts indicated by the denominator are taken.
+ The number below the line in a vulgar fraction; a divisor.
+
+
+
+ Initializes a new instance of the struct.
+
+ The number above the line in a vulgar fraction showing how many of the parts indicated by the denominator are taken.
+ The number below the line in a vulgar fraction; a divisor.
+ Specified if the rational should be simplified.
+
+
+
+ Initializes a new instance of the struct.
+
+ The to create the instance from.
+
+
+
+ Initializes a new instance of the struct.
+
+ The to create the instance from.
+ Whether to use the best possible precision when parsing the value.
+
+
+
+ Gets the numerator of a number.
+
+
+
+
+ Gets the denominator of a number.
+
+
+
+
+ Determines whether the specified instances are considered equal.
+
+ The first to compare.
+ The second to compare.
+ The
+
+
+
+ Determines whether the specified instances are not considered equal.
+
+ The first to compare.
+ The second to compare.
+ The
+
+
+
+ Converts the specified to an instance of this type.
+
+ The to convert to an instance of this type.
+
+ The .
+
+
+
+
+ Converts the specified to an instance of this type.
+
+ The to convert to an instance of this type.
+ Whether to use the best possible precision when parsing the value.
+
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Converts a rational number to the nearest .
+
+
+ The .
+
+
+
+
+
+
+
+ Converts the numeric value of this instance to its equivalent string representation using
+ the specified culture-specific format information.
+
+
+ An object that supplies culture-specific formatting information.
+
+ The
+
+
+
+ Stores an ordered pair of integers, which specify a height and width.
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+
+
+ Represents a that has Width and Height values set to zero.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The width and height of the size.
+
+
+
+ Initializes a new instance of the struct.
+
+ The width of the size.
+ The height of the size.
+
+
+
+ Initializes a new instance of the struct.
+
+ The size.
+
+
+
+ Initializes a new instance of the struct from the given .
+
+ The point.
+
+
+
+ Gets or sets the width of this .
+
+
+
+
+ Gets or sets the height of this .
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+
+
+
+ Creates a with the dimensions of the specified .
+
+ The point.
+
+
+
+ Converts the given into a .
+
+ The size.
+
+
+
+ Computes the sum of adding two sizes.
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ The .
+
+
+
+
+ Computes the difference left by subtracting one size from another.
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ The .
+
+
+
+
+ Multiplies a by an producing .
+
+ Multiplier of type .
+ Multiplicand of type .
+ Product of type .
+
+
+
+ Multiplies by an producing .
+
+ Multiplicand of type .
+ Multiplier of type .
+ Product of type .
+
+
+
+ Divides by an producing .
+
+ Dividend of type .
+ Divisor of type .
+ Result of type .
+
+
+
+ Multiplies by a producing .
+
+ Multiplier of type .
+ Multiplicand of type .
+ Product of type .
+
+
+
+ Multiplies by a producing .
+
+ Multiplicand of type .
+ Multiplier of type .
+ Product of type .
+
+
+
+ Divides by a producing .
+
+ Dividend of type .
+ Divisor of type .
+ Result of type .
+
+
+
+ Compares two objects for equality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+
+ The on the left side of the operand.
+
+
+ The on the right side of the operand.
+
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Performs vector addition of two objects.
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Contracts a by another .
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Converts a to a by performing a ceiling operation on all the dimensions.
+
+ The size.
+ The .
+
+
+
+ Converts a to a by performing a round operation on all the dimensions.
+
+ The size.
+ The .
+
+
+
+ Transforms a size by the given matrix.
+
+ The source size.
+ The transformation matrix.
+ A transformed size.
+
+
+
+ Converts a to a by performing a round operation on all the dimensions.
+
+ The size.
+ The .
+
+
+
+ Deconstructs this size into two integers.
+
+ The out value for the width.
+ The out value for the height.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Multiplies by an producing .
+
+ Multiplicand of type .
+ Multiplier of type .
+ Product of type .
+
+
+
+ Multiplies by a producing .
+
+ Multiplicand of type .
+ Multiplier of type .
+ Product of type SizeF.
+
+
+
+ Stores an ordered pair of single precision floating points, which specify a height and width.
+
+
+ This struct is fully mutable. This is done (against the guidelines) for the sake of performance,
+ as it avoids the need to create new values for modification operations.
+
+
+
+
+ Represents a that has Width and Height values set to zero.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The width of the size.
+ The height of the size.
+
+
+
+ Initializes a new instance of the struct.
+
+ The size.
+
+
+
+ Initializes a new instance of the struct from the given .
+
+ The point.
+
+
+
+ Gets or sets the width of this .
+
+
+
+
+ Gets or sets the height of this .
+
+
+
+
+ Gets a value indicating whether this is empty.
+
+
+
+
+ Creates a with the coordinates of the specified .
+
+ The point.
+
+ The .
+
+
+
+
+ Creates a with the dimensions of the specified by truncating each of the dimensions.
+
+ The size.
+
+ The .
+
+
+
+
+ Converts the given into a .
+
+ The size.
+
+
+
+ Computes the sum of adding two sizes.
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ The .
+
+
+
+
+ Computes the difference left by subtracting one size from another.
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ The .
+
+
+
+
+ Multiplies by a producing .
+
+ Multiplier of type .
+ Multiplicand of type .
+ Product of type .
+
+
+
+ Multiplies by a producing .
+
+ Multiplicand of type .
+ Multiplier of type .
+ Product of type .
+
+
+
+ Divides by a producing .
+
+ Dividend of type .
+ Divisor of type .
+ Result of type .
+
+
+
+ Compares two objects for equality.
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ True if the current left is equal to the parameter; otherwise, false.
+
+
+
+
+ Compares two objects for inequality.
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+
+ True if the current left is unequal to the parameter; otherwise, false.
+
+
+
+
+ Performs vector addition of two objects.
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Contracts a by another .
+
+ The size on the left hand of the operand.
+ The size on the right hand of the operand.
+ The .
+
+
+
+ Transforms a size by the given matrix.
+
+ The source size.
+ The transformation matrix.
+ A transformed size.
+
+
+
+ Deconstructs this size into two floats.
+
+ The out value for the width.
+ The out value for the height.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Multiplies by a producing .
+
+ Multiplicand of type .
+ Multiplier of type .
+ Product of type SizeF.
+
+
+
+ Represents a value in relation to a value on the image.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The value.
+ The type.
+
+
+
+ Enumerates the different value types.
+
+
+
+
+ The value is the final return value.
+
+
+
+
+ The value is a percentage of the image width.
+
+
+
+
+ The value is a percentage of the images height.
+
+
+
+
+ Gets the value.
+
+
+
+
+ Gets the type.
+
+
+
+
+ Implicitly converts a float into an absolute value.
+
+ the value to use as the absolute figure.
+
+
+
+ Create a new ValueSize with as a PercentageOfWidth type with value set to percentage.
+
+ The percentage.
+ a Values size with type PercentageOfWidth
+
+
+
+ Create a new ValueSize with as a PercentageOfHeight type with value set to percentage.
+
+ The percentage.
+ a Values size with type PercentageOfHeight
+
+
+
+ Create a new ValueSize with as a Absolute type with value set to value.
+
+ The value.
+ a Values size with type Absolute.
+
+
+
+ Calculates the specified size.
+
+ The size.
+ The calculated value.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Extensions to perform AdaptiveThreshold through Mutator.
+
+
+
+
+ Applies Bradley Adaptive Threshold to the image.
+
+ The image this method extends.
+ The .
+
+
+
+ Applies Bradley Adaptive Threshold to the image.
+
+ The image this method extends.
+ Threshold limit (0.0-1.0) to consider for binarization.
+ The .
+
+
+
+ Applies Bradley Adaptive Threshold to the image.
+
+ The image this method extends.
+ Upper (white) color for thresholding.
+ Lower (black) color for thresholding.
+ The .
+
+
+
+ Applies Bradley Adaptive Threshold to the image.
+
+ The image this method extends.
+ Upper (white) color for thresholding.
+ Lower (black) color for thresholding.
+ Threshold limit (0.0-1.0) to consider for binarization.
+ The .
+
+
+
+ Applies Bradley Adaptive Threshold to the image.
+
+ The image this method extends.
+ Upper (white) color for thresholding.
+ Lower (black) color for thresholding.
+ Rectangle region to apply the processor on.
+ The .
+
+
+
+ Applies Bradley Adaptive Threshold to the image.
+
+ The image this method extends.
+ Upper (white) color for thresholding.
+ Lower (black) color for thresholding.
+ Threshold limit (0.0-1.0) to consider for binarization.
+ Rectangle region to apply the processor on.
+ The .
+
+
+
+ A helper class for constructing instances for use in affine transforms.
+
+
+
+
+ Prepends a rotation matrix using the given rotation angle in degrees
+ and the image center point as rotation center.
+
+ The amount of rotation, in degrees.
+ The .
+
+
+
+ Prepends a rotation matrix using the given rotation angle in radians
+ and the image center point as rotation center.
+
+ The amount of rotation, in radians.
+ The .
+
+
+
+ Prepends a rotation matrix using the given rotation in degrees at the given origin.
+
+ The amount of rotation, in degrees.
+ The rotation origin point.
+ The .
+
+
+
+ Prepends a rotation matrix using the given rotation in radians at the given origin.
+
+ The amount of rotation, in radians.
+ The rotation origin point.
+ The .
+
+
+
+ Appends a rotation matrix using the given rotation angle in degrees
+ and the image center point as rotation center.
+
+ The amount of rotation, in degrees.
+ The .
+
+
+
+ Appends a rotation matrix using the given rotation angle in radians
+ and the image center point as rotation center.
+
+ The amount of rotation, in radians.
+ The .
+
+
+
+ Appends a rotation matrix using the given rotation in degrees at the given origin.
+
+ The amount of rotation, in degrees.
+ The rotation origin point.
+ The .
+
+
+
+ Appends a rotation matrix using the given rotation in radians at the given origin.
+
+ The amount of rotation, in radians.
+ The rotation origin point.
+ The .
+
+
+
+ Prepends a scale matrix from the given uniform scale.
+
+ The uniform scale.
+ The .
+
+
+
+ Prepends a scale matrix from the given vector scale.
+
+ The horizontal and vertical scale.
+ The .
+
+
+
+ Prepends a scale matrix from the given vector scale.
+
+ The horizontal and vertical scale.
+ The .
+
+
+
+ Appends a scale matrix from the given uniform scale.
+
+ The uniform scale.
+ The .
+
+
+
+ Appends a scale matrix from the given vector scale.
+
+ The horizontal and vertical scale.
+ The .
+
+
+
+ Appends a scale matrix from the given vector scale.
+
+ The horizontal and vertical scale.
+ The .
+
+
+
+ Prepends a centered skew matrix from the give angles in degrees.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The .
+
+
+
+ Prepends a centered skew matrix from the give angles in radians.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The .
+
+
+
+ Prepends a skew matrix using the given angles in degrees at the given origin.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The skew origin point.
+ The .
+
+
+
+ Prepends a skew matrix using the given angles in radians at the given origin.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The skew origin point.
+ The .
+
+
+
+ Appends a centered skew matrix from the give angles in degrees.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The .
+
+
+
+ Appends a centered skew matrix from the give angles in radians.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The .
+
+
+
+ Appends a skew matrix using the given angles in degrees at the given origin.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The skew origin point.
+ The .
+
+
+
+ Appends a skew matrix using the given angles in radians at the given origin.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The skew origin point.
+ The .
+
+
+
+ Prepends a translation matrix from the given vector.
+
+ The translation position.
+ The .
+
+
+
+ Prepends a translation matrix from the given vector.
+
+ The translation position.
+ The .
+
+
+
+ Appends a translation matrix from the given vector.
+
+ The translation position.
+ The .
+
+
+
+ Appends a translation matrix from the given vector.
+
+ The translation position.
+ The .
+
+
+
+ Prepends a raw matrix.
+
+ The matrix to prepend.
+
+ The resultant matrix is degenerate containing one or more values equivalent
+ to or a zero determinant and therefore cannot be used
+ for linear transforms.
+
+ The .
+
+
+
+ Appends a raw matrix.
+
+ The matrix to append.
+
+ The resultant matrix is degenerate containing one or more values equivalent
+ to or a zero determinant and therefore cannot be used
+ for linear transforms.
+
+ The .
+
+
+
+ Returns the combined matrix for a given source size.
+
+ The source image size.
+ The .
+
+
+
+ Returns the combined matrix for a given source rectangle.
+
+ The rectangle in the source image.
+
+ The resultant matrix is degenerate containing one or more values equivalent
+ to or a zero determinant and therefore cannot be used
+ for linear transforms.
+
+ The .
+
+
+
+ Enumerated anchor positions to apply to resized images.
+
+
+
+
+ Anchors the position of the image to the center of it's bounding container.
+
+
+
+
+ Anchors the position of the image to the top of it's bounding container.
+
+
+
+
+ Anchors the position of the image to the bottom of it's bounding container.
+
+
+
+
+ Anchors the position of the image to the left of it's bounding container.
+
+
+
+
+ Anchors the position of the image to the right of it's bounding container.
+
+
+
+
+ Anchors the position of the image to the top left side of it's bounding container.
+
+
+
+
+ Anchors the position of the image to the top right side of it's bounding container.
+
+
+
+
+ Anchors the position of the image to the bottom right side of it's bounding container.
+
+
+
+
+ Anchors the position of the image to the bottom left side of it's bounding container.
+
+
+
+
+ Selects the value to be compared to threshold.
+
+
+
+
+ Compare the color luminance (according to ITU-R Recommendation BT.709).
+
+
+
+
+ Compare the HSL saturation of the color.
+
+
+
+
+ Compare the maximum of YCbCr chroma value, i.e. Cb and Cr distance from achromatic value.
+
+
+
+
+ Enumerates the various types of defined color blindness filters.
+
+
+
+
+ Partial color desensitivity.
+
+
+
+
+ Complete color desensitivity (Monochrome)
+
+
+
+
+ Green weak
+
+
+
+
+ Green blind
+
+
+
+
+ Red weak
+
+
+
+
+ Red blind
+
+
+
+
+ Blue weak
+
+
+
+
+ Blue blind
+
+
+
+
+ Performs processor application operations on the source image
+
+ The pixel format
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The source image.
+ Whether to mutate the image.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines extensions to apply binary dithering on an
+ using Mutate/Clone.
+
+
+
+
+ Dithers the image reducing it to two colors using ordered dithering.
+
+ The image this method extends.
+ The ordered ditherer.
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to two colors using ordered dithering.
+
+ The image this method extends.
+ The ordered ditherer.
+ The color to use for pixels that are above the threshold.
+ The color to use for pixels that are below the threshold
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to two colors using ordered dithering.
+
+ The image this method extends.
+ The ordered ditherer.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to two colors using ordered dithering.
+
+ The image this method extends.
+ The ordered ditherer.
+ The color to use for pixels that are above the threshold.
+ The color to use for pixels that are below the threshold
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extension methods to apply binary thresholding on an
+ using Mutate/Clone.
+
+
+
+
+ Applies binarization to the image splitting the pixels at the given threshold with
+ Luminance as the color component to be compared to threshold.
+
+ The image this method extends.
+ The threshold to apply binarization of the image. Must be between 0 and 1.
+ The to allow chaining of operations.
+
+
+
+ Applies binarization to the image splitting the pixels at the given threshold.
+
+ The image this method extends.
+ The threshold to apply binarization of the image. Must be between 0 and 1.
+ Selects the value to be compared to threshold.
+ The to allow chaining of operations.
+
+
+
+ Applies binarization to the image splitting the pixels at the given threshold with
+ Luminance as the color component to be compared to threshold.
+
+ The image this method extends.
+ The threshold to apply binarization of the image. Must be between 0 and 1.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies binarization to the image splitting the pixels at the given threshold.
+
+ The image this method extends.
+ The threshold to apply binarization of the image. Must be between 0 and 1.
+ Selects the value to be compared to threshold.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies binarization to the image splitting the pixels at the given threshold with
+ Luminance as the color component to be compared to threshold.
+
+ The image this method extends.
+ The threshold to apply binarization of the image. Must be between 0 and 1.
+ The color to use for pixels that are above the threshold.
+ The color to use for pixels that are below the threshold
+ The to allow chaining of operations.
+
+
+
+ Applies binarization to the image splitting the pixels at the given threshold.
+
+ The image this method extends.
+ The threshold to apply binarization of the image. Must be between 0 and 1.
+ The color to use for pixels that are above the threshold.
+ The color to use for pixels that are below the threshold
+ Selects the value to be compared to threshold.
+ The to allow chaining of operations.
+
+
+
+ Applies binarization to the image splitting the pixels at the given threshold with
+ Luminance as the color component to be compared to threshold.
+
+ The image this method extends.
+ The threshold to apply binarization of the image. Must be between 0 and 1.
+ The color to use for pixels that are above the threshold.
+ The color to use for pixels that are below the threshold
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies binarization to the image splitting the pixels at the given threshold.
+
+ The image this method extends.
+ The threshold to apply binarization of the image. Must be between 0 and 1.
+ The color to use for pixels that are above the threshold.
+ The color to use for pixels that are below the threshold
+ Selects the value to be compared to threshold.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Adds bokeh blurring extensions to the type.
+
+
+
+
+ Applies a bokeh blur to the image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies a bokeh blur to the image.
+
+ The image this method extends.
+ The 'radius' value representing the size of the area to sample.
+ The 'components' value representing the number of kernels to use to approximate the bokeh effect.
+ The gamma highlight factor to use to emphasize bright spots in the source image
+ The to allow chaining of operations.
+
+
+
+ Applies a bokeh blur to the image.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a bokeh blur to the image.
+
+ The image this method extends.
+ The 'radius' value representing the size of the area to sample.
+ The 'components' value representing the number of kernels to use to approximate the bokeh effect.
+ The gamma highlight factor to use to emphasize bright spots in the source image
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions methods to apply box blurring to an
+ using Mutate/Clone.
+
+
+
+
+ Applies a box blur to the image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies a box blur to the image.
+
+ The image this method extends.
+ The 'radius' value representing the size of the area to sample.
+ The to allow chaining of operations.
+
+
+
+ Applies a box blur to the image.
+
+ The image this method extends.
+ The 'radius' value representing the size of the area to sample.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines edge detection extensions applicable on an using Mutate/Clone.
+
+
+
+
+ Detects any edges within the image.
+ Uses the kernel operating in grayscale mode.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image.
+ Uses the kernel operating in grayscale mode.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image operating in grayscale mode.
+
+ The image this method extends.
+ The 2D edge detector kernel.
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image using a .
+
+ The image this method extends.
+ The 2D edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image operating in grayscale mode.
+
+ The image this method extends.
+ The 2D edge detector kernel.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image using a .
+
+ The image this method extends.
+ The 2D edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image operating in grayscale mode.
+
+ The image this method extends.
+ The edge detector kernel.
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image using a .
+
+ The image this method extends.
+ The edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image operating in grayscale mode.
+
+ The image this method extends.
+ The edge detector kernel.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image using a .
+
+ The image this method extends.
+ The edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image operating in grayscale mode.
+
+ The image this method extends.
+ Thecompass edge detector kernel.
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image using a .
+
+ The image this method extends.
+ Thecompass edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image operating in grayscale mode.
+
+ The image this method extends.
+ Thecompass edge detector kernel.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Detects any edges within the image using a .
+
+ The image this method extends.
+ Thecompass edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines Gaussian blurring extensions to apply on an
+ using Mutate/Clone.
+
+
+
+
+ Applies a Gaussian blur to the image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies a Gaussian blur to the image.
+
+ The image this method extends.
+ The 'sigma' value representing the weight of the blur.
+ The to allow chaining of operations.
+
+
+
+ Applies a Gaussian blur to the image.
+
+ The image this method extends.
+ The 'sigma' value representing the weight of the blur.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines Gaussian sharpening extensions to apply on an
+ using Mutate/Clone.
+
+
+
+
+ Applies a Gaussian sharpening filter to the image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies a Gaussian sharpening filter to the image.
+
+ The image this method extends.
+ The 'sigma' value representing the weight of the blur.
+ The to allow chaining of operations.
+
+
+
+ Applies a Gaussian sharpening filter to the image.
+
+ The image this method extends.
+ The 'sigma' value representing the weight of the blur.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines dithering extensions to apply on an
+ using Mutate/Clone.
+
+
+
+
+ Dithers the image reducing it to a web-safe palette using .
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to a web-safe palette.
+
+ The image this method extends.
+ The ordered ditherer.
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to a web-safe palette.
+
+ The image this method extends.
+ The ordered ditherer.
+ The dithering scale used to adjust the amount of dither.
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to the given palette.
+
+ The image this method extends.
+ The ordered ditherer.
+ The palette to select substitute colors from.
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to the given palette.
+
+ The image this method extends.
+ The ordered ditherer.
+ The dithering scale used to adjust the amount of dither.
+ The palette to select substitute colors from.
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to a web-safe palette using .
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to a web-safe palette.
+
+ The image this method extends.
+ The ordered ditherer.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to a web-safe palette.
+
+ The image this method extends.
+ The ordered ditherer.
+ The dithering scale used to adjust the amount of dither.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to the given palette.
+
+ The image this method extends.
+ The ordered ditherer.
+ The palette to select substitute colors from.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Dithers the image reducing it to the given palette.
+
+ The image this method extends.
+ The ordered ditherer.
+ The dithering scale used to adjust the amount of dither.
+ The palette to select substitute colors from.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Adds extensions that allow the drawing of images to the type.
+
+
+
+
+ Draws the given image together with the current one by blending their pixels.
+
+ The image this method extends.
+ The image to blend with the currently processing image.
+ The opacity of the image to blend. Must be between 0 and 1.
+ The .
+
+
+
+ Draws the given image together with the current one by blending their pixels.
+
+ The image this method extends.
+ The image to blend with the currently processing image.
+ The blending mode.
+ The opacity of the image to blend. Must be between 0 and 1.
+ The .
+
+
+
+ Draws the given image together with the current one by blending their pixels.
+
+ The image this method extends.
+ The image to blend with the currently processing image.
+ The color blending mode.
+ The alpha composition mode.
+ The opacity of the image to blend. Must be between 0 and 1.
+ The .
+
+
+
+ Draws the given image together with the current one by blending their pixels.
+
+ The image this method extends.
+ The image to blend with the currently processing image.
+ The options, including the blending type and blending amount.
+ The .
+
+
+
+ Draws the given image together with the current one by blending their pixels.
+
+ The image this method extends.
+ The image to blend with the currently processing image.
+ The location to draw the blended image.
+ The opacity of the image to blend. Must be between 0 and 1.
+ The .
+
+
+
+ Draws the given image together with the current one by blending their pixels.
+
+ The image this method extends.
+ The image to blend with the currently processing image.
+ The location to draw the blended image.
+ The color blending to apply.
+ The opacity of the image to blend. Must be between 0 and 1.
+ The .
+
+
+
+ Draws the given image together with the current one by blending their pixels.
+
+ The image this method extends.
+ The image to blend with the currently processing image.
+ The location to draw the blended image.
+ The color blending to apply.
+ The alpha composition mode.
+ The opacity of the image to blend. Must be between 0 and 1.
+ The .
+
+
+
+ Draws the given image together with the current one by blending their pixels.
+
+ The image this method extends.
+ The image to blend with the currently processing image.
+ The location to draw the blended image.
+ The options containing the blend mode and opacity.
+ The .
+
+
+
+ Defines oil painting effect extensions applicable on an
+ using Mutate/Clone.
+
+
+
+
+ Alters the colors of the image recreating an oil painting effect with levels and brushSize
+ set to 10 and 15 respectively.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Alters the colors of the image recreating an oil painting effect with levels and brushSize
+ set to 10 and 15 respectively.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Alters the colors of the image recreating an oil painting effect.
+
+ The image this method extends.
+ The number of intensity levels. Higher values result in a broader range of color intensities forming part of the result image.
+ The number of neighboring pixels used in calculating each individual pixel value.
+ The to allow chaining of operations.
+
+
+
+ Alters the colors of the image recreating an oil painting effect.
+
+ The image this method extends.
+ The number of intensity levels. Higher values result in a broader range of color intensities forming part of the result image.
+ The number of neighboring pixels used in calculating each individual pixel value.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines pixelation effect extensions applicable on an
+ using Mutate/Clone.
+
+
+
+
+ Pixelates an image with the given pixel size.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Pixelates an image with the given pixel size.
+
+ The image this method extends.
+ The size of the pixels.
+ The to allow chaining of operations.
+
+
+
+ Pixelates an image with the given pixel size.
+
+ The image this method extends.
+ The size of the pixels.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extension methods that allow the application of user defined processing delegate to an .
+
+
+
+
+ Applies a user defined processing delegate to the image.
+
+ The image this method extends.
+ The user defined processing delegate to use to modify image rows.
+ The to allow chaining of operations.
+
+
+
+ Applies a user defined processing delegate to the image.
+
+ The image this method extends.
+ The user defined processing delegate to use to modify image rows.
+ The to apply during the pixel conversions.
+ The to allow chaining of operations.
+
+
+
+ Applies a user defined processing delegate to the image.
+
+ The image this method extends.
+ The user defined processing delegate to use to modify image rows.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a user defined processing delegate to the image.
+
+ The image this method extends.
+ The user defined processing delegate to use to modify image rows.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to apply during the pixel conversions.
+ The to allow chaining of operations.
+
+
+
+ Applies a user defined processing delegate to the image.
+
+ The image this method extends.
+ The user defined processing delegate to use to modify image rows.
+ The to allow chaining of operations.
+
+
+
+ Applies a user defined processing delegate to the image.
+
+ The image this method extends.
+ The user defined processing delegate to use to modify image rows.
+ The to apply during the pixel conversions.
+ The to allow chaining of operations.
+
+
+
+ Applies a user defined processing delegate to the image.
+
+ The image this method extends.
+ The user defined processing delegate to use to modify image rows.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a user defined processing delegate to the image.
+
+ The image this method extends.
+ The user defined processing delegate to use to modify image rows.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to apply during the pixel conversions.
+ The to allow chaining of operations.
+
+
+
+ Defines extension methods that allow the application of black and white toning to an
+ using Mutate/Clone.
+
+
+
+
+ Applies black and white toning to the image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies black and white toning to the image.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the alteration of the brightness component of an
+ using Mutate/Clone.
+
+
+
+
+ Alters the brightness component of the image.
+
+
+ A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing brighter results.
+
+ The image this method extends.
+ The proportion of the conversion. Must be greater than or equal to 0.
+ The to allow chaining of operations.
+
+
+
+ Alters the brightness component of the image.
+
+
+ A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing brighter results.
+
+ The image this method extends.
+ The proportion of the conversion. Must be greater than or equal to 0.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that simulate the effects of various color blindness disorders on an
+ using Mutate/Clone.
+
+
+
+
+ Applies the given colorblindness simulator to the image.
+
+ The image this method extends.
+ The type of color blindness simulator to apply.
+ The to allow chaining of operations.
+
+
+
+ Applies the given colorblindness simulator to the image.
+
+ The image this method extends.
+ The type of color blindness simulator to apply.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the alteration of the contrast component of an
+ using Mutate/Clone.
+
+
+
+
+ Alters the contrast component of the image.
+
+
+ A value of 0 will create an image that is completely gray. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing results with more contrast.
+
+ The image this method extends.
+ The proportion of the conversion. Must be greater than or equal to 0.
+ The to allow chaining of operations.
+
+
+
+ Alters the contrast component of the image.
+
+
+ A value of 0 will create an image that is completely gray. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing results with more contrast.
+
+ The image this method extends.
+ The proportion of the conversion. Must be greater than or equal to 0.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of composable filters to an
+ using Mutate/Clone.
+
+
+
+
+ Filters an image by the given color matrix
+
+ The image this method extends.
+ The filter color matrix
+ The to allow chaining of operations.
+
+
+
+ Filters an image by the given color matrix
+
+ The image this method extends.
+ The filter color matrix
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of grayscale toning to an
+ using Mutate/Clone.
+
+
+
+
+ Applies grayscale toning to the image.
+
+ The image this method extends.
+ The .
+
+
+
+ Applies grayscale toning to the image using the given amount.
+
+ The image this method extends.
+ The proportion of the conversion. Must be between 0 and 1.
+ The .
+
+
+
+ Applies grayscale toning to the image with the given .
+
+ The image this method extends.
+ The formula to apply to perform the operation.
+ The .
+
+
+
+ Applies grayscale toning to the image with the given using the given amount.
+
+ The image this method extends.
+ The formula to apply to perform the operation.
+ The proportion of the conversion. Must be between 0 and 1.
+ The .
+
+
+
+ Applies grayscale toning to the image.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The .
+
+
+
+ Applies grayscale toning to the image using the given amount.
+
+ The image this method extends.
+ The proportion of the conversion. Must be between 0 and 1.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The .
+
+
+
+ Applies grayscale toning to the image.
+
+ The image this method extends.
+ The formula to apply to perform the operation.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The .
+
+
+
+ Applies grayscale toning to the image using the given amount.
+
+ The image this method extends.
+ The formula to apply to perform the operation.
+ The proportion of the conversion. Must be between 0 and 1.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The .
+
+
+
+ Defines extensions that allow the alteration of the hue component of an
+ using Mutate/Clone.
+
+
+
+
+ Alters the hue component of the image.
+
+ The image this method extends.
+ The rotation angle in degrees to adjust the hue.
+ The to allow chaining of operations.
+
+
+
+ Alters the hue component of the image.
+
+ The image this method extends.
+ The rotation angle in degrees to adjust the hue.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the inversion of colors of an
+ using Mutate/Clone.
+
+
+
+
+ Inverts the colors of the image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Inverts the colors of the image.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the recreation of an old Kodachrome camera effect on an
+ using Mutate/Clone.
+
+
+
+
+ Alters the colors of the image recreating an old Kodachrome camera effect.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Alters the colors of the image recreating an old Kodachrome camera effect.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the alteration of the lightness component of an
+ using Mutate/Clone.
+
+
+
+
+ Alters the lightness component of the image.
+
+
+ A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing lighter results.
+
+ The image this method extends.
+ The proportion of the conversion. Must be greater than or equal to 0.
+ The to allow chaining of operations.
+
+
+
+ Alters the lightness component of the image.
+
+
+ A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing lighter results.
+
+ The image this method extends.
+ The proportion of the conversion. Must be greater than or equal to 0.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the recreation of an old Lomograph camera effect on an
+ using Mutate/Clone.
+
+
+
+
+ Alters the colors of the image recreating an old Lomograph camera effect.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Alters the colors of the image recreating an old Lomograph camera effect.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the alteration of the opacity component of an
+ using Mutate/Clone.
+
+
+
+
+ Multiplies the alpha component of the image.
+
+ The image this method extends.
+ The proportion of the conversion. Must be between 0 and 1.
+ The to allow chaining of operations.
+
+
+
+ Multiplies the alpha component of the image.
+
+ The image this method extends.
+ The proportion of the conversion. Must be between 0 and 1.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the recreation of an old Polaroid camera effect on an
+ using Mutate/Clone.
+
+
+
+
+ Alters the colors of the image recreating an old Polaroid camera effect.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Alters the colors of the image recreating an old Polaroid camera effect.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the alteration of the saturation component of an
+ using Mutate/Clone.
+
+
+
+
+ Alters the saturation component of the image.
+
+
+ A value of 0 is completely un-saturated. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of amount over 1 are allowed, providing super-saturated results
+
+ The image this method extends.
+ The proportion of the conversion. Must be greater than or equal to 0.
+ The to allow chaining of operations.
+
+
+
+ Alters the saturation component of the image.
+
+
+ A value of 0 is completely un-saturated. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of amount over 1 are allowed, providing super-saturated results
+
+ The image this method extends.
+ The proportion of the conversion. Must be greater than or equal to 0.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of sepia toning on an
+ using Mutate/Clone.
+
+
+
+
+ Applies sepia toning to the image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies sepia toning to the image using the given amount.
+
+ The image this method extends.
+ The proportion of the conversion. Must be between 0 and 1.
+ The to allow chaining of operations.
+
+
+
+ Applies sepia toning to the image.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies sepia toning to the image.
+
+ The image this method extends.
+ The proportion of the conversion. Must be between 0 and 1.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extension that allow the adjustment of the contrast of an image via its histogram.
+
+
+
+
+ Equalizes the histogram of an image to increases the contrast.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Equalizes the histogram of an image to increases the contrast.
+
+ The image this method extends.
+ The histogram equalization options to use.
+ The to allow chaining of operations.
+
+
+
+ Defines extension methods to replace the background color of an
+ using Mutate/Clone.
+
+
+
+
+ Replaces the background color of image with the given one.
+
+ The image this method extends.
+ The color to set as the background.
+ The to allow chaining of operations.
+
+
+
+ Replaces the background color of image with the given one.
+
+ The image this method extends.
+ The color to set as the background.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Replaces the background color of image with the given one.
+
+ The image this method extends.
+ The options effecting pixel blending.
+ The color to set as the background.
+ The to allow chaining of operations.
+
+
+
+ Replaces the background color of image with the given one.
+
+ The image this method extends.
+ The options effecting pixel blending.
+ The color to set as the background.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of a radial glow on an
+ using Mutate/Clone.
+
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The color to set as the glow.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The the radius.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The color to set as the glow.
+ The the radius.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The options effecting things like blending.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The options effecting things like blending.
+ The color to set as the glow.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The options effecting things like blending.
+ The the radius.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The options effecting things like blending.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The options effecting things like blending.
+ The color to set as the glow.
+ The the radius.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The options effecting things like blending.
+ The color to set as the glow.
+ The the radius.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a radial glow effect to an image.
+
+ The image this method extends.
+ The options effecting things like blending.
+ The color to set as the glow.
+ The the radius.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of a radial glow to an
+ using Mutate/Clone.
+
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The color to set as the vignette.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The the x-radius.
+ The the y-radius.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The color to set as the vignette.
+ The the x-radius.
+ The the y-radius.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The options effecting pixel blending.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The options effecting pixel blending.
+ The color to set as the vignette.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The options effecting pixel blending.
+ The the x-radius.
+ The the y-radius.
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The options effecting pixel blending.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies a radial vignette effect to an image.
+
+ The image this method extends.
+ The options effecting pixel blending.
+ The color to set as the vignette.
+ The the x-radius.
+ The the y-radius.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Adds extensions that allow the processing of images to the type.
+
+
+ Defines extensions that allow the computation of image integrals on an
+
+
+
+
+ Mutates the source image by applying the image operation to it.
+
+ The image to mutate.
+ The operation to perform on the source.
+ The source is null.
+ The operation is null.
+ The source has been disposed.
+ The processing operation failed.
+
+
+
+ Mutates the source image by applying the image operation to it.
+
+ The image to mutate.
+ The configuration which allows altering default behaviour or extending the library.
+ The operation to perform on the source.
+ The configuration is null.
+ The source is null.
+ The operation is null.
+ The source has been disposed.
+ The processing operation failed.
+
+
+
+ Mutates the source image by applying the image operation to it.
+
+ The pixel format.
+ The image to mutate.
+ The operation to perform on the source.
+ The source is null.
+ The operation is null.
+ The source has been disposed.
+ The processing operation failed.
+
+
+
+ Mutates the source image by applying the image operation to it.
+
+ The pixel format.
+ The image to mutate.
+ The configuration which allows altering default behaviour or extending the library.
+ The operation to perform on the source.
+ The configuration is null.
+ The source is null.
+ The operation is null.
+ The source has been disposed.
+ The processing operation failed.
+
+
+
+ Mutates the source image by applying the operations to it.
+
+ The pixel format.
+ The image to mutate.
+ The operations to perform on the source.
+ The source is null.
+ The operations are null.
+ The source has been disposed.
+ The processing operation failed.
+
+
+
+ Mutates the source image by applying the operations to it.
+
+ The pixel format.
+ The image to mutate.
+ The configuration which allows altering default behaviour or extending the library.
+ The operations to perform on the source.
+ The configuration is null.
+ The source is null.
+ The operations are null.
+ The source has been disposed.
+ The processing operation failed.
+
+
+
+ Creates a deep clone of the current image. The clone is then mutated by the given operation.
+
+ The image to clone.
+ The operation to perform on the clone.
+ The new .
+ The source is null.
+ The operation is null.
+ The source has been disposed.
+ The processing operation failed.
+
+
+
+ Creates a deep clone of the current image. The clone is then mutated by the given operation.
+
+ The image to clone.
+ The configuration which allows altering default behaviour or extending the library.
+ The operation to perform on the clone.
+ The configuration is null.
+ The source is null.
+ The operation is null.
+ The source has been disposed.
+ The processing operation failed.
+ The new .
+
+
+
+ Creates a deep clone of the current image. The clone is then mutated by the given operation.
+
+ The pixel format.
+ The image to clone.
+ The operation to perform on the clone.
+ The source is null.
+ The operation is null.
+ The source has been disposed.
+ The processing operation failed.
+ The new .
+
+
+
+ Creates a deep clone of the current image. The clone is then mutated by the given operation.
+
+ The pixel format.
+ The image to clone.
+ The configuration which allows altering default behaviour or extending the library.
+ The operation to perform on the clone.
+ The configuration is null.
+ The source is null.
+ The operation is null.
+ The source has been disposed.
+ The processing operation failed.
+ The new
+
+
+
+ Creates a deep clone of the current image. The clone is then mutated by the given operations.
+
+ The pixel format.
+ The image to clone.
+ The operations to perform on the clone.
+ The source is null.
+ The operations are null.
+ The source has been disposed.
+ The processing operation failed.
+ The new
+
+
+
+ Creates a deep clone of the current image. The clone is then mutated by the given operations.
+
+ The pixel format.
+ The image to clone.
+ The configuration which allows altering default behaviour or extending the library.
+ The operations to perform on the clone.
+ The configuration is null.
+ The source is null.
+ The operations are null.
+ The source has been disposed.
+ The processing operation failed.
+ The new
+
+
+
+ Applies the given collection against the context
+
+ The image processing context.
+ The operations to perform on the source.
+ The processing operation failed.
+ The to allow chaining of operations.
+
+
+
+ Apply an image integral.
+
+ The image on which to apply the integral.
+ The type of the pixel.
+ The containing all the sums.
+
+
+
+ Defines extensions that allow the application of quantizing algorithms on an
+ using Mutate/Clone.
+
+
+
+
+ Applies quantization to the image using the .
+
+ The image this method extends.
+ The to allow chaining of operations.
+
+
+
+ Applies quantization to the image.
+
+ The image this method extends.
+ The quantizer to apply to perform the operation.
+ The to allow chaining of operations.
+
+
+
+ Applies quantization to the image using the .
+
+ The image this method extends.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Applies quantization to the image.
+
+ The image this method extends.
+ The quantizer to apply to perform the operation.
+
+ The structure that specifies the portion of the image object to alter.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of auto-orientation operations to an
+ using Mutate/Clone.
+
+
+
+
+ Adjusts an image so that its orientation is suitable for viewing. Adjustments are based on EXIF metadata embedded in the image.
+
+ The image to auto rotate.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of cropping operations on an
+ using Mutate/Clone.
+
+
+
+
+ Crops an image to the given width and height.
+
+ The image to resize.
+ The target image width.
+ The target image height.
+ The to allow chaining of operations.
+
+
+
+ Crops an image to the given rectangle.
+
+ The image to crop.
+
+ The structure that specifies the portion of the image object to retain.
+
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of entropy cropping operations on an
+ using Mutate/Clone.
+
+
+
+
+ Crops an image to the area of greatest entropy using a threshold for entropic density of .5F.
+
+ The image to crop.
+ The to allow chaining of operations.
+
+
+
+ Crops an image to the area of greatest entropy.
+
+ The image to crop.
+ The threshold for entropic density.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of flipping operations on an
+ using Mutate/Clone.
+
+
+
+
+ Flips an image by the given instructions.
+
+ The image to rotate, flip, or both.
+ The to perform the flip.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of padding operations on an
+ using Mutate/Clone.
+
+
+
+
+ Evenly pads an image to fit the new dimensions.
+
+ The source image to pad.
+ The new width.
+ The new height.
+ The to allow chaining of operations.
+
+
+
+ Evenly pads an image to fit the new dimensions with the given background color.
+
+ The source image to pad.
+ The new width.
+ The new height.
+ The background color with which to pad the image.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of resize operations on an
+ using Mutate/Clone.
+
+
+
+
+ Resizes an image to the given .
+
+ The image to resize.
+ The target image size.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image to the given .
+
+ The image to resize.
+ The target image size.
+ Whether to compress and expand the image color-space to gamma correct the image during processing.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image to the given width and height.
+
+ The image to resize.
+ The target image width.
+ The target image height.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image to the given width and height.
+
+ The image to resize.
+ The target image width.
+ The target image height.
+ Whether to compress and expand the image color-space to gamma correct the image during processing.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image to the given width and height with the given sampler.
+
+ The image to resize.
+ The target image width.
+ The target image height.
+ The to perform the resampling.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image to the given width and height with the given sampler.
+
+ The image to resize.
+ The target image size.
+ The to perform the resampling.
+ Whether to compress and expand the image color-space to gamma correct the image during processing.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image to the given width and height with the given sampler.
+
+ The image to resize.
+ The target image width.
+ The target image height.
+ The to perform the resampling.
+ Whether to compress and expand the image color-space to gamma correct the image during processing.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image to the given width and height with the given sampler and
+ source rectangle.
+
+ The image to resize.
+ The target image width.
+ The target image height.
+ The to perform the resampling.
+
+ The structure that specifies the portion of the image object to draw.
+
+
+ The structure that specifies the portion of the target image object to draw to.
+
+ Whether to compress and expand the image color-space to gamma correct the image during processing.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image to the given width and height with the given sampler and source rectangle.
+
+ The image to resize.
+ The target image width.
+ The target image height.
+ The to perform the resampling.
+
+ The structure that specifies the portion of the target image object to draw to.
+
+ Whether to compress and expand the image color-space to gamma correct the image during processing.
+ The to allow chaining of operations.
+ Passing zero for one of height or width will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Resizes an image in accordance with the given .
+
+ The image to resize.
+ The resize options.
+ The to allow chaining of operations.
+ Passing zero for one of height or width within the resize options will automatically preserve the aspect ratio of the original image or the nearest possible ratio.
+
+
+
+ Defines extensions that allow the application of rotate operations on an
+ using Mutate/Clone.
+
+
+
+
+ Rotates and flips an image by the given instructions.
+
+ The image to rotate.
+ The to perform the rotation.
+ The to allow chaining of operations.
+
+
+
+ Rotates an image by the given angle in degrees.
+
+ The image to rotate.
+ The angle in degrees to perform the rotation.
+ The to allow chaining of operations.
+
+
+
+ Rotates an image by the given angle in degrees using the specified sampling algorithm.
+
+ The image to rotate.
+ The angle in degrees to perform the rotation.
+ The to perform the resampling.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of rotate-flip operations on an
+ using Mutate/Clone.
+
+
+
+
+ Rotates and flips an image by the given instructions.
+
+ The image to rotate, flip, or both.
+ The to perform the rotation.
+ The to perform the flip.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of skew operations on an
+ using Mutate/Clone.
+
+
+
+
+ Skews an image by the given angles in degrees.
+
+ The image to skew.
+ The angle in degrees to perform the skew along the x-axis.
+ The angle in degrees to perform the skew along the y-axis.
+ The to allow chaining of operations.
+
+
+
+ Skews an image by the given angles in degrees using the specified sampling algorithm.
+
+ The image to skew.
+ The angle in degrees to perform the skew along the x-axis.
+ The angle in degrees to perform the skew along the y-axis.
+ The to perform the resampling.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of swizzle operations on an
+
+
+
+
+ Swizzles an image.
+
+ The image to swizzle.
+ The swizzler function.
+ The swizzler function type.
+ The to allow chaining of operations.
+
+
+
+ Defines extensions that allow the application of composable transform operations on an
+ using Mutate/Clone.
+
+
+
+
+ Performs an affine transform of an image.
+
+ The image to transform.
+ The affine transform builder.
+ The
+
+
+
+ Performs an affine transform of an image using the specified sampling algorithm.
+
+ The .
+ The affine transform builder.
+ The to perform the resampling.
+ The to allow chaining of operations.
+
+
+
+ Performs an affine transform of an image using the specified sampling algorithm.
+
+ The .
+ The source rectangle
+ The affine transform builder.
+ The to perform the resampling.
+ The to allow chaining of operations.
+
+
+
+ Performs an affine transform of an image using the specified sampling algorithm.
+
+ The .
+ The source rectangle
+ The transformation matrix.
+ The size of the result image.
+ The to perform the resampling.
+ The to allow chaining of operations.
+
+
+
+ Performs a projective transform of an image.
+
+ The image to transform.
+ The affine transform builder.
+ The to allow chaining of operations.
+
+
+
+ Performs a projective transform of an image using the specified sampling algorithm.
+
+ The .
+ The projective transform builder.
+ The to perform the resampling.
+ The to allow chaining of operations.
+
+
+
+ Performs a projective transform of an image using the specified sampling algorithm.
+
+ The .
+ The source rectangle
+ The projective transform builder.
+ The to perform the resampling.
+ The to allow chaining of operations.
+
+
+
+ Performs a projective transform of an image using the specified sampling algorithm.
+
+ The .
+ The source rectangle
+ The transformation matrix.
+ The size of the result image.
+ The to perform the resampling.
+ The to allow chaining of operations.
+
+
+
+ Provides enumeration over how a image should be flipped.
+
+
+
+
+ Don't flip the image.
+
+
+
+
+ Flip the image horizontally.
+
+
+
+
+ Flip the image vertically.
+
+
+
+
+ Enumerates the various types of defined grayscale filters.
+
+
+
+
+ ITU-R Recommendation BT.709
+
+
+
+
+ ITU-R Recommendation BT.601
+
+
+
+
+ A pixel-agnostic interface to queue up image operations to apply to an image.
+
+
+
+
+ Gets the configuration which allows altering default behaviour or extending the library.
+
+
+
+
+ Gets a set of properties for the Image Processing Context.
+
+ This can be used for storing global settings and defaults to be accessable to processors.
+
+
+
+ Gets the image dimensions at the current point in the processing pipeline.
+
+ The .
+
+
+
+ Adds the processor to the current set of image operations to be applied.
+
+ The processor to apply.
+ The area to apply it to.
+ The current operations class to allow chaining of operations.
+
+
+
+ Adds the processor to the current set of image operations to be applied.
+
+ The processor to apply.
+ The current operations class to allow chaining of operations.
+
+
+
+ Represents an interface that will create IInternalImageProcessingContext instances
+
+
+
+
+ Called during mutate operations to generate the image operations provider.
+
+ The pixel format
+ The configuration which allows altering default behaviour or extending the library.
+ The source image.
+ A flag to determine whether image operations are allowed to mutate the source image.
+ A new
+
+
+
+ The default implementation of
+
+
+
+
+
+
+
+ An interface for internal operations we don't want to expose on .
+
+ The pixel type.
+
+
+
+ Returns the result image to return by
+ (and other overloads).
+
+ The current image or a new image depending on whether it is requested to mutate the source image.
+
+
+
+ Contains reusable static instances of known dithering algorithms.
+
+
+
+
+ Gets the order ditherer using the 2x2 Bayer dithering matrix
+
+
+
+
+ Gets the order ditherer using the 3x3 dithering matrix
+
+
+
+
+ Gets the order ditherer using the 4x4 Bayer dithering matrix
+
+
+
+
+ Gets the order ditherer using the 8x8 Bayer dithering matrix
+
+
+
+
+ Gets the order ditherer using the 16x16 Bayer dithering matrix
+
+
+
+
+ Gets the error Dither that implements the Atkinson algorithm.
+
+
+
+
+ Gets the error Dither that implements the Burks algorithm.
+
+
+
+
+ Gets the error Dither that implements the Floyd-Steinberg algorithm.
+
+
+
+
+ Gets the error Dither that implements the Jarvis-Judice-Ninke algorithm.
+
+
+
+
+ Gets the error Dither that implements the Sierra-2 algorithm.
+
+
+
+
+ Gets the error Dither that implements the Sierra-3 algorithm.
+
+
+
+
+ Gets the error Dither that implements the Sierra-Lite algorithm.
+
+
+
+
+ Gets the error Dither that implements the Stevenson-Arce algorithm.
+
+
+
+
+ Gets the error Dither that implements the Stucki algorithm.
+
+
+
+
+ Contains reusable static instances of known edge detection kernels.
+
+
+
+
+ Gets the Kayyali edge detector kernel.
+
+
+
+
+ Gets the Kirsch edge detector kernel.
+
+
+
+
+ Gets the Laplacian 3x3 edge detector kernel.
+
+
+
+
+ Gets the Laplacian 5x5 edge detector kernel.
+
+
+
+
+ Gets the Laplacian of Gaussian edge detector kernel.
+
+
+
+
+ Gets the Prewitt edge detector kernel.
+
+
+
+
+ Gets the Roberts-Cross edge detector kernel.
+
+
+
+
+ Gets the Robinson edge detector kernel.
+
+
+
+
+ Gets the Scharr edge detector kernel.
+
+
+
+
+ Gets the Sobel edge detector kernel.
+
+
+
+
+ A collection of known values for composing filters
+
+
+
+
+ Gets a filter recreating Achromatomaly (Color desensitivity) color blindness
+
+
+
+
+ Gets a filter recreating Achromatopsia (Monochrome) color blindness.
+
+
+
+
+ Gets a filter recreating Deuteranomaly (Green-Weak) color blindness.
+
+
+
+
+ Gets a filter recreating Deuteranopia (Green-Blind) color blindness.
+
+
+
+
+ Gets a filter recreating Protanomaly (Red-Weak) color blindness.
+
+
+
+
+ Gets a filter recreating Protanopia (Red-Blind) color blindness.
+
+
+
+
+ Gets a filter recreating Tritanomaly (Blue-Weak) color blindness.
+
+
+
+
+ Gets a filter recreating Tritanopia (Blue-Blind) color blindness.
+
+
+
+
+ Gets an approximated black and white filter
+
+
+
+
+ Gets a filter recreating an old Kodachrome camera effect.
+
+
+
+
+ Gets a filter recreating an old Lomograph camera effect.
+
+
+
+
+ Gets a filter recreating an old Polaroid camera effect.
+
+
+
+
+ Create a brightness filter matrix using the given amount.
+
+
+ A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing brighter results.
+
+ The proportion of the conversion. Must be greater than or equal to 0.
+ The
+
+
+
+ Create a contrast filter matrix using the given amount.
+
+
+ A value of 0 will create an image that is completely gray. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing results with more contrast.
+
+ The proportion of the conversion. Must be greater than or equal to 0.
+ The
+
+
+
+ Create a grayscale filter matrix using the given amount using the formula as specified by ITU-R Recommendation BT.601.
+
+
+ The proportion of the conversion. Must be between 0 and 1.
+ The
+
+
+
+ Create a grayscale filter matrix using the given amount using the formula as specified by ITU-R Recommendation BT.709.
+
+
+ The proportion of the conversion. Must be between 0 and 1.
+ The
+
+
+
+ Create a hue filter matrix using the given angle in degrees.
+
+ The angle of rotation in degrees.
+ The
+
+
+
+ Create an invert filter matrix using the given amount.
+
+ The proportion of the conversion. Must be between 0 and 1.
+ The
+
+
+
+ Create an opacity filter matrix using the given amount.
+
+ The proportion of the conversion. Must be between 0 and 1.
+ The
+
+
+
+ Create a saturation filter matrix using the given amount.
+
+
+ A value of 0 is completely un-saturated. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of amount over 1 are allowed, providing super-saturated results
+
+ The proportion of the conversion. Must be greater than or equal to 0.
+ The
+
+
+
+ Create a lightness filter matrix using the given amount.
+
+
+ A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing lighter results.
+
+ The proportion of the conversion. Must be greater than or equal to 0.
+ The
+
+
+
+ Create a sepia filter matrix using the given amount.
+ The formula used matches the svg specification.
+
+ The proportion of the conversion. Must be between 0 and 1.
+ The
+
+
+
+ Contains reusable static instances of known quantizing algorithms
+
+
+
+
+ Gets the adaptive Octree quantizer. Fast with good quality.
+
+
+
+
+ Gets the Xiaolin Wu's Color Quantizer which generates high quality output.
+
+
+
+
+ Gets the palette based quantizer consisting of web safe colors as defined in the CSS Color Module Level 4.
+
+
+
+
+ Gets the palette based quantizer consisting of colors as defined in the original second edition of Werner’s Nomenclature of Colours 1821.
+ The hex codes were collected and defined by Nicholas Rougeux
+
+
+
+
+ Contains reusable static instances of known resampling algorithms
+
+
+
+
+ Gets the Bicubic sampler that implements the bicubic kernel algorithm W(x)
+
+
+
+
+ Gets the Box sampler that implements the box algorithm. Similar to nearest neighbor when upscaling.
+ When downscaling the pixels will average, merging pixels together.
+
+
+
+
+ Gets the Catmull-Rom sampler, a well known standard Cubic Filter often used as a interpolation function
+
+
+
+
+ Gets the Hermite sampler. A type of smoothed triangular interpolation filter that rounds off strong edges while
+ preserving flat 'color levels' in the original image.
+
+
+
+
+ Gets the Lanczos kernel sampler that implements smooth interpolation with a radius of 2 pixels.
+ This algorithm provides sharpened results when compared to others when downsampling.
+
+
+
+
+ Gets the Lanczos kernel sampler that implements smooth interpolation with a radius of 3 pixels
+ This algorithm provides sharpened results when compared to others when downsampling.
+
+
+
+
+ Gets the Lanczos kernel sampler that implements smooth interpolation with a radius of 5 pixels
+ This algorithm provides sharpened results when compared to others when downsampling.
+
+
+
+
+ Gets the Lanczos kernel sampler that implements smooth interpolation with a radius of 8 pixels
+ This algorithm provides sharpened results when compared to others when downsampling.
+
+
+
+
+ Gets the Mitchell-Netravali sampler. This seperable cubic algorithm yields a very good equilibrium between
+ detail preservation (sharpness) and smoothness.
+
+
+
+
+ Gets the Nearest-Neighbour sampler that implements the nearest neighbor algorithm. This uses a very fast, unscaled filter
+ which will select the closest pixel to the new pixels position.
+
+
+
+
+ Gets the Robidoux sampler. This algorithm developed by Nicolas Robidoux providing a very good equilibrium between
+ detail preservation (sharpness) and smoothness comparable to .
+
+
+
+
+ Gets the Robidoux Sharp sampler. A sharpened form of the sampler
+
+
+
+
+ Gets the Spline sampler. A separable cubic algorithm similar to but yielding smoother results.
+
+
+
+
+ Gets the Triangle sampler, otherwise known as Bilinear. This interpolation algorithm can be used where perfect image transformation
+ with pixel matching is impossible, so that one can calculate and assign appropriate intensity values to pixels
+
+
+
+
+ Gets the Welch sampler. A high speed algorithm that delivers very sharpened results.
+
+
+
+
+ A representing a user defined processing delegate to use to modify image rows.
+
+ The target row of pixels to process.
+ The , , , and fields map the RGBA channels respectively.
+
+
+
+ A representing a user defined processing delegate to use to modify image rows.
+
+
+ The type of the parameter of the method that this delegate encapsulates.
+ This type parameter is contravariant.That is, you can use either the type you specified or any type that is less derived.
+
+ The target row of pixels to process.
+ The parameter of the method that this delegate encapsulates.
+ The , , , and fields map the RGBA channels respectively.
+
+
+
+ Performs Bradley Adaptive Threshold filter against an image.
+
+
+ Implements "Adaptive Thresholding Using the Integral Image",
+ see paper: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.420.7883&rep=rep1&type=pdf
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Threshold limit.
+
+
+
+ Initializes a new instance of the class.
+
+ Color for upper threshold.
+ Color for lower threshold.
+
+
+
+ Initializes a new instance of the class.
+
+ Color for upper threshold.
+ Color for lower threshold.
+ Threshold limit.
+
+
+
+ Gets or sets upper color limit for thresholding.
+
+
+
+
+ Gets or sets lower color limit for threshold.
+
+
+
+
+ Gets or sets the value for threshold limit.
+
+
+
+
+
+
+
+ Performs Bradley Adaptive Threshold filter against an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Performs simple binary threshold filtering against an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The threshold to split the image. Must be between 0 and 1.
+ The color component to be compared to threshold.
+
+
+
+ Initializes a new instance of the class with
+ Luminance as color component to be compared to threshold.
+
+ The threshold to split the image. Must be between 0 and 1.
+
+
+
+ Initializes a new instance of the class.
+
+ The threshold to split the image. Must be between 0 and 1.
+ The color to use for pixels that are above the threshold.
+ The color to use for pixels that are below the threshold.
+ The color component to be compared to threshold.
+
+
+
+ Initializes a new instance of the class with
+ Luminance as color component to be compared to threshold.
+
+ The threshold to split the image. Must be between 0 and 1.
+ The color to use for pixels that are above the threshold.
+ The color to use for pixels that are below the threshold.
+
+
+
+ Gets the threshold value.
+
+
+
+
+ Gets the color to use for pixels that are above the threshold.
+
+
+
+
+ Gets the color to use for pixels that fall below the threshold.
+
+
+
+
+ Gets the defining the value to be compared to threshold.
+
+
+
+
+
+
+
+ Performs simple binary threshold filtering against an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ A implementing the clone logic for .
+
+
+
+
+
+
+
+ The base class for all cloning image processors.
+
+
+
+
+
+
+
+
+
+
+ The base class for all pixel specific cloning image processors.
+ Allows the application of processing algorithms to the image.
+ The image is cloned before operating upon and the buffers swapped upon completion.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets The source for the current processor instance.
+
+
+
+
+ Gets The source area to process for the current processor instance.
+
+
+
+
+ Gets the instance to use when performing operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the size of the destination image.
+
+ The .
+
+
+
+ This method is called before the process is applied to prepare the processor.
+
+ The cloned/destination image. Cannot be null.
+
+
+
+ This method is called before the process is applied to prepare the processor.
+
+ The source image. Cannot be null.
+ The cloned/destination image. Cannot be null.
+
+
+
+ Applies the process to the specified portion of the specified at the specified location
+ and with the specified size.
+
+ The source image. Cannot be null.
+ The cloned/destination image. Cannot be null.
+
+
+
+ This method is called after the process is applied to prepare the processor.
+
+ The source image. Cannot be null.
+ The cloned/destination image. Cannot be null.
+
+
+
+ This method is called after the process is applied to prepare the processor.
+
+ The cloned/destination image. Cannot be null.
+
+
+
+ Disposes the object and frees resources for the Garbage Collector.
+
+ Whether to dispose managed and unmanaged objects.
+
+
+
+ Applies bokeh blur processing to the image.
+
+
+
+
+ The default radius used by the parameterless constructor.
+
+
+
+
+ The default component count used by the parameterless constructor.
+
+
+
+
+ The default gamma used by the parameterless constructor.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The 'radius' value representing the size of the area to sample.
+
+
+ The number of components to use to approximate the original 2D bokeh blur convolution kernel.
+
+
+ The gamma highlight factor to use to further process the image.
+
+
+
+
+ Gets the radius.
+
+
+
+
+ Gets the number of components.
+
+
+
+
+ Gets the gamma highlight factor to use when applying the effect.
+
+
+
+
+
+
+
+ A implementing the horizontal convolution logic for .
+
+
+ This type is located in the non-generic class and not in , where
+ it is actually used, because it does not use any generic parameters internally. Defining in a non-generic class means that there will only
+ ever be a single instantiation of this type for the JIT/AOT compilers to process, instead of having duplicate versions for each pixel type.
+
+
+
+
+
+
+
+ Applies bokeh blur processing to the image.
+
+ The pixel format.
+ This processor is based on the code from Mike Pound, see github.com/mikepound/convolve.
+
+
+
+ The gamma highlight factor to use when applying the effect
+
+
+
+
+ The size of each complex convolution kernel.
+
+
+
+
+ The kernel parameters to use for the current instance (a: X, b: Y, A: Z, B: W)
+
+
+
+
+ The kernel components for the current instance
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the complex kernels to use to apply the blur for the current instance
+
+
+
+
+ Gets the kernel parameters used to compute the pixel values from each complex pixel
+
+
+
+
+
+
+
+ Computes and aggregates the convolution for each complex kernel component in the processor.
+
+ The source image. Cannot be null.
+ The structure that specifies the portion of the image object to draw.
+ The configuration.
+ The buffer with the raw pixel data to use to aggregate the results of each convolution.
+
+
+
+ A implementing the vertical convolution logic for .
+
+
+
+
+
+
+
+ A implementing the gamma exposure logic for .
+
+
+
+
+
+
+
+ A implementing the 3F gamma exposure logic for .
+
+
+
+
+
+
+
+ A implementing the inverse gamma exposure logic for .
+
+
+
+
+
+
+
+ A implementing the inverse 3F gamma exposure logic for .
+
+
+
+
+
+
+
+ Defines a box blur processor of a given radius.
+
+
+
+
+ The default radius used by the parameterless constructor.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The 'radius' value representing the size of the area to sample.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the Radius.
+
+
+
+
+
+
+
+ Applies box blur processing to the image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the 1D convolution kernel.
+
+
+
+
+
+
+
+ Create a 1 dimensional Box kernel.
+
+ The maximum size of the kernel in either direction.
+ The .
+
+
+
+ Defines a processor that uses two one-dimensional matrices to perform convolution against an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The horizontal gradient operator.
+ The vertical gradient operator.
+ Whether the convolution filter is applied to alpha as well as the color channels.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the horizontal convolution kernel.
+
+
+
+
+ Gets the vertical convolution kernel.
+
+
+
+
+ Gets a value indicating whether the convolution filter is applied to alpha as well as the color channels.
+
+
+
+
+
+
+
+ A implementing the logic for 2D convolution.
+
+
+
+
+
+
+
+ A stack only struct used for reducing reference indirection during 2D convolution operations.
+
+
+
+
+ Defines a processor that uses two one-dimensional matrices to perform two-pass convolution against an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The 1D convolution kernel.
+ Whether the convolution filter is applied to alpha as well as the color channels.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the convolution kernel.
+
+
+
+
+ Gets a value indicating whether the convolution filter is applied to alpha as well as the color channels.
+
+
+
+
+
+
+
+ A implementing the logic for the horizontal 1D convolution.
+
+
+
+
+
+
+
+ A implementing the logic for the vertical 1D convolution.
+
+
+
+
+
+
+
+ Kernel radius is calculated using the minimum viable value.
+ See .
+
+
+
+
+ Create a 1 dimensional Gaussian kernel using the Gaussian G(x) function.
+
+ The convolution kernel.
+
+
+
+ Create a 1 dimensional Gaussian kernel using the Gaussian G(x) function
+
+ The convolution kernel.
+
+
+
+ Defines a processor that uses a 2 dimensional matrix to perform convolution against an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The 2d gradient operator.
+ Whether the convolution filter is applied to alpha as well as the color channels.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the 2d convolution kernel.
+
+
+
+
+ Gets a value indicating whether the convolution filter is applied to alpha as well as the color channels.
+
+
+
+
+
+
+
+ A implementing the convolution logic for .
+
+
+
+
+
+
+
+ A stack only struct used for reducing reference indirection during convolution operations.
+
+
+
+
+ Defines edge detection using the two 1D gradient operators.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The 2D edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+
+
+
+ Gets the 2D edge detector kernel.
+
+
+
+
+ Gets a value indicating whether to convert the image to grayscale before performing
+ edge detection.
+
+
+
+
+
+
+
+ Defines a processor that detects edges within an image using two one-dimensional matrices.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Defines edge detection using eight gradient operators.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+
+
+
+ Gets the edge detector kernel.
+
+
+
+
+ Gets a value indicating whether to convert the image to grayscale before performing
+ edge detection.
+
+
+
+
+
+
+
+ Defines a processor that detects edges within an image using a eight two dimensional matrices.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ A implementing the convolution logic for .
+
+
+
+
+
+
+
+ Defines edge detection using a single 2D gradient operator.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The edge detector kernel.
+
+ Whether to convert the image to grayscale before performing edge detection.
+
+
+
+
+ Gets the edge detector kernel.
+
+
+
+
+ Gets a value indicating whether to convert the image to grayscale before performing
+ edge detection.
+
+
+
+
+
+
+
+ Defines a processor that detects edges within an image using a single two dimensional matrix.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The target area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Defines Gaussian blur by a (Sigma, Radius) pair.
+
+
+
+
+ The default value for .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The 'sigma' value representing the weight of the blur.
+
+
+
+ Initializes a new instance of the class.
+
+
+ The 'radius' value representing the size of the area to sample.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The 'sigma' value representing the weight of the blur.
+
+
+ The 'radius' value representing the size of the area to sample.
+ This should be at least twice the sigma value.
+
+
+
+
+ Gets the sigma value representing the weight of the blur
+
+
+
+
+ Gets the radius defining the size of the area to sample.
+
+
+
+
+
+
+
+ Applies Gaussian blur processing to an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the 1D convolution kernel.
+
+
+
+
+
+
+
+ Defines Gaussian sharpening by a (Sigma, Radius) pair.
+
+
+
+
+ The default value for .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The 'sigma' value representing the weight of the blur.
+
+
+
+ Initializes a new instance of the class.
+
+
+ The 'radius' value representing the size of the area to sample.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The 'sigma' value representing the weight of the blur.
+
+
+ The 'radius' value representing the size of the area to sample.
+ This should be at least twice the sigma value.
+
+
+
+
+ Gets the sigma value representing the weight of the blur
+
+
+
+
+ Gets the radius defining the size of the area to sample.
+
+
+
+
+
+
+
+ Applies Gaussian sharpening processing to the image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the 1D convolution kernel.
+
+
+
+
+
+
+
+ Represents an edge detection convolution kernel consisting of two 1D gradient operators.
+
+
+
+
+ An edge detection kernel containing two Kayyali operators.
+
+
+
+
+ An edge detection kernel containing two Prewitt operators.
+ .
+
+
+
+
+ An edge detection kernel containing two Roberts-Cross operators.
+ .
+
+
+
+
+ An edge detection kernel containing two Scharr operators.
+
+
+
+
+ An edge detection kernel containing two Sobel operators.
+ .
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The horizontal gradient operator.
+ The vertical gradient operator.
+
+
+
+ Gets the horizontal gradient operator.
+
+
+
+
+ Gets the vertical gradient operator.
+
+
+
+
+ Checks whether two structures are equal.
+
+ The left hand operand.
+ The right hand operand.
+
+ True if the parameter is equal to the parameter;
+ otherwise, false.
+
+
+
+
+ Checks whether two structures are equal.
+
+ The left hand operand.
+ The right hand operand.
+
+ True if the parameter is not equal to the parameter;
+ otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an edge detection convolution kernel consisting of eight gradient operators.
+
+
+
+
+ An edge detection kenel comprised of Kirsch gradient operators.
+ .
+
+
+
+
+ An edge detection kenel comprised of Robinson gradient operators.
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The north gradient operator.
+ The north-west gradient operator.
+ The west gradient operator.
+ The south-west gradient operator.
+ The south gradient operator.
+ The south-east gradient operator.
+ The east gradient operator.
+ The north-east gradient operator.
+
+
+
+ Gets the North gradient operator.
+
+
+
+
+ Gets the NorthWest gradient operator.
+
+
+
+
+ Gets the West gradient operator.
+
+
+
+
+ Gets the SouthWest gradient operator.
+
+
+
+
+ Gets the South gradient operator.
+
+
+
+
+ Gets the SouthEast gradient operator.
+
+
+
+
+ Gets the East gradient operator.
+
+
+
+
+ Gets the NorthEast gradient operator.
+
+
+
+
+ Checks whether two structures are equal.
+
+ The left hand operand.
+ The right hand operand.
+
+ True if the parameter is equal to the parameter;
+ otherwise, false.
+
+
+
+
+ Checks whether two structures are equal.
+
+ The left hand operand.
+ The right hand operand.
+
+ True if the parameter is not equal to the parameter;
+ otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents an edge detection convolution kernel consisting of a single 2D gradient operator.
+
+
+
+
+ An edge detection kernel containing a 3x3 Laplacian operator.
+
+
+
+
+
+ An edge detection kernel containing a 5x5 Laplacian operator.
+
+
+
+
+
+ An edge detection kernel containing a Laplacian of Gaussian operator.
+ .
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The 2D gradient operator.
+
+
+
+ Gets the 2D gradient operator.
+
+
+
+
+ Checks whether two structures are equal.
+
+ The left hand operand.
+ The right hand operand.
+
+ True if the parameter is equal to the parameter;
+ otherwise, false.
+
+
+
+
+ Checks whether two structures are equal.
+
+ The left hand operand.
+ The right hand operand.
+
+ True if the parameter is not equal to the parameter;
+ otherwise, false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Contains the kernels used for Kayyali edge detection
+
+
+
+
+ Gets the horizontal gradient operator.
+
+
+
+
+ Gets the vertical gradient operator.
+
+
+
+
+ Contains the eight matrices used for Kirsch edge detection.
+ .
+
+
+
+
+ Gets the North gradient operator
+
+
+
+
+ Gets the NorthWest gradient operator
+
+
+
+
+ Gets the West gradient operator
+
+
+
+
+ Gets the SouthWest gradient operator
+
+
+
+
+ Gets the South gradient operator
+
+
+
+
+ Gets the SouthEast gradient operator
+
+
+
+
+ Gets the East gradient operator
+
+
+
+
+ Gets the NorthEast gradient operator
+
+
+
+
+ A factory for creating Laplacian kernel matrices.
+
+
+
+
+ Creates a Laplacian matrix, 2nd derivative, of an arbitrary length.
+
+
+ The length of the matrix sides
+ The
+
+
+
+ Contains Laplacian kernels of different sizes.
+
+ .
+
+
+
+
+ Gets the 3x3 Laplacian kernel
+
+
+
+
+ Gets the 5x5 Laplacian kernel
+
+
+
+
+ Gets the Laplacian of Gaussian kernel.
+
+
+
+
+ Contains the kernels used for Prewitt edge detection
+
+
+
+
+ Gets the horizontal gradient operator.
+
+
+
+
+ Gets the vertical gradient operator.
+
+
+
+
+ Contains the kernels used for RobertsCross edge detection
+
+
+
+
+ Gets the horizontal gradient operator.
+
+
+
+
+ Gets the vertical gradient operator.
+
+
+
+
+ Contains the kernels used for Robinson edge detection.
+
+
+
+
+
+ Gets the North gradient operator
+
+
+
+
+ Gets the NorthWest gradient operator
+
+
+
+
+ Gets the West gradient operator
+
+
+
+
+ Gets the SouthWest gradient operator
+
+
+
+
+ Gets the South gradient operator
+
+
+
+
+ Gets the SouthEast gradient operator
+
+
+
+
+ Gets the East gradient operator
+
+
+
+
+ Gets the NorthEast gradient operator
+
+
+
+
+ Contains the kernels used for Scharr edge detection
+
+
+
+
+ Gets the horizontal gradient operator.
+
+
+
+
+ Gets the vertical gradient operator.
+
+
+
+
+ Contains the kernels used for Sobel edge detection
+
+
+
+
+ Gets the horizontal gradient operator.
+
+
+
+
+ Gets the vertical gradient operator.
+
+
+
+
+ Provides a map of the convolution kernel sampling offsets.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The memory allocator.
+
+
+
+ Builds a map of the sampling offsets for the kernel clamped by the given bounds.
+
+ The convolution kernel.
+ The source bounds.
+
+
+
+ Builds a map of the sampling offsets for the kernel clamped by the given bounds.
+
+ The height (number of rows) of the convolution kernel to use.
+ The width (number of columns) of the convolution kernel to use.
+ The source bounds.
+
+
+
+
+
+
+ A that contains data about a set of bokeh blur kernels
+
+
+
+
+ The kernel parameters to use for the current set of complex kernels
+
+
+
+
+ The kernel components to apply the bokeh blur effect
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The kernel parameters
+ The complex kernel components
+
+
+
+ Provides parameters to be used in the .
+
+
+
+
+ The mapping of initialized complex kernels and parameters, to speed up the initialization of new instances
+
+
+
+
+ Gets the kernel scales to adjust the component values in each kernel
+
+
+
+
+ Gets the available bokeh blur kernel parameters
+
+
+
+
+ Gets the bokeh blur kernel data for the specified parameters.
+
+ The value representing the size of the area to sample.
+ The size of each kernel to compute.
+ The number of components to use to approximate the original 2D bokeh blur convolution kernel.
+ A instance with the kernel data for the current parameters.
+
+
+
+ Gets the kernel parameters and scaling factor for the current count value in the current instance
+
+
+
+
+ Creates the collection of complex 1D kernels with the specified parameters
+
+ The parameters to use to normalize the kernels
+ The value representing the size of the area to sample.
+ The size of each kernel to compute.
+ The scale factor for each kernel.
+
+
+
+ Creates a complex 1D kernel with the specified parameters
+
+ The value representing the size of the area to sample.
+ The size of each kernel to compute.
+ The scale factor for each kernel.
+ The exponential parameter for each complex component
+ The angle component for each complex component
+
+
+
+ Normalizes the kernels with respect to A * real + B * imaginary
+
+ The current convolution kernels to normalize
+ The parameters to use to normalize the kernels
+
+
+
+ A that contains parameters to apply a bokeh blur filter
+
+
+
+
+ The size of the convolution kernel to use when applying the bokeh blur
+
+
+
+
+ The number of complex components to use to approximate the bokeh kernel
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The size of the kernel
+ The number of kernel components
+
+
+
+
+
+
+
+
+
+
+
+
+ A stack only, readonly, kernel matrix that can be indexed without
+ bounds checks when compiled in release mode.
+
+
+
+
+ An error diffusion dithering implementation.
+
+
+ An error diffusion dithering implementation.
+
+
+
+
+
+ Applies error diffusion based dithering using the Atkinson image dithering algorithm.
+
+
+
+
+ Applies error diffusion based dithering using the Burks image dithering algorithm.
+
+
+
+
+ Applies error diffusion based dithering using the Floyd–Steinberg image dithering algorithm.
+
+
+
+
+ Applies error diffusion based dithering using the Jarvis, Judice, Ninke image dithering algorithm.
+
+
+
+
+ Applies error diffusion based dithering using the Sierra2 image dithering algorithm.
+
+
+
+
+ Applies error diffusion based dithering using the Sierra3 image dithering algorithm.
+
+
+
+
+ Applies error diffusion based dithering using the Sierra Lite image dithering algorithm.
+
+
+
+
+ Applies error diffusion based dithering using the Stevenson-Arce image dithering algorithm.
+
+
+
+
+ Applies error diffusion based dithering using the Stucki image dithering algorithm.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The diffusion matrix.
+ The starting offset within the matrix.
+
+
+
+ Compares the two instances to determine whether they are equal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are unequal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are equal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are unequal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are equal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are unequal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines the contract for types that apply dithering to images.
+
+
+
+
+ Transforms the quantized image frame applying a dither matrix.
+ This method should be treated as destructive, altering the input pixels.
+
+ The type of frame quantizer.
+ The pixel format.
+ The frame quantizer.
+ The source image.
+ The destination quantized frame.
+ The region of interest bounds.
+
+
+
+ Transforms the image frame applying a dither matrix.
+ This method should be treated as destructive, altering the input pixels.
+
+ The type of palette dithering processor.
+ The pixel format.
+ The palette dithering processor.
+ The source image.
+ The region of interest bounds.
+
+
+
+ Implements an algorithm to alter the pixels of an image via palette dithering.
+
+ The pixel format.
+
+
+
+ Gets the configuration instance to use when performing operations.
+
+
+
+
+ Gets the dithering palette.
+
+
+
+
+ Gets the dithering scale used to adjust the amount of dither. Range 0..1.
+
+
+
+
+ Returns the color from the dithering palette corresponding to the given color.
+
+ The color to match.
+ The match.
+
+
+
+ An ordered dithering matrix with equal sides of arbitrary length
+
+
+ An ordered dithering matrix with equal sides of arbitrary length
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The length of the matrix sides
+
+
+
+ Compares the two instances to determine whether they are equal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are unequal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are equal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are unequal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are equal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+ Compares the two instances to determine whether they are unequal.
+
+ The first source instance.
+ The second source instance.
+ The .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Applies order dithering using the 2x2 Bayer dithering matrix.
+
+
+
+
+ Applies order dithering using the 4x4 Bayer dithering matrix.
+
+
+
+
+ Applies order dithering using the 8x8 Bayer dithering matrix.
+
+
+
+
+ Applies order dithering using the 16x16 Bayer dithering matrix.
+
+
+
+
+ Applies order dithering using the 3x3 ordered dithering matrix.
+
+
+
+
+ A factory for creating ordered dither matrices.
+
+
+
+
+ Creates an ordered dithering matrix with equal sides of arbitrary length.
+
+
+ The length of the matrix sides
+ The
+
+
+
+ Allows the consumption a palette to dither an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The ordered ditherer.
+
+
+
+ Initializes a new instance of the class.
+
+ The ordered ditherer.
+ The dithering scale used to adjust the amount of dither.
+
+
+
+ Initializes a new instance of the class.
+
+ The dithering algorithm.
+ The palette to select substitute colors from.
+
+
+
+ Initializes a new instance of the class.
+
+ The dithering algorithm.
+ The dithering scale used to adjust the amount of dither.
+ The palette to select substitute colors from.
+
+
+
+ Gets the dithering algorithm to apply to the output image.
+
+
+
+
+ Gets the dithering scale used to adjust the amount of dither. Range 0..1.
+
+
+
+
+ Gets the palette to select substitute colors from.
+
+
+
+
+
+
+
+ Allows the consumption a palette to dither an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Used to allow inlining of calls to
+ .
+
+ Internal for AOT
+
+
+
+ Combines two images together by blending the pixels.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The image to blend.
+ The location to draw the blended image.
+ The blending mode to use when drawing the image.
+ The Alpha blending mode to use when drawing the image.
+ The opacity of the image to blend.
+
+
+
+ Gets the image to blend.
+
+
+
+
+ Gets the location to draw the blended image.
+
+
+
+
+ Gets the blending mode to use when drawing the image.
+
+
+
+
+ Gets the Alpha blending mode to use when drawing the image.
+
+
+
+
+ Gets the opacity of the image to blend.
+
+
+
+
+
+
+
+ Combines two images together by blending the pixels.
+
+ The pixel format of destination image.
+ The pixel format of source image.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The foreground to blend with the currently processing image.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+ The location to draw the blended image.
+ The blending mode to use when drawing the image.
+ The Alpha blending mode to use when drawing the image.
+ The opacity of the image to blend. Must be between 0 and 1.
+
+
+
+ Gets the image to blend
+
+
+
+
+ Gets the opacity of the image to blend
+
+
+
+
+ Gets the pixel blender
+
+
+
+
+ Gets the location to draw the blended image
+
+
+
+
+
+
+
+ A implementing the draw logic for .
+
+
+
+
+
+
+
+ An used by the row delegates for a given instance
+
+
+
+
+ Applies the current pixel row delegate to a target row of preprocessed pixels.
+
+ The target row of pixels to process.
+ The initial horizontal and vertical offset for the input pixels to process.
+
+
+
+ Defines an oil painting effect.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The number of intensity levels. Higher values result in a broader range of color intensities forming part of the result image.
+
+
+ The number of neighboring pixels used in calculating each individual pixel value.
+
+
+
+
+ Gets the number of intensity levels.
+
+
+
+
+ Gets the brush size.
+
+
+
+
+
+
+
+ Applies oil painting effect processing to the image.
+
+ Adapted from by Dewald Esterhuizen.
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ A implementing the convolution logic for .
+
+
+
+
+
+
+
+ Defines a pixelation effect of a given size.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The size of the pixels. Must be greater than 0.
+
+ is less than 0 or equal to 0.
+
+
+
+
+ Gets or the pixel size.
+
+
+
+
+
+
+
+ Applies a pixelation effect processing to the image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The .
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ Applies a user defined row processing delegate to the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The user defined, row processing delegate.
+ The to apply during the pixel conversions.
+
+
+
+ Gets the user defined row processing delegate to the image.
+
+
+
+
+ Gets the to apply during the pixel conversions.
+
+
+
+
+
+
+
+ A implementing the row processing logic for .
+
+
+
+
+
+
+
+ The base class for all processors that accept a user defined row processing delegate.
+
+ The pixel format.
+ The row processor type.
+
+
+
+ The to apply during the pixel conversions.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The row processor to use to process each pixel row
+ The configuration which allows altering default behaviour or extending the library.
+ The to apply during the pixel conversions.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ A implementing the convolution logic for .
+
+
+
+
+
+
+
+ Applies a user defined, position aware, row processing delegate to the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The user defined, position aware, row processing delegate.
+ The to apply during the pixel conversions.
+
+
+
+ Gets the user defined, position aware, row processing delegate.
+
+
+
+
+ Gets the to apply during the pixel conversions.
+
+
+
+
+
+
+
+ A implementing the row processing logic for .
+
+
+
+
+
+
+
+ Converts the colors of the image recreating Achromatomaly (Color desensitivity) color blindness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Converts the colors of the image recreating Achromatopsia (Monochrome) color blindness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Applies a black and white filter matrix to the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Applies a brightness filter matrix using the given amount.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing brighter results.
+
+ The proportion of the conversion. Must be greater than or equal to 0.
+
+
+
+ Gets the proportion of the conversion
+
+
+
+
+ Applies a contrast filter matrix using the given amount.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A value of 0 will create an image that is completely gray. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing results with more contrast.
+
+ The proportion of the conversion. Must be greater than or equal to 0.
+
+
+
+ Gets the proportion of the conversion.
+
+
+
+
+ Converts the colors of the image recreating Deuteranomaly (Green-Weak) color blindness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Converts the colors of the image recreating Deuteranopia (Green-Blind) color blindness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Defines a free-form color filter by a .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The matrix used to apply the image filter
+
+
+
+ Gets the used to apply the image filter.
+
+
+
+
+
+
+
+ Provides methods that accept a matrix to apply free-form filters to images.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The .
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ A implementing the convolution logic for .
+
+
+
+
+
+
+
+ Applies a grayscale filter matrix using the given amount and the formula as specified by ITU-R Recommendation BT.601
+
+
+
+
+ Initializes a new instance of the class.
+
+ The proportion of the conversion. Must be between 0 and 1.
+
+
+
+ Gets the proportion of the conversion
+
+
+
+
+ Applies a grayscale filter matrix using the given amount and the formula as specified by ITU-R Recommendation BT.709
+
+
+
+
+ Initializes a new instance of the class.
+
+ The proportion of the conversion. Must be between 0 and 1.
+
+
+
+ Gets the proportion of the conversion.
+
+
+
+
+ Applies a hue filter matrix using the given angle of rotation in degrees
+
+
+
+
+ Initializes a new instance of the class.
+
+ The angle of rotation in degrees
+
+
+
+ Gets the angle of rotation in degrees
+
+
+
+
+ Applies a filter matrix that inverts the colors of an image
+
+
+
+
+ Initializes a new instance of the class.
+
+ The proportion of the conversion. Must be between 0 and 1.
+
+
+
+ Gets the proportion of the conversion
+
+
+
+
+ Applies a filter matrix recreating an old Kodachrome camera effect matrix to the image
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Applies a lightness filter matrix using the given amount.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A value of 0 will create an image that is completely black. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of an amount over 1 are allowed, providing lighter results.
+
+ The proportion of the conversion. Must be greater than or equal to 0.
+
+
+
+ Gets the proportion of the conversion
+
+
+
+
+ Converts the colors of the image recreating an old Lomograph effect.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Graphics options to use within the processor.
+
+
+
+ Gets the options effecting blending and composition
+
+
+
+
+
+
+
+ Converts the colors of the image recreating an old Lomograph effect.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ Applies an opacity filter matrix using the given amount.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The proportion of the conversion. Must be between 0 and 1.
+
+
+
+ Gets the proportion of the conversion.
+
+
+
+
+
+
+
+ Converts the colors of the image recreating an old Polaroid effect.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Graphics options to use within the processor.
+
+
+
+ Gets the options effecting blending and composition
+
+
+
+
+
+
+
+ Converts the colors of the image recreating an old Polaroid effect.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ Converts the colors of the image recreating Protanomaly (Red-Weak) color blindness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Converts the colors of the image recreating Protanopia (Red-Blind) color blindness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Applies a saturation filter matrix using the given amount.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ A value of 0 is completely un-saturated. A value of 1 leaves the input unchanged.
+ Other values are linear multipliers on the effect. Values of amount over 1 are allowed, providing super-saturated results
+
+ The proportion of the conversion. Must be greater than or equal to 0.
+
+
+
+ Gets the proportion of the conversion
+
+
+
+
+ Applies a sepia filter matrix using the given amount.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The proportion of the conversion. Must be between 0 and 1.
+
+
+
+ Gets the proportion of the conversion
+
+
+
+
+ Converts the colors of the image recreating Tritanomaly (Blue-Weak) color blindness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Converts the colors of the image recreating Tritanopia (Blue-Blind) color blindness.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Defines an algorithm to alter the pixels of a cloned image.
+
+
+
+
+ Creates a pixel specific that is capable of executing
+ the processing algorithm on an .
+
+ The pixel type.
+ The configuration which allows altering default behaviour or extending the library.
+ The source image. Cannot be null.
+
+ The structure that specifies the portion of the image object to draw.
+
+ The
+
+
+
+ Implements an algorithm to alter the pixels of a cloned image.
+
+ The pixel format.
+
+
+
+ Clones the specified and executes the process against the clone.
+
+ The .
+
+
+
+ Defines an algorithm to alter the pixels of an image.
+ Non-generic implementations are responsible for:
+ 1. Encapsulating the parameters of the algorithm.
+ 2. Creating the generic instance to execute the algorithm.
+
+
+
+
+ Creates a pixel specific that is capable of executing
+ the processing algorithm on an .
+
+ The pixel type.
+ The configuration which allows altering default behaviour or extending the library.
+ The source image. Cannot be null.
+
+ The structure that specifies the portion of the image object to draw.
+
+ The
+
+
+
+ Implements an algorithm to alter the pixels of an image.
+
+ The pixel format.
+
+
+
+ Executes the process against the specified .
+
+
+
+
+ Executes the processor against the given source image and rectangle bounds.
+
+ The processor.
+ The configuration which allows altering default behaviour or extending the library.
+ The source image.
+ The source bounds.
+
+
+
+ The base class for all pixel specific image processors.
+ Allows the application of processing algorithms to the image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets The source for the current processor instance.
+
+
+
+
+ Gets The source area to process for the current processor instance.
+
+
+
+
+ Gets the instance to use when performing operations.
+
+
+
+
+
+
+
+ Applies the processor to a single image frame.
+
+ the source image.
+
+
+
+
+
+
+ This method is called before the process is applied to prepare the processor.
+
+
+
+
+ This method is called before the process is applied to prepare the processor.
+
+ The source image. Cannot be null.
+
+
+
+ Applies the process to the specified portion of the specified at the specified location
+ and with the specified size.
+
+ The source image. Cannot be null.
+
+
+
+ This method is called after the process is applied to prepare the processor.
+
+ The source image. Cannot be null.
+
+
+
+ This method is called after the process is applied to prepare the processor.
+
+
+
+
+ Disposes the object and frees resources for the Garbage Collector.
+
+ Whether to dispose managed and unmanaged objects.
+
+
+
+ Applies an adaptive histogram equalization to the image. The image is split up in tiles. For each tile a cumulative distribution function (cdf) is calculated.
+ To calculate the final equalized pixel value, the cdf value of four adjacent tiles will be interpolated.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+ Indicating whether to clip the histogram bins at a specific value.
+ The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+ The number of tiles the image is split into (horizontal and vertically). Minimum value is 2. Maximum value is 100.
+
+
+
+ Gets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization.
+
+
+
+
+
+
+
+ Applies an adaptive histogram equalization to the image. The image is split up in tiles. For each tile a cumulative distribution function (cdf) is calculated.
+ To calculate the final equalized pixel value, the cdf value of four adjacent tiles will be interpolated.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+ Indicating whether to clip the histogram bins at a specific value.
+ The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+ The number of tiles the image is split into (horizontal and vertically). Minimum value is 2. Maximum value is 100.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization.
+
+
+
+
+
+
+
+ Processes the part of a corner tile which was previously left out. It consists of 1 / 4 of a tile and does not need interpolation.
+
+ The source image.
+ The lookup table to remap the grey values.
+ The x-position in the CDF lookup map.
+ The y-position in the CDF lookup map.
+ X start position.
+ X end position.
+ Y start position.
+ Y end position.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+
+
+
+
+ Processes a border column of the image which is half the size of the tile width.
+
+ The source image.
+ The pre-computed lookup tables to remap the grey values for each tiles.
+ The X index of the lookup table to use.
+ The source image height.
+ The number of vertical tiles.
+ The height of a tile.
+ X start position in the image.
+ X end position of the image.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+
+
+
+
+ Processes a border row of the image which is half of the size of the tile height.
+
+ The source image.
+ The pre-computed lookup tables to remap the grey values for each tiles.
+ The Y index of the lookup table to use.
+ The source image width.
+ The number of horizontal tiles.
+ The width of a tile.
+ Y start position in the image.
+ Y end position of the image.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+
+
+
+
+ Bilinear interpolation between four adjacent tiles.
+
+ The pixel to remap the grey value from.
+ The pre-computed lookup tables to remap the grey values for each tiles.
+ The number of tiles in the x-direction.
+ The number of tiles in the y-direction.
+ X position inside the tile.
+ Y position inside the tile.
+ X index of the top left lookup table to use.
+ Y index of the top left lookup table to use.
+ Width of one tile in pixels.
+ Height of one tile in pixels.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+
+ A re-mapped grey value.
+
+
+
+ Linear interpolation between two tiles.
+
+ The pixel to remap the grey value from.
+ The CDF lookup map.
+ X position inside the first tile.
+ Y position inside the first tile.
+ X position inside the second tile.
+ Y position inside the second tile.
+ Position inside the tile.
+ Width of the tile.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+
+ A re-mapped grey value.
+
+
+
+ Bilinear interpolation between four tiles.
+
+ The interpolation value in x direction in the range of [0, 1].
+ The interpolation value in y direction in the range of [0, 1].
+ Luminance from top left tile.
+ Luminance from right top tile.
+ Luminance from left bottom tile.
+ Luminance from right bottom tile.
+ Interpolated Luminance.
+
+
+
+ Linear interpolation between two grey values.
+
+ The left value.
+ The right value.
+ The interpolation value between the two values in the range of [0, 1].
+ The interpolated value.
+
+
+
+
+
+
+ Contains the results of the cumulative distribution function for all tiles.
+
+
+
+
+ Used for storing the minimum value for each CDF entry.
+
+
+
+
+ Used for storing the LUT for each CDF entry.
+
+
+
+
+ Remaps the grey value with the cdf.
+
+ The tiles x-position.
+ The tiles y-position.
+ The original luminance.
+ The remapped luminance.
+
+
+
+
+
+
+ Applies an adaptive histogram equalization to the image using an sliding window approach.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+ Indicating whether to clip the histogram bins at a specific value.
+ The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+ The number of tiles the image is split into (horizontal and vertically). Minimum value is 2. Maximum value is 100.
+
+
+
+ Gets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization.
+
+
+
+
+
+
+
+ Applies an adaptive histogram equalization to the image using an sliding window approach.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+ Indicating whether to clip the histogram bins at a specific value.
+ The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+ The number of tiles the image is split into (horizontal and vertically). Minimum value is 2. Maximum value is 100.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization.
+
+
+
+
+
+
+
+ Get the a pixel row at a given position with a length of the tile width. Mirrors pixels which exceeds the edges.
+
+ The source image.
+ Pre-allocated pixel row span of the size of a the tile width.
+ The x position.
+ The y position.
+ The width in pixels of a tile.
+ The configuration.
+
+
+
+ Get the a pixel row at a given position with a length of the tile width.
+
+ The source image.
+ Pre-allocated pixel row span of the size of a the tile width.
+ The x position.
+ The y position.
+ The width in pixels of a tile.
+ The configuration.
+
+
+
+ Adds a column of grey values to the histogram.
+
+ The reference to the span of grey values to add.
+ The reference to the histogram span.
+ The number of different luminance levels.
+ The grey values span length.
+
+
+
+ Removes a column of grey values from the histogram.
+
+ The reference to the span of grey values to remove.
+ The reference to the histogram span.
+ The number of different luminance levels.
+ The grey values span length.
+
+
+
+ Applies the sliding window equalization to one column of the image. The window is moved from top to bottom.
+ Moving the window one pixel down requires to remove one row from the top of the window from the histogram and
+ adding a new row at the bottom.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The configuration.
+ The histogram processor.
+ The source image.
+ The memory allocator.
+ The target pixels.
+ about the sliding window dimensions.
+ The y start position.
+ The y end position.
+ if set to true the borders of the image will not be checked.
+
+
+
+ Defines a global histogram equalization applicable to an .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of luminance levels.
+ A value indicating whether to clip the histogram bins at a specific value.
+ The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+
+
+
+
+
+
+ Applies a global histogram equalization to the image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+
+ Indicating whether to clip the histogram bins at a specific value.
+ The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ A implementing the grayscale levels logic for .
+
+
+
+
+
+
+
+ A implementing the cdf application levels logic for .
+
+
+
+
+
+
+
+ Enumerates the different types of defined histogram equalization methods.
+
+
+
+
+ A global histogram equalization.
+
+
+
+
+ Adaptive histogram equalization using a tile interpolation approach.
+
+
+
+
+ Adaptive histogram equalization using sliding window. Slower then the tile interpolation mode, but can yield to better results.
+
+
+
+
+ Data container providing the different options for the histogram equalization.
+
+
+
+
+ Gets or sets the histogram equalization method to use. Defaults to global histogram equalization.
+
+
+
+
+ Gets or sets the number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+ Defaults to 256.
+
+
+
+
+ Gets or sets a value indicating whether to clip the histogram bins at a specific value.
+ It is recommended to use clipping when the AdaptiveTileInterpolation method is used, to suppress artifacts which can occur on the borders of the tiles.
+ Defaults to false.
+
+
+
+
+ Gets or sets the histogram clip limit. Adaptive histogram equalization may cause noise to be amplified in near constant
+ regions. To reduce this problem, histogram bins which exceed a given limit will be capped at this value. The exceeding values
+ will be redistributed equally to all other bins. The clipLimit depends on the size of the tiles the image is split into
+ and therefore the image size itself.
+ Defaults to 350.
+
+ For more information, see also: https://en.wikipedia.org/wiki/Adaptive_histogram_equalization#Contrast_Limited_AHE
+
+
+
+ Gets or sets the number of tiles the image is split into (horizontal and vertically) for the adaptive histogram equalization.
+ Defaults to 8.
+
+
+
+
+ Defines a processor that normalizes the histogram of an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+ Indicates, if histogram bins should be clipped.
+ The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+
+
+
+ Gets the number of luminance levels.
+
+
+
+
+ Gets a value indicating whether to clip the histogram bins at a specific value.
+
+
+
+
+ Gets the histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+
+
+
+
+
+
+
+ Creates the that implements the algorithm
+ defined by the given .
+
+ The .
+ The .
+
+
+
+ Defines a processor that normalizes the histogram of an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The number of different luminance levels. Typical values are 256 for 8-bit grayscale images
+ or 65536 for 16-bit grayscale images.
+ Indicates, if histogram bins should be clipped.
+ The histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+ Gets the number of luminance levels.
+
+
+
+
+ Gets a value indicating whether to clip the histogram bins at a specific value.
+
+
+
+
+ Gets the histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+
+
+
+
+ Calculates the cumulative distribution function.
+
+ The reference to the array holding the cdf.
+ The reference to the histogram of the input image.
+ Index of the maximum of the histogram.
+ The first none zero value of the cdf.
+
+
+
+ AHE tends to over amplify the contrast in near-constant regions of the image, since the histogram in such regions is highly concentrated.
+ Clipping the histogram is meant to reduce this effect, by cutting of histogram bin's which exceed a certain amount and redistribute
+ the values over the clip limit to all other bins equally.
+
+ The histogram to apply the clipping.
+ Histogram clip limit. Histogram bins which exceed this limit, will be capped at this value.
+
+
+
+ Convert the pixel values to grayscale using ITU-R Recommendation BT.709.
+
+ The pixel to get the luminance from
+ The number of luminance levels (256 for 8 bit, 65536 for 16 bit grayscale images)
+
+
+
+ Defines a processing operation to replace the background color of an .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The options defining blending algorithm and amount.
+ The to set the background color to.
+
+
+
+ Gets the Graphics options to alter how processor is applied.
+
+
+
+
+ Gets the background color value.
+
+
+
+
+
+
+
+ Sets the background color of the image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ Defines a radial glow effect applicable to an .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The options effecting blending and composition.
+ The color or the glow.
+
+
+
+ Initializes a new instance of the class.
+
+ The options effecting blending and composition.
+ The color or the glow.
+ The radius of the glow.
+
+
+
+ Gets the options effecting blending and composition.
+
+
+
+
+ Gets the glow color to apply.
+
+
+
+
+ Gets the the radius.
+
+
+
+
+
+
+
+ An that applies a radial glow effect an .
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ Defines a radial vignette effect applicable to an .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The options effecting blending and composition.
+ The color of the vignette.
+
+
+
+ Initializes a new instance of the class.
+
+ The options effecting blending and composition.
+ The color of the vignette.
+ The x-radius.
+ The y-radius.
+
+
+
+ Gets the options effecting blending and composition
+
+
+
+
+ Gets the vignette color to apply.
+
+
+
+
+ Gets the the x-radius.
+
+
+
+
+ Gets the the y-radius.
+
+
+
+
+
+
+
+ An that applies a radial vignette effect to an .
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ A pixel sampling strategy that enumerates a limited amount of rows from different frames,
+ if the total number of pixels is over a threshold.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The maximum number of pixels to process.
+ always scan at least this portion of total pixels within the image.
+
+
+
+ Gets the maximum number of pixels to process. (The threshold.)
+
+
+
+
+ Gets a value indicating: always scan at least this portion of total pixels within the image.
+ The default is 0.1 (10%).
+
+
+
+
+
+
+
+ Gets the closest color to the supplied color based upon the Euclidean distance.
+
+ The pixel format.
+
+ This class is not threadsafe and should not be accessed in parallel.
+ Doing so will result in non-idempotent results.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration.
+ The color palette to map from.
+
+
+
+ Gets the color palette of this .
+ The palette memory is owned by the palette source that created it.
+
+
+
+
+ Returns the closest color in the palette and the index of that pixel.
+ The palette contents must match the one used in the constructor.
+
+ The color to match.
+ The matched color.
+ The index.
+
+
+
+ Clears the map, resetting it to use the given palette.
+
+ The color palette to map from.
+
+
+
+ Returns the Euclidean distance squared between two specified points.
+
+ The first point.
+ The second point.
+ The distance squared.
+
+
+
+ A cache for storing color distance matching results.
+
+
+
+ The granularity of the cache has been determined based upon the current
+ suite of test images and provides the lowest possible memory usage while
+ providing enough match accuracy.
+ Entry count is currently limited to 1185921 entries (2371842 bytes ~2.26MB).
+
+
+
+
+
+ Clears the cache resetting each entry to empty.
+
+
+
+
+ A pixel sampling strategy that enumerates all pixels.
+
+
+
+
+
+
+
+ Provides an abstraction to enumerate pixel regions within a multi-framed .
+
+
+
+
+ Enumerates pixel regions within the image as .
+
+ The image.
+ The pixel type.
+ An enumeration of pixel regions.
+
+
+
+ Provides methods for allowing quantization of images pixels with configurable dithering.
+
+
+
+
+ Gets the quantizer options defining quantization rules.
+
+
+
+
+ Creates the generic frame quantizer.
+
+ The to configure internal operations.
+ The pixel format.
+ The .
+
+
+
+ Creates the generic frame quantizer.
+
+ The pixel format.
+ The to configure internal operations.
+ The options to create the quantizer with.
+ The .
+
+
+
+ Provides methods to allow the execution of the quantization process on an image frame.
+
+ The pixel format.
+
+
+
+ Gets the configuration.
+
+
+
+
+ Gets the quantizer options defining quantization rules.
+
+
+
+
+ Gets the quantized color palette.
+
+
+ The palette has not been built via .
+
+
+
+
+ Adds colors to the quantized palette from the given pixel source.
+
+ The of source pixels to register.
+
+
+
+ Quantizes an image frame and return the resulting output pixels.
+
+ The source image frame to quantize.
+ The bounds within the frame to quantize.
+
+ A representing a quantized version of the source frame pixels.
+
+
+ Only executes the second (quantization) step. The palette has to be built by calling .
+ To run both steps, use .
+
+
+
+
+ Returns the index and color from the quantized palette corresponding to the given color.
+
+ The color to match.
+ The matched color.
+ The index.
+
+
+
+ Allows the quantization of images pixels using Octrees.
+
+
+
+
+
+ Initializes a new instance of the class
+ using the default .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The quantizer options defining quantization rules.
+
+
+
+
+
+
+
+
+
+
+
+
+ Encapsulates methods to calculate the color palette if an image using an Octree pattern.
+
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the struct.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The quantizer options defining quantization rules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Class which does the actual quantization.
+
+
+
+
+ The root of the Octree
+
+
+
+
+ Maximum number of significant bits in the image
+
+
+
+
+ Store the last node quantized
+
+
+
+
+ Cache the previous color quantized
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The maximum number of significant bits in the image
+
+
+
+
+ Gets or sets the number of leaves in the tree
+
+
+
+
+ Gets the array of reducible nodes
+
+
+
+
+ Add a given color value to the Octree
+
+ The color to add.
+
+
+
+ Convert the nodes in the Octree to a palette with a maximum of colorCount colors
+
+ The palette to fill.
+ The maximum number of colors
+ The palette index, used to calculate the final size of the palette.
+
+
+
+ Get the palette index for the passed color
+
+ The color to match.
+
+ The index.
+
+
+
+
+ Keep track of the previous node that was quantized
+
+
+ The node last quantized
+
+
+
+
+ Reduce the depth of the tree
+
+
+
+
+ Class which encapsulates each node in the tree
+
+
+
+
+ Pointers to any child nodes
+
+
+
+
+ Flag indicating that this is a leaf node
+
+
+
+
+ Number of pixels in this node
+
+
+
+
+ Red component
+
+
+
+
+ Green Component
+
+
+
+
+ Blue component
+
+
+
+
+ The index of this node in the palette
+
+
+
+
+ Initializes a new instance of the class.
+
+ The level in the tree = 0 - 7.
+ The number of significant color bits in the image.
+ The tree to which this node belongs.
+
+
+
+ Gets the next reducible node
+
+
+
+
+ Add a color into the tree
+
+ The color to add.
+ The number of significant color bits.
+ The level in the tree.
+ The tree to which this node belongs.
+
+
+
+ Reduce this node by removing all of its children
+
+ The number of leaves removed
+
+
+
+ Traverse the tree, building up the color palette
+
+ The palette
+ The current palette index
+
+
+
+ Return the palette index for the passed color
+
+ The pixel data.
+ The level.
+
+ The representing the index of the pixel in the palette.
+
+
+
+
+ Gets the color index at the given level.
+
+ The color.
+ The node level.
+ The index.
+
+
+
+ Increment the color count and add to the color information
+
+ The pixel to add.
+
+
+
+ Allows the quantization of images pixels using color palettes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette.
+
+
+
+ Initializes a new instance of the class.
+
+ The color palette.
+ The quantizer options defining quantization rules.
+
+
+
+
+
+
+
+
+
+
+
+
+ Encapsulates methods to create a quantized image based upon the given palette.
+
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the struct.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The quantizer options defining quantization rules.
+ The palette to use.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines quantization processing for images to reduce the number of colors used in the image palette.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The quantizer used to reduce the color palette.
+
+
+
+ Gets the quantizer.
+
+
+
+
+
+
+
+ Enables the quantization of images to reduce the number of colors used in the image palette.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The quantizer used to reduce the color palette.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ Contains color quantization specific constants.
+
+
+
+
+ The minimum number of colors to use when quantizing an image.
+
+
+
+
+ The maximum number of colors to use when quantizing an image.
+
+
+
+
+ The minumim dithering scale used to adjust the amount of dither.
+
+
+
+
+ The max dithering scale used to adjust the amount of dither.
+
+
+
+
+ Gets the default dithering algorithm to use.
+
+
+
+
+ Defines options for quantization.
+
+
+
+
+ Gets or sets the algorithm to apply to the output image.
+ Defaults to ; set to for no dithering.
+
+
+
+
+ Gets or sets the dithering scale used to adjust the amount of dither. Range 0..1.
+ Defaults to .
+
+
+
+
+ Gets or sets the maximum number of colors to hold in the color palette. Range 0..256.
+ Defaults to .
+
+
+
+
+ Contains utility methods for instances.
+
+
+
+
+ Helper method for throwing an exception when a frame quantizer palette has
+ been requested but not built yet.
+
+ The pixel format.
+ The frame quantizer palette.
+
+ The palette has not been built via
+
+
+
+
+ Execute both steps of the quantization.
+
+ The pixel specific quantizer.
+ The source image frame to quantize.
+ The bounds within the frame to quantize.
+ The pixel type.
+
+ A representing a quantized version of the source frame pixels.
+
+
+
+
+ Quantizes an image frame and return the resulting output pixels.
+
+ The type of frame quantizer.
+ The pixel format.
+ The pixel specific quantizer.
+ The source image frame to quantize.
+ The bounds within the frame to quantize.
+
+ A representing a quantized version of the source frame pixels.
+
+
+
+
+ A palette quantizer consisting of web safe colors as defined in the CSS Color Module Level 4.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The quantizer options defining quantization rules.
+
+
+
+ A palette quantizer consisting of colors as defined in the original second edition of Werner’s Nomenclature of Colours 1821.
+ The hex codes were collected and defined by Nicholas Rougeux
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The quantizer options defining quantization rules.
+
+
+
+ Allows the quantization of images pixels using Xiaolin Wu's Color Quantizer
+
+
+
+
+ Initializes a new instance of the class
+ using the default .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The quantizer options defining quantization rules.
+
+
+
+
+
+
+
+
+
+
+
+
+ An implementation of Wu's color quantizer with alpha channel.
+
+
+
+ Based on C Implementation of Xiaolin Wu's Color Quantizer (v. 2)
+ (see Graphics Gems volume II, pages 126-133)
+ ().
+
+
+ This adaptation is based on the excellent JeremyAnsel.ColorQuant by Jérémy Ansel
+
+
+
+ Algorithm: Greedy orthogonal bipartition of RGB space for variance minimization aided by inclusion-exclusion tricks.
+ For speed no nearest neighbor search is done. Slightly better performance can be expected by more sophisticated
+ but more expensive versions.
+
+
+ The pixel format.
+
+
+
+ The index bits. 6 in original code.
+
+
+
+
+ The index alpha bits. 3 in original code.
+
+
+
+
+ The index count.
+
+
+
+
+ The index alpha count.
+
+
+
+
+ The table length. Now 1185921. originally 2471625.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The quantizer options defining quantization rules.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the index of the given color in the palette.
+
+ The red value.
+ The green value.
+ The blue value.
+ The alpha value.
+ The index.
+
+
+
+ Computes sum over a box of any given statistic.
+
+ The cube.
+ The moment.
+ The result.
+
+
+
+ Computes part of Volume(cube, moment) that doesn't depend on RMax, GMax, BMax, or AMax (depending on direction).
+
+ The cube.
+ The direction.
+ The moment.
+ The result.
+
+
+
+ Computes remainder of Volume(cube, moment), substituting position for RMax, GMax, BMax, or AMax (depending on direction).
+
+ The cube.
+ The direction.
+ The position.
+ The moment.
+ The result.
+
+
+
+ Builds a 3-D color histogram of counts, r/g/b, c^2.
+
+ The source data.
+ The bounds within the source image to quantize.
+
+
+
+ Converts the histogram into moments so that we can rapidly calculate the sums of the above quantities over any desired box.
+
+ The memory allocator used for allocating buffers.
+
+
+
+ Computes the weighted variance of a box cube.
+
+ The cube.
+ The .
+
+
+
+ We want to minimize the sum of the variances of two sub-boxes.
+ The sum(c^2) terms can be ignored since their sum over both sub-boxes
+ is the same (the sum for the whole box) no matter where we split.
+ The remaining terms have a minus sign in the variance formula,
+ so we drop the minus sign and maximize the sum of the two terms.
+
+ The cube.
+ The direction.
+ The first position.
+ The last position.
+ The cutting point.
+ The whole moment.
+ The .
+
+
+
+ Cuts a box.
+
+ The first set.
+ The second set.
+ Returns a value indicating whether the box has been split.
+
+
+
+ Marks a color space tag.
+
+ The cube.
+ A label.
+
+
+
+ Builds the cube.
+
+
+
+
+ Moment of r*P(c).
+
+
+
+
+ Moment of g*P(c).
+
+
+
+
+ Moment of b*P(c).
+
+
+
+
+ Moment of a*P(c).
+
+
+
+
+ Moment of P(c).
+
+
+
+
+ Moment of c^2*P(c).
+
+
+
+
+ Represents a box color cube.
+
+
+
+
+ Gets or sets the min red value, exclusive.
+
+
+
+
+ Gets or sets the max red value, inclusive.
+
+
+
+
+ Gets or sets the min green value, exclusive.
+
+
+
+
+ Gets or sets the max green value, inclusive.
+
+
+
+
+ Gets or sets the min blue value, exclusive.
+
+
+
+
+ Gets or sets the max blue value, inclusive.
+
+
+
+
+ Gets or sets the min alpha value, exclusive.
+
+
+
+
+ Gets or sets the max alpha value, inclusive.
+
+
+
+
+ Gets or sets the volume.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines a crop operation on an image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The target cropped rectangle.
+ The source image size.
+
+
+
+ Gets the width.
+
+
+
+
+
+
+
+ Provides methods to allow the cropping of an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The .
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ A implementing the processor logic for .
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The target processing bounds for the current instance.
+ The source for the current instance.
+ The destination for the current instance.
+
+
+
+
+
+
+ Represents an error that occurs during a transform operation.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with a specified error message.
+
+ The message that describes the error.
+
+
+
+ Initializes a new instance of the class
+ with a specified error message and a reference to the inner exception that is
+ the cause of this exception.
+
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception, or a null reference ( in Visual Basic) if no inner exception is specified.
+
+
+
+ Defines cropping operation that preserves areas of highest entropy.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The threshold to split the image. Must be between 0 and 1.
+
+ is less than 0 or is greater than 1.
+
+
+
+
+ Gets the entropy threshold value.
+
+
+
+
+
+
+
+ Provides methods to allow the cropping of an image to preserve areas of highest entropy.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The .
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Gets the bounding from the given points.
+
+
+ The designating the top left position.
+
+
+ The designating the bottom right position.
+
+
+ The bounding .
+
+
+
+
+ Finds the bounding rectangle based on the first instance of any color component other
+ than the given one.
+
+ The to search within.
+ The color component value to remove.
+ The channel to test against.
+
+ The .
+
+
+
+
+ Encapsulates an interpolation algorithm for resampling images.
+
+
+
+
+ Gets the radius in which to sample pixels.
+
+
+
+
+ Gets the result of the interpolation algorithm.
+
+ The value to process.
+
+ The
+
+
+
+
+ Applies a transformation upon an image.
+
+ The pixel format.
+ The transforming image processor.
+
+
+
+ Implements an algorithm to alter the pixels of an image via resampling transforms.
+
+ The pixel format.
+
+
+
+ Applies a resampling transform with the given sampler.
+
+ The type of sampler.
+ The sampler to use.
+
+
+
+ Encapsulate an algorithm to swizzle pixels in an image.
+
+
+
+
+ Gets the size of the image after transformation.
+
+
+
+
+ Applies the swizzle transformation to a given point.
+
+ Point to transform.
+ The transformed point.
+
+
+
+ Defines an affine transformation applicable on an .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The transform matrix.
+ The sampler to perform the transform operation.
+ The target dimensions.
+
+
+
+ Gets the sampler to perform interpolation of the transform operation.
+
+
+
+
+ Gets the matrix used to supply the affine transform.
+
+
+
+
+ Gets the destination size to constrain the transformed image to.
+
+
+
+
+
+
+
+ Provides the base methods to perform affine transforms on an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Adjusts an image so that its orientation is suitable for viewing. Adjustments are based on EXIF metadata embedded in the image.
+
+
+
+
+
+
+
+ Adjusts an image so that its orientation is suitable for viewing. Adjustments are based on EXIF metadata embedded in the image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Returns the current EXIF orientation
+
+ The image to auto rotate.
+ The
+
+
+
+ Defines a flipping around the center point of the image.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The used to perform flipping.
+
+
+
+ Gets the used to perform flipping.
+
+
+
+
+
+
+
+ Provides methods that allow the flipping of an image around its center point.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The .
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ Swaps the image at the X-axis, which goes horizontally through the middle at half the height of the image.
+
+ The source image to apply the process to.
+ The configuration.
+
+
+
+ Swaps the image at the Y-axis, which goes vertically through the middle at half of the width of the image.
+
+ The source image to apply the process to.
+ The configuration.
+
+
+
+ Utility methods for linear transforms.
+
+
+
+
+ Returns the sampling radius for the given sampler and dimensions.
+
+ The type of resampler.
+ The resampler sampler.
+ The source size.
+ The destination size.
+ The .
+
+
+
+ Gets the start position (inclusive) for a sampling range given
+ the radius, center position and max constraint.
+
+ The radius.
+ The center position.
+ The min allowed amouunt.
+ The max allowed amouunt.
+ The .
+
+
+
+ Gets the end position (inclusive) for a sampling range given
+ the radius, center position and max constraint.
+
+ The radius.
+ The center position.
+ The min allowed amouunt.
+ The max allowed amouunt.
+ The .
+
+
+
+ Defines a projective transformation applicable to an .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The transform matrix.
+ The sampler to perform the transform operation.
+ The target dimensions.
+
+
+
+ Gets the sampler to perform interpolation of the transform operation.
+
+
+
+
+ Gets the matrix used to supply the projective transform.
+
+
+
+
+ Gets the destination size to constrain the transformed image to.
+
+
+
+
+
+
+
+ Provides the base methods to perform non-affine transforms on an image.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Defines a rotation applicable to an .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The angle of rotation in degrees.
+ The source image size
+
+
+
+ Initializes a new instance of the class.
+
+ The angle of rotation in degrees.
+ The sampler to perform the rotating operation.
+ The source image size
+
+
+
+ Gets the angle of rotation in degrees.
+
+
+
+
+
+
+
+ Provides methods that allow the rotating of images.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The defining the processor parameters.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+
+
+
+ Wraps a given angle in degrees so that it falls withing the 0-360 degree range
+
+ The angle of rotation in degrees.
+ The .
+
+
+
+ Rotates the images with an optimized method when the angle is 90, 180 or 270 degrees.
+
+ The source image.
+ The destination image.
+ The configuration.
+
+ The
+
+
+
+
+ Rotates the image 180 degrees clockwise at the centre point.
+
+ The source image.
+ The destination image.
+ The configuration.
+
+
+
+ Rotates the image 270 degrees clockwise at the centre point.
+
+ The source image.
+ The destination image.
+ The configuration.
+
+
+
+ Rotates the image 90 degrees clockwise at the centre point.
+
+ The source image.
+ The destination image.
+ The configuration.
+
+
+
+ Defines a skew transformation applicable to an .
+
+
+
+
+ Initializes a new instance of the class.
+
+ The angle in degrees to perform the skew along the x-axis.
+ The angle in degrees to perform the skew along the y-axis.
+ The source image size
+
+
+
+ Initializes a new instance of the class.
+
+ The angle in degrees to perform the skew along the x-axis.
+ The angle in degrees to perform the skew along the y-axis.
+ The sampler to perform the skew operation.
+ The source image size
+
+
+
+ Gets the angle of rotation along the x-axis in degrees.
+
+
+
+
+ Gets the angle of rotation along the y-axis in degrees.
+
+
+
+
+ The function implements the bicubic kernel algorithm W(x) as described on
+ Wikipedia
+ A commonly used algorithm within image processing that preserves sharpness better than triangle interpolation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The function implements the box algorithm. Similar to nearest neighbor when upscaling.
+ When downscaling the pixels will average, merging together.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cubic filters contain a collection of different filters of varying B-Spline and
+ Cardinal values. With these two values you can generate any smoothly fitting
+ (continuious first derivative) piece-wise cubic filter.
+
+
+
+
+
+
+ The Catmull-Rom filter is a well known standard Cubic Filter often used as a interpolation function.
+ This filter produces a reasonably sharp edge, but without a the pronounced gradient change on large
+ scale image enlargements that a 'Lagrange' filter can produce.
+
+
+
+
+ The Hermite filter is type of smoothed triangular interpolation Filter,
+ This filter rounds off strong edges while preserving flat 'color levels' in the original image.
+
+
+
+
+ The function implements the Mitchell-Netravali algorithm as described on
+ Wikipedia
+
+
+
+
+ The function implements the Robidoux algorithm.
+
+
+
+
+
+ The function implements the Robidoux Sharp algorithm.
+
+
+
+
+
+ The function implements the spline algorithm.
+
+
+
+ The function implements the Robidoux Sharp algorithm.
+
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The sampling radius.
+ The B-Spline value.
+ The Cardinal cubic value.
+
+
+
+
+
+
+
+
+
+
+
+
+ The function implements the Lanczos kernel algorithm as described on
+ Wikipedia.
+
+
+
+
+ Implements the Lanczos kernel algorithm with a radius of 2.
+
+
+
+
+ Implements the Lanczos kernel algorithm with a radius of 3.
+
+
+
+
+ Implements the Lanczos kernel algorithm with a radius of 5.
+
+
+
+
+ Implements the Lanczos kernel algorithm with a radius of 8.
+
+
+
+
+ Initializes a new instance of the struct.
+
+ The sampling radius.
+
+
+
+
+
+
+
+
+
+
+
+
+ The function implements the nearest neighbor algorithm. This uses an unscaled filter
+ which will select the closest pixel to the new pixels position.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The function implements the triangle (bilinear) algorithm.
+ Bilinear interpolation can be used where perfect image transformation with pixel matching is impossible,
+ so that one can calculate and assign appropriate intensity values to pixels.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The function implements the welch algorithm.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides methods to help calculate the target rectangle when resizing using the
+ enumeration.
+
+
+
+
+ Calculates the target location and bounds to perform the resize operation against.
+
+ The source image size.
+ The resize options.
+
+ The tuple representing the location and the bounds
+
+
+
+
+ Points to a collection of weights allocated in .
+
+
+
+
+ Initializes a new instance of the struct.
+
+
+
+
+ Gets the start index for the destination row.
+
+
+
+
+ Gets the length of the kernel.
+
+
+
+
+ Gets the span representing the portion of the that this window covers.
+
+ The .
+
+
+
+
+ Computes the sum of vectors in 'rowSpan' weighted by weight values, pointed by this instance.
+
+ The input span of vectors
+ The weighted sum
+
+
+
+ Copy the contents of altering
+ to the value .
+
+
+
+
+ Provides resize kernel values from an optimized contiguous memory region.
+
+
+
+
+ Gets the length of the destination row/column
+
+
+
+
+ Gets the maximum diameter of the kernels.
+
+
+
+
+ Gets a string of information to help debugging
+
+
+
+
+ Disposes instance releasing it's backing buffer.
+
+
+
+
+ Disposes the object and frees resources for the Garbage Collector.
+
+ Whether to dispose of managed and unmanaged objects.
+
+
+
+ Returns a for an index value between 0 and DestinationSize - 1.
+
+
+
+
+ Computes the weights to apply at each pixel when resizing.
+
+ The type of sampler.
+ The
+ The destination size
+ The source size
+ The to use for buffer allocations
+ The
+
+
+
+ Initializes the kernel map.
+
+
+
+
+ Builds a for the row (in )
+ referencing the data at row within ,
+ so the data reusable by other data rows.
+
+
+
+
+ Returns a referencing values of
+ at row .
+
+
+
+
+ Memory-optimized where repeating rows are stored only once.
+
+
+
+
+ Defines an image resizing operation with the given and dimensional parameters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The resize options.
+ The source image size.
+
+
+
+ Gets the destination width.
+
+
+
+
+ Gets the destination height.
+
+
+
+
+ Gets the resize rectangle.
+
+
+
+
+ Gets the resize options.
+
+
+
+
+
+
+
+ Implements resizing of images using various resamplers.
+
+ The pixel format.
+
+
+
+
+
+
+
+
+
+
+
+
+ Implements the resize algorithm using a sliding window of size
+ maximized by .
+ The height of the window is a multiple of the vertical kernel's maximum diameter.
+ When sliding the window, the contents of the bottom window band are copied to the new top band.
+ For more details, and visual explanation, see "ResizeWorker.pptx".
+
+
+
+
+ Defines a swizzle operation on an image.
+
+ The swizzle function type.
+
+
+
+ Initializes a new instance of the class.
+
+ The swizzler operation.
+
+
+
+ Gets the swizzler operation.
+
+
+
+
+
+
+
+ The base class for all transform processors. Any processor that changes the dimensions of the image should inherit from this.
+
+ The pixel format.
+
+
+
+ Initializes a new instance of the class.
+
+ The configuration which allows altering default behaviour or extending the library.
+ The source for the current processor instance.
+ The source area to process for the current processor instance.
+
+
+
+
+
+
+ Contains helper methods for working with transforms.
+
+
+
+
+ Updates the dimensional metadata of a transformed image
+
+ The pixel format.
+ The image to update
+
+
+
+ Contains utility methods for working with transforms.
+
+
+
+
+ Returns a value that indicates whether the specified matrix is degenerate
+ containing one or more values equivalent to or a
+ zero determinant and therefore cannot be used for linear transforms.
+
+ The transform matrix.
+
+
+
+ Returns a value that indicates whether the specified matrix is degenerate
+ containing one or more values equivalent to or a
+ zero determinant and therefore cannot be used for linear transforms.
+
+ The transform matrix.
+
+
+
+ Returns a value that indicates whether the specified matrix contains any values
+ that are not a number .
+
+ The transform matrix.
+ The .
+
+
+
+ Returns a value that indicates whether the specified matrix contains any values
+ that are not a number .
+
+ The transform matrix.
+ The .
+
+
+
+ Applies the projective transform against the given coordinates flattened into the 2D space.
+
+ The "x" vector coordinate.
+ The "y" vector coordinate.
+ The transform matrix.
+ The .
+
+
+
+ Creates a centered rotation matrix using the given rotation in degrees and the source size.
+
+ The amount of rotation, in degrees.
+ The source image size.
+ The .
+
+
+
+ Creates a centered rotation matrix using the given rotation in radians and the source size.
+
+ The amount of rotation, in radians.
+ The source image size.
+ The .
+
+
+
+ Creates a centered skew matrix from the give angles in degrees and the source size.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The source image size.
+ The .
+
+
+
+ Creates a centered skew matrix from the give angles in radians and the source size.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The source image size.
+ The .
+
+
+
+ Gets the centered transform matrix based upon the source and destination rectangles.
+
+ The source image bounds.
+ The transformation matrix.
+ The
+
+
+
+ Creates a matrix that performs a tapering projective transform.
+
+
+ The rectangular size of the image being transformed.
+ An enumeration that indicates the side of the rectangle that tapers.
+ An enumeration that indicates on which corners to taper the rectangle.
+ The amount to taper.
+ The
+
+
+
+ Returns the rectangle bounds relative to the source for the given transformation matrix.
+
+ The source rectangle.
+ The transformation matrix.
+
+ The .
+
+
+
+
+ Returns the rectangle relative to the source for the given transformation matrix.
+
+ The source rectangle.
+ The transformation matrix.
+
+ The .
+
+
+
+
+ Returns the size relative to the source for the given transformation matrix.
+
+ The source size.
+ The transformation matrix.
+
+ The .
+
+
+
+
+ Returns the rectangle relative to the source for the given transformation matrix.
+
+ The source rectangle.
+ The transformation matrix.
+
+ The .
+
+
+
+
+ Returns the size relative to the source for the given transformation matrix.
+
+ The source size.
+ The transformation matrix.
+
+ The .
+
+
+
+
+ A helper class for constructing instances for use in projective transforms.
+
+
+
+
+ Prepends a matrix that performs a tapering projective transform.
+
+ An enumeration that indicates the side of the rectangle that tapers.
+ An enumeration that indicates on which corners to taper the rectangle.
+ The amount to taper.
+ The .
+
+
+
+ Appends a matrix that performs a tapering projective transform.
+
+ An enumeration that indicates the side of the rectangle that tapers.
+ An enumeration that indicates on which corners to taper the rectangle.
+ The amount to taper.
+ The .
+
+
+
+ Prepends a centered rotation matrix using the given rotation in degrees.
+
+ The amount of rotation, in degrees.
+ The .
+
+
+
+ Prepends a centered rotation matrix using the given rotation in radians.
+
+ The amount of rotation, in radians.
+ The .
+
+
+
+ Prepends a centered rotation matrix using the given rotation in degrees at the given origin.
+
+ The amount of rotation, in radians.
+ The rotation origin point.
+ The .
+
+
+
+ Prepends a centered rotation matrix using the given rotation in radians at the given origin.
+
+ The amount of rotation, in radians.
+ The rotation origin point.
+ The .
+
+
+
+ Appends a centered rotation matrix using the given rotation in degrees.
+
+ The amount of rotation, in degrees.
+ The .
+
+
+
+ Appends a centered rotation matrix using the given rotation in radians.
+
+ The amount of rotation, in radians.
+ The .
+
+
+
+ Appends a centered rotation matrix using the given rotation in degrees at the given origin.
+
+ The amount of rotation, in radians.
+ The rotation origin point.
+ The .
+
+
+
+ Appends a centered rotation matrix using the given rotation in radians at the given origin.
+
+ The amount of rotation, in radians.
+ The rotation origin point.
+ The .
+
+
+
+ Prepends a scale matrix from the given uniform scale.
+
+ The uniform scale.
+ The .
+
+
+
+ Prepends a scale matrix from the given vector scale.
+
+ The horizontal and vertical scale.
+ The .
+
+
+
+ Prepends a scale matrix from the given vector scale.
+
+ The horizontal and vertical scale.
+ The .
+
+
+
+ Appends a scale matrix from the given uniform scale.
+
+ The uniform scale.
+ The .
+
+
+
+ Appends a scale matrix from the given vector scale.
+
+ The horizontal and vertical scale.
+ The .
+
+
+
+ Appends a scale matrix from the given vector scale.
+
+ The horizontal and vertical scale.
+ The .
+
+
+
+ Prepends a centered skew matrix from the give angles in degrees.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The .
+
+
+
+ Prepends a centered skew matrix from the give angles in radians.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The .
+
+
+
+ Prepends a skew matrix using the given angles in degrees at the given origin.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The skew origin point.
+ The .
+
+
+
+ Prepends a skew matrix using the given angles in radians at the given origin.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The skew origin point.
+ The .
+
+
+
+ Appends a centered skew matrix from the give angles in degrees.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The .
+
+
+
+ Appends a centered skew matrix from the give angles in radians.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The .
+
+
+
+ Appends a skew matrix using the given angles in degrees at the given origin.
+
+ The X angle, in degrees.
+ The Y angle, in degrees.
+ The skew origin point.
+ The .
+
+
+
+ Appends a skew matrix using the given angles in radians at the given origin.
+
+ The X angle, in radians.
+ The Y angle, in radians.
+ The skew origin point.
+ The .
+
+
+
+ Prepends a translation matrix from the given vector.
+
+ The translation position.
+ The .
+
+
+
+ Prepends a translation matrix from the given vector.
+
+ The translation position.
+ The .
+
+
+
+ Appends a translation matrix from the given vector.
+
+ The translation position.
+ The .
+
+
+
+ Appends a translation matrix from the given vector.
+
+ The translation position.
+ The .
+
+
+
+ Prepends a raw matrix.
+
+ The matrix to prepend.
+
+ The resultant matrix is degenerate containing one or more values equivalent
+ to or a zero determinant and therefore cannot be used
+ for linear transforms.
+
+ The .
+
+
+
+ Appends a raw matrix.
+
+ The matrix to append.
+
+ The resultant matrix is degenerate containing one or more values equivalent
+ to or a zero determinant and therefore cannot be used
+ for linear transforms.
+
+ The .
+
+
+
+ Returns the combined matrix for a given source size.
+
+ The source image size.
+ The .
+
+
+
+ Returns the combined matrix for a given source rectangle.
+
+ The rectangle in the source image.
+
+ The resultant matrix is degenerate containing one or more values equivalent
+ to or a zero determinant and therefore cannot be used
+ for linear transforms.
+
+ The .
+
+
+
+ Provides enumeration over how the image should be resized.
+
+
+
+
+ Crops the resized image to fit the bounds of its container.
+
+
+
+
+ Pads the resized image to fit the bounds of its container.
+ If only one dimension is passed, will maintain the original aspect ratio.
+
+
+
+
+ Pads the image to fit the bound of the container without resizing the
+ original source.
+ When downscaling, performs the same functionality as
+
+
+
+
+ Constrains the resized image to fit the bounds of its container maintaining
+ the original aspect ratio.
+
+
+
+
+ Resizes the image until the shortest side reaches the set given dimension.
+ Upscaling is disabled in this mode and the original image will be returned
+ if attempted.
+
+
+
+
+ Stretches the resized image to fit the bounds of its container.
+
+
+
+
+ The target location and size of the resized image has been manually set.
+
+
+
+
+ The resize options for resizing images against certain modes.
+
+
+
+
+ Gets or sets the resize mode.
+
+
+
+
+ Gets or sets the anchor position.
+
+
+
+
+ Gets or sets the center coordinates.
+
+
+
+
+ Gets or sets the target size.
+
+
+
+
+ Gets or sets the sampler to perform the resize operation.
+
+
+
+
+ Gets or sets a value indicating whether to compress
+ or expand individual pixel colors the value on processing.
+
+
+
+
+ Gets or sets the target rectangle to resize into.
+
+
+
+
+ Gets or sets a value indicating whether to premultiply
+ the alpha (if it exists) during the resize operation.
+
+
+
+
+ Gets or sets the color to use as a background when padding an image.
+
+
+
+
+ Provides enumeration over how the image should be rotated.
+
+
+
+
+ Do not rotate the image.
+
+
+
+
+ Rotate the image by 90 degrees clockwise.
+
+
+
+
+ Rotate the image by 180 degrees clockwise.
+
+
+
+
+ Rotate the image by 270 degrees clockwise.
+
+
+
+
+ Enumerates the various options which determine how to taper corners
+
+
+
+
+ Taper the left or top corner
+
+
+
+
+ Taper the right or bottom corner
+
+
+
+
+ Taper the both sets of corners
+
+
+
+
+ Enumerates the various options which determine which side to taper
+
+
+
+
+ Taper the left side
+
+
+
+
+ Taper the top side
+
+
+
+
+ Taper the right side
+
+
+
+
+ Taper the bottom side
+
+
+
+
+ Specifies the position in a stream to use for reading.
+
+
+
+
+ Specifies the beginning of a stream.
+
+
+
+
+ Specifies the current position within a stream.
+
+
+
+
+ Provides methods to protect against invalid parameters for a DEBUG build.
+
+
+ Provides methods to protect against invalid parameters for a DEBUG build.
+
+
+
+
+ Verifies whether a specific condition is met, throwing an exception if it's false.
+
+ The condition
+ The error message
+
+
+
+ Verifies whether a condition (indicating disposed state) is met, throwing an ObjectDisposedException if it's true.
+
+ Whether the object is disposed.
+ The name of the object.
+
+
+
+ Verifies, that the target span is of same size than the 'other' span.
+
+ The element type of the spans
+ The target span.
+ The 'other' span to compare 'target' to.
+ The name of the parameter that is to be checked.
+
+ has a different size than
+
+
+
+
+ Verifies, that the `target` span has the length of 'minSpan', or longer.
+
+ The element type of the spans
+ The target span.
+ The 'minSpan' span to compare 'target' to.
+ The name of the parameter that is to be checked.
+
+ has less items than
+
+
+
+
+ Ensures that the value is not null.
+
+ The target object, which cannot be null.
+ The name of the parameter that is to be checked.
+ The type of the value.
+ is null.
+
+
+
+ Ensures that the target value is not null, empty, or whitespace.
+
+ The target string, which should be checked against being null or empty.
+ Name of the parameter.
+ is null.
+ is empty or contains only blanks.
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Verifies, that the method parameter with specified target value is true
+ and throws an exception if it is found to be so.
+
+ The target value, which cannot be false.
+ The name of the parameter that is to be checked.
+ The error message, if any to add to the exception.
+
+ is false.
+
+
+
+
+ Verifies, that the method parameter with specified target value is false
+ and throws an exception if it is found to be so.
+
+ The target value, which cannot be true.
+ The name of the parameter that is to be checked.
+ The error message, if any to add to the exception.
+
+ is true.
+
+
+
+
+ Verifies, that the `source` span has the length of 'minLength', or longer.
+
+ The element type of the spans.
+ The source span.
+ The minimum length.
+ The name of the parameter that is to be checked.
+
+ has less than items.
+
+
+
+
+ Verifies, that the `source` span has the length of 'minLength', or longer.
+
+ The element type of the spans.
+ The target span.
+ The minimum length.
+ The name of the parameter that is to be checked.
+
+ has less than items.
+
+
+
+
+ Verifies that the 'destination' span is not shorter than 'source'.
+
+ The source element type.
+ The destination element type.
+ The source span.
+ The destination span.
+ The name of the argument for 'destination'.
+
+
+
+ Verifies that the 'destination' span is not shorter than 'source'.
+
+ The source element type.
+ The destination element type.
+ The source span.
+ The destination span.
+ The name of the argument for 'destination'.
+
+
+
+ Provides methods to protect against invalid parameters.
+
+
+ Provides methods to protect against invalid parameters.
+
+
+
+
+ Ensures that the value is a value type.
+
+ The target object, which cannot be null.
+ The name of the parameter that is to be checked.
+ The type of the value.
+ is not a value type.
+
+
+
+ Ensures that the value is not null.
+
+ The target object, which cannot be null.
+ The name of the parameter that is to be checked.
+ The type of the value.
+ is null.
+
+
+
+ Ensures that the target value is not null, empty, or whitespace.
+
+ The target string, which should be checked against being null or empty.
+ Name of the parameter.
+ is null.
+ is empty or contains only blanks.
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+ The type of the value.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Verifies, that the method parameter with specified target value is true
+ and throws an exception if it is found to be so.
+
+ The target value, which cannot be false.
+ The name of the parameter that is to be checked.
+ The error message, if any to add to the exception.
+
+ is false.
+
+
+
+
+ Verifies, that the method parameter with specified target value is false
+ and throws an exception if it is found to be so.
+
+ The target value, which cannot be true.
+ The name of the parameter that is to be checked.
+ The error message, if any to add to the exception.
+
+ is true.
+
+
+
+
+ Verifies, that the `source` span has the length of 'minLength', or longer.
+
+ The element type of the spans.
+ The source span.
+ The minimum length.
+ The name of the parameter that is to be checked.
+
+ has less than items.
+
+
+
+
+ Verifies, that the `source` span has the length of 'minLength', or longer.
+
+ The element type of the spans.
+ The target span.
+ The minimum length.
+ The name of the parameter that is to be checked.
+
+ has less than items.
+
+
+
+
+ Verifies that the 'destination' span is not shorter than 'source'.
+
+ The source element type.
+ The destination element type.
+ The source span.
+ The destination span.
+ The name of the argument for 'destination'.
+
+
+
+ Verifies that the 'destination' span is not shorter than 'source'.
+
+ The source element type.
+ The destination element type.
+ The source span.
+ The destination span.
+ The name of the argument for 'destination'.
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Ensures that the specified value is less than a maximum value.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is less than or equal to a maximum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is greater than the maximum value.
+
+
+
+
+ Verifies that the specified value is greater than a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value
+ and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value.
+
+
+
+
+ Verifies that the specified value is greater than or equal to a minimum value and less than
+ or equal to a maximum value and throws an exception if it is not.
+
+ The target value, which should be validated.
+ The minimum value.
+ The maximum value.
+ The name of the parameter that is to be checked.
+
+ is less than the minimum value of greater than the maximum value.
+
+
+
+
+ Helper methods to throw exceptions
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws an when fails.
+
+
+
+
+ Throws a new .
+
+ The message to include in the exception.
+ The argument name.
+ Thrown with and .
+
+
+
+ Throws a new .
+
+ The argument name.
+ The message to include in the exception.
+ Thrown with and .
+
+
+
+ Throws a new .
+
+ The argument name.
+ The message to include in the exception.
+ Thrown with and .
+
+
+
+ Provides single-precision floating point constants and static methods for trigonometric, logarithmic, and other common mathematical functions.
+
+ MathF emulation on platforms that don't support it natively.
+
+
+
+ Represents the ratio of the circumference of a circle to its diameter, specified by the constant, π.
+
+
+
+
+ Returns the absolute value of a single-precision floating-point number.
+
+
+ A number that is greater than or equal to , but less than or equal to .
+
+
+ A single-precision floating-point number, x, such that 0 ≤ x ≤.
+
+
+
+
+ Returns the angle whose tangent is the quotient of two specified numbers.
+
+ The y coordinate of a point.
+ The x coordinate of a point.
+
+ An angle, θ, measured in radians, such that -π≤θ≤π, and tan(θ) = y / x, where
+ (x, y) is a point in the Cartesian plane. Observe the following: For (x, y) in
+ quadrant 1, 0 < θ < π/2.For (x, y) in quadrant 2, π/2 < θ≤π.For (x, y) in quadrant
+ 3, -π < θ < -π/2.For (x, y) in quadrant 4, -π/2 < θ < 0.For points on the boundaries
+ of the quadrants, the return value is the following:If y is 0 and x is not negative,
+ θ = 0.If y is 0 and x is negative, θ = π.If y is positive and x is 0, θ = π/2.If
+ y is negative and x is 0, θ = -π/2.If y is 0 and x is 0, θ = 0. If x or y is
+ , or if x and y are either or
+ , the method returns .
+
+
+
+
+ Returns the smallest integral value that is greater than or equal to the specified single-precision floating-point number.
+
+ A single-precision floating-point number.
+
+ The smallest integral value that is greater than or equal to .
+ If is equal to , ,
+ or , that value is returned.
+ Note that this method returns a instead of an integral type.
+
+
+
+
+ Returns the cosine of the specified angle.
+
+ An angle, measured in radians.
+
+ The cosine of . If is equal to , ,
+ or , this method returns .
+
+
+
+
+ Returns e raised to the specified power.
+
+ A number specifying a power.
+
+ The number e raised to the power .
+ If equals or , that value is returned.
+ If equals , 0 is returned.
+
+
+
+
+ Returns the largest integer less than or equal to the specified single-precision floating-point number.
+
+ A single-precision floating-point number.
+
+ The largest integer less than or equal to .
+ If is equal to , ,
+ or , that value is returned.
+
+
+
+
+ Returns the larger of two single-precision floating-point numbers.
+
+ The first of two single-precision floating-point numbers to compare.
+ The second of two single-precision floating-point numbers to compare.
+
+ Parameter or , whichever is larger.
+ If , or , or both and are
+ equal to , is returned.
+
+
+
+
+ Returns the smaller of two single-precision floating-point numbers.
+
+ The first of two single-precision floating-point numbers to compare.
+ The second of two single-precision floating-point numbers to compare.
+
+ Parameter or , whichever is smaller.
+ If , , or both and are equal
+ to , is returned.
+
+
+
+
+ Returns a specified number raised to the specified power.
+
+ A single-precision floating-point number to be raised to a power.
+ A single-precision floating-point number that specifies a power.
+ The number raised to the power .
+
+
+
+ Rounds a single-precision floating-point value to the nearest integral value.
+
+ A single-precision floating-point number to be rounded.
+
+ The integer nearest .
+ If the fractional component of is halfway between two integers, one of which is even and the other odd, then the even number is returned.
+ Note that this method returns a instead of an integral type.
+
+
+
+
+ Rounds a single-precision floating-point value to the nearest integer.
+ A parameter specifies how to round the value if it is midway between two numbers.
+
+ A single-precision floating-point number to be rounded.
+ Specification for how to round if it is midway between two other numbers.
+
+ The integer nearest . If is halfway between two integers, one of which is even
+ and the other odd, then determines which of the two is returned.
+ Note that this method returns a instead of an integral type.
+
+
+ is not a valid value of .
+
+
+
+ Returns the sine of the specified angle.
+
+ An angle, measured in radians.
+
+ The sine of .
+ If is equal to , ,
+ or , this method returns .
+
+
+
+
+ Returns the square root of a specified number.
+
+ The number whose square root is to be found.
+
+ One of the values in the following table.
+ parameter Return value Zero or positive The positive square root of .
+ Negative Equals
+ Equals
+ .
+
+
+
+
diff --git a/bin/System.Buffers.dll b/bin/System.Buffers.dll
new file mode 100644
index 0000000..f2d83c5
Binary files /dev/null and b/bin/System.Buffers.dll differ
diff --git a/bin/System.Buffers.xml b/bin/System.Buffers.xml
new file mode 100644
index 0000000..e243dce
--- /dev/null
+++ b/bin/System.Buffers.xml
@@ -0,0 +1,38 @@
+
+
+ System.Buffers
+
+
+
+ Provides a resource pool that enables reusing instances of type .
+ The type of the objects that are in the resource pool.
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new instance of the class.
+ A new instance of the class.
+
+
+ Creates a new instance of the class using the specifed configuration.
+ The maximum length of an array instance that may be stored in the pool.
+ The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access.
+ A new instance of the class with the specified configuration.
+
+
+ Retrieves a buffer that is at least the requested length.
+ The minimum length of the array.
+ An array of type that is at least minimumLength in length.
+
+
+ Returns an array to the pool that was previously obtained using the method on the same instance.
+ A buffer to return to the pool that was previously obtained using the method.
+ Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array's contents are left unchanged.
+
+
+ Gets a shared instance.
+ A shared instance.
+
+
+
\ No newline at end of file
diff --git a/bin/System.Data.SqlClient.dll b/bin/System.Data.SqlClient.dll
new file mode 100644
index 0000000..4aa38a9
Binary files /dev/null and b/bin/System.Data.SqlClient.dll differ
diff --git a/bin/System.Data.SqlClient.xml b/bin/System.Data.SqlClient.xml
new file mode 100644
index 0000000..ca6d222
--- /dev/null
+++ b/bin/System.Data.SqlClient.xml
@@ -0,0 +1,3575 @@
+
+
+
+ System.Data.SqlClient
+
+
+
+
+ represents the application workload type when connecting to a server
+
+
+
+
+ Extension methods on the DiagnosticListener class to log SqlCommand data
+
+
+
+ SqlServer only supports CatalogLocation.Start
+
+
+ SqlServer only supports '.'
+
+
+ SqlServer only supports '.'
+
+
+
+ Assert that the supplied object is an instance of a SQL User-Defined Type (UDT).
+
+ Object instance to be tested.
+ Failed assert message
+
+ This method is only compiled with debug builds, and it a helper method for the GetComValueFromSqlVariant method defined in this class.
+
+ The presence of the SqlUserDefinedTypeAttribute on the object's type
+ is used to determine if the object is a UDT instance (if present it is a UDT, else it is not).
+
+
+ If sqlValue is null. Callers must ensure the object is non-null.
+
+
+
+
+
+ Represents the method that will handle the event of a .
+
+
+
+
+
+ Validate the enlisted transaction state, taking into consideration the ambient transaction and transaction unbinding mode.
+ If there is no enlisted transaction, this method is a nop.
+
+
+
+ This method must be called while holding a lock on the SqlInternalConnection instance,
+ to ensure we don't accidentally execute after the transaction has completed on a different thread,
+ causing us to unwittingly execute in auto-commit mode.
+
+
+
+ When using Explicit transaction unbinding,
+ verify that the enlisted transaction is active and equal to the current ambient transaction.
+
+
+
+ When using Implicit transaction unbinding,
+ verify that the enlisted transaction is active.
+ If it is not active, and the transaction object has been disposed, unbind from the transaction.
+ If it is not active and not disposed, throw an exception.
+
+
+
+
+
+ Forces the stream to act as if it was closed (i.e. CanRead=false and Read() throws)
+ This does not actually close the stream, read off the rest of the data or dispose this
+
+
+
+
+ Checks the parameters passed into a Read() method are valid
+
+
+
+
+
+
+
+ Forces the TextReader to act as if it was closed
+ This does not actually close the stream, read off the rest of the data or dispose this
+
+
+
+
+ Performs the actual reading and converting
+ NOTE: This assumes that buffer, index and count are all valid, we're not closed (!IsClosed) and that there is data left (IsDataLeft())
+
+
+
+
+
+
+
+
+ Creates a byte array large enough to store all bytes for the characters in the current encoding, then fills it with any leftover bytes
+
+ Number of characters that are to be read
+ Number of bytes pre-filled by the leftover bytes
+ A byte array of the correct size, pre-filled with leftover bytes
+
+
+
+ Decodes the given bytes into characters, and stores the leftover bytes for later use
+
+ Buffer of bytes to decode
+ Number of bytes to decode from the inBuffer
+ Buffer to write the characters to
+ Offset to start writing to outBuffer at
+ Maximum number of characters to decode
+ The actual number of characters decoded
+
+
+
+ True if this TextReader is supposed to be closed
+
+
+
+
+ True if there is a peeked character available
+
+
+
+
+ Checks the parameters passed into a Read() method are valid
+
+
+
+
+
+
+
+ used to block two scenarios if MultiSubnetFailover is true:
+ * server-provided failover partner - raising SqlException in this case
+ * connection string with failover partner and MultiSubnetFailover=true - raising argument one in this case with the same message
+
+
+
+
+ gets a message for SNI error (sniError must be valid, non-zero error code)
+
+
+
+
+ This class holds helper methods to escape Microsoft SQL Server identifiers, such as table, schema, database or other names
+
+
+
+
+ Escapes the identifier with square brackets. The input has to be in unescaped form, like the parts received from MultipartIdentifier.ParseMultipartIdentifier.
+
+ name of the identifier, in unescaped form
+ escapes the name with [], also escapes the last close bracket with double-bracket
+
+
+
+ Same as above EscapeIdentifier, except that output is written into StringBuilder
+
+
+
+
+ Escape a string to be used inside TSQL literal, such as N'somename' or 'somename'
+
+
+
+
+ Escape a string as a TSQL literal, wrapping it around with single quotes.
+ Use this method to escape input strings to prevent SQL injection
+ and to get correct behavior for embedded quotes.
+
+ unescaped string
+ escaped and quoted literal string
+
+
+
+ This class holds methods invoked on System.Transactions through reflection for Global Transactions
+
+
+
+
+ Enlists the given IPromotableSinglePhaseNotification and Non-MSDTC Promoter type into a transaction
+
+ The MethodInfo instance to be invoked. Null if the method doesn't exist
+
+
+
+ Sets the given DistributedTransactionIdentifier for a Transaction instance.
+ Needs to be invoked when using a Non-MSDTC Promoter type
+
+ The MethodInfo instance to be invoked. Null if the method doesn't exist
+
+
+
+ Gets the Promoted Token for a Transaction
+
+ The MethodInfo instance to be invoked. Null if the method doesn't exist
+
+
+ Class of variables for the Tds connection.
+
+
+
+
+ Checks if the given token is a valid TDS token
+
+ Token to check
+ True if the token is a valid TDS token, otherwise false
+
+
+
+ This method skips bytes of a single column value from the media. It supports NBCROW and handles all types of values, including PLP and long
+
+
+
+
+ Struct encapsulating the data to be sent to the server as part of Federated Authentication Feature Extension.
+
+
+
+
+ contains binary data, before using this field check newBinRented to see if you can take the field array or whether you should allocate and copy
+
+
+
+
+ contains binary data, before using this field check newBinRented to see if you can take the field array or whether you should allocate and copy
+
+
+
+
+ If this method returns true, the value is guaranteed to be null. This is not true vice versa:
+ if the bitmap value is false (if this method returns false), the value can be either null or non-null - no guarantee in this case.
+ To determine whether it is null or not, read it from the TDS (per NBCROW design spec, for IMAGE/TEXT/NTEXT columns server might send
+ bitmap = 0, when the actual value is null).
+
+
+
+
+ attempts to change the timout state from the expected state to the target state and if it succeeds
+ will setup the the stateobject into the timeout expired state
+
+ the state that is the expected current state, state will change only if this is correct
+ the state that will be changed to if the expected state is correct
+ any close action to be taken by an async task to avoid deadlock.
+ boolean value indicating whether the call changed the timeout state
+
+
+
+ Checks to see if the underlying connection is still alive (used by connection pool resiliency)
+ NOTE: This is not safe to do on a connection that is currently in use
+ NOTE: This will mark the connection as broken if it is found to be dead
+
+ If true then an exception will be thrown if the connection is found to be dead, otherwise no exception will be thrown
+ True if the connection is still alive, otherwise false
+
+
+
+ Checks to see if the underlying connection is still valid (used by idle connection resiliency - for active connections)
+ NOTE: This is not safe to do on a connection that is currently in use
+ NOTE: This will mark the connection as broken if it is found to be dead
+
+ True if the connection is still alive, otherwise false
+
+
+
+ True if there is at least one error or warning (not counting the pre-attention errors\warnings)
+
+
+
+
+ Adds an error to the error collection
+
+
+
+
+
+ Gets the number of errors currently in the error collection
+
+
+
+
+ Adds an warning to the warning collection
+
+
+
+
+
+ Gets the number of warnings currently in the warning collection
+
+
+
+
+ Gets the full list of errors and warnings (including the pre-attention ones), then wipes all error and warning lists
+
+ If true, the connection should be broken
+ An array containing all of the errors and warnings
+
+
+
+ Stores away current errors and warnings so that an attention can be processed
+
+
+
+
+ Restores errors and warnings that were stored in order to process an attention
+
+
+
+
+ Checks if an error is stored in _error and, if so, throws an error
+
+
+
+
+ Debug Only: Ensures that the TdsParserStateObject has no lingering state and can safely be re-used
+
+
+
+
+ SNI error
+
+
+
+
+ SNI connection handle
+
+
+
+
+ Dispose class
+
+
+
+
+ Set async callbacks
+
+ Receive callback
+ Send callback
+
+
+
+ Set buffer size
+
+ Buffer size
+
+
+
+ Send a packet synchronously
+
+ SNI packet
+ SNI error code
+
+
+
+ Send a packet asynchronously
+
+ SNI packet
+ Whether to dispose package after sending async
+ Completion callback
+ SNI error code
+
+
+
+ Receive a packet synchronously
+
+ SNI packet
+ Timeout in Milliseconds
+ SNI error code
+
+
+
+ Receive a packet asynchronously
+
+ SNI packet
+ SNI error code
+
+
+
+ Enable SSL
+
+
+
+
+ Disable SSL
+
+
+
+
+ Check connection status
+
+ SNI error code
+
+
+
+ Last handle status
+
+
+
+
+ Connection ID
+
+
+
+
+ Test handle for killing underlying connection
+
+
+
+
+ Global SNI settings and status
+
+
+
+
+ Last SNI error
+
+
+
+
+ SNI library status
+
+
+
+
+ Encryption options setting
+
+
+
+
+ SNI MARS connection. Multiple MARS streams will be overlaid on this connection.
+
+
+
+
+ Connection ID
+
+
+
+
+ Constructor
+
+ Lower handle
+
+
+
+ Start receiving
+
+
+
+
+
+ Send a packet synchronously
+
+ SNI packet
+ SNI error code
+
+
+
+ Send a packet asynchronously
+
+ SNI packet
+ Completion callback
+ SNI error code
+
+
+
+ Receive a packet asynchronously
+
+ SNI packet
+ SNI error code
+
+
+
+ Check SNI handle connection
+
+ SNI error status
+
+
+
+ Process a receive error
+
+
+
+
+ Process a send completion
+
+ SNI packet
+ SNI error code
+
+
+
+ Process a receive completion
+
+ SNI packet
+ SNI error code
+
+
+
+ Enable SSL
+
+
+
+
+ Disable SSL
+
+
+
+
+ Test handle for killing underlying connection
+
+
+
+
+ MARS handle
+
+
+
+
+ Dispose object
+
+
+
+
+ Constructor
+
+ MARS connection
+ MARS session ID
+ Callback object
+ true if connection is asynchronous
+
+
+
+ Send control packet
+
+ SMUX header flags
+
+
+
+ Generate a packet with SMUX header
+
+ SNI packet
+ The packet with the SMUx header set.
+
+
+
+ Send a packet synchronously
+
+ SNI packet
+ SNI error code
+
+
+
+ Send packet asynchronously
+
+ SNI packet
+ Completion callback
+ SNI error code
+
+
+
+ Send pending packets
+
+ SNI error code
+
+
+
+ Send a packet asynchronously
+
+ SNI packet
+ Whether to dispose packet after sending async
+ Completion callback
+ SNI error code
+
+
+
+ Receive a packet asynchronously
+
+ SNI packet
+ SNI error code
+
+
+
+ Handle receive error
+
+
+
+
+ Handle send completion
+
+ SNI packet
+ SNI error code
+
+
+
+ Handle SMUX acknowledgement
+
+ Send highwater mark
+
+
+
+ Handle receive completion
+
+ SNI packet
+ SMUX header
+
+
+
+ Send ACK if we've hit highwater threshold
+
+
+
+
+ Receive a packet synchronously
+
+ SNI packet
+ Timeout in Milliseconds
+ SNI error code
+
+
+
+ Check SNI handle connection
+
+ SNI error status
+
+
+
+ Set async callbacks
+
+ Receive callback
+ Send callback
+
+
+
+ Set buffer size
+
+ Buffer size
+
+
+
+ Enable SSL
+
+
+
+
+ Disable SSL
+
+
+
+
+ Test handle for killing underlying connection
+
+
+
+
+ Mars queued packet
+
+
+
+
+ Constructor
+
+ SNI packet
+ Completion callback
+
+
+
+ SNI packet
+
+
+
+
+ Completion callback
+
+
+
+
+ Named Pipe connection handle
+
+
+
+
+ Validate server certificate
+
+ Sender object
+ X.509 certificate
+ X.509 chain
+ Policy errors
+ true if valid
+
+
+
+ Set buffer size
+
+ Buffer size
+
+
+
+ Test handle for killing underlying connection
+
+
+
+
+ Dispose Packet data
+
+
+
+
+ Length of data left to process
+
+
+
+
+ Length of data
+
+
+
+
+ Packet validity
+
+
+
+
+ Set async completion callback
+
+ Completion callback
+
+
+
+ Invoke the completion callback
+
+ SNI error
+
+
+
+ Allocate space for data
+
+ Length of header
+ Length of byte array to be allocated
+
+
+
+ Read packet data into a buffer without removing it from the packet
+
+ Buffer
+ Number of bytes read from the packet into the buffer
+
+
+
+ Take data from another packet
+
+ Packet
+ Data to take
+ Amount of data taken
+
+
+
+ Append data
+
+ Data
+ Size
+
+
+
+ Read data from the packet into the buffer at dataOffset for zize and then remove that data from the packet
+
+ Buffer
+ Data offset to write data at
+ Number of bytes to read from the packet into the buffer
+
+
+
+
+ Release packet
+
+
+
+
+ Read data from a stream asynchronously
+
+ Stream to read from
+ Completion callback
+
+
+
+ Read data from a stream synchronously
+
+ Stream to read from
+
+
+
+ Write data to a stream asynchronously
+
+ Stream to write to
+ SNI Asynchronous Callback
+ SNI provider identifier
+ Bool flag to decide whether or not to dispose after Write Async operation
+
+
+
+ Write data to a stream synchronously
+
+ Stream to write to
+
+
+
+ Managed SNI proxy implementation. Contains many SNI entry points used by SqlClient.
+
+
+
+
+ Terminate SNI
+
+
+
+
+ Enable SSL on a connection
+
+ Connection handle
+ SSL options
+ SNI error code
+
+
+
+ Disable SSL on a connection
+
+ Connection handle
+ SNI error code
+
+
+
+ Generate SSPI context
+
+ SSPI client context status
+ Receive buffer
+ Send buffer
+ Service Principal Name buffer
+ SNI error code
+
+
+
+ Initialize SSPI
+
+ Max length of SSPI packet
+ SNI error code
+
+
+
+ Set connection buffer size
+
+ SNI handle
+ Buffer size
+ SNI error code
+
+
+
+ Copies data in SNIPacket to given byte array parameter
+
+ SNIPacket object containing data packets
+ Destination byte array where data packets are copied to
+ Length of data packets
+ SNI error status
+
+
+
+ Read synchronously
+
+ SNI handle
+ SNI packet
+ Timeout
+ SNI error status
+
+
+
+ Get SNI connection ID
+
+ SNI handle
+ Client connection ID
+ SNI error status
+
+
+
+ Send a packet
+
+ SNI handle
+ SNI packet
+ true if synchronous, false if asynchronous
+ SNI error status
+
+
+
+ Create a SNI connection handle
+
+ Asynchronous I/O callback object
+ Full server name from connection string
+ Ignore open timeout
+ Timer expiration
+ Instance name
+ SPN
+ Flush packet cache
+ Asynchronous connection
+ Attempt parallel connects
+ Whether integrated security is enabled
+ SNI handle
+
+
+
+ Creates an SNITCPHandle object
+
+ Data source
+ Timer expiration
+ Asynchronous I/O callback object
+ Should MultiSubnetFailover be used
+ SNITCPHandle
+
+
+
+ Creates an SNINpHandle object
+
+ Data source
+ Timer expiration
+ Asynchronous I/O callback object
+ Should MultiSubnetFailover be used. Only returns an error for named pipes.
+ SNINpHandle
+
+
+
+ Read packet asynchronously
+
+ SNI handle
+ Packet
+ SNI error status
+
+
+
+ Set packet data
+
+ SNI packet
+ Data
+ Length
+
+
+
+ Release packet
+
+ SNI packet
+
+
+
+ Check SNI handle connection
+
+
+ SNI error status
+
+
+
+ Get last SNI error on this thread
+
+
+
+
+
+ Gets the Local db Named pipe data source if the input is a localDB server.
+
+ The data source
+ Set true when an error occurred while getting LocalDB up
+
+
+
+
+ Provides the HostName of the server to connect to for TCP protocol.
+ This information is also used for finding the SPN of SqlServer
+
+
+
+
+ Provides the port on which the TCP connection should be made if one was specified in Data Source
+
+
+
+
+ Provides the inferred Instance Name from Server Data Source
+
+
+
+
+ Provides the pipe name in case of Named Pipes
+
+
+
+
+ Provides the HostName to connect to in case of Named pipes Data Source
+
+
+
+
+ TCP connection handle
+
+
+
+
+ Dispose object
+
+
+
+
+ Connection ID
+
+
+
+
+ Connection status
+
+
+
+
+ Constructor
+
+ Server name
+ TCP port number
+ Connection timer expiration
+ Callback object
+ Open in parallel
+
+
+
+ Enable SSL
+
+
+
+
+ Disable SSL
+
+
+
+
+ Validate server certificate callback
+
+ Sender object
+ X.509 certificate
+ X.509 chain
+ Policy errors
+ True if certificate is valid
+
+
+
+ Set buffer size
+
+ Buffer size
+
+
+
+ Send a packet synchronously
+
+ SNI packet
+ SNI error code
+
+
+
+ Receive a packet synchronously
+
+ SNI packet
+ Timeout in Milliseconds
+ SNI error code
+
+
+
+ Set async callbacks
+
+ Receive callback
+ Send callback
+
+
+
+ Send a packet asynchronously
+
+ SNI packet
+ Whether to dispose packet after sending async
+ Completion callback
+ SNI error code
+
+
+
+ Receive a packet asynchronously
+
+ SNI packet
+ SNI error code
+
+
+
+ Check SNI handle connection
+
+ SNI error status
+
+
+
+ Test handle for killing underlying connection
+
+
+
+
+ SSL encapsulated over TDS transport. During SSL handshake, SSL packets are
+ transported in TDS packet type 0x12. Once SSL handshake has completed, SSL
+ packets are sent transparently.
+
+
+
+
+ Constructor
+
+ Underlying stream
+
+
+
+ Finish SSL handshake. Stop encapsulating in TDS.
+
+
+
+
+ Read buffer
+
+ Buffer
+ Offset
+ Byte count
+ Bytes read
+
+
+
+ Write Buffer
+
+
+
+
+
+
+
+ Write Buffer Asynchronosly
+
+
+
+
+
+
+
+
+
+ Read Buffer Asynchronosly
+
+
+
+
+
+
+
+
+
+ Read Internal is called synchronosly when async is false
+
+
+
+
+ The internal write method calls Sync APIs when Async flag is false
+
+
+
+
+ Set stream length.
+
+ Length
+
+
+
+ Flush stream
+
+
+
+
+ Get/set stream position
+
+
+
+
+ Seek in stream
+
+ Offset
+ Origin
+ Position
+
+
+
+ Check if stream can be read from
+
+
+
+
+ Check if stream can be written to
+
+
+
+
+ Check if stream can be seeked
+
+
+
+
+ Get stream length
+
+
+
+
+ SNI Asynchronous callback
+
+ SNI packet
+ SNI error code
+
+
+
+ SNI provider identifiers
+
+
+
+
+ SMUX packet header
+
+
+
+
+ SMUX packet flags
+
+
+
+
+ Validate server certificate callback for SSL
+
+ Server that client is expecting to connect to
+ Sender object
+ X.509 certificate
+ X.509 chain
+ Policy errors
+ True if certificate is valid
+
+
+
+ Sets last error encountered for SNI
+
+ SNI provider
+ Native error code
+ SNI error code
+ Error message
+
+
+
+
+ Sets last error encountered for SNI
+
+ SNI provider
+ SNI error code
+ SNI Exception
+
+
+
+
+ Sets last error encountered for SNI
+
+ SNI error
+
+
+
+
+ Finds instance port number for given instance name.
+
+ SQL Sever Browser hostname
+ instance name to find port number
+ port number for given instance name
+
+
+
+ Creates instance port lookup request (CLNT_UCAST_INST) for given instance name.
+
+ instance name to lookup port
+ Byte array of instance port lookup request (CLNT_UCAST_INST)
+
+
+
+ Finds DAC port for given instance name.
+
+ SQL Sever Browser hostname
+ instance name to lookup DAC port
+ DAC port for given instance name
+
+
+
+ Creates DAC port lookup request (CLNT_UCAST_DAC) for given instance name.
+
+ instance name to lookup DAC port
+ Byte array of DAC port lookup request (CLNT_UCAST_DAC)
+
+
+
+ Sends request to server, and receives response from server by UDP.
+
+ UDP server hostname
+ UDP server port
+ request packet
+ response packet from UDP server
+
+
+
+ Loads the User Instance dll.
+
+
+
+
+ Retrieves the part of the sqlUserInstance.dll from the registry
+
+ In case the dll path is not found, the error is set here.
+
+
+
+
+ This class defines the data structure for ActivityId used for correlated tracing between client (bid trace event) and server (XEvent).
+ It also includes all the APIs used to access the ActivityId. Note: ActivityId is thread based which is stored in TLS.
+
+
+
+
+ Get the current ActivityId
+
+
+
+
+ Increment the sequence number and generate the new ActivityId
+
+ ActivityId
+
+
+
+ This method attempts to convert the given value tp ApplicationIntent enum. The algorithm is:
+ * if the value is from type string, it will be matched against ApplicationIntent enum names only, using ordinal, case-insensitive comparer
+ * if the value is from type ApplicationIntent, it will be used as is
+ * if the value is from integral type (SByte, Int16, Int32, Int64, Byte, UInt16, UInt32, or UInt64), it will be converted to enum
+ * if the value is another enum or any other type, it will be blocked with an appropriate ArgumentException
+
+ in any case above, if the converted value is out of valid range, the method raises ArgumentOutOfRangeException.
+
+ application intent value in the valid range
+
+
+
+ This method attempts to convert the given value to a PoolBlockingPeriod enum. The algorithm is:
+ * if the value is from type string, it will be matched against PoolBlockingPeriod enum names only, using ordinal, case-insensitive comparer
+ * if the value is from type PoolBlockingPeriod, it will be used as is
+ * if the value is from integral type (SByte, Int16, Int32, Int64, Byte, UInt16, UInt32, or UInt64), it will be converted to enum
+ * if the value is another enum or any other type, it will be blocked with an appropriate ArgumentException
+
+ in any case above, if the conerted value is out of valid range, the method raises ArgumentOutOfRangeException.
+
+ PoolBlockingPeriod value in the valid range
+
+
+ Ensure that this connection cannot be put back into the pool.
+
+
+ The default implementation is for the open connection objects, and
+ it simply throws. Our private closed-state connection objects
+ override this and do the correct thing.
+
+
+
+ When overridden in a derived class, will check if the underlying connection is still actually alive
+
+ If true an exception will be thrown if the connection is dead instead of returning true\false
+ (this allows the caller to have the real reason that the connection is not alive (e.g. network error, etc))
+ True if the connection is still alive, otherwise false (If not overridden, then always true)
+
+
+
+ Get boolean value that indicates whether the enlisted transaction has been disposed.
+
+
+ True if there is an enlisted transaction, and it has been disposed.
+ False if there is an enlisted transaction that has not been disposed, or if the transaction reference is null.
+
+
+ This method must be called while holding a lock on the DbConnectionInternal instance.
+
+
+
+
+ Creates a new connection to replace an existing connection
+
+ Outer connection that currently owns
+ Options used to create the new connection
+ Inner connection that will be replaced
+ A new inner connection that is attached to the
+
+
+
+ This type provides workarounds for the separation between System.Data.Common
+ and System.Data.SqlClient. The latter wants to access internal members of the former, and
+ this class provides ways to do that. We must review and update this implementation any time the
+ implementation of the corresponding types in System.Data.Common change.
+
+
+
+
+ Constructs a SqlMoney from a long value without scaling. The ignored parameter exists
+ only to distinguish this constructor from the constructor that takes a long.
+ Used only internally.
+
+
+
+ Invalid index {0} for this {1} with Count={2}.
+
+
+ An {0} with {1} '{2}' is not contained by this {3}.
+
+
+ The {0} only accepts non-null {1} type objects, not {2} objects.
+
+
+ The {0} is already contained by another {1}.
+
+
+ The {0} only accepts non-null {1} type objects.
+
+
+ Attempted to remove an {0} that is not contained by this {1}.
+
+
+ The connection was not closed. {0}
+
+
+ The connection's current state is closed.
+
+
+ The connection's current state is connecting.
+
+
+ The connection's current state is open.
+
+
+ The connection's current state is executing.
+
+
+ The connection's current state is fetching.
+
+
+ The connection's current state: {0}.
+
+
+ Format of the initialization string does not conform to specification starting at index {0}.
+
+
+ Invalid attempt to call {0} when reader is closed.
+
+
+ Internal DbConnection Error: {0}
+
+
+ The {0} enumeration value, {1}, is invalid.
+
+
+ The {0} enumeration value, {1}, is not supported by the {2} method.
+
+
+ Invalid parameter Offset value '{0}'. The value must be greater than or equal to 0.
+
+
+ Connection currently has transaction enlisted. Finish current transaction and retry.
+
+
+ Cannot enlist in the transaction because a local transaction is in progress on the connection. Finish local transaction and retry.
+
+
+ The ConnectionString property has not been initialized.
+
+
+ Not allowed to change the '{0}' property. {1}
+
+
+ Can not start another operation while there is an asynchronous operation pending.
+
+
+ Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
+
+
+ Timeout attempting to open the connection. The time period elapsed prior to attempting to open the connection has been exceeded. This may have occurred because of too many simultaneous non-pooled connection attempts.
+
+
+ The only acceptable value for the property '{0}' is '{1}'.
+
+
+ The acceptable values for the property '{0}' are '{1}' or '{2}'.
+
+
+ Specified QuotePrefix and QuoteSuffix values do not match.
+
+
+ Destination array is not long enough to copy all the items in the collection. Check array index and length.
+
+
+ Only single dimensional arrays are supported for the requested action.
+
+
+ Cannot remove the specified item because it was not found in the specified Collection.
+
+
+ Non-negative number required.
+
+
+ Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.
+
+
+ Cannot convert object of type '{0}' to object of type '{1}'.
+
+
+ Expecting argument of type {1}, but received type {0}.
+
+
+ {0} DeriveParameters only supports CommandType.StoredProcedure, not CommandType. {1}.
+
+
+ The stored procedure '{0}' doesn't exist.
+
+
+ Invalid value for key '{0}'.
+
+
+ Use of key '{0}' requires the key '{1}' to be present.
+
+
+ The value's length for key '{0}' exceeds it's limit of '{1}'.
+
+
+ Keyword not supported: '{0}'.
+
+
+ Internal .NET Framework Data Provider error {0}.
+
+
+ {0} '{1}'.
+
+
+ {0} '{1}', incorrect usage of quotes.
+
+
+ {0} '{1}', the current limit of '{2}' is insufficient.
+
+
+ SqlCommand.DeriveParameters failed because the SqlCommand.CommandText property value is an invalid multipart name
+
+
+ Batching updates is not supported on the context connection.
+
+
+ SqlBulkCopy.WriteToServer failed because the SqlBulkCopy.DestinationTableName is an invalid multipart name
+
+
+ Processing of results from SQL Server failed because of an invalid multipart name
+
+
+ SqlParameter.TypeName is an invalid multipart name
+
+
+ Connecting to a mirrored SQL Server instance using the MultiSubnetFailover connection option is not supported.
+
+
+ The {0} enumeration value, {1}, is not supported by the .NET Framework SqlClient Data Provider.
+
+
+ {0}: CommandText property has not been initialized
+
+
+ {0}: Connection property has not been initialized.
+
+
+ {0} requires an open and available Connection. {1}
+
+
+ The transaction is either not associated with the current connection or has been completed.
+
+
+ {0} requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized.
+
+
+ There is already an open DataReader associated with this Command which must be closed first.
+
+
+ The method '{0}' cannot be called more than once for the same execution.
+
+
+ Invalid CommandTimeout value {0}; the value must be >= 0.
+
+
+ {1}[{0}]: the Size property has an invalid size of 0.
+
+
+ {0}.Prepare method requires all parameters to have an explicitly set type.
+
+
+ {0}.Prepare method requires all variable length parameters to have an explicitly set non-zero Size.
+
+
+ {0}.Prepare method requires parameters of type '{1}' have an explicitly set Precision and Scale.
+
+
+ Mismatched end method call for asyncResult. Expected call to {0} but {1} was called instead.
+
+
+ Invalid operation. The connection is closed.
+
+
+ The connection has been disabled.
+
+
+ Database cannot be null, the empty string, or string of only whitespace.
+
+
+ Invalid source buffer (size of {0}) offset: {1}
+
+
+ Invalid destination buffer (size of {0}) offset: {1}
+
+
+ Invalid attempt to {0} when stream is closed.
+
+
+ Specified SeekOrigin value is invalid.
+
+
+ Invalid attempt to read from column ordinal '{0}'. With CommandBehavior.SequentialAccess, you may only read from column ordinal '{1}' or greater.
+
+
+ The parameter data type of {0} is invalid.
+
+
+ No mapping exists from object type {0} to a known managed provider native type.
+
+
+ Unable to handle an unknown TypeCode {0} returned by Type {1}.
+
+
+ No mapping exists from DbType {0} to a known {1}.
+
+
+ The version of SQL Server in use does not support datatype '{0}'.
+
+
+ Parameter value '{0}' is out of range.
+
+
+ Specified parameter name '{0}' is not valid.
+
+
+ Invalid parameter Size value '{0}'. The value must be greater than or equal to 0.
+
+
+ Invalid value for argument '{0}'. The value must be greater than or equal to 0.
+
+
+ Invalid value for this metadata.
+
+
+ Failed to convert parameter value from a {0} to a {1}.
+
+
+ {0} does not support parallel transactions.
+
+
+ This {0} has completed; it is no longer usable.
+
+
+ Specified length '{0}' is out of range.
+
+
+ Invalid {2} attempt at dataIndex '{0}'. With CommandBehavior.SequentialAccess, you may only read from dataIndex '{1}' or greater.
+
+
+ Invalid min or max pool size values, min pool size cannot be greater than the max pool size.
+
+
+ Invalid 'Packet Size'. The value must be an integer >= 512 and <= 32768.
+
+
+ Invalid transaction or invalid name for a point at which to save within the transaction.
+
+
+ User Instance and Failover are not compatible options. Please choose only one of the two in the connection string.
+
+
+ The instance of SQL Server you attempted to connect to requires encryption but this machine does not support it.
+
+
+ The instance of SQL Server you attempted to connect to does not support encryption.
+
+
+ Unsupported SQL Server version. The .NET Framework SqlClient Data Provider can only be used with SQL Server versions 7.0 and later.
+
+
+ Cannot create normalizer for '{0}'.
+
+
+ {0} cannot be changed while async operation is in progress.
+
+
+ Instance failure.
+
+
+ Server {0}, database {1} is not configured for database mirroring.
+
+
+ The connection does not support MultipleActiveResultSets.
+
+
+ SSE Instance re-direction is not supported for non-local user instances.
+
+
+ The command execution cannot proceed due to a pending asynchronous operation already in progress.
+
+
+ Invalid command sent to ExecuteXmlReader. The command must return an Xml result.
+
+
+ Invalid 3 part name format for TypeName.
+
+
+ The length of the parameter '{0}' exceeds the limit of 128 characters.
+
+
+ Precision value '{0}' is either less than 0 or greater than the maximum allowed precision of 38.
+
+
+ Scale value '{0}' is either less than 0 or greater than the maximum allowed scale of 38.
+
+
+ Scale value '{0}' is either less than 0 or greater than the maximum allowed scale of 7.
+
+
+ Parameter '{0}' exceeds the size limit for the sql_variant datatype.
+
+
+ The {0} type parameter '{1}' must have a valid type name.
+
+
+ Invalid internal packet size:
+
+
+ The SQL Server instance returned an invalid or unsupported protocol version during login negotiation.
+
+
+ Invalid Packet Size.
+
+
+ Internal connection fatal error.
+
+
+ The connection cannot be used because there is an ongoing operation that must be finished.
+
+
+ Memory allocation for internal connection failed.
+
+
+ SqlDbType.SmallDateTime overflow. Value '{0}' is out of range. Must be between 1/1/1900 12:00:00 AM and 6/6/2079 11:59:59 PM.
+
+
+ SqlDbType.Time overflow. Value '{0}' is out of range. Must be between 00:00:00.0000000 and 23:59:59.9999999.
+
+
+ SqlDbType.SmallMoney overflow. Value '{0}' is out of range. Must be between -214,748.3648 and 214,748.3647.
+
+
+ The Collation specified by SQL Server is not supported.
+
+
+ Operation cancelled by user.
+
+
+ A severe error occurred on the current command. The results, if any, should be discarded.
+
+
+ Failed to generate SSPI context.
+
+
+ Cannot authenticate using Kerberos. Ensure Kerberos has been initialized on the client with 'kinit' and a Service Principal Name has been registered for the SQL Server to allow Kerberos authentication.
+
+
+ Cannot connect to SQL Server Browser. Ensure SQL Server Browser has been started.
+
+
+ Invalid SSPI packet size.
+
+
+ Cannot initialize SSPI package.
+
+
+ Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
+
+
+ Connection Timeout Expired. The timeout period elapsed at the start of the pre-login phase. This could be because of insufficient time provided for connection timeout.
+
+
+ Connection Timeout Expired. The timeout period elapsed while attempting to create and initialize a socket to the server. This could be either because the server was unreachable or unable to respond back in time.
+
+
+ Connection Timeout Expired. The timeout period elapsed while making a pre-login handshake request. This could be because the server was unable to respond back in time.
+
+
+ Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time.
+
+
+ Connection Timeout Expired. The timeout period elapsed at the start of the login phase. This could be because of insufficient time provided for connection timeout.
+
+
+ Connection Timeout Expired. The timeout period elapsed while attempting to authenticate the login. This could be because the server failed to authenticate the user or the server was unable to respond back in time.
+
+
+ Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple act ...
+
+
+ This failure occurred while attempting to connect to the {0} server.
+
+
+ This failure occurred while attempting to connect to the routing destination. The duration spent while attempting to connect to the original server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; [Post-L ...
+
+
+ The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0};
+
+
+ The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1};
+
+
+ The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2};
+
+
+ The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3};
+
+
+ The duration spent while attempting to connect to this server was - [Pre-Login] initialization={0}; handshake={1}; [Login] initialization={2}; authentication={3}; [Post-Login] complete={4};
+
+
+ A user instance was requested in the connection string but the server specified does not support this option.
+
+
+ Invalid attempt to read when no data is present.
+
+
+ Invalid attempt to GetBytes on column '{0}'. The GetBytes function can only be used on columns of type Text, NText, or Image.
+
+
+ Invalid attempt to GetChars on column '{0}'. The GetChars function can only be used on columns of type Text, NText, Xml, VarChar or NVarChar.
+
+
+ Invalid attempt to GetStream on column '{0}'. The GetStream function can only be used on columns of type Binary, Image, Udt or VarBinary.
+
+
+ Invalid attempt to GetTextReader on column '{0}'. The GetTextReader function can only be used on columns of type Char, NChar, NText, NVarChar, Text or VarChar.
+
+
+ Invalid attempt to GetXmlReader on column '{0}'. The GetXmlReader function can only be used on columns of type Xml.
+
+
+ Failure while attempting to promote transaction.
+
+
+ Buffer offset '{1}' plus the bytes available '{0}' is greater than the length of the passed in buffer.
+
+
+ Data length '{0}' is less than 0.
+
+
+ The mapped collection is in use and cannot be accessed at this time;
+
+
+ Mappings must be either all name or all ordinal based.
+
+
+ The given value of type {0} from the data source cannot be converted to type {1} of the specified target column.
+
+
+ The given ColumnMapping does not match up with any column in the source or destination.
+
+
+ The given ColumnName '{0}' does not match up with any column in data source.
+
+
+ String or binary data would be truncated.
+
+
+ Timeout Value '{0}' is less than 0.
+
+
+ Value cannot be converted to SqlVariant.
+
+
+ Unexpected existing transaction.
+
+
+ Failed to obtain column collation information for the destination table. If the table is not in the current database the name must be qualified using the database name (e.g. [mydb]..[mytable](e.g. [mydb]..[mytable]); this also applies to temporary-tables ( ...
+
+
+ Must not specify SqlBulkCopyOption.UseInternalTransaction and pass an external Transaction at the same time.
+
+
+ Function must not be called during event.
+
+
+ The DestinationTableName property must be set before calling this method.
+
+
+ Cannot access destination table '{0}'.
+
+
+ Column '{0}' does not allow DBNull.Value.
+
+
+ The locale id '{0}' of the source column '{1}' and the locale id '{2}' of the destination column '{3}' do not match.
+
+
+ Attempt to invoke bulk copy on an object that has a pending operation.
+
+
+ Unable to get the address of the distributed transaction coordinator for the server, from the server. Is DTC enabled on the server?
+
+
+ The requested operation cannot be completed because the connection has been broken.
+
+
+ Open result count exceeded.
+
+
+ The Stream does not support writing.
+
+
+ The Stream does not support reading.
+
+
+ The Stream does not support seeking.
+
+
+ ClientConnectionId:{0}
+
+
+ Error Number:{0},State:{1},Class:{2}
+
+
+ ClientConnectionId before routing:{0}
+
+
+ Routing Destination:{0}
+
+
+ The currently loaded System.Transactions.dll does not support Global Transactions.
+
+
+ Null
+
+
+ Message
+
+
+ Arithmetic Overflow.
+
+
+ Divide by zero error encountered.
+
+
+ Data is Null. This method or property cannot be called on Null values.
+
+
+ Numeric arithmetic causes truncation.
+
+
+ SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
+
+
+ Two strings to be concatenated have different collation.
+
+
+ Two strings to be compared have different collation.
+
+
+ Invalid flag value.
+
+
+ Conversion from SqlDecimal to Decimal overflows.
+
+
+ Conversion overflows.
+
+
+ Invalid SqlDateTime.
+
+
+ A time zone was specified. SqlDateTime does not support time zones.
+
+
+ Invalid array size.
+
+
+ Invalid numeric precision/scale.
+
+
+ The input wasn't in a correct format.
+
+
+ An error occurred while reading.
+
+
+ Data returned is larger than 2Gb in size. Use SequentialAccess command behavior in order to get all of the data.
+
+
+ SQL Type has not been loaded with data.
+
+
+ SQL Type has already been loaded with data.
+
+
+ Invalid attempt to access a closed XmlReader.
+
+
+ Invalid attempt to call {0} when the stream is closed.
+
+
+ Invalid attempt to call {0} when the stream non-writable.
+
+
+ Invalid attempt to call {0} when the stream non-readable.
+
+
+ Invalid attempt to call {0} when the stream is non-seekable.
+
+
+ Subclass did not override a required method.
+
+
+ no UDT attribute
+
+
+ Specified type is not registered on the target server. {0}.
+
+
+ Internal Error
+
+
+ Operation aborted.
+
+
+ Operation aborted due to an exception (see InnerException for details).
+
+
+ The transaction associated with the current connection has completed but has not been disposed. The transaction must be disposed before the connection can be used to execute SQL statements.
+
+
+ ParameterDirection '{0}' specified for parameter '{1}' is not supported. Table-valued parameters only support ParameterDirection.Input.
+
+
+ DBNull value for parameter '{0}' is not supported. Table-valued parameters cannot be DBNull.
+
+
+ TypeName specified for parameter '{0}'. TypeName must only be set for Structured parameters.
+
+
+ DateType column for field '{0}' in schema table is null. DataType must be non-null.
+
+
+ Invalid column ordinals in schema table. ColumnOrdinals, if present, must not have duplicates or gaps.
+
+
+ Metadata for field '{0}' of record '{1}' did not match the original record's metadata.
+
+
+ Number of fields in record '{0}' does not match the number in the original record.
+
+
+ Global Transactions are not enabled for this Azure SQL Database. Please contact Azure SQL Database support for assistance.
+
+
+ Unrecognized System.Transactions.IsolationLevel enumeration value: {0}.
+
+
+ This SqlCommand object is already associated with another SqlDependency object.
+
+
+ The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported. Please enable the Service Broker for this database if you wish to use notifications.
+
+
+ When using SqlDependency without providing an options value, SqlDependency.Start() must be called prior to execution of a command added to the SqlDependency instance.
+
+
+ When using SqlDependency without providing an options value, SqlDependency.Start() must be called for each server that is being executed against.
+
+
+ SqlDependency.Start has been called for the server the command is executing against more than once, but there is no matching server/user/database Start() call for current command.
+
+
+ SqlDependency.OnChange does not support multiple event registrations for the same delegate.
+
+
+ No SqlDependency exists for the key.
+
+
+ Timeout specified is invalid. Timeout cannot be < 0.
+
+
+ SqlDependency does not support calling Start() with different connection strings having the same server, user, and database in the same app domain.
+
+
+ The dbType {0} is invalid for this constructor.
+
+
+ The name is too long.
+
+
+ The sort order and ordinal must either both be specified, or neither should be specified (SortOrder.Unspecified and -1). The values given were: order = {0}, ordinal = {1}.
+
+
+ The type of column '{0}' is not supported. The type is '{1}'
+
+
+ There are not enough fields in the Structured type. Structured types must have at least one field.
+
+
+ The sort ordinal {0} was specified twice.
+
+
+ The sort ordinal {0} was not specified.
+
+
+ The sort ordinal {0} on field {1} exceeds the total number of fields.
+
+
+ range: 0-8000
+
+
+ unexpected error encountered in SqlClient data provider. {0}
+
+
+ UdtTypeName property must be set only for UDT parameters.
+
+
+ UdtTypeName property must be set for UDT parameters.
+
+
+ '{0}' is an invalid user defined type, reason: {1}.
+
+
+ SqlParameter.UdtTypeName is an invalid multipart name
+
+
+ Invalid 3 part name format for UdtTypeName.
+
+
+ There are no records in the SqlDataRecord enumeration. To send a table-valued parameter with no rows, use a null reference for the value instead.
+
+
+ I/O Error detected in read/write operation
+
+
+ Connection was terminated
+
+
+ Asynchronous operations not supported
+
+
+ Invalid parameter(s) found
+
+
+ Unsupported protocol specified
+
+
+ Invalid connection found when setting up new session protocol
+
+
+ Protocol not supported
+
+
+ Associating port with I/O completion mechanism failed
+
+
+ Timeout error
+
+
+ No server name supplied
+
+
+ TerminateListener() has been called
+
+
+ Win9x not supported
+
+
+ Function not supported
+
+
+ Shared-Memory heap error
+
+
+ Cannot find an ip/ipv6 type address to connect
+
+
+ Connection has been closed by peer
+
+
+ Physical connection is not usable
+
+
+ Connection has been closed
+
+
+ Encryption is enforced but there is no valid certificate
+
+
+ Couldn't load library
+
+
+ Cannot open a new thread in server process
+
+
+ Cannot post event to completion port
+
+
+ Connection string is not valid
+
+
+ Error Locating Server/Instance Specified
+
+
+ Error getting enabled protocols list from registry
+
+
+ Server doesn't support requested protocol
+
+
+ Shared Memory is not supported for clustered server connectivity
+
+
+ Invalid attempt bind to shared memory segment
+
+
+ Encryption(ssl/tls) handshake failed
+
+
+ Packet size too large for SSL Encrypt/Decrypt operations
+
+
+ SSRP error
+
+
+ Could not connect to the Shared Memory pipe
+
+
+ An internal exception was caught
+
+
+ The Shared Memory dll used to connect to SQL Server 2000 was not found
+
+
+ The SQL Server 2000 Shared Memory client dll appears to be invalid/corrupted
+
+
+ Cannot open a Shared Memory connection to SQL Server 2000
+
+
+ Shared memory connectivity to SQL Server 2000 is either disabled or not available on this machine
+
+
+ Could not open a connection to SQL Server
+
+
+ Cannot open a Shared Memory connection to a remote SQL server
+
+
+ Could not establish dedicated administrator connection (DAC) on default port. Make sure that DAC is enabled
+
+
+ An error occurred while obtaining the dedicated administrator connection (DAC) port. Make sure that SQL Browser is running, or check the error log for the port number
+
+
+ Could not compose Service Principal Name (SPN) for Windows Integrated Authentication. Possible causes are server(s) incorrectly specified to connection API calls, Domain Name System (DNS) lookup failure or memory shortage
+
+
+ Connecting with the MultiSubnetFailover connection option to a SQL Server instance configured with more than 64 IP addresses is not supported.
+
+
+ Connecting to a named SQL Server instance using the MultiSubnetFailover connection option is not supported.
+
+
+ Connecting to a SQL Server instance using the MultiSubnetFailover connection option is only supported when using the TCP protocol.
+
+
+ Local Database Runtime error occurred.
+
+
+ An instance name was not specified while connecting to a Local Database Runtime. Specify an instance name in the format (localdb)\instance_name.
+
+
+ Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.
+
+
+ Invalid Local Database Runtime registry configuration found. Verify that SQL Server Express is properly installed.
+
+
+ Unable to locate the registry entry for SQLUserInstance.dll file path. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.
+
+
+ Registry value contains an invalid SQLUserInstance.dll file path. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.
+
+
+ Unable to load the SQLUserInstance.dll from the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.
+
+
+ Invalid SQLUserInstance.dll found at the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.
+
+
+ A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.
+
+
+ The client was unable to establish a connection because of an error during connection initialization process before login. Possible causes include the following: the client tried to connect to an unsupported version of SQL Server; the server was too busy ...
+
+
+ A connection was successfully established with the server, but then an error occurred during the pre-login handshake.
+
+
+ A connection was successfully established with the server, but then an error occurred when obtaining the security/SSPI context information for integrated security login.
+
+
+ A connection was successfully established with the server, but then an error occurred during the login process.
+
+
+ Connection open and login was successful, but then an error occurred while enabling MARS for this connection.
+
+
+ Connection open and login was successful, but then an error occurred while enlisting the connection into the current distributed transaction.
+
+
+ Failed to establish a MARS session in preparation to send the request to the server.
+
+
+ A transport-level error has occurred when sending the request to the server.
+
+
+ A transport-level error has occurred when receiving results from the server.
+
+
+ A transport-level error has occurred during connection clean-up.
+
+
+ A transport-level error has occurred while sending information to the server.
+
+
+ A transport-level error has occurred during SSPI handshake.
+
+
+ Local Database Runtime: Cannot load SQLUserInstance.dll.
+
+
+ Invalid SQLUserInstance.dll found at the location specified in the registry. Verify that the Local Database Runtime feature of SQL Server Express is properly installed.
+
+
+ Cannot obtain Local Database Runtime error message
+
+
+ Two or more redirections have occurred. Only one redirection per login is allowed.
+
+
+ Connecting to a mirrored SQL Server instance using the ApplicationIntent ReadOnly connection option is not supported.
+
+
+ Unexpected routing information received.
+
+
+ Invalid routing information received.
+
+
+ Server provided routing information, but timeout already expired.
+
+
+ Invalid ConnectRetryCount value (should be 0-255).
+
+
+ Invalid ConnectRetryInterval value (should be 1-60).
+
+
+ Next reconnection attempt will exceed query timeout. Reconnection was terminated.
+
+
+ The server did not preserve SSL encryption during a recovery attempt, connection recovery is not possible.
+
+
+ The server did not preserve the exact client TDS version requested during a recovery attempt, connection recovery is not possible.
+
+
+ The connection is broken and recovery is not possible. The client driver attempted to recover the connection one or more times and all attempts failed. Increase the value of ConnectRetryCount to increase the number of recovery attempts.
+
+
+ The connection is broken and recovery is not possible. The connection is marked by the server as unrecoverable. No attempt was made to restore the connection.
+
+
+ The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection.
+
+
+ The server did not acknowledge a recovery attempt, connection recovery is not possible.
+
+
+ The keyword '{0}' is not supported on this platform.
+
+
+ The server is attempting to use a feature that is not supported on this platform.
+
+
+ Received an unsupported token '{0}' while reading data from the server.
+
+
+ Type {0} is not supported on this platform.
+
+
+ The keyword 'Network Library' is not supported on this platform, prefix the 'Data Source' with the protocol desired instead ('tcp:' for a TCP connection, or 'np:' for a Named Pipe connection).
+
+
+ HTTP Provider
+
+
+ Named Pipes Provider
+
+
+ Session Provider
+
+
+ Sign Provider
+
+
+ Shared Memory Provider
+
+
+ SMux Provider
+
+
+ SSL Provider
+
+
+ TCP Provider
+
+
+
+
+
+ SQL Network Interfaces
+
+
+ .database.windows.net
+
+
+ .database.cloudapi.de
+
+
+ .database.usgovcloudapi.net
+
+
+ .database.chinacloudapi.cn
+
+
+ GSSAPI operation failed with error - {0} ({1}).
+
+
+ GSSAPI operation failed with status: {0} (Minor status: {1}).
+
+
+ GSSAPI operation failed with error - {0}.
+
+
+ GSSAPI operation failed with status: {0}.
+
+
+ NTLM authentication requires the GSSAPI plugin 'gss-ntlmssp'.
+
+
+ NTLM authentication is not possible with default credentials on this platform.
+
+
+ Target name should be non empty if default credentials are passed.
+
+
+ Server implementation is not supported
+
+
+ Requested protection level is not supported with the GSSAPI implementation currently installed.
+
+
+ Insufficient buffer space. Required: {0} Actual: {1}.
+
+
+ Protocol error: A received message contains a valid signature but it was not encrypted as required by the effective Protection Level.
+
+
+ The requested security package is not supported.
+
+
+ {0} failed with error {1}.
+
+
+ This method is not implemented by this class.
+
+
+ {0} returned {1}.
+
+
+ The specified value is not valid in the '{0}' enumeration.
+
+
+ '{0}' is not a supported handle type.
+
+
+ LocalDB is not supported on this platform.
+
+
+ System.Data.SqlClient is not supported on this platform.
+
+
+ Precision '{0}' required to send all values in column '{1}' exceeds the maximum supported precision '{2}'. The values must all fit in a single precision.
+
+
+ The size of column '{0}' is not supported. The size is {1}.
+
+
+ The metadata XML is invalid. The {1} column of the {0} collection must contain a non-empty string.
+
+
+ There are multiple collections named '{0}'.
+
+
+ The metadata XML is invalid. The {0} collection must contain a {1} column and it must be a string column.
+
+
+ The metadata XML is invalid.
+
+
+ The schema table contains no columns.
+
+
+ Unable to build the '{0}' collection because execution of the SQL query failed. See the inner exception for details.
+
+
+ More restrictions were provided than the requested schema ('{0}') supports.
+
+
+ The collection '{0}' is missing from the metadata XML.
+
+
+ The requested collection ({0}) is not defined.
+
+
+ The requested collection ({0}) is not supported by this version of the provider.
+
+
+ One or more of the required columns of the restrictions collection is missing.
+
+
+ A restriction exists for which there is no matching row in the restrictions collection.
+
+
+ The DataSourceInformation table must contain exactly one row.
+
+
+ One of the required DataSourceInformation tables columns is missing.
+
+
+ The collection name '{0}' matches at least two collections with the same name but with different case, but does not match any of them exactly.
+
+
+ Unable to build schema collection '{0}';
+
+
+ The length of argument '{0}' exceeds its limit of '{1}'.
+
+
+ {0} must be marked as read only.
+
+
+ Cannot use Credential with UserID, UID, Password, or PWD connection string keywords.
+
+
+ Cannot use Credential with Integrated Security connection string keyword.
+
+
+ The '{0}' argument must not be null or empty.
+
+
+ ChangePassword can only be used with SQL authentication, not with integrated security.
+
+
+ ChangePassword requires SQL Server 9.0 or later.
+
+
+ The keyword '{0}' must not be specified in the connectionString argument to ChangePassword.
+
+
+ Internal connection fatal error. Error state: {0}.
+
+
+ Internal connection fatal error. Error state: {0}, Value: {1}.
+
+
+ Cannot set the AccessToken property if the 'Integrated Security' connection string keyword has been set to 'true' or 'SSPI'.
+
+
+ Cannot set the AccessToken property if 'UserID', 'UID', 'Password', or 'PWD' has been specified in connection string.
+
+
+ Cannot set the Credential property if the AccessToken property is already set.
+
+
+ Internal connection fatal error. Error state: {0}, Feature Id: {1}.
+
+
+ Internal connection fatal error. Error state: {0}, Authentication Library Type: {1}.
+
+
+ The path name is not valid.
+
+
+ The path name is invalid or does not point to a disk file.
+
+
+ The process cannot access the file specified because it has been opened in another transaction.
+
+
+ An invalid parameter was passed to the function.
+
+
+ SqlFileStream is not supported on this platform.
+
+
+
+ Provides support for efficiently using Tasks to implement the APM (Begin/End) pattern.
+
+
+
+
+ Marshals the Task as an IAsyncResult, using the supplied callback and state
+ to implement the APM pattern.
+
+ The Task to be marshaled.
+ The callback to be invoked upon completion.
+ The state to be stored in the IAsyncResult.
+ An IAsyncResult to represent the task's asynchronous operation.
+
+
+ Processes an IAsyncResult returned by Begin.
+ The IAsyncResult to unwrap.
+
+
+ Processes an IAsyncResult returned by Begin.
+ The IAsyncResult to unwrap.
+
+
+ Invokes the callback asynchronously when the task has completed.
+ The Task to await.
+ The callback to invoke when the Task completes.
+ The Task used as the IAsyncResult.
+
+
+
+ Provides a simple IAsyncResult that wraps a Task. This, in effect, allows
+ for overriding what's seen for the CompletedSynchronously and AsyncState values.
+
+
+
+ The wrapped Task.
+
+
+ The new AsyncState value.
+
+
+ The new CompletedSynchronously value.
+
+
+ Initializes the IAsyncResult with the Task to wrap and the overriding AsyncState and CompletedSynchronously values.
+ The Task to wrap.
+ The new AsyncState value
+ The new CompletedSynchronously value.
+
+
+ Contains internal path helpers that are shared between many projects.
+
+
+
+ Returns true if the given character is a valid drive letter
+
+
+
+
+ Adds the extended path prefix (\\?\) if not already a device path, IF the path is not relative,
+ AND the path is more than 259 characters. (> MAX_PATH + null). This will also insert the extended
+ prefix if the path ends with a period or a space. Trailing periods and spaces are normally eaten
+ away from paths during normalization, but if we see such a path at this point it should be
+ normalized and has retained the final characters. (Typically from one of the *Info classes)
+
+
+
+
+ Adds the extended path prefix (\\?\) if not relative or already a device path.
+
+
+
+
+ Returns true if the path uses any of the DOS device path syntaxes. ("\\.\", "\\?\", or "\??\")
+
+
+
+
+ Returns true if the path is a device UNC (\\?\UNC\, \\.\UNC\)
+
+
+
+
+ Returns true if the path uses the canonical form of extended syntax ("\\?\" or "\??\"). If the
+ path matches exactly (cannot use alternate directory separators) Windows will skip normalization
+ and path length checks.
+
+
+
+
+ Check for known wildcard characters. '*' and '?' are the most common ones.
+
+
+
+
+ Gets the length of the root of the path (drive, share, etc.).
+
+
+
+
+ Returns true if the path specified is relative to the current drive or working directory.
+ Returns false if the path is fixed to a specific drive or UNC path. This method does no
+ validation of the path (URIs will be returned as relative as a result).
+
+
+ Handles paths that use the alternate directory separator. It is a frequent mistake to
+ assume that rooted paths (Path.IsPathRooted) are not relative. This isn't the case.
+ "C:a" is drive relative- meaning that it will be resolved against the current directory
+ for C: (rooted, but relative). "C:\a" is rooted and not relative (the current directory
+ will not be used to modify the path).
+
+
+
+
+ True if the given character is a directory separator.
+
+
+
+
+ Normalize separators in the given path. Converts forward slashes into back slashes and compresses slash runs, keeping initial 2 if present.
+ Also trims initial whitespace in front of "rooted" paths (see PathStartSkip).
+
+ This effectively replicates the behavior of the legacy NormalizePath when it was called with fullCheck=false and expandShortpaths=false.
+ The current NormalizePath gets directory separator normalization from Win32's GetFullPathName(), which will resolve relative paths and as
+ such can't be used here (and is overkill for our uses).
+
+ Like the current NormalizePath this will not try and analyze periods/spaces within directory segments.
+
+
+ The only callers that used to use Path.Normalize(fullCheck=false) were Path.GetDirectoryName() and Path.GetPathRoot(). Both usages do
+ not need trimming of trailing whitespace here.
+
+ GetPathRoot() could technically skip normalizing separators after the second segment- consider as a future optimization.
+
+ For legacy desktop behavior with ExpandShortPaths:
+ - It has no impact on GetPathRoot() so doesn't need consideration.
+ - It could impact GetDirectoryName(), but only if the path isn't relative (C:\ or \\Server\Share).
+
+ In the case of GetDirectoryName() the ExpandShortPaths behavior was undocumented and provided inconsistent results if the path was
+ fixed/relative. For example: "C:\PROGRA~1\A.TXT" would return "C:\Program Files" while ".\PROGRA~1\A.TXT" would return ".\PROGRA~1". If you
+ ultimately call GetFullPath() this doesn't matter, but if you don't or have any intermediate string handling could easily be tripped up by
+ this undocumented behavior.
+
+ We won't match this old behavior because:
+
+ 1. It was undocumented
+ 2. It was costly (extremely so if it actually contained '~')
+ 3. Doesn't play nice with string logic
+ 4. Isn't a cross-plat friendly concept/behavior
+
+
+
+
+ Returns true if the path is effectively empty for the current OS.
+ For unix, this is empty or null. For Windows, this is empty, null, or
+ just spaces ((char)32).
+
+
+
+
+ Get a pinnable reference to the builder.
+ Does not ensure there is a null char after
+ This overload is pattern matched in the C# 7.3+ compiler so you can omit
+ the explicit method call, and write eg "fixed (char* c = builder)"
+
+
+
+
+ Get a pinnable reference to the builder.
+
+ Ensures that the builder has a null char after
+
+
+ Returns the underlying storage of the builder.
+
+
+
+ Returns a span around the contents of the builder.
+
+ Ensures that the builder has a null char after
+
+
+
+ Resize the internal buffer either by doubling current buffer size or
+ by adding to
+ whichever is greater.
+
+
+ Number of chars requested beyond current position.
+
+
+
+ Provides logging facilities for System.Net libraries.
+
+
+ The single event source instance to use for all logging.
+
+
+ Logs entrance to a method.
+ `this`, or another object that serves to provide context for the operation.
+ A description of the entrance, including any arguments to the call.
+ The calling member.
+
+
+ Logs entrance to a method.
+ `this`, or another object that serves to provide context for the operation.
+ The object to log.
+ The calling member.
+
+
+ Logs entrance to a method.
+ `this`, or another object that serves to provide context for the operation.
+ The first object to log.
+ The second object to log.
+ The calling member.
+
+
+ Logs entrance to a method.
+ `this`, or another object that serves to provide context for the operation.
+ The first object to log.
+ The second object to log.
+ The third object to log.
+ The calling member.
+
+
+ Logs exit from a method.
+ `this`, or another object that serves to provide context for the operation.
+ A description of the exit operation, including any return values.
+ The calling member.
+
+
+ Logs exit from a method.
+ `this`, or another object that serves to provide context for the operation.
+ A return value from the member.
+ The calling member.
+
+
+ Logs exit from a method.
+ `this`, or another object that serves to provide context for the operation.
+ A return value from the member.
+ A second return value from the member.
+ The calling member.
+
+
+ Logs an information message.
+ `this`, or another object that serves to provide context for the operation.
+ The message to be logged.
+ The calling member.
+
+
+ Logs an information message.
+ `this`, or another object that serves to provide context for the operation.
+ The message to be logged.
+ The calling member.
+
+
+ Logs an error message.
+ `this`, or another object that serves to provide context for the operation.
+ The message to be logged.
+ The calling member.
+
+
+ Logs an error message.
+ `this`, or another object that serves to provide context for the operation.
+ The message to be logged.
+ The calling member.
+
+
+ Logs a fatal error and raises an assert.
+ `this`, or another object that serves to provide context for the operation.
+ The message to be logged.
+ The calling member.
+
+
+ Logs a fatal error and raises an assert.
+ `this`, or another object that serves to provide context for the operation.
+ The message to be logged.
+ The calling member.
+
+
+ Logs the contents of a buffer.
+ `this`, or another object that serves to provide context for the operation.
+ The buffer to be logged.
+ The calling member.
+
+
+ Logs the contents of a buffer.
+ `this`, or another object that serves to provide context for the operation.
+ The buffer to be logged.
+ The starting offset from which to log.
+ The number of bytes to log.
+ The calling member.
+
+
+ Logs the contents of a buffer.
+ `this`, or another object that serves to provide context for the operation.
+ The starting location of the buffer to be logged.
+ The number of bytes to log.
+ The calling member.
+
+
+ Logs a relationship between two objects.
+ The first object.
+ The second object.
+ The calling member.
+
+
+ Logs a relationship between two objects.
+ `this`, or another object that serves to provide context for the operation.
+ The first object.
+ The second object.
+ The calling member.
+
+
+
+ Is this a fixed size field?
+
+
+
+
+ The maximum size of the field (in bytes or characters depending on the field type)
+ or -1 if the size can be unlimited.
+
+
+
+
+ Precision, only valid for numeric types.
+
+
+
+
+ Scale, only valid for numeric types.
+
+
+
+
+ Is this field nullable?
+
+
+
+
+ RequiredAccess.
+ Indicates the type of access that a caller must request when opening the file object that represents the device (see IRP_MJ_CREATE).
+
+
+
+
+ The I/O manager sends the IRP for any caller that has a handle to the file object that represents the target device object.
+
+
+
+
+ The I/O manager sends the IRP only for a caller with read access rights, allowing the underlying device driver to transfer
+ data from the device to system memory.
+
+
+
+
+ The I/O manager sends the IRP only for a caller with write access rights, allowing the underlying device driver to transfer
+ data from system memory to its device.
+
+
+
+ CTL_CODE method.
+ Identifies the device type. This value must match the value that is set in the DeviceType member of the driver's DEVICE_OBJECT structure.
+ Identifies the function to be performed by the driver. Values of less than 0x800 are reserved for Microsoft. Values of 0x800 and higher can be used by vendors.
+ Indicates how the system will pass data between the caller of DeviceIoControl (or IoBuildDeviceIoControlRequest) and the driver that handles the IRP.
+ Indicates the type of access that a caller must request when opening the file object that represents the device (see IRP_MJ_CREATE).
+
+
+
+ TransferType.
+ Indicates how the system will pass data between the caller of DeviceIoControl (or IoBuildDeviceIoControlRequest) and the driver that handles the IRP.
+
+
+
+
+ Specifies the buffered I/O method, which is typically used for transferring small amounts of data per request.
+ Most I/O control codes for device and intermediate drivers use this TransferType value.
+
+
+
+
+ Specifies the direct I/O method, which is typically used for reading or writing large amounts of data, using DMA or PIO, that must be transferred quickly.
+ Specify METHOD_IN_DIRECT if the caller of DeviceIoControl or IoBuildDeviceIoControlRequest will pass data to the driver.
+
+
+
+
+ Specifies the direct I/O method, which is typically used for reading or writing large amounts of data, using DMA or PIO, that must be transferred quickly.
+ Specify METHOD_OUT_DIRECT if the caller of DeviceIoControl or IoBuildDeviceIoControlRequest will receive data from the driver.
+
+
+
+
+ Specifies neither buffered nor direct I/O. The I/O manager does not provide any system buffers or MDLs. The IRP supplies the user-mode virtual addresses
+ of the input and output buffers that were specified to DeviceIoControl or IoBuildDeviceIoControlRequest, without validating or mapping them.
+
+
+
+
+ Length in bytes, not including the null terminator, if any.
+
+
+
+
+ Max size of the buffer in bytes
+
+
+
+
+ OBJECT_ATTRIBUTES structure.
+ The OBJECT_ATTRIBUTES structure specifies attributes that can be applied to objects or object handles by routines
+ that create objects and/or return handles to objects.
+
+
+
+
+ Optional handle to root object directory for the given ObjectName.
+ Can be a file system directory or object manager directory.
+
+
+
+
+ Name of the object. Must be fully qualified if RootDirectory isn't set.
+ Otherwise is relative to RootDirectory.
+
+
+
+
+ If null, object will receive default security settings.
+
+
+
+
+ Optional quality of service to be applied to the object. Used to indicate
+ security impersonation level and context tracking mode (dynamic or static).
+
+
+
+
+ Equivalent of InitializeObjectAttributes macro with the exception that you can directly set SQOS.
+
+
+
+
+ This handle can be inherited by child processes of the current process.
+
+
+
+
+ This flag only applies to objects that are named within the object manager.
+ By default, such objects are deleted when all open handles to them are closed.
+ If this flag is specified, the object is not deleted when all open handles are closed.
+
+
+
+
+ Only a single handle can be open for this object.
+
+
+
+
+ Lookups for this object should be case insensitive.
+
+
+
+
+ Create on existing object should open, not fail with STATUS_OBJECT_NAME_COLLISION.
+
+
+
+
+ Open the symbolic link, not its target.
+
+
+
+
+ FILE_FULL_EA_INFORMATION structure.
+ Provides extended attribute (EA) information. This structure is used primarily by network drivers.
+
+
+
+
+ The offset of the next FILE_FULL_EA_INFORMATION-type entry. This member is zero if no other entries follow this one.
+
+
+
+
+ Can be zero or can be set with FILE_NEED_EA, indicating that the file to which the EA belongs cannot be interpreted without understanding the associated extended attributes.
+
+
+
+
+ The length in bytes of the EaName array. This value does not include a null-terminator to EaName.
+
+
+
+
+ The length in bytes of each EA value in the array.
+
+
+
+
+ Status
+
+
+
+
+ Request dependent value.
+
+
+
+
+ The completion status, either STATUS_SUCCESS if the operation was completed successfully or
+ some other informational, warning, or error status.
+
+
+
+
+ Reserved for internal use.
+
+
+
+
+ File creation disposition when calling directly to NT APIs.
+
+
+
+
+ Default. Replace or create. Deletes existing file instead of overwriting.
+
+
+ As this potentially deletes it requires that DesiredAccess must include Delete.
+ This has no equivalent in CreateFile.
+
+
+
+
+ Open if exists or fail if doesn't exist. Equivalent to OPEN_EXISTING or
+ .
+
+
+ TruncateExisting also uses Open and then manually truncates the file
+ by calling NtSetInformationFile with FileAllocationInformation and an
+ allocation size of 0.
+
+
+
+
+ Create if doesn't exist or fail if does exist. Equivalent to CREATE_NEW
+ or .
+
+
+
+
+ Open if exists or create if doesn't exist. Equivalent to OPEN_ALWAYS or
+ .
+
+
+
+
+ Open and overwrite if exists or fail if doesn't exist. Equivalent to
+ TRUNCATE_EXISTING or .
+
+
+
+
+ Open and overwrite if exists or create if doesn't exist. Equivalent to
+ CREATE_ALWAYS or .
+
+
+
+
+ Options for creating/opening files with NtCreateFile.
+
+
+
+
+ File being created or opened must be a directory file. Disposition must be FILE_CREATE, FILE_OPEN,
+ or FILE_OPEN_IF.
+
+
+ Can only be used with FILE_SYNCHRONOUS_IO_ALERT/NONALERT, FILE_WRITE_THROUGH, FILE_OPEN_FOR_BACKUP_INTENT,
+ and FILE_OPEN_BY_FILE_ID flags.
+
+
+
+
+ Applications that write data to the file must actually transfer the data into
+ the file before any requested write operation is considered complete. This flag
+ is set automatically if FILE_NO_INTERMEDIATE_BUFFERING is set.
+
+
+
+
+ All accesses to the file are sequential.
+
+
+
+
+ File cannot be cached in driver buffers. Cannot use with AppendData desired access.
+
+
+
+
+ All operations are performed synchronously. Any wait on behalf of the caller is
+ subject to premature termination from alerts.
+
+
+ Cannot be used with FILE_SYNCHRONOUS_IO_NONALERT.
+ Synchronous DesiredAccess flag is required. I/O system will maintain file position context.
+
+
+
+
+ All operations are performed synchronously. Waits in the system to synchronize I/O queuing
+ and completion are not subject to alerts.
+
+
+ Cannot be used with FILE_SYNCHRONOUS_IO_ALERT.
+ Synchronous DesiredAccess flag is required. I/O system will maintain file position context.
+
+
+
+
+ File being created or opened must not be a directory file. Can be a data file, device,
+ or volume.
+
+
+
+
+ Create a tree connection for this file in order to open it over the network.
+
+
+ Not used by device and intermediate drivers.
+
+
+
+
+ Complete the operation immediately with a success code of STATUS_OPLOCK_BREAK_IN_PROGRESS if
+ the target file is oplocked.
+
+
+ Not compatible with ReserveOpfilter or OpenRequiringOplock.
+ Not used by device and intermediate drivers.
+
+
+
+
+ If the extended attributes on an existing file being opened indicate that the caller must
+ understand extended attributes to properly interpret the file, fail the request.
+
+
+ Not used by device and intermediate drivers.
+
+
+
+
+ Accesses to the file can be random, so no sequential read-ahead operations should be performed
+ on the file by FSDs or the system.
+
+
+
+
+ Delete the file when the last handle to it is passed to NtClose. Requires Delete flag in
+ DesiredAccess parameter.
+
+
+
+
+ Open the file by reference number or object ID. The file name that is specified by the ObjectAttributes
+ name parameter includes the 8 or 16 byte file reference number or ID for the file in the ObjectAttributes
+ name field. The device name can optionally be prefixed.
+
+
+ NTFS supports both reference numbers and object IDs. 16 byte reference numbers are 8 byte numbers padded
+ with zeros. ReFS only supports reference numbers (not object IDs). 8 byte and 16 byte reference numbers
+ are not related. Note that as the UNICODE_STRING will contain raw byte data, it may not be a "valid" string.
+ Not used by device and intermediate drivers.
+
+
+ \??\C:\{8 bytes of binary FileID}
+ \device\HardDiskVolume1\{16 bytes of binary ObjectID}
+ {8 bytes of binary FileID}
+
+
+
+
+ The file is being opened for backup intent. Therefore, the system should check for certain access rights
+ and grant the caller the appropriate access to the file before checking the DesiredAccess parameter
+ against the file's security descriptor.
+
+
+ Not used by device and intermediate drivers.
+
+
+
+
+ When creating a file, specifies that it should not inherit the compression bit from the parent directory.
+
+
+
+
+ The file is being opened and an opportunistic lock (oplock) on the file is being requested as a single atomic
+ operation.
+
+
+ The file system checks for oplocks before it performs the create operation and will fail the create with a
+ return code of STATUS_CANNOT_BREAK_OPLOCK if the result would be to break an existing oplock.
+ Not compatible with CompleteIfOplocked or ReserveOpFilter. Windows 7 and up.
+
+
+
+
+ CreateFile2 uses this flag to prevent opening a file that you don't have access to without specifying
+ FILE_SHARE_READ. (Preventing users that can only read a file from denying access to other readers.)
+
+
+ Windows 7 and up.
+
+
+
+
+ The client opening the file or device is session aware and per session access is validated if necessary.
+
+
+ Windows 8 and up.
+
+
+
+
+ This flag allows an application to request a filter opportunistic lock (oplock) to prevent other applications
+ from getting share violations.
+
+
+ Not compatible with CompleteIfOplocked or OpenRequiringOplock.
+ If there are already open handles, the create request will fail with STATUS_OPLOCK_NOT_GRANTED.
+
+
+
+
+ Open a file with a reparse point attribute, bypassing the normal reparse point processing.
+
+
+
+
+ Causes files that are marked with the Offline attribute not to be recalled from remote storage.
+
+
+ More details can be found in Remote Storage documentation (see Basic Concepts).
+ https://technet.microsoft.com/en-us/library/cc938459.aspx
+
+
+
+
+ System.IO.FileAccess looks up these values when creating handles
+
+
+ File Security and Access Rights
+ https://msdn.microsoft.com/en-us/library/windows/desktop/aa364399.aspx
+
+
+
+
+ For a file, the right to read data from the file.
+
+
+ Directory version of this flag is .
+
+
+
+
+ For a directory, the right to list the contents.
+
+
+ File version of this flag is .
+
+
+
+
+ For a file, the right to write data to the file.
+
+
+ Directory version of this flag is .
+
+
+
+
+ For a directory, the right to create a file in a directory.
+
+
+ File version of this flag is .
+
+
+
+
+ For a file, the right to append data to a file. is needed
+ to overwrite existing data.
+
+
+ Directory version of this flag is .
+
+
+
+
+ For a directory, the right to create a subdirectory.
+
+
+ File version of this flag is .
+
+
+
+
+ For a named pipe, the right to create a pipe instance.
+
+
+
+
+ The right to read extended attributes.
+
+
+
+
+ The right to write extended attributes.
+
+
+
+
+ The right to execute the file.
+
+
+ Directory version of this flag is .
+
+
+
+
+ For a directory, the right to traverse the directory.
+
+
+ File version of this flag is .
+
+
+
+
+ For a directory, the right to delete a directory and all
+ the files it contains, including read-only files.
+
+
+
+
+ The right to read attributes.
+
+
+
+
+ The right to write attributes.
+
+
+
+
+ All standard and specific rights. [FILE_ALL_ACCESS]
+
+
+
+
+ The right to delete the object.
+
+
+
+
+ The right to read the information in the object's security descriptor.
+ Doesn't include system access control list info (SACL).
+
+
+
+
+ The right to modify the discretionary access control list (DACL) in the
+ object's security descriptor.
+
+
+
+
+ The right to change the owner in the object's security descriptor.
+
+
+
+
+ The right to use the object for synchronization. Enables a thread to wait until the object
+ is in the signaled state. This is required if opening a synchronous handle.
+
+
+
+
+ Same as READ_CONTROL.
+
+
+
+
+ Same as READ_CONTROL.
+
+
+
+
+ Same as READ_CONTROL.
+
+
+
+
+ Maps internally to | |
+ | | .
+ (For directories, | |
+ | | .)
+
+
+
+
+ Maps internally to | |
+ | | | .
+ (For directories, | | AddFile
+ | | | .)
+
+
+
+
+ Maps internally to | |
+ | .
+ (For directories, | |
+ | .)
+
+
+
+
diff --git a/bin/System.Memory.dll b/bin/System.Memory.dll
new file mode 100644
index 0000000..4617199
Binary files /dev/null and b/bin/System.Memory.dll differ
diff --git a/bin/System.Memory.xml b/bin/System.Memory.xml
new file mode 100644
index 0000000..4d12fd7
--- /dev/null
+++ b/bin/System.Memory.xml
@@ -0,0 +1,355 @@
+
+
+ System.Memory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/System.Numerics.Vectors.dll b/bin/System.Numerics.Vectors.dll
new file mode 100644
index 0000000..0865972
Binary files /dev/null and b/bin/System.Numerics.Vectors.dll differ
diff --git a/bin/System.Numerics.Vectors.xml b/bin/System.Numerics.Vectors.xml
new file mode 100644
index 0000000..da34d39
--- /dev/null
+++ b/bin/System.Numerics.Vectors.xml
@@ -0,0 +1,2621 @@
+
+
+ System.Numerics.Vectors
+
+
+
+ Represents a 3x2 matrix.
+
+
+ Creates a 3x2 matrix from the specified components.
+ The value to assign to the first element in the first row.
+ The value to assign to the second element in the first row.
+ The value to assign to the first element in the second row.
+ The value to assign to the second element in the second row.
+ The value to assign to the first element in the third row.
+ The value to assign to the second element in the third row.
+
+
+ Adds each element in one matrix with its corresponding element in a second matrix.
+ The first matrix.
+ The second matrix.
+ The matrix that contains the summed values of value1 and value2.
+
+
+ Creates a rotation matrix using the given rotation in radians.
+ The amount of rotation, in radians.
+ The rotation matrix.
+
+
+ Creates a rotation matrix using the specified rotation in radians and a center point.
+ The amount of rotation, in radians.
+ The center point.
+ The rotation matrix.
+
+
+ Creates a scaling matrix from the specified X and Y components.
+ The value to scale by on the X axis.
+ The value to scale by on the Y axis.
+ The scaling matrix.
+
+
+ Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center.
+ The uniform scale to use.
+ The center offset.
+ The scaling matrix.
+
+
+ Creates a scaling matrix that is offset by a given center point.
+ The value to scale by on the X axis.
+ The value to scale by on the Y axis.
+ The center point.
+ The scaling matrix.
+
+
+ Creates a scaling matrix that scales uniformly with the given scale.
+ The uniform scale to use.
+ The scaling matrix.
+
+
+ Creates a scaling matrix from the specified vector scale.
+ The scale to use.
+ The scaling matrix.
+
+
+ Creates a scaling matrix from the specified vector scale with an offset from the specified center point.
+ The scale to use.
+ The center offset.
+ The scaling matrix.
+
+
+ Creates a skew matrix from the specified angles in radians.
+ The X angle, in radians.
+ The Y angle, in radians.
+ The skew matrix.
+
+
+ Creates a skew matrix from the specified angles in radians and a center point.
+ The X angle, in radians.
+ The Y angle, in radians.
+ The center point.
+ The skew matrix.
+
+
+ Creates a translation matrix from the specified 2-dimensional vector.
+ The translation position.
+ The translation matrix.
+
+
+ Creates a translation matrix from the specified X and Y components.
+ The X position.
+ The Y position.
+ The translation matrix.
+
+
+ Returns a value that indicates whether this instance and another 3x2 matrix are equal.
+ The other matrix.
+ true if the two matrices are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false.
+
+
+ Calculates the determinant for this matrix.
+ The determinant.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Gets the multiplicative identity matrix.
+ The multiplicative identify matrix.
+
+
+ Inverts the specified matrix. The return value indicates whether the operation succeeded.
+ The matrix to invert.
+ When this method returns, contains the inverted matrix if the operation succeeded.
+ true if matrix was converted successfully; otherwise, false.
+
+
+ Indicates whether the current matrix is the identity matrix.
+ true if the current matrix is the identity matrix; otherwise, false.
+
+
+ Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix.
+ The first matrix.
+ The second matrix.
+ The relative weighting of matrix2.
+ The interpolated matrix.
+
+
+ The first element of the first row.
+
+
+
+ The second element of the first row.
+
+
+
+ The first element of the second row.
+
+
+
+ The second element of the second row.
+
+
+
+ The first element of the third row.
+
+
+
+ The second element of the third row.
+
+
+
+ Returns the matrix that results from multiplying two matrices together.
+ The first matrix.
+ The second matrix.
+ The product matrix.
+
+
+ Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor.
+ The matrix to scale.
+ The scaling value to use.
+ The scaled matrix.
+
+
+ Negates the specified matrix by multiplying all its values by -1.
+ The matrix to negate.
+ The negated matrix.
+
+
+ Adds each element in one matrix with its corresponding element in a second matrix.
+ The first matrix.
+ The second matrix.
+ The matrix that contains the summed values.
+
+
+ Returns a value that indicates whether the specified matrices are equal.
+ The first matrix to compare.
+ The second matrix to compare.
+ true if value1 and value2 are equal; otherwise, false.
+
+
+ Returns a value that indicates whether the specified matrices are not equal.
+ The first matrix to compare.
+ The second matrix to compare.
+ true if value1 and value2 are not equal; otherwise, false.
+
+
+ Returns the matrix that results from multiplying two matrices together.
+ The first matrix.
+ The second matrix.
+ The product matrix.
+
+
+ Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor.
+ The matrix to scale.
+ The scaling value to use.
+ The scaled matrix.
+
+
+ Subtracts each element in a second matrix from its corresponding element in a first matrix.
+ The first matrix.
+ The second matrix.
+ The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Negates the specified matrix by multiplying all its values by -1.
+ The matrix to negate.
+ The negated matrix.
+
+
+ Subtracts each element in a second matrix from its corresponding element in a first matrix.
+ The first matrix.
+ The second matrix.
+ The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Returns a string that represents this matrix.
+ The string representation of this matrix.
+
+
+ Gets or sets the translation component of this matrix.
+ The translation component of the current instance.
+
+
+ Represents a 4x4 matrix.
+
+
+ Creates a object from a specified object.
+ A 3x2 matrix.
+
+
+ Creates a 4x4 matrix from the specified components.
+ The value to assign to the first element in the first row.
+ The value to assign to the second element in the first row.
+ The value to assign to the third element in the first row.
+ The value to assign to the fourth element in the first row.
+ The value to assign to the first element in the second row.
+ The value to assign to the second element in the second row.
+ The value to assign to the third element in the second row.
+ The value to assign to the third element in the second row.
+ The value to assign to the first element in the third row.
+ The value to assign to the second element in the third row.
+ The value to assign to the third element in the third row.
+ The value to assign to the fourth element in the third row.
+ The value to assign to the first element in the fourth row.
+ The value to assign to the second element in the fourth row.
+ The value to assign to the third element in the fourth row.
+ The value to assign to the fourth element in the fourth row.
+
+
+ Adds each element in one matrix with its corresponding element in a second matrix.
+ The first matrix.
+ The second matrix.
+ The matrix that contains the summed values of value1 and value2.
+
+
+ Creates a spherical billboard that rotates around a specified object position.
+ The position of the object that the billboard will rotate around.
+ The position of the camera.
+ The up vector of the camera.
+ The forward vector of the camera.
+ The created billboard.
+
+
+ Creates a cylindrical billboard that rotates around a specified axis.
+ The position of the object that the billboard will rotate around.
+ The position of the camera.
+ The axis to rotate the billboard around.
+ The forward vector of the camera.
+ The forward vector of the object.
+ The billboard matrix.
+
+
+ Creates a matrix that rotates around an arbitrary vector.
+ The axis to rotate around.
+ The angle to rotate around axis, in radians.
+ The rotation matrix.
+
+
+ Creates a rotation matrix from the specified Quaternion rotation value.
+ The source Quaternion.
+ The rotation matrix.
+
+
+ Creates a rotation matrix from the specified yaw, pitch, and roll.
+ The angle of rotation, in radians, around the Y axis.
+ The angle of rotation, in radians, around the X axis.
+ The angle of rotation, in radians, around the Z axis.
+ The rotation matrix.
+
+
+ Creates a view matrix.
+ The position of the camera.
+ The target towards which the camera is pointing.
+ The direction that is "up" from the camera's point of view.
+ The view matrix.
+
+
+ Creates an orthographic perspective matrix from the given view volume dimensions.
+ The width of the view volume.
+ The height of the view volume.
+ The minimum Z-value of the view volume.
+ The maximum Z-value of the view volume.
+ The orthographic projection matrix.
+
+
+ Creates a customized orthographic projection matrix.
+ The minimum X-value of the view volume.
+ The maximum X-value of the view volume.
+ The minimum Y-value of the view volume.
+ The maximum Y-value of the view volume.
+ The minimum Z-value of the view volume.
+ The maximum Z-value of the view volume.
+ The orthographic projection matrix.
+
+
+ Creates a perspective projection matrix from the given view volume dimensions.
+ The width of the view volume at the near view plane.
+ The height of the view volume at the near view plane.
+ The distance to the near view plane.
+ The distance to the far view plane.
+ The perspective projection matrix.
+ nearPlaneDistance is less than or equal to zero.
+ -or-
+ farPlaneDistance is less than or equal to zero.
+ -or-
+ nearPlaneDistance is greater than or equal to farPlaneDistance.
+
+
+ Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances.
+ The field of view in the y direction, in radians.
+ The aspect ratio, defined as view space width divided by height.
+ The distance to the near view plane.
+ The distance to the far view plane.
+ The perspective projection matrix.
+ fieldOfView is less than or equal to zero.
+ -or-
+ fieldOfView is greater than or equal to .
+ nearPlaneDistance is less than or equal to zero.
+ -or-
+ farPlaneDistance is less than or equal to zero.
+ -or-
+ nearPlaneDistance is greater than or equal to farPlaneDistance.
+
+
+ Creates a customized perspective projection matrix.
+ The minimum x-value of the view volume at the near view plane.
+ The maximum x-value of the view volume at the near view plane.
+ The minimum y-value of the view volume at the near view plane.
+ The maximum y-value of the view volume at the near view plane.
+ The distance to the near view plane.
+ The distance to the far view plane.
+ The perspective projection matrix.
+ nearPlaneDistance is less than or equal to zero.
+ -or-
+ farPlaneDistance is less than or equal to zero.
+ -or-
+ nearPlaneDistance is greater than or equal to farPlaneDistance.
+
+
+ Creates a matrix that reflects the coordinate system about a specified plane.
+ The plane about which to create a reflection.
+ A new matrix expressing the reflection.
+
+
+ Creates a matrix for rotating points around the X axis.
+ The amount, in radians, by which to rotate around the X axis.
+ The rotation matrix.
+
+
+ Creates a matrix for rotating points around the X axis from a center point.
+ The amount, in radians, by which to rotate around the X axis.
+ The center point.
+ The rotation matrix.
+
+
+ The amount, in radians, by which to rotate around the Y axis from a center point.
+ The amount, in radians, by which to rotate around the Y-axis.
+ The center point.
+ The rotation matrix.
+
+
+ Creates a matrix for rotating points around the Y axis.
+ The amount, in radians, by which to rotate around the Y-axis.
+ The rotation matrix.
+
+
+ Creates a matrix for rotating points around the Z axis.
+ The amount, in radians, by which to rotate around the Z-axis.
+ The rotation matrix.
+
+
+ Creates a matrix for rotating points around the Z axis from a center point.
+ The amount, in radians, by which to rotate around the Z-axis.
+ The center point.
+ The rotation matrix.
+
+
+ Creates a scaling matrix from the specified vector scale.
+ The scale to use.
+ The scaling matrix.
+
+
+ Creates a uniform scaling matrix that scale equally on each axis.
+ The uniform scaling factor.
+ The scaling matrix.
+
+
+ Creates a scaling matrix with a center point.
+ The vector that contains the amount to scale on each axis.
+ The center point.
+ The scaling matrix.
+
+
+ Creates a uniform scaling matrix that scales equally on each axis with a center point.
+ The uniform scaling factor.
+ The center point.
+ The scaling matrix.
+
+
+ Creates a scaling matrix from the specified X, Y, and Z components.
+ The value to scale by on the X axis.
+ The value to scale by on the Y axis.
+ The value to scale by on the Z axis.
+ The scaling matrix.
+
+
+ Creates a scaling matrix that is offset by a given center point.
+ The value to scale by on the X axis.
+ The value to scale by on the Y axis.
+ The value to scale by on the Z axis.
+ The center point.
+ The scaling matrix.
+
+
+ Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source.
+ The direction from which the light that will cast the shadow is coming.
+ The plane onto which the new matrix should flatten geometry so as to cast a shadow.
+ A new matrix that can be used to flatten geometry onto the specified plane from the specified direction.
+
+
+ Creates a translation matrix from the specified 3-dimensional vector.
+ The amount to translate in each axis.
+ The translation matrix.
+
+
+ Creates a translation matrix from the specified X, Y, and Z components.
+ The amount to translate on the X axis.
+ The amount to translate on the Y axis.
+ The amount to translate on the Z axis.
+ The translation matrix.
+
+
+ Creates a world matrix with the specified parameters.
+ The position of the object.
+ The forward direction of the object.
+ The upward direction of the object. Its value is usually [0, 1, 0].
+ The world matrix.
+
+
+ Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded.
+ The source matrix.
+ When this method returns, contains the scaling component of the transformation matrix if the operation succeeded.
+ When this method returns, contains the rotation component of the transformation matrix if the operation succeeded.
+ When the method returns, contains the translation component of the transformation matrix if the operation succeeded.
+ true if matrix was decomposed successfully; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and another 4x4 matrix are equal.
+ The other matrix.
+ true if the two matrices are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false.
+
+
+ Calculates the determinant of the current 4x4 matrix.
+ The determinant.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Gets the multiplicative identity matrix.
+ Gets the multiplicative identity matrix.
+
+
+ Inverts the specified matrix. The return value indicates whether the operation succeeded.
+ The matrix to invert.
+ When this method returns, contains the inverted matrix if the operation succeeded.
+ true if matrix was converted successfully; otherwise, false.
+
+
+ Indicates whether the current matrix is the identity matrix.
+ true if the current matrix is the identity matrix; otherwise, false.
+
+
+ Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix.
+ The first matrix.
+ The second matrix.
+ The relative weighting of matrix2.
+ The interpolated matrix.
+
+
+ The first element of the first row.
+
+
+
+ The second element of the first row.
+
+
+
+ The third element of the first row.
+
+
+
+ The fourth element of the first row.
+
+
+
+ The first element of the second row.
+
+
+
+ The second element of the second row.
+
+
+
+ The third element of the second row.
+
+
+
+ The fourth element of the second row.
+
+
+
+ The first element of the third row.
+
+
+
+ The second element of the third row.
+
+
+
+ The third element of the third row.
+
+
+
+ The fourth element of the third row.
+
+
+
+ The first element of the fourth row.
+
+
+
+ The second element of the fourth row.
+
+
+
+ The third element of the fourth row.
+
+
+
+ The fourth element of the fourth row.
+
+
+
+ Returns the matrix that results from multiplying two matrices together.
+ The first matrix.
+ The second matrix.
+ The product matrix.
+
+
+ Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor.
+ The matrix to scale.
+ The scaling value to use.
+ The scaled matrix.
+
+
+ Negates the specified matrix by multiplying all its values by -1.
+ The matrix to negate.
+ The negated matrix.
+
+
+ Adds each element in one matrix with its corresponding element in a second matrix.
+ The first matrix.
+ The second matrix.
+ The matrix that contains the summed values.
+
+
+ Returns a value that indicates whether the specified matrices are equal.
+ The first matrix to compare.
+ The second matrix to care
+ true if value1 and value2 are equal; otherwise, false.
+
+
+ Returns a value that indicates whether the specified matrices are not equal.
+ The first matrix to compare.
+ The second matrix to compare.
+ true if value1 and value2 are not equal; otherwise, false.
+
+
+ Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor.
+ The matrix to scale.
+ The scaling value to use.
+ The scaled matrix.
+
+
+ Returns the matrix that results from multiplying two matrices together.
+ The first matrix.
+ The second matrix.
+ The product matrix.
+
+
+ Subtracts each element in a second matrix from its corresponding element in a first matrix.
+ The first matrix.
+ The second matrix.
+ The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Negates the specified matrix by multiplying all its values by -1.
+ The matrix to negate.
+ The negated matrix.
+
+
+ Subtracts each element in a second matrix from its corresponding element in a first matrix.
+ The first matrix.
+ The second matrix.
+ The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Returns a string that represents this matrix.
+ The string representation of this matrix.
+
+
+ Transforms the specified matrix by applying the specified Quaternion rotation.
+ The matrix to transform.
+ The rotation t apply.
+ The transformed matrix.
+
+
+ Gets or sets the translation component of this matrix.
+ The translation component of the current instance.
+
+
+ Transposes the rows and columns of a matrix.
+ The matrix to transpose.
+ The transposed matrix.
+
+
+ Represents a three-dimensional plane.
+
+
+ Creates a object from a specified four-dimensional vector.
+ A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin.
+
+
+ Creates a object from a specified normal and the distance along the normal from the origin.
+ The plane's normal vector.
+ The plane's distance from the origin along its normal vector.
+
+
+ Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal.
+ The X component of the normal.
+ The Y component of the normal.
+ The Z component of the normal.
+ The distance of the plane along its normal from the origin.
+
+
+ Creates a object that contains three specified points.
+ The first point defining the plane.
+ The second point defining the plane.
+ The third point defining the plane.
+ The plane containing the three points.
+
+
+ The distance of the plane along its normal from the origin.
+
+
+
+ Calculates the dot product of a plane and a 4-dimensional vector.
+ The plane.
+ The four-dimensional vector.
+ The dot product.
+
+
+ Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane.
+ The plane.
+ The 3-dimensional vector.
+ The dot product.
+
+
+ Returns the dot product of a specified three-dimensional vector and the vector of this plane.
+ The plane.
+ The three-dimensional vector.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false.
+
+
+ Returns a value that indicates whether this instance and another plane object are equal.
+ The other plane.
+ true if the two planes are equal; otherwise, false.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ The normal vector of the plane.
+
+
+
+ Creates a new object whose normal vector is the source plane's normal vector normalized.
+ The source plane.
+ The normalized plane.
+
+
+ Returns a value that indicates whether two planes are equal.
+ The first plane to compare.
+ The second plane to compare.
+ true if value1 and value2 are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two planes are not equal.
+ The first plane to compare.
+ The second plane to compare.
+ true if value1 and value2 are not equal; otherwise, false.
+
+
+ Returns the string representation of this plane object.
+ A string that represents this object.
+
+
+ Transforms a normalized plane by a 4x4 matrix.
+ The normalized plane to transform.
+ The transformation matrix to apply to plane.
+ The transformed plane.
+
+
+ Transforms a normalized plane by a Quaternion rotation.
+ The normalized plane to transform.
+ The Quaternion rotation to apply to the plane.
+ A new plane that results from applying the Quaternion rotation.
+
+
+ Represents a vector that is used to encode three-dimensional physical rotations.
+
+
+ Creates a quaternion from the specified vector and rotation parts.
+ The vector part of the quaternion.
+ The rotation part of the quaternion.
+
+
+ Constructs a quaternion from the specified components.
+ The value to assign to the X component of the quaternion.
+ The value to assign to the Y component of the quaternion.
+ The value to assign to the Z component of the quaternion.
+ The value to assign to the W component of the quaternion.
+
+
+ Adds each element in one quaternion with its corresponding element in a second quaternion.
+ The first quaternion.
+ The second quaternion.
+ The quaternion that contains the summed values of value1 and value2.
+
+
+ Concatenates two quaternions.
+ The first quaternion rotation in the series.
+ The second quaternion rotation in the series.
+ A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation.
+
+
+ Returns the conjugate of a specified quaternion.
+ The quaternion.
+ A new quaternion that is the conjugate of value.
+
+
+ Creates a quaternion from a vector and an angle to rotate about the vector.
+ The vector to rotate around.
+ The angle, in radians, to rotate around the vector.
+ The newly created quaternion.
+
+
+ Creates a quaternion from the specified rotation matrix.
+ The rotation matrix.
+ The newly created quaternion.
+
+
+ Creates a new quaternion from the given yaw, pitch, and roll.
+ The yaw angle, in radians, around the Y axis.
+ The pitch angle, in radians, around the X axis.
+ The roll angle, in radians, around the Z axis.
+ The resulting quaternion.
+
+
+ Divides one quaternion by a second quaternion.
+ The dividend.
+ The divisor.
+ The quaternion that results from dividing value1 by value2.
+
+
+ Calculates the dot product of two quaternions.
+ The first quaternion.
+ The second quaternion.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and another quaternion are equal.
+ The other quaternion.
+ true if the two quaternions are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Gets a quaternion that represents no rotation.
+ A quaternion whose values are (0, 0, 0, 1).
+
+
+ Returns the inverse of a quaternion.
+ The quaternion.
+ The inverted quaternion.
+
+
+ Gets a value that indicates whether the current instance is the identity quaternion.
+ true if the current instance is the identity quaternion; otherwise, false.
+
+
+ Calculates the length of the quaternion.
+ The computed length of the quaternion.
+
+
+ Calculates the squared length of the quaternion.
+ The length squared of the quaternion.
+
+
+ Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion.
+ The first quaternion.
+ The second quaternion.
+ The relative weight of quaternion2 in the interpolation.
+ The interpolated quaternion.
+
+
+ Returns the quaternion that results from multiplying two quaternions together.
+ The first quaternion.
+ The second quaternion.
+ The product quaternion.
+
+
+ Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor.
+ The source quaternion.
+ The scalar value.
+ The scaled quaternion.
+
+
+ Reverses the sign of each component of the quaternion.
+ The quaternion to negate.
+ The negated quaternion.
+
+
+ Divides each component of a specified by its length.
+ The quaternion to normalize.
+ The normalized quaternion.
+
+
+ Adds each element in one quaternion with its corresponding element in a second quaternion.
+ The first quaternion.
+ The second quaternion.
+ The quaternion that contains the summed values of value1 and value2.
+
+
+ Divides one quaternion by a second quaternion.
+ The dividend.
+ The divisor.
+ The quaternion that results from dividing value1 by value2.
+
+
+ Returns a value that indicates whether two quaternions are equal.
+ The first quaternion to compare.
+ The second quaternion to compare.
+ true if the two quaternions are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two quaternions are not equal.
+ The first quaternion to compare.
+ The second quaternion to compare.
+ true if value1 and value2 are not equal; otherwise, false.
+
+
+ Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor.
+ The source quaternion.
+ The scalar value.
+ The scaled quaternion.
+
+
+ Returns the quaternion that results from multiplying two quaternions together.
+ The first quaternion.
+ The second quaternion.
+ The product quaternion.
+
+
+ Subtracts each element in a second quaternion from its corresponding element in a first quaternion.
+ The first quaternion.
+ The second quaternion.
+ The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Reverses the sign of each component of the quaternion.
+ The quaternion to negate.
+ The negated quaternion.
+
+
+ Interpolates between two quaternions, using spherical linear interpolation.
+ The first quaternion.
+ The second quaternion.
+ The relative weight of the second quaternion in the interpolation.
+ The interpolated quaternion.
+
+
+ Subtracts each element in a second quaternion from its corresponding element in a first quaternion.
+ The first quaternion.
+ The second quaternion.
+ The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Returns a string that represents this quaternion.
+ The string representation of this quaternion.
+
+
+ The rotation component of the quaternion.
+
+
+
+ The X value of the vector component of the quaternion.
+
+
+
+ The Y value of the vector component of the quaternion.
+
+
+
+ The Z value of the vector component of the quaternion.
+
+
+
+ Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms.
+ The vector type. T can be any primitive numeric type.
+
+
+ Creates a vector whose components are of a specified type.
+ The numeric type that defines the type of the components in the vector.
+
+
+ Creates a vector from a specified array.
+ A numeric array.
+ values is null.
+
+
+ Creates a vector from a specified array starting at a specified index position.
+ A numeric array.
+ The starting index position from which to create the vector.
+ values is null.
+ index is less than zero.
+ -or-
+ The length of values minus index is less than .
+
+
+ Copies the vector instance to a specified destination array.
+ The array to receive a copy of the vector values.
+ destination is null.
+ The number of elements in the current vector is greater than the number of elements available in the destination array.
+
+
+ Copies the vector instance to a specified destination array starting at a specified index position.
+ The array to receive a copy of the vector values.
+ The starting index in destination at which to begin the copy operation.
+ destination is null.
+ The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array.
+ index is less than zero or greater than the last index in destination.
+
+
+ Returns the number of elements stored in the vector.
+ The number of elements stored in the vector.
+ Access to the property getter via reflection is not supported.
+
+
+ Returns a value that indicates whether this instance is equal to a specified vector.
+ The vector to compare with this instance.
+ true if the current instance and other are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance is equal to a specified object.
+ The object to compare with this instance.
+ true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Gets the element at a specified index.
+ The index of the element to return.
+ The element at index index.
+ index is less than zero.
+ -or-
+ index is greater than or equal to .
+
+
+ Returns a vector containing all ones.
+ A vector containing all ones.
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Returns a new vector by performing a bitwise And operation on each of the elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector that results from the bitwise And of left and right.
+
+
+ Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector that results from the bitwise Or of the elements in left and right.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector that results from dividing left by right.
+
+
+ Returns a value that indicates whether each pair of elements in two specified vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are equal; otherwise, false.
+
+
+ Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector that results from the bitwise XOr of the elements in left and right.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Returns a value that indicates whether any single pair of elements in the specified vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if any element pairs in left and right are equal. false if no element pairs are equal.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiplies a vector by a specified scalar value.
+ The source vector.
+ A scalar value.
+ The scaled vector.
+
+
+ Multiplies a vector by the given scalar.
+ The scalar value.
+ The source vector.
+ The scaled vector.
+
+
+ Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements.
+ The source vector.
+ The one's complement vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The vector that results from subtracting right from left.
+
+
+ Negates a given vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting.
+ A or that defines the format of individual elements.
+ A format provider that supplies culture-specific formatting information.
+ The string representation of the current instance.
+
+
+ Returns the string representation of this vector using default formatting.
+ The string representation of this vector.
+
+
+ Returns the string representation of this vector using the specified format string to format individual elements.
+ A or that defines the format of individual elements.
+ The string representation of the current instance.
+
+
+ Returns a vector containing all zeroes.
+ A vector containing all zeroes.
+
+
+ Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors.
+
+
+ Returns a new vector whose elements are the absolute values of the given vector's elements.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The absolute value vector.
+
+
+ Returns a new vector whose values are the sum of each pair of elements from two given vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The summed vector.
+
+
+ Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of unsigned bytes.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a double-precision floating-point vector.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of 16-bit integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of long integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of signed bytes.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a single-precision floating-point vector.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of unsigned integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of unsigned long integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector.
+ The integral mask vector used to drive selection.
+ The first source vector.
+ The second source vector.
+ The new vector with elements selected based on the mask.
+
+
+ Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector.
+ The integral mask vector used to drive selection.
+ The first source vector.
+ The second source vector.
+ The new vector with elements selected based on the mask.
+
+
+ Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector.
+ The integral mask vector used to drive selection.
+ The first source vector.
+ The second source vector.
+ The vector type. T can be any primitive numeric type.
+ The new vector with elements selected based on the mask.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The divided vector.
+
+
+ Returns the dot product of two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The dot product.
+
+
+ Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether each pair of elements in the given vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all elements in left and right are equal; otherwise, false.
+
+
+ Returns a value that indicates whether any single pair of elements in the given vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element pair in left and right is equal; otherwise, false.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all elements in left are greater than the corresponding elements in right; otherwise, false.
+
+
+ Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element in left is greater than the corresponding element in right; otherwise, false.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false.
+
+
+ Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element in left is greater than or equal to the corresponding element in right; otherwise, false.
+
+
+ Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support.
+ true if vector operations are subject to hardware acceleration; otherwise, false.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector
+
+
+ Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all of the elements in left are less than the corresponding elements in right; otherwise, false.
+
+
+ Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element in left is less than the corresponding element in right; otherwise, false.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false.
+
+
+ Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element in left is less than or equal to the corresponding element in right; otherwise, false.
+
+
+ Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The maximum vector.
+
+
+ Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The minimum vector.
+
+
+ Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector.
+ The scalar value.
+ The vector.
+ The vector type. T can be any primitive numeric type.
+ The scaled vector.
+
+
+ Returns a new vector whose values are the product of each pair of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The product vector.
+
+
+ Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value.
+ The vector.
+ The scalar value.
+ The vector type. T can be any primitive numeric type.
+ The scaled vector.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns a new vector whose elements are the negation of the corresponding element in the specified vector.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The negated vector.
+
+
+ Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a new vector whose elements are the square roots of a specified vector's elements.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The square root vector.
+
+
+ Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The difference vector.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Represents a vector with two single-precision floating-point values.
+
+
+ Creates a new object whose two elements have the same value.
+ The value to assign to both elements.
+
+
+ Creates a vector whose elements have the specified values.
+ The value to assign to the field.
+ The value to assign to the field.
+
+
+ Returns a vector whose elements are the absolute values of each of the specified vector's elements.
+ A vector.
+ The absolute value vector.
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Restricts a vector between a minimum and a maximum value.
+ The vector to restrict.
+ The minimum value.
+ The maximum value.
+ The restricted vector.
+
+
+ Copies the elements of the vector to a specified array.
+ The destination array.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ array is multidimensional.
+
+
+ Copies the elements of the vector to a specified array starting at a specified index position.
+ The destination array.
+ The index at which to copy the first element of the vector.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ index is less than zero.
+ -or-
+ index is greater than or equal to the array length.
+ array is multidimensional.
+
+
+ Computes the Euclidean distance between the two given points.
+ The first point.
+ The second point.
+ The distance.
+
+
+ Returns the Euclidean distance squared between two specified points.
+ The first point.
+ The second point.
+ The distance squared.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector resulting from the division.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The vector that results from the division.
+
+
+ Returns the dot product of two vectors.
+ The first vector.
+ The second vector.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false.
+
+
+ Returns a value that indicates whether this instance and another vector are equal.
+ The other vector.
+ true if the two vectors are equal; otherwise, false.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Returns the length of the vector.
+ The vector's length.
+
+
+ Returns the length of the vector squared.
+ The vector's length squared.
+
+
+ Performs a linear interpolation between two vectors based on the given weighting.
+ The first vector.
+ The second vector.
+ A value between 0 and 1 that indicates the weight of value2.
+ The interpolated vector.
+
+
+ Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The maximized vector.
+
+
+ Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The minimized vector.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiplies a vector by a specified scalar.
+ The vector to multiply.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiplies a scalar value by a specified vector.
+ The scaled value.
+ The vector.
+ The scaled vector.
+
+
+ Negates a specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns a vector with the same direction as the specified vector, but with a length of one.
+ The vector to normalize.
+ The normalized vector.
+
+
+ Gets a vector whose 2 elements are equal to one.
+ A vector whose two elements are equal to one (that is, it returns the vector (1,1).
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector that results from dividing left by right.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The result of the division.
+
+
+ Returns a value that indicates whether each pair of elements in two specified vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two specified vectors are not equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are not equal; otherwise, false.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiples the specified vector by the specified scalar value.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiples the scalar value by the specified vector.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The vector that results from subtracting right from left.
+
+
+ Negates the specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns the reflection of a vector off a surface that has the specified normal.
+ The source vector.
+ The normal of the surface being reflected off.
+ The reflected vector.
+
+
+ Returns a vector whose elements are the square root of each of a specified vector's elements.
+ A vector.
+ The square root vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The difference vector.
+
+
+ Returns the string representation of the current instance using default formatting.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements.
+ A or that defines the format of individual elements.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting.
+ A or that defines the format of individual elements.
+ A format provider that supplies culture-specific formatting information.
+ The string representation of the current instance.
+
+
+ Transforms a vector by a specified 3x2 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a vector normal by the given 3x2 matrix.
+ The source vector.
+ The matrix.
+ The transformed vector.
+
+
+ Transforms a vector normal by the given 4x4 matrix.
+ The source vector.
+ The matrix.
+ The transformed vector.
+
+
+ Gets the vector (1,0).
+ The vector (1,0).
+
+
+ Gets the vector (0,1).
+ The vector (0,1).
+
+
+ The X component of the vector.
+
+
+
+ The Y component of the vector.
+
+
+
+ Returns a vector whose 2 elements are equal to zero.
+ A vector whose two elements are equal to zero (that is, it returns the vector (0,0).
+
+
+ Represents a vector with three single-precision floating-point values.
+
+
+ Creates a new object whose three elements have the same value.
+ The value to assign to all three elements.
+
+
+ Creates a new object from the specified object and the specified value.
+ The vector with two elements.
+ The additional value to assign to the field.
+
+
+ Creates a vector whose elements have the specified values.
+ The value to assign to the field.
+ The value to assign to the field.
+ The value to assign to the field.
+
+
+ Returns a vector whose elements are the absolute values of each of the specified vector's elements.
+ A vector.
+ The absolute value vector.
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Restricts a vector between a minimum and a maximum value.
+ The vector to restrict.
+ The minimum value.
+ The maximum value.
+ The restricted vector.
+
+
+ Copies the elements of the vector to a specified array.
+ The destination array.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ array is multidimensional.
+
+
+ Copies the elements of the vector to a specified array starting at a specified index position.
+ The destination array.
+ The index at which to copy the first element of the vector.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ index is less than zero.
+ -or-
+ index is greater than or equal to the array length.
+ array is multidimensional.
+
+
+ Computes the cross product of two vectors.
+ The first vector.
+ The second vector.
+ The cross product.
+
+
+ Computes the Euclidean distance between the two given points.
+ The first point.
+ The second point.
+ The distance.
+
+
+ Returns the Euclidean distance squared between two specified points.
+ The first point.
+ The second point.
+ The distance squared.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The vector that results from the division.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector resulting from the division.
+
+
+ Returns the dot product of two vectors.
+ The first vector.
+ The second vector.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and another vector are equal.
+ The other vector.
+ true if the two vectors are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Returns the length of this vector object.
+ The vector's length.
+
+
+ Returns the length of the vector squared.
+ The vector's length squared.
+
+
+ Performs a linear interpolation between two vectors based on the given weighting.
+ The first vector.
+ The second vector.
+ A value between 0 and 1 that indicates the weight of value2.
+ The interpolated vector.
+
+
+ Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The maximized vector.
+
+
+ Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The minimized vector.
+
+
+ Multiplies a scalar value by a specified vector.
+ The scaled value.
+ The vector.
+ The scaled vector.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiplies a vector by a specified scalar.
+ The vector to multiply.
+ The scalar value.
+ The scaled vector.
+
+
+ Negates a specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns a vector with the same direction as the specified vector, but with a length of one.
+ The vector to normalize.
+ The normalized vector.
+
+
+ Gets a vector whose 3 elements are equal to one.
+ A vector whose three elements are equal to one (that is, it returns the vector (1,1,1).
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector that results from dividing left by right.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The result of the division.
+
+
+ Returns a value that indicates whether each pair of elements in two specified vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two specified vectors are not equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are not equal; otherwise, false.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiples the specified vector by the specified scalar value.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiples the scalar value by the specified vector.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The vector that results from subtracting right from left.
+
+
+ Negates the specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns the reflection of a vector off a surface that has the specified normal.
+ The source vector.
+ The normal of the surface being reflected off.
+ The reflected vector.
+
+
+ Returns a vector whose elements are the square root of each of a specified vector's elements.
+ A vector.
+ The square root vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The difference vector.
+
+
+ Returns the string representation of the current instance using default formatting.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements.
+ A or that defines the format of individual elements.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting.
+ A or that defines the format of individual elements.
+ A format provider that supplies culture-specific formatting information.
+ The string representation of the current instance.
+
+
+ Transforms a vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a vector normal by the given 4x4 matrix.
+ The source vector.
+ The matrix.
+ The transformed vector.
+
+
+ Gets the vector (1,0,0).
+ The vector (1,0,0).
+
+
+ Gets the vector (0,1,0).
+ The vector (0,1,0)..
+
+
+ Gets the vector (0,0,1).
+ The vector (0,0,1).
+
+
+ The X component of the vector.
+
+
+
+ The Y component of the vector.
+
+
+
+ The Z component of the vector.
+
+
+
+ Gets a vector whose 3 elements are equal to zero.
+ A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0).
+
+
+ Represents a vector with four single-precision floating-point values.
+
+
+ Creates a new object whose four elements have the same value.
+ The value to assign to all four elements.
+
+
+ Constructs a new object from the specified object and a W component.
+ The vector to use for the X, Y, and Z components.
+ The W component.
+
+
+ Creates a new object from the specified object and a Z and a W component.
+ The vector to use for the X and Y components.
+ The Z component.
+ The W component.
+
+
+ Creates a vector whose elements have the specified values.
+ The value to assign to the field.
+ The value to assign to the field.
+ The value to assign to the field.
+ The value to assign to the field.
+
+
+ Returns a vector whose elements are the absolute values of each of the specified vector's elements.
+ A vector.
+ The absolute value vector.
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Restricts a vector between a minimum and a maximum value.
+ The vector to restrict.
+ The minimum value.
+ The maximum value.
+ The restricted vector.
+
+
+ Copies the elements of the vector to a specified array.
+ The destination array.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ array is multidimensional.
+
+
+ Copies the elements of the vector to a specified array starting at a specified index position.
+ The destination array.
+ The index at which to copy the first element of the vector.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ index is less than zero.
+ -or-
+ index is greater than or equal to the array length.
+ array is multidimensional.
+
+
+ Computes the Euclidean distance between the two given points.
+ The first point.
+ The second point.
+ The distance.
+
+
+ Returns the Euclidean distance squared between two specified points.
+ The first point.
+ The second point.
+ The distance squared.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector resulting from the division.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The vector that results from the division.
+
+
+ Returns the dot product of two vectors.
+ The first vector.
+ The second vector.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and another vector are equal.
+ The other vector.
+ true if the two vectors are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Returns the length of this vector object.
+ The vector's length.
+
+
+ Returns the length of the vector squared.
+ The vector's length squared.
+
+
+ Performs a linear interpolation between two vectors based on the given weighting.
+ The first vector.
+ The second vector.
+ A value between 0 and 1 that indicates the weight of value2.
+ The interpolated vector.
+
+
+ Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The maximized vector.
+
+
+ Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The minimized vector.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiplies a vector by a specified scalar.
+ The vector to multiply.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiplies a scalar value by a specified vector.
+ The scaled value.
+ The vector.
+ The scaled vector.
+
+
+ Negates a specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns a vector with the same direction as the specified vector, but with a length of one.
+ The vector to normalize.
+ The normalized vector.
+
+
+ Gets a vector whose 4 elements are equal to one.
+ Returns .
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector that results from dividing left by right.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The result of the division.
+
+
+ Returns a value that indicates whether each pair of elements in two specified vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two specified vectors are not equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are not equal; otherwise, false.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiples the specified vector by the specified scalar value.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiples the scalar value by the specified vector.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The vector that results from subtracting right from left.
+
+
+ Negates the specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns a vector whose elements are the square root of each of a specified vector's elements.
+ A vector.
+ The square root vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The difference vector.
+
+
+ Returns the string representation of the current instance using default formatting.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements.
+ A or that defines the format of individual elements.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting.
+ A or that defines the format of individual elements.
+ A format provider that supplies culture-specific formatting information.
+ The string representation of the current instance.
+
+
+ Transforms a four-dimensional vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a four-dimensional vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a three-dimensional vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a two-dimensional vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a two-dimensional vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a three-dimensional vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Gets the vector (0,0,0,1).
+ The vector (0,0,0,1).
+
+
+ Gets the vector (1,0,0,0).
+ The vector (1,0,0,0).
+
+
+ Gets the vector (0,1,0,0).
+ The vector (0,1,0,0)..
+
+
+ Gets a vector whose 4 elements are equal to zero.
+ The vector (0,0,1,0).
+
+
+ The W component of the vector.
+
+
+
+ The X component of the vector.
+
+
+
+ The Y component of the vector.
+
+
+
+ The Z component of the vector.
+
+
+
+ Gets a vector whose 4 elements are equal to zero.
+ A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0).
+
+
+
\ No newline at end of file
diff --git a/bin/System.Runtime.CompilerServices.Unsafe.dll b/bin/System.Runtime.CompilerServices.Unsafe.dll
new file mode 100644
index 0000000..1908d92
Binary files /dev/null and b/bin/System.Runtime.CompilerServices.Unsafe.dll differ
diff --git a/bin/System.Runtime.CompilerServices.Unsafe.xml b/bin/System.Runtime.CompilerServices.Unsafe.xml
new file mode 100644
index 0000000..b5dd21b
--- /dev/null
+++ b/bin/System.Runtime.CompilerServices.Unsafe.xml
@@ -0,0 +1,258 @@
+
+
+
+ System.Runtime.CompilerServices.Unsafe
+
+
+
+ Contains generic, low-level functionality for manipulating pointers.
+
+
+ Adds an element offset to the given reference.
+ The reference to add the offset to.
+ The offset to add.
+ The type of reference.
+ A new reference that reflects the addition of offset to pointer.
+
+
+ Adds an element offset to the given reference.
+ The reference to add the offset to.
+ The offset to add.
+ The type of reference.
+ A new reference that reflects the addition of offset to pointer.
+
+
+ Adds an element offset to the given void pointer.
+ The void pointer to add the offset to.
+ The offset to add.
+ The type of void pointer.
+ A new void pointer that reflects the addition of offset to the specified pointer.
+
+
+ Adds a byte offset to the given reference.
+ The reference to add the offset to.
+ The offset to add.
+ The type of reference.
+ A new reference that reflects the addition of byte offset to pointer.
+
+
+ Determines whether the specified references point to the same location.
+ The first reference to compare.
+ The second reference to compare.
+ The type of reference.
+
+ if and point to the same location; otherwise, .
+
+
+ Casts the given object to the specified type.
+ The object to cast.
+ The type which the object will be cast to.
+ The original object, casted to the given type.
+
+
+ Reinterprets the given reference as a reference to a value of type .
+ The reference to reinterpret.
+ The type of reference to reinterpret.
+ The desired type of the reference.
+ A reference to a value of type .
+
+
+ Returns a pointer to the given by-ref parameter.
+ The object whose pointer is obtained.
+ The type of object.
+ A pointer to the given value.
+
+
+ Reinterprets the given read-only reference as a reference.
+ The read-only reference to reinterpret.
+ The type of reference.
+ A reference to a value of type .
+
+
+ Reinterprets the given location as a reference to a value of type .
+ The location of the value to reference.
+ The type of the interpreted location.
+ A reference to a value of type .
+
+
+ Determines the byte offset from origin to target from the given references.
+ The reference to origin.
+ The reference to target.
+ The type of reference.
+ Byte offset from origin to target i.e. - .
+
+
+ Copies a value of type to the given location.
+ The location to copy to.
+ A pointer to the value to copy.
+ The type of value to copy.
+
+
+ Copies a value of type to the given location.
+ The location to copy to.
+ A reference to the value to copy.
+ The type of value to copy.
+
+
+ Copies bytes from the source address to the destination address.
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+ Copies bytes from the source address to the destination address.
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+ Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses.
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+ Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses.
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+ Initializes a block of memory at the given location with a given initial value.
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+ Initializes a block of memory at the given location with a given initial value.
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+ Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address.
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+ Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address.
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+ Returns a value that indicates whether a specified reference is greater than another specified reference.
+ The first value to compare.
+ The second value to compare.
+ The type of the reference.
+
+ if is greater than ; otherwise, .
+
+
+ Returns a value that indicates whether a specified reference is less than another specified reference.
+ The first value to compare.
+ The second value to compare.
+ The type of the reference.
+
+ if is less than ; otherwise, .
+
+
+
+
+
+
+
+
+
+ Reads a value of type from the given location.
+ The location to read from.
+ The type to read.
+ An object of type read from the given location.
+
+
+ Reads a value of type from the given location without assuming architecture dependent alignment of the addresses.
+ The location to read from.
+ The type to read.
+ An object of type read from the given location.
+
+
+ Reads a value of type from the given location without assuming architecture dependent alignment of the addresses.
+ The location to read from.
+ The type to read.
+ An object of type read from the given location.
+
+
+ Returns the size of an object of the given type parameter.
+ The type of object whose size is retrieved.
+ The size of an object of type .
+
+
+ Bypasses definite assignment rules for a given value.
+ The uninitialized object.
+ The type of the uninitialized object.
+
+
+ Subtracts an element offset from the given reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ The type of reference.
+ A new reference that reflects the subtraction of offset from pointer.
+
+
+ Subtracts an element offset from the given reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ The type of reference.
+ A new reference that reflects the subtraction of offset from pointer.
+
+
+ Subtracts an element offset from the given void pointer.
+ The void pointer to subtract the offset from.
+ The offset to subtract.
+ The type of the void pointer.
+ A new void pointer that reflects the subtraction of offset from the specified pointer.
+
+
+ Subtracts a byte offset from the given reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ The type of reference.
+ A new reference that reflects the subtraction of byte offset from pointer.
+
+
+ Returns a to a boxed value.
+ The value to unbox.
+ The type to be unboxed.
+
+ is , and is a non-nullable value type.
+
+ is not a boxed value type.
+
+-or-
+
+ is not a boxed .
+
+ cannot be found.
+ A to the boxed value .
+
+
+ Writes a value of type to the given location.
+ The location to write to.
+ The value to write.
+ The type of value to write.
+
+
+ Writes a value of type to the given location without assuming architecture dependent alignment of the addresses.
+ The location to write to.
+ The value to write.
+ The type of value to write.
+
+
+ Writes a value of type to the given location without assuming architecture dependent alignment of the addresses.
+ The location to write to.
+ The value to write.
+ The type of value to write.
+
+
+
\ No newline at end of file
diff --git a/bin/System.Security.Cryptography.Pkcs.dll b/bin/System.Security.Cryptography.Pkcs.dll
new file mode 100644
index 0000000..41aec46
Binary files /dev/null and b/bin/System.Security.Cryptography.Pkcs.dll differ
diff --git a/bin/System.Security.Cryptography.Pkcs.xml b/bin/System.Security.Cryptography.Pkcs.xml
new file mode 100644
index 0000000..de23166
--- /dev/null
+++ b/bin/System.Security.Cryptography.Pkcs.xml
@@ -0,0 +1,2009 @@
+
+
+
+ System.Security.Cryptography.Pkcs
+
+
+
+ Contains a type and a collection of values associated with that type.
+
+
+ Initializes a new instance of the class using an attribute represented by the specified object.
+ The attribute to store in this object.
+
+
+ Initializes a new instance of the class using an attribute represented by the specified object and the set of values associated with that attribute represented by the specified collection.
+ The attribute to store in this object.
+ The set of values associated with the attribute represented by the parameter.
+ The collection contains duplicate items.
+
+
+ Gets the object that specifies the object identifier for the attribute.
+ The object identifier for the attribute.
+
+
+ Gets the collection that contains the set of values that are associated with the attribute.
+ The set of values that is associated with the attribute.
+
+
+ Contains a set of objects.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class, adding a specified to the collection.
+ A object that is added to the collection.
+
+
+ Adds the specified object to the collection.
+ The object to add to the collection.
+
+ is .
+ A cryptographic operation could not be completed.
+
+ if the method returns the zero-based index of the added item; otherwise, .
+
+
+ Adds the specified object to the collection.
+ The object to add to the collection.
+
+ is .
+ A cryptographic operation could not be completed.
+ The specified item already exists in the collection.
+
+ if the method returns the zero-based index of the added item; otherwise, .
+
+
+ Copies the collection to an array of objects.
+ An array of objects that the collection is copied to.
+ The zero-based index in to which the collection is to be copied.
+ One of the arguments provided to a method was not valid.
+
+ was passed to a method that does not accept it as a valid argument.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+
+
+ Gets a object for the collection.
+
+ if the method returns a object that can be used to enumerate the collection; otherwise, .
+
+
+ Removes the specified object from the collection.
+ The object to remove from the collection.
+
+ is .
+
+
+ Copies the elements of this collection to an array, starting at a particular index.
+ The one-dimensional array that is the destination of the elements copied from this . The array must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+
+ Returns an enumerator that iterates through the collection.
+ An object that can be used to iterate through the collection.
+
+
+ Gets the number of items in the collection.
+ The number of items in the collection.
+
+
+ Gets a value that indicates whether access to the collection is synchronized, or thread safe.
+
+ if access to the collection is thread safe; otherwise .
+
+
+ Gets the object at the specified index in the collection.
+ An value that represents the zero-based index of the object to retrieve.
+ The object at the specified index.
+
+
+ Gets an object used to synchronize access to the collection.
+ An object used to synchronize access to the collection.
+
+
+ Provides enumeration functionality for the collection. This class cannot be inherited.
+
+
+ Advances the enumeration to the next object in the collection.
+
+ if the enumeration successfully moved to the next object; if the enumerator is at the end of the enumeration.
+
+
+ Resets the enumeration to the first object in the collection.
+
+
+ Gets the current object from the collection.
+ A object that represents the current cryptographic attribute in the collection.
+
+
+ Gets the current object from the collection.
+ A object that represents the current cryptographic attribute in the collection.
+
+
+ The class defines the algorithm used for a cryptographic operation.
+
+
+ The constructor creates an instance of the class by using a set of default parameters.
+ A cryptographic operation could not be completed.
+
+
+ The constructor creates an instance of the class with the specified algorithm identifier.
+ An object identifier for the algorithm.
+ A cryptographic operation could not be completed.
+
+
+ The constructor creates an instance of the class with the specified algorithm identifier and key length.
+ An object identifier for the algorithm.
+ The length, in bits, of the key.
+ A cryptographic operation could not be completed.
+
+
+ The property sets or retrieves the key length, in bits. This property is not used for algorithms that use a fixed key length.
+ An int value that represents the key length, in bits.
+
+
+ The property sets or retrieves the object that specifies the object identifier for the algorithm.
+ An object that represents the algorithm.
+
+
+ The property sets or retrieves any parameters required by the algorithm.
+ An array of byte values that specifies any parameters required by the algorithm.
+
+
+ The class defines the recipient of a CMS/PKCS #7 message.
+
+
+ Initializes a new instance of the class with a specified certificate and recipient identifier type, using the default encryption mode for the public key algorithm.
+ The scheme to use for identifying which recipient certificate was used.
+ The certificate to use when encrypting for this recipient.
+ The parameter is .
+ The value is not supported.
+
+
+ Initializes a new instance of the class with a specified RSA certificate, RSA encryption padding, and subject identifier.
+ The scheme to use for identifying which recipient certificate was used.
+ The certificate to use when encrypting for this recipient.
+ The RSA padding mode to use when encrypting for this recipient.
+ The or parameter is .
+ The parameter public key is not recognized as an RSA public key.
+
+
+ Initializes a new instance of the class with a specified certificate, using the default encryption mode for the public key algorithm and an subject identifier.
+ The certificate to use when encrypting for this recipient.
+ The parameter is .
+
+
+ Initializes a new instance of the class with a specified RSA certificate and RSA encryption padding, using an subject identifier.
+ The certificate to use when encrypting for this recipient.
+ The RSA padding mode to use when encrypting for this recipient.
+ The or parameter is .
+ The parameter public key is not recognized as an RSA public key.
+
+-or-
+
+The value is not supported.
+
+
+ Gets the certificate to use when encrypting for this recipient.
+ The certificate to use when encrypting for this recipient.
+
+
+ Gets the scheme to use for identifying which recipient certificate was used.
+ The scheme to use for identifying which recipient certificate was used.
+
+
+ Gets the RSA encryption padding to use when encrypting for this recipient.
+ The RSA encryption padding to use when encrypting for this recipient.
+
+
+ The class represents a set of objects. implements the interface.
+
+
+ The constructor creates an instance of the class.
+
+
+ The constructor creates an instance of the class and adds the specified recipient.
+ An instance of the class that represents the specified CMS/PKCS #7 recipient.
+
+
+ The constructor creates an instance of the class and adds recipients based on the specified subject identifier and set of certificates that identify the recipients.
+ A member of the enumeration that specifies the type of subject identifier.
+ An collection that contains the certificates that identify the recipients.
+
+
+ The method adds a recipient to the collection.
+ A object that represents the recipient to add to the collection.
+
+ is .
+ If the method succeeds, the method returns an value that represents the zero-based position where the recipient is to be inserted.
+
+ If the method fails, it throws an exception.
+
+
+ The method copies the collection to an array.
+ An object to which the collection is to be copied.
+ The zero-based index in where the collection is copied.
+
+ is not large enough to hold the specified elements.
+
+-or-
+
+ does not contain the proper number of dimensions.
+
+ is .
+
+ is outside the range of elements in .
+
+
+ The method copies the collection to a array.
+ An array of objects where the collection is to be copied.
+ The zero-based index for the array of objects in to which the collection is copied.
+
+ is not large enough to hold the specified elements.
+
+-or-
+
+ does not contain the proper number of dimensions.
+
+ is .
+
+ is outside the range of elements in .
+
+
+ The method returns a object for the collection.
+ A object that can be used to enumerate the collection.
+
+
+ The method removes a recipient from the collection.
+ A object that represents the recipient to remove from the collection.
+
+ is .
+
+
+ The method returns a object for the collection.
+ A object that can be used to enumerate the collection.
+
+
+ The property retrieves the number of items in the collection.
+ An value that represents the number of items in the collection.
+
+
+ The property retrieves whether access to the collection is synchronized, or thread safe. This property always returns , which means that the collection is not thread safe.
+ A value of , which means that the collection is not thread safe.
+
+
+ The property retrieves the object at the specified index in the collection.
+ An value that represents the index in the collection. The index is zero based.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+ A object at the specified index.
+
+
+ The property retrieves an object used to synchronize access to the collection.
+ An object that is used to synchronize access to the collection.
+
+
+ The class provides enumeration functionality for the collection. implements the interface.
+
+
+ The method advances the enumeration to the next object in the collection.
+
+ if the enumeration successfully moved to the next object; if the enumeration moved past the last item in the enumeration.
+
+
+ The method resets the enumeration to the first object in the collection.
+
+
+ The property retrieves the current object from the collection.
+ A object that represents the current recipient in the collection.
+
+
+ The property retrieves the current object from the collection.
+ A object that represents the current recipient in the collection.
+
+
+ Represents a potential signer for a CMS/PKCS#7 signed message.
+
+
+ Initializes a new instance of the class with default values.
+
+
+ Initializes a new instance of the class from a persisted key.
+ The CSP parameters to describe which signing key to use.
+ .NET Core and .NET 5+ only: In all cases.
+
+
+ Initializes a new instance of the class with a specified subject identifier type.
+ The scheme to use for identifying which signing certificate was used.
+
+
+ Initializes a new instance of the class with a specified signer certificate and subject identifier type.
+ The scheme to use for identifying which signing certificate was used.
+ The certificate whose private key will be used to sign a message.
+
+
+ Initializes a new instance of the class with a specified signer certificate, subject identifier type, and private key object.
+ One of the enumeration values that specifies the scheme to use for identifying which signing certificate was used.
+ The certificate whose private key will be used to sign a message.
+ The private key object to use when signing the message.
+
+
+ Initializes a new instance of the CmsSigner class with a specified signer certificate, subject identifier type, private key object, and RSA signature padding.
+ One of the enumeration values that specifies the scheme to use for identifying which signing certificate was used.
+ The certificate whose private key will be used to sign a message.
+ The private key object to use when signing the message.
+ The RSA signature padding to use.
+
+
+ Initializes a new instance of the class with a specified signer certificate.
+ The certificate whose private key will be used to sign a message.
+
+
+ The property sets or retrieves the object that represents the signing certificate.
+ An object that represents the signing certificate.
+
+
+ Gets a collection of certificates which are considered with and .
+ A collection of certificates which are considered with and .
+
+
+ Gets or sets the algorithm identifier for the hash algorithm to use with the signature.
+ The algorithm identifier for the hash algorithm to use with the signature.
+
+
+ Gets or sets the option indicating how much of a the signer certificate's certificate chain should be embedded in the signed message.
+ One of the arguments provided to a method was not valid.
+ One of the enumeration values that indicates how much of a the signer certificate's certificate chain should be embedded in the signed message.
+
+
+ Gets or sets the private key object to use during signing.
+ The private key to use during signing, or to use the private key associated with the property.
+
+
+ Gets or sets the RSA signature padding to use.
+ The RSA signature padding to use.
+
+
+ Gets a collections of attributes to associate with this signature that are also protected by the signature.
+ A collections of attributes to associate with this signature that are also protected by the signature.
+
+
+ Gets the scheme to use for identifying which signing certificate was used.
+ One of the arguments provided to a method was not valid.
+ The scheme to use for identifying which recipient certificate was used.
+
+
+ Gets a collections of attributes to associate with this signature that are not protected by the signature.
+ A collections of attributes to associate with this signature that are not protected by the signature.
+
+
+ The class represents the CMS/PKCS #7 ContentInfo data structure as defined in the CMS/PKCS #7 standards document. This data structure is the basis for all CMS/PKCS #7 messages.
+
+
+ The constructor creates an instance of the class by using an array of byte values as the data and a default (OID) that represents the content type.
+ An array of byte values that represents the data from which to create the object.
+ A null reference was passed to a method that does not accept it as a valid argument.
+
+
+ The constructor creates an instance of the class by using the specified content type and an array of byte values as the data.
+ An object that contains an object identifier (OID) that specifies the content type of the content. This can be data, digestedData, encryptedData, envelopedData, hashedData, signedAndEnvelopedData, or signedData. For more information, see Remarks.
+ An array of byte values that represents the data from which to create the object.
+ A null reference was passed to a method that does not accept it as a valid argument.
+
+
+ Retrieves the outer content type of an encoded CMS ContentInfo message.
+ An array of byte values that represents the encoded CMS ContentInfo message from which to retrieve the outer content type.
+
+ is .
+
+ cannot be decoded as a valid CMS ContentInfo value.
+ The outer content type of the specified encoded CMS ContentInfo message.
+
+
+ Retrieves the outer content type of an encoded CMS ContentInfo message.
+ A read-only span of byte values that represents the encoded CMS ContentInfo message from which to retrieve the outer content type.
+
+ cannot be decoded as a valid CMS ContentInfo value.
+ The outer content type of the specified encoded CMS ContentInfo message.
+
+
+ The property retrieves the content of the CMS/PKCS #7 message.
+ An array of byte values that represents the content data.
+
+
+ The property retrieves the object that contains the (OID) of the content type of the inner content of the CMS/PKCS #7 message.
+ An object that contains the OID value that represents the content type.
+
+
+ Represents a CMS/PKCS#7 structure for enveloped data.
+
+
+ Initializes a new instance of the class with default values.
+
+
+ Initializes a new instance of the class with specified content information.
+ The message content to encrypt.
+ The parameter is .
+
+
+ Initializes a new instance of the class with a specified symmetric encryption algorithm and content information.
+ The message content to encrypt.
+ The identifier for the symmetric encryption algorithm to use when encrypting the message content.
+ The or parameter is .
+
+
+ Decodes an array of bytes as a CMS/PKCS#7 EnvelopedData message.
+ The byte array containing the sequence of bytes to decode.
+ The parameter is .
+ The parameter was not successfully decoded.
+
+
+ Decodes the provided data as a CMS/PKCS#7 EnvelopedData message.
+ The data to decode.
+ The parameter was not successfully decoded.
+
+
+ Decrypts the contents of the decoded enveloped CMS/PKCS#7 message via any available recipient by searching certificate stores for a matching certificate and key.
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ Decrypts the contents of the decoded enveloped CMS/PKCS#7 message via a specified recipient info by searching certificate stores for a matching certificate and key.
+ The recipient info to use for decryption.
+ The parameter is .
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ Decrypts the contents of the decoded enveloped CMS/PKCS#7 message via a specified recipient info with a specified private key.
+ The recipient info to use for decryption.
+ The private key to use to decrypt the recipient-specific information.
+ The or parameter is .
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ Decrypts the contents of the decoded enveloped CMS/PKCS#7 message via a specified recipient info by searching certificate stores and a provided collection for a matching certificate and key.
+ The recipient info to use for decryption.
+ A collection of certificates to use in addition to the certificate stores for finding a recipient certificate and private key.
+ The or parameter is .
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ Decrypts the contents of the decoded enveloped CMS/PKCS#7 message via any available recipient info by searching certificate stores and a provided collection for a matching certificate and key.
+ A collection of certificates to use in addition to the certificate stores for finding a recipient certificate and private key.
+ The parameter was .
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ Encodes the contents of the enveloped CMS/PKCS#7 message and returns it as a byte array.
+ A method call was invalid for the object's current state.
+ A byte array representing the encoded form of the CMS/PKCS#7 message.
+
+
+ Encrypts the contents of the CMS/PKCS#7 message for a single specified recipient.
+ The recipient information describing the single recipient of this message.
+ The parameter is .
+ A cryptographic operation could not be completed.
+
+
+ Encrypts the contents of the CMS/PKCS#7 message for one or more recipients.
+ A collection describing the recipients for the message.
+ The parameter is .
+ A cryptographic operation could not be completed.
+
+
+ Gets the collection of certificates associated with the enveloped CMS/PKCS#7 message.
+ The collection of certificates associated with the enveloped CMS/PKCS#7 message.
+
+
+ Gets the identifier of the symmetric encryption algorithm associated with this message.
+ The identifier of the symmetric encryption algorithm associated with this message.
+
+
+ Gets the content information for the enveloped CMS/PKCS#7 message.
+ The content information for the enveloped CMS/PKCS#7 message.
+
+
+ Gets a collection that represents the recipients list for a decoded message. The default value is an empty collection.
+ A collection that represents the recipients list for a decoded message. The default value is an empty collection.
+
+
+ Gets the collection of unprotected (unencrypted) attributes associated with the enveloped CMS/PKCS#7 message.
+ The collection of unprotected (unencrypted) attributes associated with the enveloped CMS/PKCS#7 message.
+
+
+ Gets the version of the decoded enveloped CMS/PKCS#7 message.
+ The version of the decoded enveloped CMS/PKCS#7 message.
+
+
+ The class defines key agreement recipient information. Key agreement algorithms typically use the Diffie-Hellman key agreement algorithm, in which the two parties that establish a shared cryptographic key both take part in its generation and, by definition, agree on that key. This is in contrast to key transport algorithms, in which one party generates the key unilaterally and sends, or transports it, to the other party.
+
+
+ The property retrieves the date and time of the start of the key agreement protocol by the originator.
+ The recipient identifier type is not a subject key identifier.
+ The date and time of the start of the key agreement protocol by the originator.
+
+
+ The property retrieves the encrypted recipient keying material.
+ An array of byte values that contain the encrypted recipient keying material.
+
+
+ The property retrieves the algorithm used to perform the key agreement.
+ The value of the algorithm used to perform the key agreement.
+
+
+ The property retrieves information about the originator of the key agreement for key agreement algorithms that warrant it.
+ An object that contains information about the originator of the key agreement.
+
+
+ The property retrieves attributes of the keying material.
+ The recipient identifier type is not a subject key identifier.
+ The attributes of the keying material.
+
+
+ The property retrieves the identifier of the recipient.
+ The identifier of the recipient.
+
+
+ The property retrieves the version of the key agreement recipient. This is automatically set for objects in this class, and the value implies that the recipient is taking part in a key agreement algorithm.
+ The version of the object.
+
+
+ The class defines key transport recipient information. Key transport algorithms typically use the RSA algorithm, in which an originator establishes a shared cryptographic key with a recipient by generating that key and then transporting it to the recipient. This is in contrast to key agreement algorithms, in which the two parties that will be using a cryptographic key both take part in its generation, thereby mutually agreeing to that key.
+
+
+ The property retrieves the encrypted key for this key transport recipient.
+ An array of byte values that represents the encrypted key.
+
+
+ The property retrieves the key encryption algorithm used to encrypt the content encryption key.
+ An object that stores the key encryption algorithm identifier.
+
+
+ The property retrieves the subject identifier associated with the encrypted content.
+ A object that stores the identifier of the recipient taking part in the key transport.
+
+
+ The property retrieves the version of the key transport recipient. The version of the key transport recipient is automatically set for objects in this class, and the value implies that the recipient is taking part in a key transport algorithm.
+ An int value that represents the version of the key transport object.
+
+
+ Enables the creation of PKCS#12 PFX data values. This class cannot be inherited.
+
+
+ Initializes a new value of the class.
+
+
+ Add contents to the PFX in an bundle encrypted with a byte-based password from a byte array.
+ The contents to add to the PFX.
+ The byte array to use as a password when encrypting the contents.
+ The password-based encryption (PBE) parameters to use when encrypting the contents.
+ The or parameter is .
+ The parameter value is already encrypted.
+ The PFX is already sealed ( is ).
+
+ indicates that should be used, which requires -based passwords.
+
+
+ Add contents to the PFX in an bundle encrypted with a byte-based password from a span.
+ The contents to add to the PFX.
+ The byte span to use as a password when encrypting the contents.
+ The password-based encryption (PBE) parameters to use when encrypting the contents.
+ The or parameter is .
+ The parameter value is already encrypted.
+ The PFX is already sealed ( is ).
+
+ indicates that should be used, which requires -based passwords.
+
+
+ Add contents to the PFX in an bundle encrypted with a char-based password from a span.
+ The contents to add to the PFX.
+ The span to use as a password when encrypting the contents.
+ The password-based encryption (PBE) parameters to use when encrypting the contents.
+ The or parameter is .
+ The parameter value is already encrypted.
+ The PFX is already sealed ( is ).
+
+
+ Add contents to the PFX in an bundle encrypted with a char-based password from a string.
+ The contents to add to the PFX.
+ The string to use as a password when encrypting the contents.
+ The password-based encryption (PBE) parameters to use when encrypting the contents.
+ The or parameter is .
+ The parameter value is already encrypted.
+ The PFX is already sealed ( is ).
+
+
+ Add contents to the PFX without encrypting them.
+ The contents to add to the PFX.
+ The parameter is .
+ The PFX is already sealed ( is ).
+
+
+ Encodes the contents of a sealed PFX and returns it as a byte array.
+ The PFX is not sealed ( is ).
+ A byte array representing the encoded form of the PFX.
+
+
+ Seals the PFX against further changes by applying a password-based Message Authentication Code (MAC) over the contents with a password from a span.
+ The password to use as a key for computing the MAC.
+ The hash algorithm to use when computing the MAC.
+ The iteration count for the Key Derivation Function (KDF) used in computing the MAC.
+ The parameter is less than or equal to 0.
+ The PFX is already sealed ( is ).
+
+
+ Seals the PFX against further changes by applying a password-based Message Authentication Code (MAC) over the contents with a password from a string.
+ The password to use as a key for computing the MAC.
+ The hash algorithm to use when computing the MAC.
+ The iteration count for the Key Derivation Function (KDF) used in computing the MAC.
+ The parameter is less than or equal to 0.
+ The PFX is already sealed ( is ).
+
+
+ Seals the PFX from further changes without applying tamper-protection.
+ The PFX is already sealed ( is ).
+
+
+ Attempts to encode the contents of a sealed PFX into a provided buffer.
+ The byte span to receive the PKCS#12 PFX data.
+ When this method returns, contains a value that indicates the number of bytes written to . This parameter is treated as uninitialized.
+ The PFX is not sealed ( is ).
+
+ if is big enough to receive the output; otherwise, .
+
+
+ Gets a value that indicates whether the PFX data has been sealed.
+ A value that indicates whether the PFX data has been sealed.
+
+
+ Represents the PKCS#12 CertBag. This class cannot be inherited.
+
+
+ Initializes a new instance of the class using the specified certificate type and encoding.
+ The Object Identifier (OID) for the certificate type.
+ The encoded certificate value.
+ The parameter is .
+ The parameter does not represent a single ASN.1 BER-encoded value.
+
+
+ Gets the contents of the CertBag interpreted as an X.509 public key certificate.
+ The content type is not the X.509 public key certificate content type.
+ The contents were not valid for the X.509 certificate content type.
+ A certificate decoded from the contents of the CertBag.
+
+
+ Gets the Object Identifier (OID) which identifies the content type of the encoded certificte value.
+ The Object Identifier (OID) which identifies the content type of the encoded certificate value.
+
+
+ Gets the uninterpreted certificate contents of the CertSafeBag.
+ The uninterpreted certificate contents of the CertSafeBag.
+
+
+ Gets a value indicating whether the content type of the encoded certificate value is the X.509 public key certificate content type.
+
+ if the content type is the X.509 public key certificate content type (1.2.840.113549.1.9.22.1); otherwise, .
+
+
+ Represents the kind of encryption associated with a PKCS#12 SafeContents value.
+
+
+ The SafeContents value is not encrypted.
+
+
+ The SafeContents value is encrypted with a password.
+
+
+ The SafeContents value is encrypted using public key cryptography.
+
+
+ The kind of encryption applied to the SafeContents is unknown or could not be determined.
+
+
+ Represents the data from PKCS#12 PFX contents. This class cannot be inherited.
+
+
+ Reads the provided data as a PKCS#12 PFX and returns an object view of the contents.
+ The data to interpret as a PKCS#12 PFX.
+ When this method returns, contains a value that indicates the number of bytes from which were read by this method. This parameter is treated as uninitialized.
+
+ to store without making a defensive copy; otherwise, . The default is .
+ The contents of the parameter were not successfully decoded as a PKCS#12 PFX.
+ An object view of the PKCS#12 PFX decoded from the input.
+
+
+ Attempts to verify the integrity of the contents with a password represented by a System.ReadOnlySpan{System.Char}.
+ The password to use to attempt to verify integrity.
+ The value is not .
+ The hash algorithm option specified by the PKCS#12 PFX contents could not be identified or is not supported by this platform.
+
+ if the password successfully verifies the integrity of the contents; if the password is not correct or the contents have been altered.
+
+
+ Attempts to verify the integrity of the contents with a password represented by a .
+ The password to use to attempt to verify integrity.
+ The value is not .
+ The hash algorithm option specified by the PKCS#12 PFX contents could not be identified or is not supported by this platform.
+
+ if the password successfully verifies the integrity of the contents; if the password is not correct or the contents have been altered.
+
+
+ Gets a read-only collection of the SafeContents values present in the PFX AuthenticatedSafe.
+ A read-only collection of the SafeContents values present in the PFX AuthenticatedSafe.
+
+
+ Gets a value that indicates the type of tamper protection provided for the contents.
+ One of the enumeration members that indicates the type of tamper protection provided for the contents.
+
+
+ Represents the type of anti-tampering applied to a PKCS#12 PFX value.
+
+
+ The PKCS#12 PFX value is not protected from tampering.
+
+
+ The PKCS#12 PFX value is protected from tampering with a Message Authentication Code (MAC) keyed with a password.
+
+
+ The PKCS#12 PFX value is protected from tampering with a digital signature using public key cryptography.
+
+
+ The type of anti-tampering applied to the PKCS#12 PFX is unknown or could not be determined.
+
+
+ Represents the KeyBag from PKCS#12, a container whose contents are a PKCS#8 PrivateKeyInfo. This class cannot be inherited.
+
+
+ Initializes a new instance of the from an existing encoded PKCS#8 PrivateKeyInfo value.
+ A BER-encoded PKCS#8 PrivateKeyInfo value.
+
+ to store without making a defensive copy; otherwise, . The default is .
+ The parameter does not represent a single ASN.1 BER-encoded value.
+
+
+ Gets a memory value containing the PKCS#8 PrivateKeyInfo value transported by this bag.
+ A memory value containing the PKCS#8 PrivateKeyInfo value transported by this bag.
+
+
+ Defines the core behavior of a SafeBag value from the PKCS#12 specification and provides a base for derived classes.
+
+
+ Called from constructors in derived classes to initialize the class.
+ The Object Identifier (OID), in dotted decimal form, indicating the data type of this SafeBag.
+ The ASN.1 BER encoded value of the SafeBag contents.
+
+ to store without making a defensive copy; otherwise, . The default is .
+ The parameter is or the empty string.
+ The parameter does not represent a single ASN.1 BER-encoded value.
+
+
+ Encodes the SafeBag value and returns it as a byte array.
+ The object identifier value passed to the constructor was invalid.
+ A byte array representing the encoded form of the SafeBag.
+
+
+ Gets the Object Identifier (OID) identifying the content type of this SafeBag.
+ The Object Identifier (OID) identifying the content type of this SafeBag.
+
+
+ Attempts to encode the SafeBag value into a provided buffer.
+ The byte span to receive the encoded SafeBag value.
+ When this method returns, contains a value that indicates the number of bytes written to . This parameter is treated as uninitialized.
+ The object identifier value passed to the constructor was invalid.
+
+ if is big enough to receive the output; otherwise, .
+
+
+ Gets the modifiable collection of attributes to encode with the SafeBag value.
+ The modifiable collection of attributes to encode with the SafeBag value.
+
+
+ Gets the ASN.1 BER encoding of the contents of this SafeBag.
+ The ASN.1 BER encoding of the contents of this SafeBag.
+
+
+ Represents a PKCS#12 SafeContents value. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds a certificate to the SafeContents via a new and returns the newly created bag instance.
+ The certificate to add.
+ The parameter is .
+ This instance is read-only.
+ The parameter is in an invalid state.
+ The bag instance which was added to the SafeContents.
+
+
+ Adds an asymmetric private key to the SafeContents via a new and returns the newly created bag instance.
+ The asymmetric private key to add.
+ The parameter is .
+ This instance is read-only.
+ The key export failed.
+ The bag instance which was added to the SafeContents.
+
+
+ Adds a nested SafeContents to the SafeContents via a new and returns the newly created bag instance.
+ The nested contents to add to the SafeContents.
+ The parameter is .
+ The parameter is encrypted.
+ This instance is read-only.
+ The bag instance which was added to the SafeContents.
+
+
+ Adds a SafeBag to the SafeContents.
+ The SafeBag value to add.
+ The parameter is .
+ This instance is read-only.
+
+
+ Adds an ASN.1 BER-encoded value with a specified type identifier to the SafeContents via a new and returns the newly created bag instance.
+ The Object Identifier (OID) which identifies the data type of the secret value.
+ The BER-encoded value representing the secret to add.
+ The parameter is .
+ This instance is read-only.
+ The parameter does not represent a single ASN.1 BER-encoded value.
+ The bag instance which was added to the SafeContents.
+
+
+ Adds an encrypted asymmetric private key to the SafeContents via a new from a byte-based password in an array and returns the newly created bag instance.
+ The asymmetric private key to add.
+ The bytes to use as a password when encrypting the key material.
+ The password-based encryption (PBE) parameters to use when encrypting the key material.
+ The parameter is .
+ This instance is read-only.
+ The key export failed.
+ The bag instance which was added to the SafeContents.
+
+
+ Adds an encrypted asymmetric private key to the SafeContents via a new from a byte-based password in a span and returns the newly created bag instance.
+ The asymmetric private key to add.
+ The bytes to use as a password when encrypting the key material.
+ The password-based encryption (PBE) parameters to use when encrypting the key material.
+ The parameter is .
+ This instance is read-only.
+ The key export failed.
+ The bag instance which was added to the SafeContents.
+
+
+ Adds an encrypted asymmetric private key to the SafeContents via a new from a character-based password in a span and returns the newly created bag instance.
+ The asymmetric private key to add.
+ The password to use when encrypting the key material.
+ The password-based encryption (PBE) parameters to use when encrypting the key material.
+ The parameter is .
+ This instance is read-only.
+ The key export failed.
+ The bag instance which was added to the SafeContents.
+
+
+ Adds an encrypted asymmetric private key to the SafeContents via a new from a character-based password in a string and returns the newly created bag instance.
+ The asymmetric private key to add.
+ The password to use when encrypting the key material.
+ The password-based encryption (PBE) parameters to use when encrypting the key material.
+ The parameter is .
+ This instance is read-only.
+ The key export failed.
+ The bag instance which was added to the SafeContents.
+
+
+ Decrypts the contents of this SafeContents value using a byte-based password from an array.
+ The bytes to use as a password for decrypting the encrypted contents.
+ The property is not .
+ The password is incorrect.
+
+-or-
+
+The contents were not successfully decrypted.
+
+
+ Decrypts the contents of this SafeContents value using a byte-based password from a span.
+ The bytes to use as a password for decrypting the encrypted contents.
+ The property is not .
+ The password is incorrect.
+
+-or-
+
+The contents were not successfully decrypted.
+
+
+ Decrypts the contents of this SafeContents value using a character-based password from a span.
+ The password to use for decrypting the encrypted contents.
+ The property is not .
+ The password is incorrect.
+
+-or-
+
+The contents were not successfully decrypted.
+
+
+ Decrypts the contents of this SafeContents value using a character-based password from a string.
+ The password to use for decrypting the encrypted contents.
+ The property is not .
+ The password is incorrect.
+
+-or-
+
+The contents were not successfully decrypted.
+
+
+ Gets an enumerable representation of the SafeBag values contained within the SafeContents.
+ The contents are encrypted.
+ An enumerable representation of the SafeBag values contained within the SafeContents.
+
+
+ Gets a value that indicates the type of encryption applied to the contents.
+ One of the enumeration values that indicates the type of encryption applied to the contents. The default value is .
+
+
+ Gets a value that indicates whether this instance in a read-only state.
+
+ if this value is in a read-only state; otherwise, . The default value is .
+
+
+ Represents the SafeContentsBag from PKCS#12, a container whose contents are a PKCS#12 SafeContents value. This class cannot be inherited.
+
+
+ Gets the SafeContents value contained within this bag.
+ The SafeContents value contained within this bag.
+
+
+ Represents the SecretBag from PKCS#12, a container whose contents are arbitrary data with a type identifier. This class cannot be inherited.
+
+
+ Gets the Object Identifier (OID) which identifies the data type of the secret value.
+ The Object Identifier (OID) which identifies the data type of the secret value.
+
+
+ Gets a memory value containing the BER-encoded contents of the bag.
+ A memory value containing the BER-encoded contents of the bag.
+
+
+ Represents the ShroudedKeyBag from PKCS#12, a container whose contents are a PKCS#8 EncryptedPrivateKeyInfo. This class cannot be inherited.
+
+
+ Initializes a new instance of the from an existing encoded PKCS#8 EncryptedPrivateKeyInfo value.
+ A BER-encoded PKCS#8 EncryptedPrivateKeyInfo value.
+
+ to store without making a defensive copy; otherwise, . The default is .
+ The parameter does not represent a single ASN.1 BER-encoded value.
+
+
+ Gets a memory value containing the PKCS#8 EncryptedPrivateKeyInfo value transported by this bag.
+ A memory value containing the PKCS#8 EncryptedPrivateKeyInfo value transported by this bag.
+
+
+ Enables the inspection of and creation of PKCS#8 PrivateKeyInfo and EncryptedPrivateKeyInfo values. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+ The Object Identifier (OID) identifying the asymmetric algorithm this key is for.
+ The BER-encoded algorithm parameters associated with this key, or to omit algorithm parameters when encoding.
+ The algorithm-specific encoded private key.
+
+ to store and without making a defensive copy; otherwise, . The default is .
+ The parameter is .
+ The parameter is not , empty, or a single BER-encoded value.
+
+
+ Exports a specified key as a PKCS#8 PrivateKeyInfo and returns its decoded interpretation.
+ The private key to represent in a PKCS#8 PrivateKeyInfo.
+ The parameter is .
+ The decoded interpretation of the exported PKCS#8 PrivateKeyInfo.
+
+
+ Reads the provided data as a PKCS#8 PrivateKeyInfo and returns an object view of the contents.
+ The data to interpret as a PKCS#8 PrivateKeyInfo value.
+ When this method returns, contains a value that indicates the number of bytes read from . This parameter is treated as uninitialized.
+
+ to store without making a defensive copy; otherwise, . The default is .
+ The contents of the parameter were not successfully decoded as a PKCS#8 PrivateKeyInfo.
+ An object view of the contents decoded as a PKCS#8 PrivateKeyInfo.
+
+
+ Decrypts the provided data using the provided byte-based password and decodes the output into an object view of the PKCS#8 PrivateKeyInfo.
+ The bytes to use as a password when decrypting the key material.
+ The data to read as a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
+ When this method returns, contains a value that indicates the number of bytes read from . This parameter is treated as uninitialized.
+ The password is incorrect.
+
+-or-
+
+The contents of indicate the Key Derivation Function (KDF) to apply is the legacy PKCS#12 KDF, which requires -based passwords.
+
+-or-
+
+The contents of do not represent an ASN.1-BER-encoded PKCS#8 EncryptedPrivateKeyInfo structure.
+ An object view of the contents decrypted decoded as a PKCS#8 PrivateKeyInfo.
+
+
+ Decrypts the provided data using the provided character-based password and decodes the output into an object view of the PKCS#8 PrivateKeyInfo.
+ The password to use when decrypting the key material.
+ The bytes of a PKCS#8 EncryptedPrivateKeyInfo structure in the ASN.1-BER encoding.
+ When this method returns, contains a value that indicates the number of bytes read from . This parameter is treated as uninitialized.
+ An object view of the contents decrypted decoded as a PKCS#8 PrivateKeyInfo.
+
+
+ Encodes the property data of this instance as a PKCS#8 PrivateKeyInfo and returns the encoding as a byte array.
+ A byte array representing the encoded form of the PKCS#8 PrivateKeyInfo.
+
+
+ Produces a PKCS#8 EncryptedPrivateKeyInfo from the property contents of this object after encrypting with the specified byte-based password and encryption parameters.
+ The bytes to use as a password when encrypting the key material.
+ The password-based encryption (PBE) parameters to use when encrypting the key material.
+
+ indicates that should be used, which requires -based passwords.
+ A byte array containing the encoded form of the PKCS#8 EncryptedPrivateKeyInfo.
+
+
+ Produces a PKCS#8 EncryptedPrivateKeyInfo from the property contents of this object after encrypting with the specified character-based password and encryption parameters.
+ The password to use when encrypting the key material.
+ The password-based encryption (PBE) parameters to use when encrypting the key material.
+ A byte array containing the encoded form of the PKCS#8 EncryptedPrivateKeyInfo.
+
+
+ Attempts to encode the property data of this instance as a PKCS#8 PrivateKeyInfo, writing the results into a provided buffer.
+ The byte span to receive the PKCS#8 PrivateKeyInfo data.
+ When this method returns, contains a value that indicates the number of bytes written to . This parameter is treated as uninitialized.
+
+ if is big enough to receive the output; otherwise, .
+
+
+ Attempts to produce a PKCS#8 EncryptedPrivateKeyInfo from the property contents of this object after encrypting with the specified byte-based password and encryption parameters, writing the results into a provided buffer.
+ The bytes to use as a password when encrypting the key material.
+ The password-based encryption (PBE) parameters to use when encrypting the key material.
+ The byte span to receive the PKCS#8 EncryptedPrivateKeyInfo data.
+ When this method returns, contains a value that indicates the number of bytes written to . This parameter is treated as uninitialized.
+
+ if is big enough to receive the output; otherwise, .
+
+
+ Attempts to produce a PKCS#8 EncryptedPrivateKeyInfo from the property contents of this object after encrypting with the specified character-based password and encryption parameters, writing the result into a provided buffer.
+ The password to use when encrypting the key material.
+ The password-based encryption (PBE) parameters to use when encrypting the key material.
+ The byte span to receive the PKCS#8 EncryptedPrivateKeyInfo data.
+ When this method returns, contains a value that indicates the number of bytes written to . This parameter is treated as uninitialized.
+
+ if is big enough to receive the output; otherwise, .
+
+
+ Gets the Object Identifier (OID) value identifying the algorithm this key is for.
+ The Object Identifier (OID) value identifying the algorithm this key is for.
+
+
+ Gets a memory value containing the BER-encoded algorithm parameters associated with this key.
+ A memory value containing the BER-encoded algorithm parameters associated with this key, or if no parameters were present.
+
+
+ Gets the modifiable collection of attributes for this private key.
+ The modifiable collection of attributes to encode with the private key.
+
+
+ Gets a memory value that represents the algorithm-specific encoded private key.
+ A memory value that represents the algorithm-specific encoded private key.
+
+
+ Represents an attribute used for CMS/PKCS #7 and PKCS #9 operations.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class using a specified object as its attribute type and value.
+ An object that contains the PKCS #9 attribute type and value to use.
+ The length of the member of the member of is zero.
+ The member of is .
+
+ -or-
+
+ The member of the member of is .
+
+
+ Initializes a new instance of the class using a specified object as the attribute type and a specified ASN.1 encoded data as the attribute value.
+ An object that represents the PKCS #9 attribute type.
+ An array of byte values that represents the PKCS #9 attribute value.
+
+
+ Initializes a new instance of the class using a specified string representation of an object identifier (OID) as the attribute type and a specified ASN.1 encoded data as the attribute value.
+ The string representation of an OID that represents the PKCS #9 attribute type.
+ An array of byte values that contains the PKCS #9 attribute value.
+
+
+ Copies a PKCS #9 attribute type and value for this from the specified object.
+ An object that contains the PKCS #9 attribute type and value to use.
+
+ does not represent a compatible attribute type.
+
+ is .
+
+
+ Gets an object that represents the type of attribute associated with this object.
+ An object that represents the type of attribute associated with this object.
+
+
+ The class defines the type of the content of a CMS/PKCS #7 message.
+
+
+ The constructor creates an instance of the class.
+
+
+ Copies information from an object.
+ The object from which to copy information.
+
+
+ The property gets an object that contains the content type.
+ An object that contains the content type.
+
+
+ The class defines the description of the content of a CMS/PKCS #7 message.
+
+
+ The constructor creates an instance of the class.
+
+
+ The constructor creates an instance of the class by using the specified array of byte values as the encoded description of the content of a CMS/PKCS #7 message.
+ An array of byte values that specifies the encoded description of the CMS/PKCS #7 message.
+
+
+ The constructor creates an instance of the class by using the specified description of the content of a CMS/PKCS #7 message.
+ An instance of the class that specifies the description for the CMS/PKCS #7 message.
+
+
+ Copies information from an object.
+ The object from which to copy information.
+
+
+ The property retrieves the document description.
+ A object that contains the document description.
+
+
+ The class defines the name of a CMS/PKCS #7 message.
+
+
+ The constructor creates an instance of the class.
+
+
+ The constructor creates an instance of the class by using the specified array of byte values as the encoded name of the content of a CMS/PKCS #7 message.
+ An array of byte values that specifies the encoded name of the CMS/PKCS #7 message.
+
+
+ The constructor creates an instance of the class by using the specified name for the CMS/PKCS #7 message.
+ A object that specifies the name for the CMS/PKCS #7 message.
+
+
+ Copies information from an object.
+ The object from which to copy information.
+
+
+ The property retrieves the document name.
+ A object that contains the document name.
+
+
+ Represents the LocalKeyId attribute from PKCS#9.
+
+
+ Initializes a new instance of the class with an empty key identifier value.
+
+
+ Initializes a new instance of the class with a key identifier specified by a byte array.
+ A byte array containing the key identifier.
+
+
+ Initializes a new instance of the class with a key identifier specified by a byte span.
+ A byte array containing the key identifier.
+
+
+ Copies information from a object.
+ The object from which to copy information.
+
+
+ Gets a memory value containing the key identifier from this attribute.
+ A memory value containing the key identifier from this attribute.
+
+
+ The class defines the message digest of a CMS/PKCS #7 message.
+
+
+ The constructor creates an instance of the class.
+
+
+ Copies information from an object.
+ The object from which to copy information.
+
+
+ The property retrieves the message digest.
+ An array of byte values that contains the message digest.
+
+
+ Defines the signing date and time of a signature. A object can be used as an authenticated attribute of a object when an authenticated date and time are to accompany a digital signature.
+
+
+ The constructor creates an instance of the class.
+
+
+ The constructor creates an instance of the class by using the specified array of byte values as the encoded signing date and time of the content of a CMS/PKCS #7 message.
+ An array of byte values that specifies the encoded signing date and time of the CMS/PKCS #7 message.
+
+
+ The constructor creates an instance of the class by using the specified signing date and time.
+ A structure that represents the signing date and time of the signature.
+
+
+ Copies information from a object.
+ The object from which to copy information.
+
+
+ The property retrieves a structure that represents the date and time that the message was signed.
+ A structure that contains the date and time the document was signed.
+
+
+ The class represents information associated with a public key.
+
+
+ The property retrieves the algorithm identifier associated with the public key.
+ An object that represents the algorithm.
+
+
+ The property retrieves the value of the encoded public component of the public key pair.
+ An array of byte values that represents the encoded public component of the public key pair.
+
+
+ The class represents information about a CMS/PKCS #7 message recipient. The class is an abstract class inherited by the and classes.
+
+
+ The abstract property retrieves the encrypted recipient keying material.
+ An array of byte values that contain the encrypted recipient keying material.
+
+
+ The abstract property retrieves the algorithm used to perform the key establishment.
+ An object that contains the value of the algorithm used to establish the key between the originator and recipient of the CMS/PKCS #7 message.
+
+
+ The abstract property retrieves the identifier of the recipient.
+ A object that contains the identifier of the recipient.
+
+
+ The property retrieves the type of the recipient. The type of the recipient determines which of two major protocols is used to establish a key between the originator and the recipient of a CMS/PKCS #7 message.
+ A value of the enumeration that defines the type of the recipient.
+
+
+ The abstract property retrieves the version of the recipient information. Derived classes automatically set this property for their objects, and the value indicates whether it is using PKCS #7 or Cryptographic Message Syntax (CMS) to protect messages. The version also implies whether the object establishes a cryptographic key by a key agreement algorithm or a key transport algorithm.
+ An value that represents the version of the object.
+
+
+ The class represents a collection of objects. implements the interface.
+
+
+ The method copies the collection to an array.
+ An object to which the collection is to be copied.
+ The zero-based index in where the collection is copied.
+ One of the arguments provided to a method was not valid.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+
+
+ The method copies the collection to a array.
+ An array of objects where the collection is to be copied.
+ The zero-based index in where the collection is copied.
+ One of the arguments provided to a method was not valid.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+
+
+ The method returns a object for the collection.
+ A object that can be used to enumerate the collection.
+
+
+ The method returns a object for the collection.
+ A object that can be used to enumerate the collection.
+
+
+ The property retrieves the number of items in the collection.
+ An int value that represents the number of items in the collection.
+
+
+ The property retrieves whether access to the collection is synchronized, or thread safe. This property always returns , which means the collection is not thread safe.
+ A value of , which means the collection is not thread safe.
+
+
+ The property retrieves the object at the specified index in the collection.
+ An int value that represents the index in the collection. The index is zero based.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+ A object at the specified index.
+
+
+ The property retrieves an object used to synchronize access to the collection.
+ An object used to synchronize access to the collection.
+
+
+ The class provides enumeration functionality for the collection. implements the interface.
+
+
+ The method advances the enumeration to the next object in the collection.
+ This method returns a bool that specifies whether the enumeration successfully advanced. If the enumeration successfully moved to the next object, the method returns . If the enumeration moved past the last item in the enumeration, it returns .
+
+
+ The method resets the enumeration to the first object in the collection.
+
+
+ The property retrieves the current object from the collection.
+ A object that represents the current recipient information structure in the collection.
+
+
+ The property retrieves the current object from the collection.
+ A object that represents the current recipient information structure in the collection.
+
+
+ The enumeration defines the types of recipient information.
+
+
+ Key agreement recipient information.
+
+
+ Key transport recipient information.
+
+
+ The recipient information type is unknown.
+
+
+ Represents a time-stamping request from IETF RFC 3161.
+
+
+ Creates a timestamp request by hashing the provided data with a specified algorithm.
+ The data to timestamp, which will be hashed by this method.
+ The hash algorithm to use with this timestamp request.
+ The Object Identifier (OID) for a timestamp policy the Timestamp Authority (TSA) should use, or to express no preference.
+ An optional nonce (number used once) to uniquely identify this request to pair it with the response. The value is interpreted as an unsigned big-endian integer and may be normalized to the encoding format.
+
+ to indicate the Timestamp Authority (TSA) must include the signing certificate in the issued timestamp token; otherwise, .
+ An optional collection of extensions to include in the request.
+
+ . is or .
+
+ is not a known hash algorithm.
+ An representing the chosen values.
+
+
+ Create a timestamp request using a pre-computed hash value and the name of the hash algorithm.
+ The pre-computed hash value to be timestamped.
+ The hash algorithm used to produce .
+ The Object Identifier (OID) for the timestamp policy that the Timestamp Authority (TSA) should use, or to express no preference.
+ An optional value used to uniquely match a request to a response, or to not include a nonce in the request.
+
+ to indicate the Timestamp Authority (TSA) must include the signing certificate in the issued timestamp token; otherwise, .
+ An optional collection of extensions to include in the request.
+
+ is not a known hash algorithm.
+ An representing the chosen values.
+
+
+ Create a timestamp request using a pre-computed hash value and the Object Identifier for the hash algorithm.
+ The pre-computed hash value to be timestamped.
+ The Object Identifier (OID) for the hash algorithm that produced .
+ The Object Identifier (OID) for a timestamp policy the Timestamp Authority (TSA) should use, or to express no preference.
+ An optional nonce (number used once) to uniquely identify this request to pair it with the response. The value is interpreted as an unsigned big-endian integer and may be normalized to the encoding format.
+
+ to indicate the Timestamp Authority (TSA) must include the signing certificate in the issued timestamp token; otherwise, .
+ An optional collection of extensions to include in the request.
+
+ is .
+
+ . is not a valid OID.
+ An representing the chosen values.
+
+
+ Creates a timestamp request by hashing the signature of the provided signer with a specified algorithm.
+ The CMS signer information to build a timestamp request for.
+ The hash algorithm to use with this timestamp request.
+ The Object Identifier (OID) for the timestamp policy that the Timestamp Authority (TSA) should use, or to express no preference.
+ An optional nonce (number used once) to uniquely identify this request to pair it with the response. The value is interpreted as an unsigned big-endian integer and may be normalized to the encoding format.
+
+ to indicate the Timestamp Authority (TSA) must include the signing certificate in the issued timestamp token; otherwise, .
+ An optional collection of extensions to include in the request.
+
+ is .
+
+ . is or .
+
+ is not a known hash algorithm.
+ An representing the chosen values.
+
+
+ Encodes the timestamp request and returns it as a byte array.
+ A byte array containing the DER-encoded timestamp request.
+
+
+ Gets a collection with a copy of the extensions present on this request.
+ A collection with a copy of the extensions present on this request.
+
+
+ Gets the data hash for this timestamp request.
+ The data hash for this timestamp request as a read-only memory value.
+
+
+ Gets the nonce for this timestamp request.
+ The nonce for this timestamp request as a read-only memory value, if one was present; otherwise, .
+
+
+ Combines an encoded timestamp response with this request to produce a .
+ The DER encoded timestamp response.
+ When this method returns, the number of bytes that were read from . This parameter is treated as uninitialized.
+ The timestamp token from the response that corresponds to this request.
+
+
+ Attemps to interpret the contents of as a DER-encoded Timestamp Request.
+ The buffer containing a DER-encoded timestamp request.
+ When this method returns, the successfully decoded timestamp request if decoding succeeded, or if decoding failed. This parameter is treated as uninitialized.
+ When this method returns, the number of bytes that were read from . This parameter is treated as uninitialized.
+
+ if was successfully interpreted as a Timestamp Request; otherwise, .
+
+
+ Attempts to encode the instance as an IETF RFC 3161 TimeStampReq, writing the bytes into the provided buffer.
+ The buffer to receive the encoded request.
+ When this method returns, the total number of bytes written into . This parameter is treated as uninitialized.
+
+ if is long enough to receive the encoded request; otherwise, .
+
+
+ Indicates whether or not the request has extensions.
+
+ if the request has any extensions; otherwise, .
+
+
+ Gets the Object Identifier (OID) for the hash algorithm associated with the request.
+ The Object Identifier (OID) for the hash algorithm associated with the request.
+
+
+ Gets the policy ID for the request, or when no policy ID was requested.
+ The policy ID for the request, or when no policy ID was requested.
+
+
+ Gets a value indicating whether or not the request indicated that the timestamp authority certificate is required to be in the response.
+
+ if the response must include the timestamp authority certificate; otherwise, .
+
+
+ Gets the data format version number for this request.
+ The data format version number for this request.
+
+
+ Represents a time-stamp token from IETF RFC 3161.
+
+
+ Gets a Signed Cryptographic Message Syntax (CMS) representation of the RFC3161 time-stamp token.
+ The representation of the .
+
+
+ Attemps to interpret the contents of as a DER-encoded time-stamp token.
+ The buffer containing a DER-encoded time-stamp token.
+ When this method returns, the successfully decoded time-stamp token if decoding succeeded, or if decoding failed. This parameter is treated as uninitialized.
+ When this method returns, the number of bytes that were read from . This parameter is treated as uninitialized.
+
+ if was successfully interpreted as a time-stamp token; otherwise, .
+
+
+ Verifies that the current token is a valid time-stamp token for the provided data.
+ The data to verify against this time-stamp token.
+ When this method returns, the certificate from the Timestamp Authority (TSA) which signed this token, or if a signer certificate cannot be determined. This parameter is treated as uninitialized.
+ An optional collection of certificates to consider as the Timestamp Authority (TSA) certificates, in addition to any certificates that may be included within the token.
+
+ if the Timestamp Authority (TSA) certificate was found, the certificate public key validates the token signature, and the token matches the hash for the provided data; otherwise, .
+
+
+ Verifies that the current token is a valid time-stamp token for the provided data hash and algorithm identifier.
+ The cryptographic hash to verify against this time-stamp token.
+ The algorithm which produced .
+ When this method returns, the certificate from the Timestamp Authority (TSA) which signed this token, or if a signer certificate cannot be determined. This parameter is treated as uninitialized.
+ An optional collection of certificates to consider as the Timestamp Authority (TSA) certificates, in addition to any certificates that may be included within the token.
+
+ if the Timestamp Authority (TSA) certificate was found, the certificate public key validates the token signature, and the token matches the hash for the provided data hash and algorithm; otherwise, .
+
+
+ Verifies that the current token is a valid time-stamp token for the provided data hash and algorithm identifier.
+ The cryptographic hash to verify against this time-stamp token.
+ The OID of the hash algorithm.
+ When this method returns, the certificate from the Timestamp Authority (TSA) which signed this token, or if a signer certificate cannot be determined. This parameter is treated as uninitialized.
+ An optional collection of certificates to consider as the Timestamp Authority (TSA) certificates, in addition to any certificates that may be included within the token.
+
+ if the Timestamp Authority (TSA) certificate was found, the certificate public key validates the token signature, and the token matches the hash for the provided data hash and algorithm; otherwise, .
+
+
+ Verifies that the current token is a valid time-stamp token for the provided .
+ The CMS signer information to verify the timestamp was built for.
+ When this method returns, the certificate from the Timestamp Authority (TSA) that signed this token, or if a signer certificate cannot be determined. This parameter is treated as uninitialized.
+ An optional collection of certificates to consider as the Timestamp Authority (TSA) certificates, in addition to any certificates that may be included within the token.
+
+ is .
+
+ if the Timestamp Authority (TSA) certificate was found, the certificate public key validates the token signature, and the token matches the signature for ; otherwise, .
+
+
+ Gets the details of this time-stamp token as a .
+ The details of this time-stamp token as a .
+
+
+ Represents the timestamp token information class defined in RFC3161 as TSTInfo.
+
+
+ Initializes a new instance of the class with the specified parameters.
+ An OID representing the TSA's policy under which the response was produced.
+ A hash algorithm OID of the data to be timestamped.
+ A hash value of the data to be timestamped.
+ An integer assigned by the TSA to the .
+ The timestamp encoded in the token.
+ The accuracy with which is compared. Also see .
+
+ to ensure that every timestamp token from the same TSA can always be ordered based on the , regardless of the accuracy; to make indicate when token has been created by the TSA.
+ The nonce associated with this timestamp token. Using a nonce always allows to detect replays, and hence its use is recommended.
+ The hint in the TSA name identification. The actual identification of the entity that signed the response will always occur through the use of the certificate identifier.
+ The extension values associated with the timestamp.
+ The ASN.1 data is corrupted.
+
+
+ Encodes this object into a TSTInfo value.
+ The encoded TSTInfo value.
+
+
+ Gets the extension values associated with the timestamp.
+ The extension values associated with the timestamp.
+
+
+ Gets the data representing the message hash.
+ The data representing the message hash.
+
+
+ Gets the nonce associated with this timestamp token.
+ The nonce associated with this timestamp token.
+
+
+ Gets an integer assigned by the TSA to the .
+ An integer assigned by the TSA to the .
+
+
+ Gets the data representing the hint in the TSA name identification.
+ The data representing the hint in the TSA name identification.
+
+
+ Decodes an encoded TSTInfo value.
+ The input or source buffer.
+ When this method returns , the decoded data. When this method returns , the value is , meaning the data could not be decoded.
+ The number of bytes used for decoding.
+
+ if the operation succeeded; otherwise.
+
+
+ Attempts to encode this object as a TSTInfo value, writing the result into the provided buffer.
+ The destination buffer.
+ When this method returns , contains the bytes written to the buffer.
+
+ if the operation succeeded; if the buffer size was insufficient.
+
+
+ Gets the accuracy with which is compared.
+ The accuracy with which is compared.
+
+
+ Gets a value indicating whether there are any extensions associated with this timestamp token.
+
+ if there are any extensions associated with this timestamp token; otherwise.
+
+
+ Gets an OID of the hash algorithm.
+ An OID of the hash algorithm.
+
+
+ Gets a value indicating if every timestamp token from the same TSA can always be ordered based on the , regardless of the accuracy. If the value is , indicates when the token has been created by the TSA.
+
+ if every timestamp token from the same TSA can always be ordered based on the ; otherwise.
+
+
+ Gets an OID representing the TSA's policy under which the response was produced.
+ An OID representing the TSA's policy under which the response was produced.
+
+
+ Gets the timestamp encoded in the token.
+ The timestamp encoded in the token.
+
+
+ Gets the version of the timestamp token.
+ The version of the timestamp token.
+
+
+ The class enables signing and verifying of CMS/PKCS #7 messages.
+
+
+ The constructor creates an instance of the class.
+ A null reference was passed to a method that does not accept it as a valid argument.
+
+
+ The constructor creates an instance of the class by using the specified content information as the inner content.
+ A object that specifies the content information as the inner content of the message.
+ A null reference was passed to a method that does not accept it as a valid argument.
+
+
+ The constructor creates an instance of the class by using the specified content information as the inner content and by using the detached state.
+ A object that specifies the content information as the inner content of the message.
+ A value that specifies whether the object is for a detached signature. If is , the signature is detached. If is , the signature is not detached.
+ A null reference was passed to a method that does not accept it as a valid argument.
+
+
+ The constructor creates an instance of the class by using the specified subject identifier type as the default subject identifier type for signers.
+ A member that specifies the default subject identifier type for signers.
+ A null reference was passed to a method that does not accept it as a valid argument.
+
+
+ The constructor creates an instance of the class by using the specified subject identifier type as the default subject identifier type for signers and content information as the inner content.
+ A member that specifies the default subject identifier type for signers.
+ A object that specifies the content information as the inner content of the message.
+ A null reference was passed to a method that does not accept it as a valid argument.
+
+
+ The constructor creates an instance of the class by using the specified subject identifier type as the default subject identifier type for signers, the content information as the inner content, and by using the detached state.
+ A member that specifies the default subject identifier type for signers.
+ A object that specifies the content information as the inner content of the message.
+ A value that specifies whether the object is for a detached signature. If is , the signature is detached. If detached is , the signature is not detached.
+ A null reference was passed to a method that does not accept it as a valid argument.
+
+
+ Adds a certificate to the collection of certificates for the encoded CMS/PKCS #7 message.
+ The certificate to add to the collection.
+ The certificate already exists in the collection.
+
+
+ The method verifies the data integrity of the CMS/PKCS #7 message. is a specialized method used in specific security infrastructure applications that only wish to check the hash of the CMS message, rather than perform a full digital signature verification. does not authenticate the author nor sender of the message because this method does not involve verifying a digital signature. For general-purpose checking of the integrity and authenticity of a CMS/PKCS #7 message, use the or methods.
+ A method call was invalid for the object's current state.
+
+
+ The method verifies the digital signatures on the signed CMS/PKCS #7 message and, optionally, validates the signers' certificates.
+ A value that specifies whether only the digital signatures are verified without the signers' certificates being validated.
+
+ If is , only the digital signatures are verified. If it is , the digital signatures are verified, the signers' certificates are validated, and the purposes of the certificates are validated. The purposes of a certificate are considered valid if the certificate has no key usage or if the key usage supports digital signatures or nonrepudiation.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ The method verifies the digital signatures on the signed CMS/PKCS #7 message by using the specified collection of certificates and, optionally, validates the signers' certificates.
+ An object that can be used to validate the certificate chain. If no additional certificates are to be used to validate the certificate chain, use instead of .
+ A value that specifies whether only the digital signatures are verified without the signers' certificates being validated.
+
+ If is , only the digital signatures are verified. If it is , the digital signatures are verified, the signers' certificates are validated, and the purposes of the certificates are validated. The purposes of a certificate are considered valid if the certificate has no key usage or if the key usage supports digital signatures or nonrepudiation.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ Creates a signature and adds the signature to the CMS/PKCS #7 message.
+ .NET Framework (all versions) and .NET Core 3.0 and later: The recipient certificate is not specified.
+ .NET Core version 2.2 and earlier: No signer certificate was provided.
+
+
+ Creates a signature using the specified signer and adds the signature to the CMS/PKCS #7 message.
+ A object that represents the signer.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ A cryptographic operation could not be completed.
+
+
+ Creates a signature using the specified signer and adds the signature to the CMS/PKCS #7 message.
+ A object that represents the signer.
+ .NET Core and .NET 5+ only: to request opening keys with PIN prompts disabled, where supported; otherwise, . In .NET Framework, this parameter is not used and a PIN prompt is always shown, if required.
+
+ is .
+ A cryptographic operation could not be completed.
+ .NET Framework only: A signing certificate is not specified.
+ .NET Core and .NET 5+ only: A signing certificate is not specified.
+
+
+ Decodes an encoded message.
+ An array of byte values that represents the encoded CMS/PKCS#7 message to be decoded.
+
+ is .
+
+ could not be decoded successfully.
+
+
+ A read-only span of byte values that represents the encoded CMS/PKCS#7 message to be decoded.
+
+ could not be decoded successfully.
+
+
+ The method encodes the information in the object into a CMS/PKCS #7 message.
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+ An array of byte values that represents the encoded message. The encoded message can be decoded by the method.
+
+
+ Removes the specified certificate from the collection of certificates for the encoded CMS/PKCS #7 message.
+ The certificate to remove from the collection.
+ The certificate was not found.
+
+
+ Removes the signature at the specified index of the collection.
+ The zero-based index of the signature to remove.
+ A CMS/PKCS #7 message is not signed, and is invalid.
+
+ is less than zero.
+
+ -or-
+
+ is greater than the signature count minus 1.
+ The signature could not be removed.
+
+ -or-
+
+ An internal cryptographic error occurred.
+
+
+ The method removes the signature for the specified object.
+ A object that represents the countersignature being removed.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+ A cryptographic operation could not be completed.
+
+
+ The property retrieves the certificates associated with the encoded CMS/PKCS #7 message.
+ An collection that represents the set of certificates for the encoded CMS/PKCS #7 message.
+
+
+ The property retrieves the inner contents of the encoded CMS/PKCS #7 message.
+ A object that represents the contents of the encoded CMS/PKCS #7 message.
+
+
+ The property retrieves whether the object is for a detached signature.
+ A value that specifies whether the object is for a detached signature. If this property is , the signature is detached. If this property is , the signature is not detached.
+
+
+ The property retrieves the collection associated with the CMS/PKCS #7 message.
+ A object that represents the signer information for the CMS/PKCS #7 message.
+
+
+ The property retrieves the version of the CMS/PKCS #7 message.
+ An int value that represents the CMS/PKCS #7 message version.
+
+
+ The class represents a signer associated with a object that represents a CMS/PKCS #7 message.
+
+
+ Adds the specified attribute to the current document.
+ The ASN.1 encoded attribute to add to the document.
+ Cannot find the original signer.
+
+ -or-
+
+ASN1 corrupted data.
+
+
+ The method verifies the data integrity of the CMS/PKCS #7 message signer information. is a specialized method used in specific security infrastructure applications in which the subject uses the HashOnly member of the enumeration when setting up a object. does not authenticate the signer information because this method does not involve verifying a digital signature. For general-purpose checking of the integrity and authenticity of CMS/PKCS #7 message signer information and countersignatures, use the or methods.
+ A cryptographic operation could not be completed.
+
+
+ The method verifies the digital signature of the message and, optionally, validates the certificate.
+ A bool value that specifies whether only the digital signature is verified. If is , only the signature is verified. If is , the digital signature is verified, the certificate chain is validated, and the purposes of the certificates are validated. The purposes of the certificate are considered valid if the certificate has no key usage or if the key usage supports digital signature or nonrepudiation.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ The method verifies the digital signature of the message by using the specified collection of certificates and, optionally, validates the certificate.
+ An object that can be used to validate the chain. If no additional certificates are to be used to validate the chain, use instead of .
+ A bool value that specifies whether only the digital signature is verified. If is , only the signature is verified. If is , the digital signature is verified, the certificate chain is validated, and the purposes of the certificates are validated. The purposes of the certificate are considered valid if the certificate has no key usage or if the key usage supports digital signature or nonrepudiation.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ A cryptographic operation could not be completed.
+ A method call was invalid for the object's current state.
+
+
+ The method prompts the user to select a signing certificate, creates a countersignature, and adds the signature to the CMS/PKCS #7 message. Countersignatures are restricted to one level.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ A cryptographic operation could not be completed.
+
+
+ The method creates a countersignature by using the specified signer and adds the signature to the CMS/PKCS #7 message. Countersignatures are restricted to one level.
+ A object that represents the counter signer.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ A cryptographic operation could not be completed.
+
+
+ Retrieves the signature for the current object.
+ The signature for the current object.
+
+
+ The method removes the countersignature at the specified index of the collection.
+ The zero-based index of the countersignature to remove.
+ A cryptographic operation could not be completed.
+
+
+ The method removes the countersignature for the specified object.
+ A object that represents the countersignature being removed.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+ A cryptographic operation could not be completed.
+
+
+ Removes the specified attribute from the current document.
+ The ASN.1 encoded attribute to remove from the document.
+ Cannot find the original signer.
+
+ -or-
+
+Attribute not found.
+
+ -or-
+
+ASN1 corrupted data.
+
+
+ The property retrieves the signing certificate associated with the signer information.
+ An object that represents the signing certificate.
+
+
+ The property retrieves the set of counter signers associated with the signer information.
+ A collection that represents the counter signers for the signer information. If there are no counter signers, the property is an empty collection.
+
+
+ The property retrieves the object that represents the hash algorithm used in the computation of the signatures.
+ An object that represents the hash algorithm used with the signature.
+
+
+ Gets the identifier for the signature algorithm used by the current object.
+ The identifier for the signature algorithm used by the current object.
+
+
+ The property retrieves the collection of signed attributes that is associated with the signer information. Signed attributes are signed along with the rest of the message content.
+ A collection that represents the signed attributes. If there are no signed attributes, the property is an empty collection.
+
+
+ The property retrieves the certificate identifier of the signer associated with the signer information.
+ A object that uniquely identifies the certificate associated with the signer information.
+
+
+ The property retrieves the collection of unsigned attributes that is associated with the content. Unsigned attributes can be modified without invalidating the signature.
+ A collection that represents the unsigned attributes. If there are no unsigned attributes, the property is an empty collection.
+
+
+ The property retrieves the signer information version.
+ An int value that specifies the signer information version.
+
+
+ The class represents a collection of objects. implements the interface.
+
+
+ The method copies the collection to an array.
+ An object to which the collection is to be copied.
+ The zero-based index in where the collection is copied.
+ One of the arguments provided to a method was not valid.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+
+
+ The method copies the collection to a array.
+ An array of objects where the collection is to be copied.
+ The zero-based index in where the collection is copied.
+ One of the arguments provided to a method was not valid.
+ A null reference was passed to a method that does not accept it as a valid argument.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+
+
+ The method returns a object for the collection.
+ A object that can be used to enumerate the collection.
+
+
+ The method returns a object for the collection.
+ A object that can be used to enumerate the collection.
+
+
+ The property retrieves the number of items in the collection.
+ An int value that represents the number of items in the collection.
+
+
+ The property retrieves whether access to the collection is synchronized, or thread safe. This property always returns , which means the collection is not thread safe.
+ A value of , which means the collection is not thread safe.
+
+
+ The property retrieves the object at the specified index in the collection.
+ An int value that represents the index in the collection. The index is zero based.
+ The value of an argument was outside the allowable range of values as defined by the called method.
+ A object at the specified index.
+
+
+ The property retrieves an object is used to synchronize access to the collection.
+ An object is used to synchronize access to the collection.
+
+
+ The class provides enumeration functionality for the collection. implements the interface.
+
+
+ The method advances the enumeration to the next object in the collection.
+ This method returns a bool value that specifies whether the enumeration successfully advanced. If the enumeration successfully moved to the next object, the method returns . If the enumeration moved past the last item in the enumeration, it returns .
+
+
+ The method resets the enumeration to the first object in the collection.
+
+
+ The property retrieves the current object from the collection.
+ A object that represents the current signer information structure in the collection.
+
+
+ The property retrieves the current object from the collection.
+ A object that represents the current signer information structure in the collection.
+
+
+ The class defines the type of the identifier of a subject, such as a or a . The subject can be identified by the certificate issuer and serial number or the subject key.
+
+
+ Verifies if the specified certificate's subject identifier matches current subject identifier instance.
+ The certificate to match with the current subject identifier instance.
+ Invalid subject identifier type.
+
+ if the specified certificate's identifier matches the current subject identifier instance; otherwise, .
+
+
+ The property retrieves the type of subject identifier. The subject can be identified by the certificate issuer and serial number or the subject key.
+ A member of the enumeration that identifies the type of subject.
+
+
+ The property retrieves the value of the subject identifier. Use the property to determine the type of subject identifier, and use the property to retrieve the corresponding value.
+ An object that represents the value of the subject identifier. This can be one of the following objects as determined by the property.
+
+ property Object- IssuerAndSerialNumber
- SubjectKeyIdentifier
+
+
+ The class defines the type of the identifier of a subject, such as a or a . The subject can be identified by the certificate issuer and serial number, the hash of the subject key, or the subject key.
+
+
+ The property retrieves the type of subject identifier or key. The subject can be identified by the certificate issuer and serial number, the hash of the subject key, or the subject key.
+ A member of the enumeration that specifies the type of subject identifier.
+
+
+ The property retrieves the value of the subject identifier or key. Use the property to determine the type of subject identifier or key, and use the property to retrieve the corresponding value.
+ An object that represents the value of the subject identifier or key. This can be one of the following objects as determined by the property.
+
+ property Object- IssuerAndSerialNumber
- SubjectKeyIdentifier
- PublicKeyInfo
+
+
+ The enumeration defines how a subject is identified.
+
+
+ The subject is identified by the certificate issuer and serial number.
+
+
+ The subject is identified by the public key.
+
+
+ The subject is identified by the hash of the subject key.
+
+
+ The type is unknown.
+
+
+ The enumeration defines the type of subject identifier.
+
+
+ The subject is identified by the certificate issuer and serial number.
+
+
+ The subject is identified as taking part in an integrity check operation that uses only a hashing algorithm.
+
+
+ The subject is identified by the hash of the subject's public key. The hash algorithm used is determined by the signature algorithm suite in the subject's certificate.
+
+
+ The type of subject identifier is unknown.
+
+
+ Represents the <> element of an XML digital signature.
+
+
+ Gets or sets an X.509 certificate issuer's distinguished name.
+ An X.509 certificate issuer's distinguished name.
+
+
+ Gets or sets an X.509 certificate issuer's serial number.
+ An X.509 certificate issuer's serial number.
+
+
+
\ No newline at end of file
diff --git a/bin/System.Security.Cryptography.Xml.dll b/bin/System.Security.Cryptography.Xml.dll
new file mode 100644
index 0000000..fed55b8
Binary files /dev/null and b/bin/System.Security.Cryptography.Xml.dll differ
diff --git a/bin/System.Security.Cryptography.Xml.xml b/bin/System.Security.Cryptography.Xml.xml
new file mode 100644
index 0000000..86d2a24
--- /dev/null
+++ b/bin/System.Security.Cryptography.Xml.xml
@@ -0,0 +1,2191 @@
+
+
+
+ System.Security.Cryptography.Xml
+
+
+
+ Represents the element in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class using a byte array as the value.
+ The encrypted data to use for the element.
+ The parameter is .
+ The property has already been set.
+
+
+ Initializes a new instance of the class using a object.
+ The object to use.
+ The parameter is .
+ The property has already been set.
+
+
+ Gets the XML values for the object.
+ The property and the property are .
+ A object that represents the XML information for the object.
+
+
+ Loads XML data from an into a object.
+ An that represents the XML data to load.
+ The parameter is .
+ The property and the property are .
+
+
+ Gets or sets the element.
+ The property was set to .
+ The property was set more than once.
+ A object.
+
+
+ Gets or sets the element.
+ The property was set to .
+ The property was set more than once.
+ A byte array that represents the element.
+
+
+ Represents the element in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class using the specified Uniform Resource Identifier (URI).
+ A Uniform Resource Identifier (URI) pointing to the encrypted data.
+
+
+ Initializes a new instance of the class using the specified Uniform Resource Identifier (URI) and transform chain information.
+ A Uniform Resource Identifier (URI) pointing to the encrypted data.
+ A object that describes transforms to do on the encrypted data.
+
+
+ Returns the XML representation of a object.
+ The value is .
+ An that represents the element in XML encryption.
+
+
+ Loads XML information into the element in XML encryption.
+ An object that represents an XML element to use as the reference.
+ The provided is .
+
+
+ The exception that's thrown when the signed XML recursion limit is reached.
+ Catch this exception when computing the hash, in addition to the other exceptions that ComputeHash can throw.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class with serialized data.
+ The object that holds the serialized object data.
+ The contextual information about the source or destination.
+
+
+ Initializes a new instance of the class with a specified error message.
+ The error message that explains the reason for the exception.
+
+
+ Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception.
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception.
+
+
+ Represents the object element of an XML signature that holds data to be signed.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class with the specified identification, MIME type, encoding, and data.
+ The identification to initialize the new instance of with.
+ The MIME type of the data used to initialize the new instance of .
+ The encoding of the data used to initialize the new instance of .
+ The data to initialize the new instance of with.
+ The parameter is .
+
+
+ Returns the XML representation of the object.
+ The XML representation of the object.
+
+
+ Loads a state from an XML element.
+ The XML element to load the state from.
+ The value from the XML element is .
+
+
+ Gets or sets the data value of the current object.
+ The value used to set the property is .
+ The data of the current .
+
+
+ Gets or sets the encoding of the current object.
+ The type of encoding of the current object.
+
+
+ Gets or sets the identification of the current object.
+ The name of the element that contains data to be used.
+
+
+ Gets or sets the MIME type of the current object.
+ The MIME type of the current object. The default is .
+
+
+ Represents the element used in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class using the specified Uniform Resource Identifier (URI).
+ A Uniform Resource Identifier (URI) that points to the encrypted data.
+
+
+ Initializes a new instance of the class using the specified Uniform Resource Identifier (URI) and a object.
+ A Uniform Resource Identifier (URI) that points to the encrypted data.
+ A object that describes transforms to do on the encrypted data.
+
+
+ Represents the private key of the element.
+
+
+ Initializes a new instance of the class with a new, randomly-generated public key.
+
+
+ Initializes a new instance of the class with the specified public key.
+ The instance of an implementation of the class that holds the public key.
+
+
+ Returns the XML representation of a element.
+ The XML representation of the element.
+
+
+ Loads a state from an XML element.
+ The XML element to load the state from.
+ The parameter is .
+ The parameter is not a valid XML element.
+
+
+ Gets or sets the key value represented by a object.
+ The public key represented by a object.
+
+
+ Represents the element in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Returns the XML representation of the object.
+ The value is .
+ An that represents the element in XML encryption.
+
+
+ Loads XML information into the element in XML encryption.
+ An object representing an XML element to use for the element.
+ The provided is .
+ The parameter does not contain a <> node.
+
+
+ Represents the element in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds a element to the element.
+ A object to add to the property.
+
+
+ Adds a element to the element.
+ A object to add to the property.
+
+
+ Returns the XML representation of the object.
+ The value is .
+ An that represents the element in XML encryption.
+
+
+ Loads the specified XML information into the element in XML encryption.
+ An representing an XML element to use for the element.
+ The parameter is .
+ The parameter does not contain a element.
+
+
+ Gets or sets the optional element in XML encryption.
+ A string that represents a name for the key value.
+
+
+ Gets or sets the optional attribute in XML encryption.
+ A string representing the value of the attribute.
+
+
+ Gets or sets the element in XML encryption.
+ A object.
+
+
+ Represents the abstract base class used in XML encryption from which the , , and classes derive.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class using the specified Uniform Resource Identifier (URI).
+ The Uniform Resource Identifier (URI) that points to the data to encrypt.
+ The parameter is .
+
+
+ Initializes a new instance of the class using the specified Uniform Resource Identifier (URI) and transform chain.
+ The Uniform Resource Identifier (URI) that points to the data to encrypt.
+ A object that describes transforms to be done on the data to encrypt.
+ The parameter is .
+
+
+ Adds a object to the current transform chain of an object.
+ A object to add to the transform chain.
+
+
+ Returns the XML representation of an object.
+ The property is .
+ An object that represents the values of the element in XML encryption.
+
+
+ Loads an XML element into an object.
+ An object that represents an XML element.
+ The parameter is .
+
+
+ Gets a value that indicates whether the cache is valid.
+
+ if the cache is valid; otherwise, .
+
+
+ Gets or sets a reference type.
+ The reference type of the encrypted data.
+
+
+ Gets or sets the transform chain of an object.
+ A object that describes transforms used on the encrypted data.
+
+
+ Gets or sets the Uniform Resource Identifier (URI) of an object.
+ The property was set to .
+ The Uniform Resource Identifier (URI) of the object.
+
+
+ Represents the abstract base class from which the classes and derive.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds an child element to the element in the current object in XML encryption.
+ An object.
+
+
+ Returns the XML representation of the object.
+ An object that represents the element in XML encryption.
+
+
+ Loads XML information into the element in XML encryption.
+ An object representing an XML element to use in the element.
+ The provided is .
+
+
+ Gets or sets the value for an instance of an class.
+ The property was set to .
+ A object.
+
+
+ Gets or sets the attribute of an instance in XML encryption.
+ A string that describes the encoding of the encrypted data.
+
+
+ Gets or sets the element for XML encryption.
+ An object that represents the element.
+
+
+ Gets or sets the element in XML encryption.
+ An object.
+
+
+ Gets or sets the attribute of an instance in XML encryption.
+ A string of the attribute of the element.
+
+
+ Gets of sets the element in XML encryption.
+ A object.
+
+
+ Gets or sets the attribute of an instance in XML encryption.
+ A string that describes the media type of the encrypted data.
+
+
+ Gets or sets the attribute of an instance in XML encryption.
+ A string that describes the text form of the encrypted data.
+
+
+ Represents the process model for implementing XML encryption.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the 128-bit Advanced Encryption Standard (AES) Key Wrap algorithm (also known as the Rijndael Key Wrap algorithm). This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the 128-bit Advanced Encryption Standard (AES) algorithm (also known as the Rijndael algorithm). This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the 192-bit Advanced Encryption Standard (AES) Key Wrap algorithm (also known as the Rijndael Key Wrap algorithm). This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the 192-bit Advanced Encryption Standard (AES) algorithm (also known as the Rijndael algorithm). This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the 256-bit Advanced Encryption Standard (AES) Key Wrap algorithm (also known as the Rijndael Key Wrap algorithm). This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the 256-bit Advanced Encryption Standard (AES) algorithm (also known as the Rijndael algorithm). This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the Digital Encryption Standard (DES) algorithm. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for XML encryption element content. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for an XML encryption element. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the XML encryption element. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for XML encryption syntax and processing. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the RSA Public Key Cryptography Standard (PKCS) Version 1.5 algorithm. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the RSA Optimal Asymmetric Encryption Padding (OAEP) encryption algorithm. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the SHA-256 algorithm. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the SHA-512 algorithm. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the TRIPLEDES key wrap algorithm. This field is constant.
+
+
+ Represents the namespace Uniform Resource Identifier (URI) for the Triple DES algorithm. This field is constant.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class using the specified XML document.
+ An object used to initialize the object.
+
+
+ Initializes a new instance of the class using the specified XML document and evidence.
+ An object used to initialize the object.
+ An object associated with the object.
+
+
+ Defines a mapping between a key name and a symmetric key or an asymmetric key.
+ The name to map to .
+ The symmetric key to map to .
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ The value of the parameter is not an RSA algorithm or a symmetric key.
+
+
+ Resets all key name mapping.
+
+
+ Decrypts an element using the specified symmetric algorithm.
+ The data to decrypt.
+ The symmetric key used to decrypt .
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ A byte array that contains the raw decrypted plain text.
+
+
+ Decrypts all elements of the XML document that were specified during initialization of the class.
+ The cryptographic key used to decrypt the document was not found.
+
+
+ Determines the key represented by the element.
+ The object that contains the key to retrieve.
+ The value of the parameter is .
+ The value of the parameter is not the Triple DES Key Wrap algorithm or the Advanced Encryption Standard (AES) Key Wrap algorithm (also called Rijndael).
+ A byte array that contains the key.
+
+
+ Decrypts an element using an asymmetric algorithm.
+ An array of bytes that represents an encrypted element.
+ The asymmetric key used to decrypt .
+ A value that specifies whether to use Optimal Asymmetric Encryption Padding (OAEP).
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ A byte array that contains the plain text key.
+
+
+ Decrypts an element using a symmetric algorithm.
+ An array of bytes that represents an encrypted element.
+ The symmetric key used to decrypt .
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ The value of the element is not the Triple DES Key Wrap algorithm or the Advanced Encryption Standard (AES) Key Wrap algorithm (also called Rijndael).
+ A byte array that contains the plain text key.
+
+
+ Encrypts the outer XML of an element using the specified X.509 certificate.
+ The XML element to encrypt.
+ The X.509 certificate to use for encryption.
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ The value of the parameter does not represent an RSA key algorithm.
+ An element that represents the encrypted XML data.
+
+
+ Encrypts the outer XML of an element using the specified key in the key mapping table.
+ The XML element to encrypt.
+ A key name that can be found in the key mapping table.
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ The value of the parameter does not match a registered key name pair.
+
+ -or-
+
+ The cryptographic key described by the parameter is not supported.
+ An object that represents the encrypted XML data.
+
+
+ Encrypts data in the specified byte array using the specified symmetric algorithm.
+ The data to encrypt.
+ The symmetric algorithm to use for encryption.
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ The data could not be encrypted using the specified parameters.
+ A byte array of encrypted data.
+
+
+ Encrypts the specified element or its contents using the specified symmetric algorithm.
+ The element or its contents to encrypt.
+ The symmetric algorithm to use for encryption.
+
+ to encrypt only the contents of the element; to encrypt the entire element.
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ A byte array that contains the encrypted data.
+
+
+ Encrypts the key that a recipient uses to decrypt an element.
+ The key to encrypt.
+ The asymmetric key used to encrypt .
+ A value that specifies whether to use Optimal Asymmetric Encryption Padding (OAEP).
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ A byte array that represents the encrypted value of the parameter.
+
+
+ Encrypts a key using a symmetric algorithm that a recipient uses to decrypt an element.
+ The key to encrypt.
+ The symmetric key used to encrypt .
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+ The value of the parameter is not the Triple DES Key Wrap algorithm or the Advanced Encryption Standard (AES) Key Wrap algorithm (also called Rijndael).
+ A byte array that represents the encrypted value of the parameter.
+
+
+ Retrieves the decryption initialization vector (IV) from an object.
+ The object that contains the initialization vector (IV) to retrieve.
+ The Uniform Resource Identifier (URI) that describes the cryptographic algorithm associated with the value.
+ The value of the parameter is .
+ The value of the parameter has an property that is null.
+
+ -or-
+
+ The value of the parameter is not a supported algorithm.
+ A byte array that contains the decryption initialization vector (IV).
+
+
+ Retrieves the decryption key from the specified object.
+ The object that contains the decryption key to retrieve.
+ The size of the decryption key to retrieve.
+ The value of the parameter is .
+ The encryptedData parameter has an property that is null.
+
+ -or-
+
+ The encrypted key cannot be retrieved using the specified parameters.
+ A object associated with the decryption key.
+
+
+ Determines how to resolve internal Uniform Resource Identifier (URI) references.
+ An object that contains an element with an ID value.
+ A string that represents the ID value.
+ An object that contains an ID indicating how internal Uniform Resource Identifiers (URIs) are to be resolved.
+
+
+ Replaces an element with a specified decrypted sequence of bytes.
+ The element to replace.
+ The decrypted data to replace with.
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+
+
+ Replaces the specified element with the specified object.
+ The element to replace with an element.
+ The object to replace the parameter with.
+
+ to replace only the contents of the element; to replace the entire element.
+ The value of the parameter is .
+
+ -or-
+
+ The value of the parameter is .
+
+
+ Gets or sets the evidence of the object from which the object is constructed.
+ An object.
+
+
+ Gets or sets the encoding used for XML encryption.
+ An object.
+
+
+ Gets or sets the cipher mode used for XML encryption.
+ One of the values.
+
+
+ Gets or sets the padding mode used for XML encryption.
+ One of the values that specifies the type of padding used for encryption.
+
+
+ Gets or sets the recipient of the encrypted key information.
+ The recipient of the encrypted key information.
+
+
+ Gets or sets the object used by the Document Object Model (DOM) to resolve external XML references.
+ An object.
+
+
+ Gets or sets the XML digital signature recursion depth to prevent infinite recursion and stack overflow. This might happen if the digital signature XML contains the URI which then points back to the original XML.
+ Returns .
+
+
+ Encapsulates the encryption algorithm used for XML encryption.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class specifying an algorithm Uniform Resource Identifier (URI).
+ The Uniform Resource Identifier (URI) that describes the algorithm represented by an instance of the class.
+
+
+ Returns an object that encapsulates an instance of the class.
+ An object that encapsulates an instance of the class.
+
+
+ Parses the specified object and configures the internal state of the object to match.
+ An object to parse.
+ The parameter is .
+ The key size expressed in the parameter was less than 0.
+
+
+ Gets or sets a Uniform Resource Identifier (URI) that describes the algorithm to use for XML encryption.
+ A Uniform Resource Identifier (URI) that describes the algorithm to use for XML encryption.
+
+
+ Gets or sets the algorithm key size used for XML encryption.
+ The property was set to a value that was less than 0.
+ The algorithm key size, in bits, used for XML encryption.
+
+
+ Represents the element used in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class using an object.
+ An object to use for initialization.
+ The parameter is .
+ The property of the parameter is not "EncryptionProperty".
+
+ -or-
+
+ The property of the parameter is not "http://www.w3.org/2001/04/xmlenc#".
+
+
+ Returns an object that encapsulates an instance of the class.
+ An object that encapsulates an instance of the class.
+
+
+ Parses the input and configures the internal state of the object to match.
+ An object to parse.
+ The parameter is .
+ The property of the parameter is not "EncryptionProperty".
+
+ -or-
+
+ The property of the parameter is not "http://www.w3.org/2001/04/xmlenc#".
+
+
+ Gets the ID of the current object.
+ The ID of the current object.
+
+
+ Gets or sets an object that represents an object.
+ The property was set to .
+ The property of the value set to the property is not "EncryptionProperty".
+
+ -or-
+
+ The property of the value set to the property is not "http://www.w3.org/2001/04/xmlenc#".
+ An object that represents an object.
+
+
+ Gets the target of the object.
+ The target of the object.
+
+
+ Represents a collection of classes used in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds an object to the object.
+ An object to add to the object.
+ The position at which the new element is inserted.
+
+
+ Removes all items from the object.
+
+
+ Determines whether the object contains a specific object.
+ The object to locate in the object.
+
+ if the object is found in the object; otherwise, .
+
+
+ Copies the elements of the object to an array, starting at a particular array index.
+ The one-dimensional object that is the destination of the elements copied from the object. The array must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+
+ Copies the elements of the object to an array of objects, starting at a particular array index.
+ The one-dimensional array of objects that is the destination of the elements copied from the object. The array must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+
+ Returns an enumerator that iterates through an object.
+ An object that can be used to iterate through an object.
+
+
+ Determines the index of a specific item in the object.
+ The object to locate in the object.
+ The index of if found in the collection; otherwise, -1.
+
+
+ Inserts an object into the object at the specified position.
+ The zero-based index at which should be inserted.
+ An object to insert into the object.
+
+
+ Returns the object at the specified index.
+ The index of the object to return.
+ The object at the specified index.
+
+
+ Removes the first occurrence of a specific object from the object.
+ The object to remove from the object.
+
+
+ Removes the object at the specified index.
+ The zero-based index of the object to remove.
+
+
+ Adds an item to the .
+ The to add to the .
+
+ uses an incorrect object type.
+ The position into which the new element was inserted.
+
+
+ Determines whether the contains a specific value.
+ The to locate in the .
+
+ uses an incorrect object type.
+
+ if the is found in the ; otherwise, .
+
+
+ Determines the index of a specific item in the .
+ The to locate in the .
+
+ uses an incorrect object type.
+ The index of if found in the list; otherwise, -1.
+
+
+ Inserts an item to the at the specified index.
+ The zero-based index at which should be inserted.
+ The to insert into the .
+
+ uses an incorrect object type.
+
+
+ Removes the first occurrence of a specific object from the .
+ The to remove from the .
+
+ uses an incorrect object type.
+
+
+ Gets the number of elements contained in the object.
+ The number of elements contained in the object.
+
+
+ Gets a value that indicates whether the object has a fixed size.
+
+ if the object has a fixed size; otherwise, .
+
+
+ Gets a value that indicates whether the object is read-only.
+
+ if the object is read-only; otherwise, .
+
+
+ Gets a value that indicates whether access to the object is synchronized (thread safe).
+
+ if access to the object is synchronized (thread safe); otherwise, .
+
+
+ Gets or sets the object at the specified index.
+ The index of the object to return.
+ The object at the specified index.
+
+
+ Gets an object that can be used to synchronize access to the object.
+ An object that can be used to synchronize access to the object.
+
+
+ Gets the element at the specified index.
+ The to remove from the .
+ The element at the specified index.
+
+
+ Defines methods that decrypt an XrML element.
+
+
+ Decrypts an XrML element that is contained within a object.
+ An object that encapsulates the algorithm used for XML encryption.
+ A object that contains an asymmetric key to use for decryption.
+ A stream object that contains an element to decrypt.
+ A object that contains a decrypted element.
+
+
+ Represents an XML digital signature or XML encryption element.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds a that represents a particular type of information to the object.
+ The to add to the object.
+
+
+ Returns an enumerator of the objects in the object.
+ An enumerator of the subelements of that can be used to iterate through the collection.
+
+
+ Returns an enumerator of the objects of the specified type in the object.
+ The type of object to enumerate.
+ An enumerator of the subelements of that can be used to iterate through the collection.
+
+
+ Returns the XML representation of the object.
+ The XML representation of the object.
+
+
+ Loads a state from an XML element.
+ The XML element from which to load the state.
+ The parameter is .
+
+
+ Gets the number of objects contained in the object.
+ The number of objects contained in the object.
+
+
+ Gets or sets the key information identity.
+ The key information identity.
+
+
+ Represents the abstract base class from which all implementations of subelements inherit.
+
+
+ Initializes a new instance of .
+
+
+ When overridden in a derived class, returns an XML representation of the .
+ An XML representation of the .
+
+
+ When overridden in a derived class, parses the input and configures the internal state of the to match.
+ The that specifies the state of the .
+
+
+ Wraps the class, it to be placed as a subelement of the class.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class using an object.
+ An object that encapsulates an encrypted key.
+
+
+ Returns an XML representation of a object.
+ The encrypted key is .
+ An XML representation of a object.
+
+
+ Parses the input object and configures the internal state of the object to match.
+ The object that specifies the state of the object.
+
+
+ Gets or sets an object that encapsulates an encrypted key.
+ The property is .
+ An object that encapsulates an encrypted key.
+
+
+ Represents a subelement of an XMLDSIG or XML Encryption element.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class by specifying the string identifier that is the value of the element.
+ The string identifier that is the value of the element.
+
+
+ Returns an XML representation of the object.
+ An XML representation of the object.
+
+
+ Parses the input object and configures the internal state of the object to match.
+ The object that specifies the state of the object.
+ The parameter is .
+
+
+ Gets or sets the string identifier contained within a element.
+ The string identifier that is the value of the element.
+
+
+ Handles subelements that do not have specific implementations or handlers registered on the machine.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class with content taken from the specified .
+ An XML element from which to take the content used to create the new instance of .
+
+
+ Returns an XML representation of the .
+ An XML representation of the .
+
+
+ Parses the input and configures the internal state of the to match.
+ The that specifies the state of the .
+
+
+ Gets or sets the XML content of the current .
+ The XML content of the current .
+
+
+ References objects stored at a different location when using XMLDSIG or XML encryption.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class with the specified Uniform Resource Identifier (URI) pointing to the referenced object.
+ The Uniform Resource Identifier (URI) of the information to be referenced by the new instance of .
+
+
+ Initializes a new instance of the class with the specified Uniform Resource Identifier (URI) pointing to the referenced object and the URI that describes the type of data to retrieve.
+ The Uniform Resource Identifier (URI) of the information to be referenced by the new instance of .
+ The URI that describes the type of data to retrieve.
+
+
+ Returns the XML representation of the object.
+ The XML representation of the object.
+
+
+ Parses the input object and configures the internal state of the object to match.
+ The XML element that specifies the state of the object.
+ The parameter is .
+
+
+ Gets or sets a Uniform Resource Identifier (URI) that describes the type of data to be retrieved.
+ A Uniform Resource Identifier (URI) that describes the type of data to be retrieved.
+
+
+ Gets or sets the Uniform Resource Identifier (URI) of the object.
+ The Uniform Resource Identifier (URI) of the object.
+
+
+ Represents an subelement of an XMLDSIG or XML Encryption element.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class from the specified ASN.1 DER encoding of an X.509v3 certificate.
+ The ASN.1 DER encoding of an object to initialize the new instance of from.
+
+
+ Initializes a new instance of the class from the specified X.509v3 certificate.
+ The object to initialize the new instance of from.
+ The parameter is .
+
+
+ Initializes a new instance of the class from the specified X.509v3 certificate.
+ The object to initialize the new instance of from.
+ One of the values that specifies how much of the certificate chain to include.
+ The parameter is .
+ The certificate has only a partial certificate chain.
+
+
+ Adds the specified X.509v3 certificate to the .
+ The object to add to the object.
+ The parameter is .
+
+
+ Adds the specified issuer name and serial number pair to the object.
+ The issuer name portion of the pair to add to the object.
+ The serial number portion of the pair to add to the object.
+
+
+ Adds the specified subject key identifier (SKI) byte array to the object.
+ A byte array that represents the subject key identifier (SKI) to add to the object.
+
+
+ Adds the specified subject key identifier (SKI) string to the object.
+ A string that represents the subject key identifier (SKI) to add to the object.
+
+
+ Adds the subject name of the entity that was issued an X.509v3 certificate to the object.
+ The name of the entity that was issued an X.509 certificate to add to the object.
+
+
+ Returns an XML representation of the object.
+ An XML representation of the object.
+
+
+ Parses the input object and configures the internal state of the object to match.
+ The object that specifies the state of the object.
+ The parameter is .
+ The parameter does not contain an <> node.
+
+ -or-
+
+ The parameter does not contain an <> node.
+
+
+ Gets a list of the X.509v3 certificates contained in the object.
+ A list of the X.509 certificates contained in the object.
+
+
+ Gets or sets the Certificate Revocation List (CRL) contained within the object.
+ The Certificate Revocation List (CRL) contained within the object.
+
+
+ Gets a list of structures that represent an issuer name and serial number pair.
+ A list of structures that represent an issuer name and serial number pair.
+
+
+ Gets a list of the subject key identifiers (SKIs) contained in the object.
+ A list of the subject key identifiers (SKIs) contained in the object.
+
+
+ Gets a list of the subject names of the entities contained in the object.
+ A list of the subject names of the entities contained in the object.
+
+
+ Represents the element used in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class for XML encryption.
+
+
+ Initializes a new instance of the class for XML encryption using the supplied Uniform Resource Identifier (URI).
+ A Uniform Resource Identifier (URI) that points to the encrypted key.
+
+
+ Initializes a new instance of the class for XML encryption using the specified Uniform Resource Identifier (URI) and a object.
+ A Uniform Resource Identifier (URI) that points to the encrypted key.
+ A object that describes transforms to do on the encrypted key.
+
+
+ Represents the element of an XML signature.
+
+
+ Initializes a new instance of the class with default properties.
+
+
+ Initializes a new instance of the class with a hash value of the specified .
+ The with which to initialize the new instance of .
+
+
+ Initializes a new instance of the class with the specified .
+ The with which to initialize the new instance of .
+
+
+ Adds a object to the list of transforms to be performed on the data before passing it to the digest algorithm.
+ The transform to be added to the list of transforms.
+ The parameter is .
+
+
+ Returns the XML representation of the .
+ The property is .
+
+ -or-
+
+ The property is .
+ The XML representation of the .
+
+
+ Loads a state from an XML element.
+ The XML element from which to load the state.
+ The parameter is .
+ The parameter does not contain any transforms.
+
+ -or-
+
+ The parameter contains an unknown transform.
+
+
+ Gets or sets the digest method Uniform Resource Identifier (URI) of the current .
+ The digest method URI of the current . The default value is http://www.w3.org/2001/04/xmlenc#sha256.
+
+
+ Gets or sets the digest value of the current .
+ The digest value of the current .
+
+
+ Gets or sets the ID of the current .
+ The ID of the current . The default is .
+
+
+ Gets the transform chain of the current .
+ The transform chain of the current .
+
+
+ Gets or sets the type of the object being signed.
+ The type of the object being signed.
+
+
+ Gets or sets the of the current .
+ The of the current .
+
+
+ Represents the element used in XML encryption. This class cannot be inherited.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds a or object to the collection.
+ A or object to add to the collection.
+ The parameter is not a object.
+
+ -or-
+
+ The parameter is not a object.
+ The parameter is .
+ The position at which the new element was inserted.
+
+
+ Removes all items from the collection.
+
+
+ Determines whether the collection contains a specific or object.
+ The or object to locate in the collection.
+
+ if the or object is found in the collection; otherwise, .
+
+
+ Copies the elements of the object to an array, starting at a specified array index.
+ The one-dimensional object that is the destination of the elements copied from the object. The array must have zero-based indexing.
+ The zero-based index in at which copying begins.
+
+
+ Returns an enumerator that iterates through a collection.
+ An object that can be used to iterate through a collection.
+
+
+ Determines the index of a specific item in the collection.
+ The or object to locate in the collection.
+ The index of if found in the collection; otherwise, -1.
+
+
+ Inserts a or object into the collection at the specified position.
+ The zero-based index at which should be inserted.
+ A or object to insert into the collection.
+ The parameter is not a object.
+
+ -or-
+
+ The parameter is not a object.
+ The parameter is .
+
+
+ Returns the or object at the specified index.
+ The index of the or object to return.
+ The or object at the specified index.
+
+
+ Removes the first occurrence of a specific or object from the collection.
+ The or object to remove from the collection.
+
+
+ Removes the or object at the specified index.
+ The zero-based index of the or object to remove.
+
+
+ Gets the number of elements contained in the object.
+ The number of elements contained in the object.
+
+
+ Gets a value that indicates whether access to the object is synchronized (thread safe).
+
+ if access to the object is synchronized (thread safe); otherwise, .
+
+
+ Gets or sets the or object at the specified index.
+ The index of the or object to return.
+ The object at the specified index.
+
+
+ Gets an object that can be used to synchronize access to the object.
+ An object that can be used to synchronize access to the object.
+
+
+ For a description of this member, see .
+
+ if the has a fixed size; otherwise, .
+
+
+ For a description of this member, see .
+
+ if the is read-only; otherwise, .
+
+
+ For a description of this member, see .
+ The zero-based index of the element to get or set.
+
+ is not a valid index in the .
+ The element at the specified index.
+
+
+ Represents the <> element of an XML signature.
+
+
+ Initializes a new instance of the class with a new randomly generated public key.
+
+
+ Initializes a new instance of the class with the specified public key.
+ The instance of an implementation of that holds the public key.
+
+
+ Returns the XML representation of the key clause.
+ The XML representation of the key clause.
+
+
+ Loads an key clause from an XML element.
+ The XML element from which to load the key clause.
+ The parameter is .
+ The parameter is not a valid key clause XML element.
+
+
+ Gets or sets the instance of that holds the public key.
+ The instance of that holds the public key.
+
+
+ Represents the element of an XML signature.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds a to the list of objects to be signed.
+ The to be added to the list of objects to be signed.
+
+
+ Returns the XML representation of the .
+ The property is .
+
+ -or-
+
+ The property is .
+ The XML representation of the .
+
+
+ Loads a state from an XML element.
+ The XML element from which to load the state.
+ The parameter is .
+ The parameter does not contain a valid .
+
+ -or-
+
+ The parameter does not contain a valid .
+
+
+ Gets or sets the ID of the current .
+ The ID of the current . The default is .
+
+
+ Gets or sets the of the current .
+ The of the current .
+
+
+ Gets or sets a list of objects to be signed.
+ A list of objects to be signed.
+
+
+ Gets or sets the value of the digital signature.
+ A byte array that contains the value of the digital signature.
+
+
+ Gets or sets the of the current .
+ The of the current .
+
+
+ Contains information about the canonicalization algorithm and signature algorithm used for the XML signature.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds a object to the list of references to digest and sign.
+ The reference to add to the list of references.
+ The reference parameter is .
+
+
+ Copies the elements of this instance into an object, starting at a specified index in the array.
+ An object that holds the collection's elements.
+ The beginning index in the array where the elements are copied.
+ This method is not supported.
+
+
+ Returns an enumerator that iterates through the collection of references.
+ This method is not supported.
+ An enumerator that iterates through the collection of references.
+
+
+ Returns the XML representation of the object.
+ The property is .
+
+ -or-
+
+ The property is empty.
+ The XML representation of the instance.
+
+
+ Loads a state from an XML element.
+ The XML element from which to load the state.
+ The parameter is .
+ The parameter is not a valid element.
+
+ -or-
+
+ The parameter does not contain a valid property.
+
+ -or-
+
+ The parameter does not contain a valid property.
+
+
+ Gets or sets the canonicalization algorithm that is used before signing for the current object.
+ The canonicalization algorithm used before signing for the current object.
+
+
+ Gets a object used for canonicalization.
+
+ is .
+ A object used for canonicalization.
+
+
+ Gets the number of references in the current object.
+ This property is not supported.
+ The number of references in the current object.
+
+
+ Gets or sets the ID of the current object.
+ The ID of the current object.
+
+
+ Gets a value that indicates whether the collection is read-only.
+ This property is not supported.
+
+ if the collection is read-only; otherwise, .
+
+
+ Gets a value that indicates whether the collection is synchronized.
+ This property is not supported.
+
+ if the collection is synchronized; otherwise, .
+
+
+ Gets a list of the objects of the current object.
+ A list of the elements of the current object.
+
+
+ Gets or sets the length of the signature for the current object.
+ The length of the signature for the current object.
+
+
+ Gets or sets the name of the algorithm used for signature generation and validation for the current object.
+ The name of the algorithm used for signature generation and validation for the current object.
+
+
+ Gets an object to use for synchronization.
+ This property is not supported.
+ An object to use for synchronization.
+
+
+ Provides a wrapper on a core XML signature object to facilitate creating XML signatures.
+
+
+ Represents the object of the current object.
+
+
+ Represents the name of the installed key to be used for signing the object.
+
+
+ Represents the Uniform Resource Identifier (URI) for the XML mode decryption transformation. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the base 64 transformation. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the Canonical XML transformation. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the Canonical XML transformation, with comments. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard canonicalization algorithm for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard canonicalization algorithm for XML digital signatures and includes comments. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard algorithm for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for enveloped signature transformation. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for exclusive XML canonicalization. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for exclusive XML canonicalization, with comments. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard algorithm for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard minimal canonicalization algorithm for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard namespace for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard signature method for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the SHA-256 signature method variation for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the SHA-384 signature method variation for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the SHA-512 signature method variation for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard digest method for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard digest method for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard digest method for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the standard digest method for XML digital signatures. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the XML Path Language (XPath). This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for XSLT transformations. This field is constant.
+
+
+ Represents the Uniform Resource Identifier (URI) for the license transform algorithm used to normalize XrML licenses for signatures.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class from the specified XML document.
+ The object to use to initialize the new instance of .
+ The parameter is .
+
+ -or-
+
+ The parameter contains a null property.
+
+
+ Initializes a new instance of the class from the specified object.
+ The object to use to initialize the new instance of .
+ The parameter is .
+
+
+ Adds a object to the list of objects to be signed.
+ The object to add to the list of objects to be signed.
+
+
+ Adds a object to the object that describes a digest method, digest value, and transform to use for creating an XML digital signature.
+ The object that describes a digest method, digest value, and transform to use for creating an XML digital signature.
+
+
+ Determines whether the property verifies using the public key in the signature.
+ The property of the public key in the signature does not match the property.
+
+ -or-
+
+ The signature description could not be created.
+
+ -or
+
+ The hash algorithm could not be created.
+
+ if the property verifies; otherwise, .
+
+
+ Determines whether the property verifies for the specified key.
+ The implementation of the property that holds the key to be used to verify the property.
+ The parameter is .
+ The property of the parameter does not match the property.
+
+ -or-
+
+ The signature description could not be created.
+
+ -or
+
+ The hash algorithm could not be created.
+
+ if the property verifies for the specified key; otherwise, .
+
+
+ Determines whether the property verifies for the specified message authentication code (MAC) algorithm.
+ The implementation of that holds the MAC to be used to verify the property.
+ The parameter is .
+ The property of the specified object is not valid.
+
+ -or-
+
+ The property is .
+
+ -or-
+
+ The cryptographic transform used to check the signature could not be created.
+
+ if the property verifies for the specified MAC; otherwise, .
+
+
+ Determines whether the property verifies for the specified object and, optionally, whether the certificate is valid.
+ The object to use to verify the property.
+
+ to verify the signature only; to verify both the signature and certificate.
+ The parameter is .
+ A signature description could not be created for the parameter.
+
+ if the signature is valid; otherwise, .
+
+ -or-
+
+ if the signature and certificate are valid; otherwise, .
+
+
+ Determines whether the property verifies using the public key in the signature.
+ When this method returns, contains the implementation of that holds the public key in the signature. This parameter is passed uninitialized.
+ The parameter is null.
+ The property of the public key in the signature does not match the property.
+
+ -or-
+
+ The signature description could not be created.
+
+ -or
+
+ The hash algorithm could not be created.
+
+ if the property verifies using the public key in the signature; otherwise, .
+
+
+ Computes an XML digital signature.
+ The property is .
+
+ -or-
+
+ The property is not a object or object.
+
+ -or-
+
+ The key could not be loaded.
+
+
+ Computes an XML digital signature using the specified message authentication code (MAC) algorithm.
+ A object that holds the MAC to be used to compute the value of the property.
+ The parameter is .
+ The object specified by the parameter is not an instance of or or or .
+
+ -or-
+
+ The property of the specified object is not valid.
+
+ -or-
+
+ The cryptographic transform used to check the signature could not be created.
+
+
+ Returns the object with the specified ID from the specified object.
+ The object to retrieve the object from.
+ The ID of the object to retrieve from the object.
+ The object with the specified ID from the specified object, or if it could not be found.
+
+
+ Returns the public key of a signature.
+ The property is .
+ An object that contains the public key of the signature, or if the key cannot be found.
+
+
+ Returns the XML representation of a object.
+ The property is .
+
+ -or-
+
+ The property is .
+ The XML representation of the object.
+
+
+ Loads a state from an XML element.
+ The XML element to load the state from.
+ The parameter is .
+ The parameter does not contain a valid property.
+
+ -or-
+
+ The parameter does not contain a valid property.
+
+
+ Gets or sets an object that defines the XML encryption processing rules.
+ An object that defines the XML encryption processing rules.
+
+
+ Gets or sets the object of the current object.
+ The object of the current object.
+
+
+ Sets the current object.
+ The current object. The defaults is a object.
+
+
+ Gets the names of methods whose canonicalization algorithms are explicitly allowed.
+ A collection of the names of methods that safely produce canonical XML.
+
+
+ Gets the object of the current object.
+ The object of the current object.
+
+
+ Gets a delegate that will be called to validate the format (not the cryptographic security) of an XML signature.
+
+ if the format is acceptable; otherwise, .
+
+
+ Gets the length of the signature for the current object.
+ The length of the signature for the current object.
+
+
+ Gets the signature method of the current object.
+ The signature method of the current object.
+
+
+ Gets the signature value of the current object.
+ A byte array that contains the signature value of the current object.
+
+
+ Gets the object of the current object.
+ The object of the current object.
+
+
+ Gets or sets the asymmetric algorithm key used for signing a object.
+ The asymmetric algorithm key used for signing the object.
+
+
+ Gets or sets the name of the installed key to be used for signing the object.
+ The name of the installed key to be used for signing the object.
+
+
+ Represents the abstract base class from which all elements that can be used in an XML digital signature derive.
+
+
+ Initializes a new instance of the class.
+
+
+ When overridden in a derived class, returns the digest associated with a object.
+ The object used to create a digest.
+ The digest associated with a object.
+
+
+ When overridden in a derived class, returns an XML representation of the parameters of the object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ When overridden in a derived class, returns the output of the current object.
+ The output of the current object.
+
+
+ When overridden in a derived class, returns the output of the current object of the specified type.
+ The type of the output to return. This must be one of the types in the property.
+ The output of the current object as an object of the specified type.
+
+
+ Returns the XML representation of the current object.
+ The XML representation of the current object.
+
+
+ When overridden in a derived class, parses the specified object as transform-specific content of a element and configures the internal state of the current object to match the element.
+ An object that specifies transform-specific content for the current object.
+
+
+ When overridden in a derived class, loads the specified input into the current object.
+ The input to load into the current object.
+
+
+ Gets or sets the Uniform Resource Identifier (URI) that identifies the algorithm performed by the current transform.
+ The URI that identifies the algorithm performed by the current object.
+
+
+ Gets or sets an object that represents the document context under which the current object is running.
+ An object that represents the document context under which the current object is running.
+
+
+ When overridden in a derived class, gets an array of types that are valid inputs to the method of the current object.
+ An array of valid input types for the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ When overridden in a derived class, gets an array of types that are possible outputs from the methods of the current object.
+ An array of valid output types for the current object; only objects of one of these types are returned from the methods of the current object.
+
+
+ Gets or sets a object that contains the namespaces that are propagated into the signature.
+ The property was set to .
+ A object that contains the namespaces that are propagated into the signature.
+
+
+ Sets the current object.
+ The current object. This property defaults to an object.
+
+
+ Defines an ordered list of objects that is applied to unsigned content prior to digest calculation.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds a transform to the list of transforms to be applied to the unsigned content prior to digest calculation.
+ The transform to add to the list of transforms.
+
+
+ Returns an enumerator of the transforms in the object.
+ An enumerator of the transforms in the object.
+
+
+ Gets the number of transforms in the object.
+ The number of transforms in the object.
+
+
+ Gets the transform at the specified index in the object.
+ The index into the object that specifies which transform to return.
+ The parameter is greater than the number of transforms.
+ The transform at the specified index in the object.
+
+
+ Specifies the order of XML Digital Signature and XML Encryption operations when both are performed on the same document.
+
+
+ Initializes a new instance of the class.
+
+
+ Adds a Uniform Resource Identifier (URI) to exclude from processing.
+ A Uniform Resource Identifier (URI) to exclude from processing.
+ The parameter is .
+
+
+ Returns an XML representation of the parameters of an object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ Returns the output of the current object.
+ A decryption key could not be found.
+ The output of the current object.
+
+
+ Returns the output of the current object.
+ The type of the output to return. is the only valid type for this parameter.
+ The parameter is not an object.
+ The output of the current object.
+
+
+ Determines whether the ID attribute of an object matches a specified value.
+ An object with an ID attribute to compare with .
+ The value to compare with the ID attribute of .
+
+ if the ID attribute of the parameter matches the parameter; otherwise, .
+
+
+ Parses the specified object as transform-specific content of a element and configures the internal state of the current object to match the element.
+ An object that specifies transform-specific content for the current object.
+ The parameter is .
+
+ -or-
+
+ The Uniform Resource Identifier (URI) value of an object in was not found.
+
+ -or-
+
+ The length of the URI value of an object in is 0.
+
+ -or-
+
+ The first character of the URI value of an object in is not '#'.
+
+
+ When overridden in a derived class, loads the specified input into the current object.
+ The input to load into the current object.
+ The parameter is .
+
+
+ Gets or sets an object that contains information about the keys necessary to decrypt an XML document.
+ An object that contains information about the keys necessary to decrypt an XML document.
+
+
+ Gets an array of types that are valid inputs to the method of the current object.
+ An array of valid input types for the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ Gets an array of types that are possible outputs from the methods of the current object.
+ An array of valid output types for the current object; only objects of one of these types are returned from the methods of the current object.
+
+
+ Represents the decoding transform as defined in Section 6.6.2 of the XMLDSIG specification.
+
+
+ Initializes a new instance of the class.
+
+
+ Returns an XML representation of the parameters of the object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ Returns the output of the current object.
+ The output of the current object.
+
+
+ Returns the output of the current object of type .
+ The type of the output to return. is the only valid type for this parameter.
+ The parameter is not a object.
+ The output of the current object of type .
+
+
+ Parses the specified object as transform-specific content of a element; this method is not supported because the object has no inner XML elements.
+ An object to load into the current object.
+
+
+ Loads the specified input into the current object.
+ The input to load into the current object.
+ The parameter is a and it is .
+
+
+ Gets an array of types that are valid inputs to the method of the current object.
+ An array of valid input types for the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ Gets an array of types that are possible outputs from the methods of the current object.
+ An array of valid output types for the current object; only objects of one of these types are returned from the methods of the current object.
+
+
+ Represents the C14N XML canonicalization transform for a digital signature as defined by the World Wide Web Consortium (W3C), without comments.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class with comments, if specified.
+
+ to include comments; otherwise, .
+
+
+ Returns the digest associated with an object.
+ The object used to create a digest.
+ The digest associated with an object.
+
+
+ Returns an XML representation of the parameters of an object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ Returns the output of the current object.
+ The output of the current object.
+
+
+ Returns the output of the current object of type .
+ The type of the output to return. is the only valid type for this parameter.
+ The parameter is not a object.
+ The output of the current object of type .
+
+
+ Parses the specified object as transform-specific content of a element; this method is not supported because this element has no inner XML elements.
+ An object to load into the current object.
+
+
+ Loads the specified input into the current object.
+ The input to load into the current object.
+ The parameter is a object and it is .
+
+
+ Gets an array of types that are valid inputs to the method of the current object.
+ An array of valid input types for the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ Gets an array of types that are possible outputs from the methods of the current object.
+ An array of valid output types for the current object; the methods of the current object return only objects of one of these types.
+
+
+ Represents the C14N XML canonicalization transform for a digital signature as defined by the World Wide Web Consortium (W3C), with comments.
+
+
+ Initializes a new instance of the class.
+
+
+ Represents the enveloped signature transform for an XML digital signature as defined by the W3C.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class with comments, if specified.
+
+ to include comments; otherwise, .
+
+
+ Returns an XML representation of the parameters of an object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ Returns the output of the current object.
+ The containing XML document is .
+ The output of the current object.
+
+
+ Returns the output of the current object of type .
+ The type of the output to return. is the only valid type for this parameter.
+ The parameter is not an object.
+ The output of the current object of type .
+
+
+ Parses the specified as transform-specific content of a element and configures the internal state of the current object to match the element.
+ An to load into the current object.
+
+
+ Loads the specified input into the current object.
+ The input to load into the current object.
+ The parameter is .
+ The containing XML document is .
+
+
+ Gets an array of types that are valid inputs to the method of the current object.
+ An array of valid input types for the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ Gets an array of types that are possible outputs from the methods of the current object.
+ An array of valid output types for the current object; only objects of one of these types are returned from the methods of the current object.
+
+
+ Represents the exclusive C14N XML canonicalization transform for a digital signature as defined by the World Wide Web Consortium (W3C), without comments.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class specifying a value that determines whether to include comments.
+
+ to include comments; otherwise, .
+
+
+ Initializes a new instance of the class specifying whether to include comments, and specifying a list of namespace prefixes.
+
+ to include comments; otherwise, .
+ The namespace prefixes to canonicalize using the standard canonicalization algorithm.
+
+
+ Initializes a new instance of the class specifying a list of namespace prefixes to canonicalize using the standard canonicalization algorithm.
+ The namespace prefixes to canonicalize using the standard canonicalization algorithm.
+
+
+ Returns the digest associated with a object.
+ The object used to create a digest.
+ The digest associated with a object.
+
+
+ Returns an XML representation of the parameters of a object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ Returns the output of the current object.
+ The output of the current object.
+
+
+ Returns the output of the current object as an object of the specified type.
+ The type of the output to return. This must be one of the types in the property.
+ The parameter is not a object.
+
+ -or-
+
+ The parameter does not derive from a object.
+ The output of the current object as an object of the specified type.
+
+
+ Parses the specified object as transform-specific content of a element and configures the internal state of the current object to match the element.
+ An object that specifies transform-specific content for the current object.
+
+
+ When overridden in a derived class, loads the specified input into the current object.
+ The input to load into the current object.
+ The parameter is not a object.
+
+ -or-
+
+ The parameter is not an object.
+
+ -or-
+
+ The parameter is not an object.
+
+
+ Gets or sets a string that contains namespace prefixes to canonicalize using the standard canonicalization algorithm.
+ A string that contains namespace prefixes to canonicalize using the standard canonicalization algorithm.
+
+
+ Gets an array of types that are valid inputs to the method of the current object.
+ An array of valid input types for the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ Gets an array of types that are possible outputs from the methods of the current object.
+ An array of valid output types for the current object; the methods of the current object return only objects of one of these types.
+
+
+ Represents the exclusive C14N XML canonicalization transform for a digital signature as defined by the World Wide Web Consortium (W3C), with comments.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class specifying a list of namespace prefixes to canonicalize using the standard canonicalization algorithm.
+ The namespace prefixes to canonicalize using the standard canonicalization algorithm.
+
+
+ Represents the XPath transform for a digital signature as defined by the W3C.
+
+
+ Initializes a new instance of the class.
+
+
+ Returns an XML representation of the parameters of a object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ Returns the output of the current object.
+ The output of the current object.
+
+
+ Returns the output of the current object of type .
+ The type of the output to return. is the only valid type for this parameter.
+ The parameter is not an object.
+ The output of the current object of type .
+
+
+ Parses the specified object as transform-specific content of a element and configures the internal state of the current object to match the element.
+ An object to load into the current object.
+ The parameter is .
+
+ -or-
+
+ The parameter does not contain an element.
+
+
+ Loads the specified input into the current object.
+ The input to load into the current object.
+
+
+ Gets an array of types that are valid inputs to the method of the current object.
+ An array of valid input types for the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ Gets an array of types that are possible outputs from the methods of the current object.
+ An array of valid output types for the current object; the methods of the current object return only objects of one of these types.
+
+
+ Represents the XSLT transform for a digital signature as defined by the W3C.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class with comments, if specified.
+
+ to include comments; otherwise, .
+
+
+ Returns an XML representation of the parameters of the object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ Returns the output of the current object.
+ The output of the current object.
+
+
+ Returns the output of the current object of type .
+ The type of the output to return. is the only valid type for this parameter.
+ The parameter is not a object.
+ The output of the current object of type .
+
+
+ Parses the specified object as transform-specific content of a element and configures the internal state of the current object to match the element.
+ An object that encapsulates an XSLT style sheet to load into the current object. This style sheet is applied to the document loaded by the method.
+ The parameter is .
+
+ -or-
+
+ The parameter does not contain an object.
+
+
+ Loads the specified input into the current object.
+ The input to load into the current object.
+
+
+ Gets an array of types that are valid inputs to the method of the current object.
+ An array of valid input types for the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ Gets an array of types that are possible outputs from the methods of the current object.
+ An array of valid output types for the current object; only objects of one of these types are returned from the methods of the current object.
+
+
+ Represents the license transform algorithm used to normalize XrML licenses for signatures.
+
+
+ Initializes a new instance of the class.
+
+
+ Returns an XML representation of the parameters of an object that are suitable to be included as subelements of an XMLDSIG element.
+ A list of the XML nodes that represent the transform-specific content needed to describe the current object in an XMLDSIG element.
+
+
+ Returns the output of an object.
+ The output of the object.
+
+
+ Returns the output of an object.
+ The type of the output to return. is the only valid type for this parameter.
+ The parameter is not an object.
+ The output of the object.
+
+
+ Parses the specified object as transform-specific content of a element; this method is not supported because the object has no inner XML elements.
+ An object that encapsulates the transform to load into the current object.
+
+
+ Loads the specified input into the current object.
+ The input to load into the current object. The type of the input object must be .
+ The context was not set before this transform was invoked.
+
+ -or-
+
+ The element was not set before this transform was invoked.
+
+ -or-
+
+ The element was not set before this transform was invoked.
+
+ -or-
+
+ The property was not set before this transform was invoked.
+
+
+ Gets or sets the decryptor of the current object.
+ The decryptor of the current object.
+
+
+ Gets an array of types that are valid inputs to the method of the current object.
+ An array of types that are valid inputs to the method of the current object; you can pass only objects of one of these types to the method of the current object.
+
+
+ Gets an array of types that are valid outputs from the method of the current object.
+ An array of valid output types for the current object; only objects of one of these types are returned from the methods of the current object.
+
+
+
\ No newline at end of file
diff --git a/bin/System.Text.Encoding.CodePages.dll b/bin/System.Text.Encoding.CodePages.dll
new file mode 100644
index 0000000..2f683a8
Binary files /dev/null and b/bin/System.Text.Encoding.CodePages.dll differ
diff --git a/bin/System.Text.Encoding.CodePages.xml b/bin/System.Text.Encoding.CodePages.xml
new file mode 100644
index 0000000..2922228
--- /dev/null
+++ b/bin/System.Text.Encoding.CodePages.xml
@@ -0,0 +1,29 @@
+
+
+
+ System.Text.Encoding.CodePages
+
+
+
+ Provides access to an encoding provider for code pages that otherwise are available only in the desktop .NET Framework.
+
+
+ Returns the encoding associated with the specified code page identifier.
+ The code page identifier of the preferred encoding which the encoding provider may support.
+ The encoding associated with the specified code page identifier, or if the provider does not support the requested codepage encoding.
+
+
+ Returns the encoding associated with the specified code page name.
+ The code page name of the preferred encoding which the encoding provider may support.
+ The encoding associated with the specified code page, or if the provider does not support the requested encoding.
+
+
+ Returns an array that contains all the encodings that are supported by the .
+ An array that contains all the supported encodings.
+
+
+ Gets an encoding provider for code pages supported in the desktop .NET Framework but not in the current .NET Framework platform.
+ An encoding provider that allows access to encodings not supported on the current .NET Framework platform.
+
+
+
\ No newline at end of file
diff --git a/bin/System.Threading.Tasks.Extensions.dll b/bin/System.Threading.Tasks.Extensions.dll
new file mode 100644
index 0000000..a99c907
Binary files /dev/null and b/bin/System.Threading.Tasks.Extensions.dll differ
diff --git a/bin/System.Threading.Tasks.Extensions.xml b/bin/System.Threading.Tasks.Extensions.xml
new file mode 100644
index 0000000..5e02a99
--- /dev/null
+++ b/bin/System.Threading.Tasks.Extensions.xml
@@ -0,0 +1,166 @@
+
+
+ System.Threading.Tasks.Extensions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Provides a value type that wraps a and a TResult, only one of which is used.
+ The result.
+
+
+ Initializes a new instance of the class using the supplied task that represents the operation.
+ The task.
+ The task argument is null.
+
+
+ Initializes a new instance of the class using the supplied result of a successful operation.
+ The result.
+
+
+ Retrieves a object that represents this .
+ The object that is wrapped in this if one exists, or a new object that represents the result.
+
+
+ Configures an awaiter for this value.
+ true to attempt to marshal the continuation back to the captured context; otherwise, false.
+ The configured awaiter.
+
+
+ Creates a method builder for use with an async method.
+ The created builder.
+
+
+ Determines whether the specified object is equal to the current object.
+ The object to compare with the current object.
+ true if the specified object is equal to the current object; otherwise, false.
+
+
+ Determines whether the specified object is equal to the current object.
+ The object to compare with the current object.
+ true if the specified object is equal to the current object; otherwise, false.
+
+
+ Creates an awaiter for this value.
+ The awaiter.
+
+
+ Returns the hash code for this instance.
+ The hash code for the current object.
+
+
+ Gets a value that indicates whether this object represents a canceled operation.
+ true if this object represents a canceled operation; otherwise, false.
+
+
+ Gets a value that indicates whether this object represents a completed operation.
+ true if this object represents a completed operation; otherwise, false.
+
+
+ Gets a value that indicates whether this object represents a successfully completed operation.
+ true if this object represents a successfully completed operation; otherwise, false.
+
+
+ Gets a value that indicates whether this object represents a failed operation.
+ true if this object represents a failed operation; otherwise, false.
+
+
+ Compares two values for equality.
+ The first value to compare.
+ The second value to compare.
+ true if the two values are equal; otherwise, false.
+
+
+ Determines whether two values are unequal.
+ The first value to compare.
+ The seconed value to compare.
+ true if the two values are not equal; otherwise, false.
+
+
+ Gets the result.
+ The result.
+
+
+ Returns a string that represents the current object.
+ A string that represents the current object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/System.Web.Optimization.dll b/bin/System.Web.Optimization.dll
new file mode 100644
index 0000000..393d416
Binary files /dev/null and b/bin/System.Web.Optimization.dll differ
diff --git a/bin/WebGrease.dll b/bin/WebGrease.dll
new file mode 100644
index 0000000..a6a80d3
Binary files /dev/null and b/bin/WebGrease.dll differ
diff --git a/bin/abbott_2024_event.dll b/bin/abbott_2024_event.dll
new file mode 100644
index 0000000..a1a6a72
Binary files /dev/null and b/bin/abbott_2024_event.dll differ
diff --git a/bin/abbott_2024_event.dll.config b/bin/abbott_2024_event.dll.config
new file mode 100644
index 0000000..2344486
--- /dev/null
+++ b/bin/abbott_2024_event.dll.config
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/roslyn/Microsoft.Build.Tasks.CodeAnalysis.dll b/bin/roslyn/Microsoft.Build.Tasks.CodeAnalysis.dll
new file mode 100644
index 0000000..7176828
Binary files /dev/null and b/bin/roslyn/Microsoft.Build.Tasks.CodeAnalysis.dll differ
diff --git a/bin/roslyn/Microsoft.CSharp.Core.targets b/bin/roslyn/Microsoft.CSharp.Core.targets
new file mode 100644
index 0000000..674e383
--- /dev/null
+++ b/bin/roslyn/Microsoft.CSharp.Core.targets
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+ <_MaxSupportedLangVersion Condition="('$(TargetFrameworkIdentifier)' != '.NETCoreApp' OR '$(_TargetFrameworkVersionWithoutV)' < '3.0') AND
+ ('$(TargetFrameworkIdentifier)' != '.NETStandard' OR '$(_TargetFrameworkVersionWithoutV)' < '2.1')">7.3
+
+
+ <_MaxSupportedLangVersion Condition="(('$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' < '5.0') OR
+ ('$(TargetFrameworkIdentifier)' == '.NETStandard' AND '$(_TargetFrameworkVersionWithoutV)' == '2.1')) AND
+ '$(_MaxSupportedLangVersion)' == ''">8.0
+
+
+ <_MaxSupportedLangVersion Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' == '5.0' AND
+ '$(_MaxSupportedLangVersion)' == ''">9.0
+
+
+ <_MaxSupportedLangVersion Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' == '6.0' AND
+ '$(_MaxSupportedLangVersion)' == ''">10.0
+
+ $(_MaxSupportedLangVersion)
+ $(_MaxSupportedLangVersion)
+
+
+
+
+
+ $(NoWarn);1701;1702
+
+
+
+
+ $(NoWarn);2008
+
+
+
+
+ $(AppConfig)
+
+
+ $(IntermediateOutputPath)$(TargetName).compile.pdb
+
+
+
+
+
+
+
+
+ <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/roslyn/Microsoft.CodeAnalysis.CSharp.Scripting.dll b/bin/roslyn/Microsoft.CodeAnalysis.CSharp.Scripting.dll
new file mode 100644
index 0000000..0272d50
Binary files /dev/null and b/bin/roslyn/Microsoft.CodeAnalysis.CSharp.Scripting.dll differ
diff --git a/bin/roslyn/Microsoft.CodeAnalysis.CSharp.dll b/bin/roslyn/Microsoft.CodeAnalysis.CSharp.dll
new file mode 100644
index 0000000..c380114
Binary files /dev/null and b/bin/roslyn/Microsoft.CodeAnalysis.CSharp.dll differ
diff --git a/bin/roslyn/Microsoft.CodeAnalysis.Scripting.dll b/bin/roslyn/Microsoft.CodeAnalysis.Scripting.dll
new file mode 100644
index 0000000..ef01002
Binary files /dev/null and b/bin/roslyn/Microsoft.CodeAnalysis.Scripting.dll differ
diff --git a/bin/roslyn/Microsoft.CodeAnalysis.VisualBasic.dll b/bin/roslyn/Microsoft.CodeAnalysis.VisualBasic.dll
new file mode 100644
index 0000000..9849c0c
Binary files /dev/null and b/bin/roslyn/Microsoft.CodeAnalysis.VisualBasic.dll differ
diff --git a/bin/roslyn/Microsoft.CodeAnalysis.dll b/bin/roslyn/Microsoft.CodeAnalysis.dll
new file mode 100644
index 0000000..a33e2ee
Binary files /dev/null and b/bin/roslyn/Microsoft.CodeAnalysis.dll differ
diff --git a/bin/roslyn/Microsoft.DiaSymReader.Native.amd64.dll b/bin/roslyn/Microsoft.DiaSymReader.Native.amd64.dll
new file mode 100644
index 0000000..e1df259
Binary files /dev/null and b/bin/roslyn/Microsoft.DiaSymReader.Native.amd64.dll differ
diff --git a/bin/roslyn/Microsoft.DiaSymReader.Native.x86.dll b/bin/roslyn/Microsoft.DiaSymReader.Native.x86.dll
new file mode 100644
index 0000000..6024a32
Binary files /dev/null and b/bin/roslyn/Microsoft.DiaSymReader.Native.x86.dll differ
diff --git a/bin/roslyn/Microsoft.Managed.Core.CurrentVersions.targets b/bin/roslyn/Microsoft.Managed.Core.CurrentVersions.targets
new file mode 100644
index 0000000..2a43fb1
--- /dev/null
+++ b/bin/roslyn/Microsoft.Managed.Core.CurrentVersions.targets
@@ -0,0 +1,5 @@
+
+
+ roslyn4.1
+
+
diff --git a/bin/roslyn/Microsoft.Managed.Core.targets b/bin/roslyn/Microsoft.Managed.Core.targets
new file mode 100644
index 0000000..5dea5a1
--- /dev/null
+++ b/bin/roslyn/Microsoft.Managed.Core.targets
@@ -0,0 +1,353 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ <_SkipAnalyzers>
+ <_ImplicitlySkipAnalyzers>
+
+
+
+
+ <_SkipAnalyzers>true
+
+
+
+
+ <_ImplicitlySkipAnalyzers>true
+ <_SkipAnalyzers>true
+ run-nullable-analysis=never;$(Features)
+
+
+
+
+
+
+
+ <_LastBuildWithSkipAnalyzers>$(IntermediateOutputPath)$(MSBuildProjectFile).BuildWithSkipAnalyzers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_AllDirectoriesAbove Include="@(Compile->GetPathsOfAllDirectoriesAbove())" Condition="'$(DiscoverEditorConfigFiles)' != 'false' or '$(DiscoverGlobalAnalyzerConfigFiles)' != 'false'" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(IntermediateOutputPath)$(MSBuildProjectName).GeneratedMSBuildEditorConfig.editorconfig
+ true
+ <_GeneratedEditorConfigHasItems Condition="'@(CompilerVisibleItemMetadata->Count())' != '0'">true
+ <_GeneratedEditorConfigShouldRun Condition="'$(GenerateMSBuildEditorConfigFile)' == 'true' and ('$(_GeneratedEditorConfigHasItems)' == 'true' or '@(CompilerVisibleProperty->Count())' != '0')">true
+
+
+
+
+
+
+
+ <_GeneratedEditorConfigProperty Include="@(CompilerVisibleProperty)">
+ $(%(CompilerVisibleProperty.Identity))
+
+
+
+ <_GeneratedEditorConfigMetadata Include="@(%(CompilerVisibleItemMetadata.Identity))" Condition="'$(_GeneratedEditorConfigHasItems)' == 'true'">
+ %(Identity)
+ %(CompilerVisibleItemMetadata.MetadataName)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+ <_MappedSourceRoot Remove="@(_MappedSourceRoot)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+ <_TopLevelSourceRoot Include="@(SourceRoot)" Condition="'%(SourceRoot.NestedRoot)' == ''">
+ $([MSBuild]::ValueOrDefault('%(Identity)', '').Replace(',', ',,').Replace('=', '=='))
+ $([MSBuild]::ValueOrDefault('%(MappedPath)', '').Replace(',', ',,').Replace('=', '=='))
+
+
+
+
+
+ @(_TopLevelSourceRoot->'%(EscapedKey)=%(EscapedValue)', ','),$(PathMap)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+ $(IntermediateOutputPath)/generated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/roslyn/Microsoft.VisualBasic.Core.targets b/bin/roslyn/Microsoft.VisualBasic.Core.targets
new file mode 100644
index 0000000..3e97ec6
--- /dev/null
+++ b/bin/roslyn/Microsoft.VisualBasic.Core.targets
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+ <_NoWarnings Condition="'$(WarningLevel)' == '0'">true
+ <_NoWarnings Condition="'$(WarningLevel)' == '1'">false
+
+
+
+
+ $(IntermediateOutputPath)$(TargetName).compile.pdb
+
+
+
+
+
+
+
+ <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
+
+
+
+
+
diff --git a/bin/roslyn/System.Buffers.dll b/bin/roslyn/System.Buffers.dll
new file mode 100644
index 0000000..f2d83c5
Binary files /dev/null and b/bin/roslyn/System.Buffers.dll differ
diff --git a/bin/roslyn/System.Collections.Immutable.dll b/bin/roslyn/System.Collections.Immutable.dll
new file mode 100644
index 0000000..f5513ca
Binary files /dev/null and b/bin/roslyn/System.Collections.Immutable.dll differ
diff --git a/bin/roslyn/System.Memory.dll b/bin/roslyn/System.Memory.dll
new file mode 100644
index 0000000..5d19470
Binary files /dev/null and b/bin/roslyn/System.Memory.dll differ
diff --git a/bin/roslyn/System.Numerics.Vectors.dll b/bin/roslyn/System.Numerics.Vectors.dll
new file mode 100644
index 0000000..0865972
Binary files /dev/null and b/bin/roslyn/System.Numerics.Vectors.dll differ
diff --git a/bin/roslyn/System.Reflection.Metadata.dll b/bin/roslyn/System.Reflection.Metadata.dll
new file mode 100644
index 0000000..550e118
Binary files /dev/null and b/bin/roslyn/System.Reflection.Metadata.dll differ
diff --git a/bin/roslyn/System.Runtime.CompilerServices.Unsafe.dll b/bin/roslyn/System.Runtime.CompilerServices.Unsafe.dll
new file mode 100644
index 0000000..1908d92
Binary files /dev/null and b/bin/roslyn/System.Runtime.CompilerServices.Unsafe.dll differ
diff --git a/bin/roslyn/System.Text.Encoding.CodePages.dll b/bin/roslyn/System.Text.Encoding.CodePages.dll
new file mode 100644
index 0000000..d0f7adf
Binary files /dev/null and b/bin/roslyn/System.Text.Encoding.CodePages.dll differ
diff --git a/bin/roslyn/System.Threading.Tasks.Extensions.dll b/bin/roslyn/System.Threading.Tasks.Extensions.dll
new file mode 100644
index 0000000..eeec928
Binary files /dev/null and b/bin/roslyn/System.Threading.Tasks.Extensions.dll differ
diff --git a/bin/roslyn/VBCSCompiler.exe b/bin/roslyn/VBCSCompiler.exe
new file mode 100644
index 0000000..6679c6f
Binary files /dev/null and b/bin/roslyn/VBCSCompiler.exe differ
diff --git a/bin/roslyn/VBCSCompiler.exe.config b/bin/roslyn/VBCSCompiler.exe.config
new file mode 100644
index 0000000..c7f62b0
--- /dev/null
+++ b/bin/roslyn/VBCSCompiler.exe.config
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/roslyn/csc.exe b/bin/roslyn/csc.exe
new file mode 100644
index 0000000..42d1ff0
Binary files /dev/null and b/bin/roslyn/csc.exe differ
diff --git a/bin/roslyn/csc.exe.config b/bin/roslyn/csc.exe.config
new file mode 100644
index 0000000..44865be
--- /dev/null
+++ b/bin/roslyn/csc.exe.config
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/roslyn/csi.exe b/bin/roslyn/csi.exe
new file mode 100644
index 0000000..e256590
Binary files /dev/null and b/bin/roslyn/csi.exe differ
diff --git a/bin/roslyn/csi.exe.config b/bin/roslyn/csi.exe.config
new file mode 100644
index 0000000..77a9e3c
--- /dev/null
+++ b/bin/roslyn/csi.exe.config
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bin/roslyn/vbc.exe b/bin/roslyn/vbc.exe
new file mode 100644
index 0000000..656fd8c
Binary files /dev/null and b/bin/roslyn/vbc.exe differ
diff --git a/bin/roslyn/vbc.exe.config b/bin/roslyn/vbc.exe.config
new file mode 100644
index 0000000..f8845df
--- /dev/null
+++ b/bin/roslyn/vbc.exe.config
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file