diff --git a/Projects/WebGIM/GIM_site/bin/GIM_site.dll b/Projects/WebGIM/GIM_site/bin/GIM_site.dll
index 4c0a945..f3ec587 100644
Binary files a/Projects/WebGIM/GIM_site/bin/GIM_site.dll and b/Projects/WebGIM/GIM_site/bin/GIM_site.dll differ
diff --git a/Projects/WebGIM/GIM_site/bin/GIM_site.dll.config b/Projects/WebGIM/GIM_site/bin/GIM_site.dll.config
index cab21b2..2a522ed 100644
--- a/Projects/WebGIM/GIM_site/bin/GIM_site.dll.config
+++ b/Projects/WebGIM/GIM_site/bin/GIM_site.dll.config
@@ -154,7 +154,7 @@
-
+
@@ -249,7 +249,7 @@
-
-
-
-
\ No newline at end of file
+
+
+
+
\ No newline at end of file
diff --git a/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.DiskCache.dll b/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.DiskCache.dll
index 2b043fe..0837491 100644
Binary files a/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.DiskCache.dll and b/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.DiskCache.dll differ
diff --git a/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.DiskCache.xml b/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.DiskCache.xml
index 92f48d4..fba538e 100644
--- a/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.DiskCache.xml
+++ b/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.DiskCache.xml
@@ -4,16 +4,12 @@
ImageResizer.Plugins.DiskCache
-
-
- How many bytes of buffered file data to hold in memory before refusing futher queue requests and forcing them to be executed synchronously.
-
-
-
+
If the collection contains the specified item, it is returned. Otherwise, null is returned.
-
+
+
@@ -33,134 +29,222 @@
Returns false when (a) the specified AsyncWrite value already exists, (b) the queue is full, or (c) the thread pool queue is full
-
-
+
- Returns the UTC time this AsyncWrite object was created.
+ How many bytes of buffered file data to hold in memory before refusing futher queue requests and forcing them to be executed synchronously.
-
-
- Returns the length of the Data
-
-
-
-
-
- Returns the length of the buffer capacity
-
-
-
Wraps the data in a readonly MemoryStream so it can be accessed on another thread
-
+
- Handles access to a disk-based file cache. Handles locking and versioning.
- Supports subfolders for scalability.
+ Returns the UTC time this AsyncWrite object was created.
-
+
- Fired immediately before GetCachedFile return the result value.
+ Defaults to 10MB limit, and samples usage over the last 10 minutes when deciding what to remove. Stuff not used in the last 10 minutes gets discarded even if the limit hasn't been reached.
-
+
- Provides string-based locking for file write access.
+ Implements IHttpHandler, serves content for the NoCache plugin
-
+
- Provides string-based locking for image resizing (not writing, just processing). Prevents duplication of efforts in asynchronous mode, where 'Locks' is not being used.
+ Throws an exception if the class is already modified
-
+
- Contains all the queued and in-progress writes to the cache.
+ Loads the settings from 'c', starts the cache, and registers the plugin.
+ Will throw an invalidoperationexception if already started.
-
-
-
- Provides an in-memory index of the cache.
-
-
-
-
- If the cached data exists and is up-to-date, returns the path to it. Otherwise, this function tries to cache the data and return the path.
-
- The basis for the cache key.
- The extension to use for the cached file.
- A method that accepts a Stream argument and writes the data to it.
- =
+
-
+
- May return either a physical file name or a MemoryStream with the data.
- Faster than GetCachedFile, as writes are (usually) asynchronous. If the write queue is full, the write is forced to be synchronous again.
- Identical to GetCachedFile() when asynchronous=false
+ Returns true if the configured settings are valid and .NET (not NTFS) permissions will work.
-
-
-
-
-
+
- Returns true if either (a) the file was written, or (b) the file already existed with a matching modified date.
- Returns false if the in-process lock failed. Throws an exception if any kind of file or processing exception occurs.
+ Returns true if .NET permissions allow writing to the cache directory. Does not check NTFS permissions.
-
-
-
-
-
-
-
+
- Provides locking based on a string key.
- Locks are local to the LockProvider instance.
- The class handles disposing of unused locks. Generally used for
- coordinating writes to files (of which there can be millions).
- Only keeps key/lock pairs in memory which are in use.
- Thread-safe.
+ Attempts to start the DiskCache using the current settings. Returns true if succesful or if already started. Returns false on a configuration error.
+ Called by Install()
-
+
- The only objects in this collection should be for open files.
+ Returns true if stopped succesfully. Cannot be restarted
+
+
+
+
+
+ Sets the location of the cache directory.
+ Can be a virtual path (like /App/imagecache) or an application-relative path (like ~/imagecache, the default).
+ Relative paths are assummed to be relative to the application root.
+ All values are converted to virtual path format upon assignment (/App/imagecache)
+ Will throw an InvalidOperationException if changed after the plugin is installed.
-
+
- Synchronization object for modifications to the 'locks' dictionary
+ Returns the physical path of the cache directory specified in VirtualCacheDir.
-
+
- Returns true if the given key *might* be locked.
+ Returns true if the DiskCache instance is operational.
+
+
+
+
+ The estimated ram usage for the entire cache. Relies upon the accuracy of the calculator delegate
+
+
+
+
+ Specifies counter granularity, memory limits, cleanup intervals, and threading optimization level.
+
+
+
+
+ Whether to optimize for performance or counter accuracy. Defaults to Fast
+
+
+
+
+ How granular to track the time. For example, with a granularity of 8 (default), and an 8-minute tracking duration, the counter will track the last 7-8 minutes (maximum 0-59.9 second time window variance).
+
+
+
+
+ Specifies a hard limit on the number of bytes used for tracking purposes. Causes the smallest-valued items to get discarded first. Doesn't count key size unless SetCustomSize is called on the items. Set to 0 to disable (default)
+
+
+
+
+ Specifies how often to eliminate 0-valued items from the dictionary. Defaults to 20 seconds. Only potentially triggered by .Increment() or PingCleanup() calls.
+
+
+
+
+ The estimated size (in bytes) of a counter (excluding the key). Based on CounterGranularity
+
+
+
+
+ Much faster than accurate mode, but at the expense of extremely rare counter inaccuracies. Irrelevant in light of counter granularity, usually.
+
+
+
+
+ Maintains a dictionary of keys to counters. Counters track how many events have occured during the last X minutes/seconds/ticks for the given item.
+ Can enforce size limits and cleanup empty counters on an inverval.
+
+
+
+
+
+ For incrementing and finding counters based on keys
+
+
+
+
+ Purely for cleanup purposes. Allows fast removal of pairs based on the EventCounter instance.
+
+
+
+
+ Lock for access to dictionaries
+
+
+
+
+ Lock on EventCounter.sortValue members. Redundant with cleanupLock implemented.
+
+
+
+
+ Lock to prevent concurrent cleanups from occuring
+
+
+
+
+ Lock to prevent duplicate work items from being scheduled.
+
+
+
+
+ Starts cleanup on a thread pool thread if it hasn't been started within the desired interval. If cleanup starts and other cleanup is running, it cancels. The assumption is that one cleanup of either type is enough within the interval.
+
+
+
+
+ Performs cleanup on the dictionaries in either MakeRoom or Maintenance mode. Returns true if the goal was achieved, false if the cleanup was canceled because another cleanup was executing conurrently.
+
+
+
+
+
+ Increment the counter for the given item. Pings cleanup as well.
+
+
+ Sets the custom size offset for the specified key (used for cleanup purposes). If -1, existing value will remain unchanged.
+
+
+
+ Calculate the counter value for the given item
-
+
- Attempts to execute the 'success' callback inside a lock based on 'key'. If successful, returns true.
- If the lock cannot be acquired within 'timoutMs', returns false
- In a worst-case scenario, it could take up to twice as long as 'timeoutMs' to return false.
+ The duration for which to track events. For example, 5 minutes will keep a rolling value of how many events have occured in the last 5 minutes
+
+
+
+
+ The estimated number of bytes used for tracking, plus the sum of the CustomSize values. Key space not included unless the caller always includes key size in CustomSize parameter.
+
+
+
+
+ Maintains a rotating data structure to track events over a moving time period.
+
+
+
+
+ Returns the value of the counter
+
+
+
+
+
+ Warning! Not synchronized or updated. Use must be externally synchromized and value set externally
+
+
+
+
+ User-defined size of related item (key and/or a related cache object). Defaults to 0;
-
-
-
@@ -191,18 +275,6 @@
Represents a cached view of a folder of cached items
-
-
- Defaults to false. Set to true immediately after being refreshed from the filesystem.
- Set to false if a file disappears from the filesystem cache without the cache index being notified first.
- Used by the cleanup system - not of importance to the cache write system.
-
-
-
-
- Fired when a file disappears from the cache folder without the cache index knowing about it.
-
-
Returns null if (a) the file doesn't exist, or (b) the file isn't populated. Calling code should always fall back to filesystem calls on a null result.
@@ -314,6 +386,18 @@
+
+
+ Defaults to false. Set to true immediately after being refreshed from the filesystem.
+ Set to false if a file disappears from the filesystem cache without the cache index being notified first.
+ Used by the cleanup system - not of importance to the cache write system.
+
+
+
+
+ Fired when a file disappears from the cache folder without the cache index knowing about it.
+
+
Provides thread-safe access to the index of the disk cache
@@ -355,11 +439,6 @@
The result of the cache check
-
-
- When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
-
-
Notifies the CleanupManager that a request is in process. Helps CleanupManager optimize background work so it doesn't interfere with request processing.
@@ -371,6 +450,11 @@
+
+
+ When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
+
+
Queues the item if no other identical items exist in the queue. Returns true if the item was added.
@@ -391,11 +475,10 @@
-
+
Creates and starts a thread that consumes the queue, pausing until notified when 'queue' empties.
-
@@ -426,11 +509,6 @@
The last time we did work (or attempted to do work, failing if the queue was empty)
-
-
- When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
-
-
When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
@@ -454,6 +532,11 @@
+
+
+ When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
+
+
An item in the work queue
@@ -510,6 +593,44 @@
Supports subfolders for scalability.
+
+
+ If the cached data exists and is up-to-date, returns the path to it. Otherwise, this function tries to cache the data and return the path.
+
+ The basis for the key. Should not include the modified date, that is handled inside the function.
+ The extension to use for the cached file.
+ A method that accepts a Stream argument and writes the data to it.
+ The modified date of the source file. Should be DateTime.MinValue if not available
+
+
+
+
+
+ May return either a physical file name or a MemoryStream with the data.
+ Faster than GetCachedFile, as writes are (usually) asynchronous. If the write queue is full, the write is forced to be synchronous again.
+ Identical to GetCachedFile() when asynchronous=false
+
+
+
+
+
+
+
+
+
+
+ Returns true if either (a) the file was written, or (b) the file already existed with a matching modified date.
+ Returns false if the in-process lock failed. Throws an exception if any kind of file or processing exception occurs.
+
+
+
+
+
+
+
+
+
+
Fired immediately before GetCachedFile return the result value.
@@ -535,42 +656,6 @@
Provides an in-memory index of the cache.
-
-
- If the cached data exists and is up-to-date, returns the path to it. Otherwise, this function tries to cache the data and return the path.
-
- The basis for the cache key.
- The extension to use for the cached file.
- A method that accepts a Stream argument and writes the data to it.
- =
-
-
-
-
- May return either a physical file name or a MemoryStream with the data.
- Faster than GetCachedFile, as writes are (usually) asynchronous. If the write queue is full, the write is forced to be synchronous again.
- Identical to GetCachedFile() when asynchronous=false
-
-
-
-
-
-
-
-
-
-
- Returns true if either (a) the file was written, or (b) the file already existed with a matching modified date.
- Returns false if the in-process lock failed. Throws an exception if any kind of file or processing exception occurs.
-
-
-
-
-
-
-
-
-
Indicates a problem with disk caching. Causes include a missing (or too small) ImageDiskCacheDir setting, and severe I/O locking preventing
@@ -582,66 +667,6 @@
Provides methods for creating, maintaining, and securing the disk cache.
-
-
- Controls how many subfolders to use for disk caching. Rounded to the next power of to. (1->2, 3->4, 5->8, 9->16, 17->32, 33->64, 65->128,129->256,etc.)
- NTFS does not handle more than 8,000 files per folder well. Larger folders also make cleanup more resource-intensive.
- Defaults to 8192, which combined with the default setting of 400 images per folder, allows for scalability to ~1.5 million actively used image versions.
- For example, given a desired cache size of 100,000 items, this should be set to 256.
-
-
-
-
- Allows disk caching to be disabled for debugging purposes. Defaults to true.
-
-
-
-
- If true, items from the cache folder will be automatically 'garbage collected' if the cache size limits are exceeded.
- Defaults to false.
-
-
-
-
- Only relevant when AutoClean=true. Settings about how background cache cleanup are performed.
- It is best not to modify these settings. There are very complicated and non-obvious factors involved in their choice.
-
-
-
-
- Sets the timeout time to 15 seconds as default.
-
-
-
-
- How many milliseconds to wait for a cached item to be available. Values below 0 are set to 0. Defaults to 15 seconds.
- Actual time spent waiting may be 2 or 3x this value, if multiple layers of synchronization require a wait.
-
-
-
-
- If true, writes to the disk cache will be performed outside the request thread, allowing responses to return to the client quicker.
-
-
-
-
- If more than this amount of memory (in bytes) is currently allocated by queued writes, the request will be processed synchronously instead of asynchronously.
-
-
-
-
- Sets the location of the cache directory.
- Can be a virtual path (like /App/imagecache) or an application-relative path (like ~/imagecache, the default).
- Relative paths are assummed to be relative to the application root.
- All values are converted to virtual path format upon assignment (/App/imagecache)
- Will throw an InvalidOperationException if changed after the plugin is installed.
-
-
-
-
- Returns the physical path of the cache directory specified in VirtualCacheDir.
-
-
Throws an exception if the class is already modified
@@ -672,13 +697,6 @@
-
-
- Removes the plugin from the given configuration container
-
-
-
-
Returns true if the configured settings are valid and .NET (not NTFS) permissions will work.
@@ -691,11 +709,6 @@
-
-
- Returns true if the DiskCache instance is operational.
-
-
Attempts to start the DiskCache using the current settings. Returns true if succesful or if already started. Returns false on a configuration error.
@@ -708,9 +721,73 @@
-
+
- Returns the license key feature codes that are able to activate this plugins.
+ Controls how many subfolders to use for disk caching. Rounded to the next power of to. (1->2, 3->4, 5->8, 9->16, 17->32, 33->64, 65->128,129->256,etc.)
+ NTFS does not handle more than 8,000 files per folder well. Larger folders also make cleanup more resource-intensive.
+ Defaults to 32, which combined with the default setting of 400 images per folder, allows for scalability to 12,800 actively used image versions.
+ For example, given a desired cache size of 100,000 items, this should be set to 256.
+
+
+
+
+ Allows disk caching to be disabled for debuginng purposes. Defaults to true.
+
+
+
+
+ If true, items from the cache folder will be automatically 'garbage collected' if the cache size limits are exceeded.
+ Defaults to false.
+
+
+
+
+ Only relevant when AutoClean=true. Settings about how background cache cleanup are performed.
+ It is best not to modify these settings. There are very complicated and non-obvious factors involved in their choice.
+
+
+
+
+ How many milliseconds to wait for a cached item to be available. Values below 0 are set to 0. Defaults to 15 seconds.
+ Actual time spent waiting may be 2 or 3x this value, if multiple layers of synchronization require a wait.
+
+
+
+
+ If true, when a source file is changed, a new file will be created instead of overwriting the old cached file.
+ This helps prevent file lock contention on high-traffic servers. Defaults to true.
+ Do NOT set this to false in a Web Garden or if you have overlapped recycle enabled, as you may risk having occasional failed requests due
+ to write contention by separate proccesses.
+ Changes the hash function, so you should delete the cache folder whenever this setting is modified.
+
+
+
+
+ If true, writes to the disk cache will be performed outside the request thread, allowing responses to return to the client quicker.
+
+
+
+
+ If more than this amount of memory (in bytes) is currently allocated by queued writes, the request will be processed synchronously instead of asynchronously.
+
+
+
+
+ Sets the location of the cache directory.
+ Can be a virtual path (like /App/imagecache) or an application-relative path (like ~/imagecache, the default).
+ Relative paths are assummed to be relative to the application root.
+ All values are converted to virtual path format upon assignment (/App/imagecache)
+ Will throw an InvalidOperationException if changed after the plugin is installed.
+
+
+
+
+ Returns the physical path of the cache directory specified in VirtualCacheDir.
+
+
+
+
+ Returns true if the DiskCache instance is operational.
@@ -762,16 +839,16 @@
Please note "LastUsed" values are (initially) only accurate to about a hour, due to delayed write.
- If a file has been used after the app started running, the last used date is accurate.
+ If a file has been used after the app started running, the the last used date is accurate.
Please note "LastUsed" values are (initially) only accurate to about a hour, due to delayed write.
- If a file has been used after the app started running, the last used date is accurate.
+ If a file has been used after the app started running, the the last used date is accurate.
-
+
Provides locking based on a string key.
Locks are local to the LockProvider instance.
@@ -779,27 +856,26 @@
coordinating writes to files (of which there can be millions).
Only keeps key/lock pairs in memory which are in use.
Thread-safe.
- Uses SemaphoreSlim instead of locks to be thread-context agnostic.
-
+
The only objects in this collection should be for open files.
-
+
Synchronization object for modifications to the 'locks' dictionary
-
+
Returns true if the given key *might* be locked.
-
+
Attempts to execute the 'success' callback inside a lock based on 'key'. If successful, returns true.
If the lock cannot be acquired within 'timoutMs', returns false
@@ -807,8 +883,14 @@
+
+
+
+ Defaults to 10MB limit, and samples usage over the last 10 minutes when deciding what to remove. Stuff not used in the last 10 minutes gets discarded even if the limit hasn't been reached.
+
+
Builds a key for the cached version, using the hashcode of the normalized URL.
@@ -855,6 +937,7 @@
If CheckWebConfig has never executed, it is executed immediately, but only once.
Verifies a Web.config file is present in the directory, and creates it if needed.
+
@@ -866,270 +949,7 @@
Should only be called inside a lock. Creates the cache dir and the web.config file if they are missing. Updates
_lastCheckedWebConfig and _checkedWebConfigOnce
-
-
-
- Returns the license key feature codes that are able to activate this plugins.
-
-
-
-
- Defaults to 10MB limit, and samples usage over the last 10 minutes when deciding what to remove. Stuff not used in the last 10 minutes gets discarded even if the limit hasn't been reached.
-
-
-
-
- Adds the plugin to the given configuration container
-
-
-
-
-
-
- Removes the plugin from the given configuration container
-
-
-
-
-
-
- Implements IHttpHandler, serves content for the NoCache plugin
-
-
-
-
- Like DiskCache, but for source files. Not advisable if your source image collection is larger than available local storage.
-
-
-
-
- Creates a new instance of SourceDiskCache
-
-
-
-
- Sets the location of the cache directory.
- Can be a virtual path (like /App/imagecache) or an application-relative path (like ~/imagecache, the default).
- Relative paths are assummed to be relative to the application root.
- All values are converted to virtual path format upon assignment (/App/imagecache)
- Will throw an InvalidOperationException if changed after the plugin is installed.
-
-
-
-
- Returns the physical path of the cache directory specified in VirtualCacheDir.
-
-
-
-
- Throws an exception if the class is already modified
-
-
-
-
- Returns true if the DiskCache instance is operational.
-
-
-
-
- Loads the settings from 'c', starts the cache, and registers the plugin.
- Will throw an invalidoperationexception if already started.
-
-
-
-
-
-
- Removes this plugin from the given configuration container
-
-
-
-
-
-
- Returns true if the configured settings are valid and .NET (not NTFS) permissions will work.
-
-
-
-
-
- Returns true if .NET permissions allow writing to the cache directory. Does not check NTFS permissions.
-
-
-
-
-
- Attempts to start the DiskCache using the current settings. Returns true if succesful or if already started. Returns false on a configuration error.
- Called by Install()
-
-
-
-
- Returns true if stopped succesfully. Cannot be restarted
-
-
-
-
-
- Returns the license key feature codes that are able to activate this plugins.
-
-
-
-
- The estimated ram usage for the entire cache. Relies upon the accuracy of the calculator delegate
-
-
-
-
- Specifies counter granularity, memory limits, cleanup intervals, and threading optimization level.
-
-
-
-
- Much faster than accurate mode, but at the expense of extremely rare counter inaccuracies. Irrelevant in light of counter granularity, usually.
-
-
-
-
- Whether to optimize for performance or counter accuracy. Defaults to Fast
-
-
-
-
- How granular to track the time. For example, with a granularity of 8 (default), and an 8-minute tracking duration, the counter will track the last 7-8 minutes (maximum 0-59.9 second time window variance).
-
-
-
-
- Specifies a hard limit on the number of bytes used for tracking purposes. Causes the smallest-valued items to get discarded first. Doesn't count key size unless SetCustomSize is called on the items. Set to 0 to disable (default)
-
-
-
-
- Specifies how often to eliminate 0-valued items from the dictionary. Defaults to 20 seconds. Only potentially triggered by .Increment() or PingCleanup() calls.
-
-
-
-
- The estimated size (in bytes) of a counter (excluding the key). Based on CounterGranularity
-
-
-
-
- Maintains a dictionary of keys to counters. Counters track how many events have occured during the last X minutes/seconds/ticks for the given item.
- Can enforce size limits and cleanup empty counters on an inverval.
-
-
-
-
-
- The duration for which to track events. For example, 5 minutes will keep a rolling value of how many events have occured in the last 5 minutes
-
-
-
-
- The estimated number of bytes used for tracking, plus the sum of the CustomSize values. Key space not included unless the caller always includes key size in CustomSize parameter.
-
-
-
-
- For incrementing and finding counters based on keys
-
-
-
-
- Purely for cleanup purposes. Allows fast removal of pairs based on the EventCounter instance.
-
-
-
-
- Lock for access to dictionaries
-
-
-
-
- Lock on EventCounter.sortValue members. Redundant with cleanupLock implemented.
-
-
-
-
- Lock to prevent concurrent cleanups from occuring
-
-
-
-
- Lock to prevent duplicate work items from being scheduled.
-
-
-
-
- Starts cleanup on a thread pool thread if it hasn't been started within the desired interval. If cleanup starts and other cleanup is running, it cancels. The assumption is that one cleanup of either type is enough within the interval.
-
-
-
-
- Performs cleanup on the dictionaries in either MakeRoom or Maintenance mode. Returns true if the goal was achieved, false if the cleanup was canceled because another cleanup was executing conurrently.
-
-
-
-
-
- Increment the counter for the given item. Pings cleanup as well.
-
-
- Sets the custom size offset for the specified key (used for cleanup purposes). If -1, existing value will remain unchanged.
-
-
-
- Calculate the counter value for the given item
-
-
-
-
-
-
- Maintains a rotating data structure to track events over a moving time period.
-
-
-
-
- User-defined size of related item (key and/or a related cache object). Defaults to 0;
-
-
-
-
- Returns the value of the counter
-
-
-
-
-
- Warning! Not synchronized or updated. Use must be externally synchromized and value set externally
-
-
-
-
- Defaults to 10MB limit, and samples usage over the last 10 minutes when deciding what to remove. Stuff not used in the last 10 minutes gets discarded even if the limit hasn't been reached.
-
-
-
-
- Retrieves file if cached.
-
-
-
-
-
-
-
-
- Returns the license key feature codes that are able to activate this plugins.
-
-
-
-
- Source file cached in memory.
-
+
diff --git a/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.SeamCarving.dll b/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.SeamCarving.dll
index 7135910..21d9efc 100644
Binary files a/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.SeamCarving.dll and b/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.SeamCarving.dll differ
diff --git a/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.SeamCarving.xml b/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.SeamCarving.xml
index 9ea243a..4d874e1 100644
--- a/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.SeamCarving.xml
+++ b/Projects/WebGIM/GIM_site/bin/ImageResizer.Plugins.SeamCarving.xml
@@ -33,86 +33,6 @@
A quirky version of LZW supporting only 32K dictionary sizes, expecting a UTF8-like encoding method, and offering custom alphabet support
-
-
- The maximum number of CAIR.exe instances to allow at the same time. After this limit is reached,
- requests will wait until requests will MaxConcurrentWaitingThreads is reached, at which point
- requests will be denied so the thread pool doesn't become exhausted.
- Set this value to at least CPU cores * 2, as the proccess is also I/O bound. Set to 0 for no limit (default).
-
-
-
-
- The maximum number of waiting threads (for a CAIR.exe instance) to permit before denying requests. Set to 0 (default) to permit an endless number of threads to wait (although request timeout will still be effect).
- Set this value to at least 30
-
-
-
-
- Number of executing CAIR.exe processes
-
-
-
-
- Number of threads waiting for a CAIR.exe process.
-
-
-
-
- Used for efficient thread waiting
-
-
-
-
- This plugin provides content-aware image resizing and 5 different algorithms.
-
-
-
-
- Creates a new instance of SeamCarvingPlugin
-
-
-
-
- Returns the querystrings command keys supported by this plugin.
-
-
-
-
-
- Adds the plugin to the given configuration container
-
-
-
-
-
-
- Removes the plugin from the given configuration container
-
-
-
-
-
-
- The exception that is thrown when an error in input stream occurs during decoding.
-
-
-
-
- The exception that is thrown when the value of an argument is outside the allowable range.
-
-
-
-
- Callback progress.
-
-
- input size. -1 if unknown.
-
-
- output size. -1 if unknown.
-
-
Codes streams.
@@ -136,6 +56,27 @@
if input stream is not valid
+
+
+ The exception that is thrown when an error in input stream occurs during decoding.
+
+
+
+
+ The exception that is thrown when the value of an argument is outside the allowable range.
+
+
+
+
+ Callback progress.
+
+
+ input size. -1 if unknown.
+
+
+ output size. -1 if unknown.
+
+
Provides the fields that represent properties idenitifiers for compressing.
@@ -216,5 +157,34 @@
Specifies mode with end marker.
+
+
+ Number of executing CAIR.exe processes
+
+
+
+
+ Number of threads waiting for a CAIR.exe process.
+
+
+
+
+ Used for efficient thread waiting
+
+
+
+
+ The maximum number of CAIR.exe instances to allow at the same time. After this limit is reached,
+ requests will wait until requests will MaxConcurrentWaitingThreads is reached, at which point
+ requests will be denied so the thread pool doesn't become exhausted.
+ Set this value to at least CPU cores * 2, as the proccess is also I/O bound. Set to 0 for no limit (default).
+
+
+
+
+ The maximum number of waiting threads (for a CAIR.exe instance) to permit before denying requests. Set to 0 (default) to permit an endless number of threads to wait (although request timeout will still be effect).
+ Set this value to at least 30
+
+
diff --git a/Projects/WebGIM/GIM_site/bin/ImageResizer.dll b/Projects/WebGIM/GIM_site/bin/ImageResizer.dll
index 931a695..94a482c 100644
Binary files a/Projects/WebGIM/GIM_site/bin/ImageResizer.dll and b/Projects/WebGIM/GIM_site/bin/ImageResizer.dll differ
diff --git a/Projects/WebGIM/GIM_site/bin/ImageResizer.xml b/Projects/WebGIM/GIM_site/bin/ImageResizer.xml
index ee1f74e..76f46ba 100644
--- a/Projects/WebGIM/GIM_site/bin/ImageResizer.xml
+++ b/Projects/WebGIM/GIM_site/bin/ImageResizer.xml
@@ -4,16 +4,6 @@
ImageResizer
-
-
- Generates the resized image to disk (if needed), then rewrites the request to that location.
- Perform 404 checking before calling this method. Assumes file exists.
- Called during PostAuthorizeRequest
-
-
-
-
-
Represents the widths of edges of a box.
@@ -47,6 +37,12 @@
+
+
+ Gets edge offsets as a clockwise array, starting with Top.
+
+
+
Returns double.NaN unless all edges are the same width, in which case that width is returned
@@ -62,12 +58,6 @@
Returns true if th
-
-
- Gets edge offsets as a clockwise array, starting with Top.
-
-
-
Provides culture-invariant parsing of byte, int, double, float, bool, and enum values.
@@ -108,363 +98,11 @@
Provides culture-invariant serialization of value types, in lower case for querystring readability. Setting a key to null removes it.
-
-
-
-
-
-
- SafeList is mutable, but it uses immutable data structures to minimize the need for locking.
- The provided manipulation
- Exposes a immutable list. Changes are made by copying the lists.
- SafeList is
- Never perform logic on SafeList directly, always use GetList() or GetCollection() first, followed by SetList().
- If you need involved list-fu, use ModifyList and specify a callback. It will execute inside a lock, preventing changes on other threads from overwriting each other.
-
-
-
-
-
- Returns an immutable snapshot of the collection
-
-
-
-
-
- Returns a mutable snapshot of the list
-
-
-
-
-
- Replaces the current collection with a new one. (copied to ensure safety)
- Use ModifyList when modifying the list. Use this only when the previous or current state of the list is irrelevant.
-
-
-
-
-
- Adds the specified item to the end of the list
-
-
-
-
-
- Removes the item from the list
-
-
-
-
-
- Returns the first item in the list. May return null if the list is empty.
-
-
-
-
- Returns the first item in the list. May return null if the list is empty.
-
-
-
-
- Adds the specified item to the beginning of the list
-
-
-
-
-
- Allows a caller to perform logic on the list inside a lock, and return a modified list.
- Callbacks should be fast, and should reference the IList they are fed, not this SafeList instance.
- Calling methods on the SafeList instance will cause a deadlock.
-
-
-
-
-
- Returns true if the collection contains the specified item at the moment.
-
-
-
-
-
-
- Extends enumerations by allowing them to define alternate strings with the [EnumString("Alternate Name",true)] attribute, and support it through TryParse and ToPreferredString
-
-
-
-
- Attempts case-insensitive parsing of the specified enum. Returns the specified default value if parsing fails.
- Supports [EnumString("Alternate Value")] attributes and parses flags. If any segment of a comma-delimited list isn't parsed as either a number or string, defaultValue will be returned.
-
-
-
-
-
-
-
-
- Attempts case-insensitive parsing of the specified enum. Returns null if parsing failed.
- Supports [EnumString("Alternate Value")] attributes and parses flags. If any segment of a comma-delimited list isn't parsed as either a number or string, null will be returned.
-
-
-
-
-
-
-
- Retuns the string representation for the given enumeration
-
-
-
-
-
-
-
- Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
-
-
-
-
- Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
-
-
-
-
-
- Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
-
-
-
-
-
- Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
-
-
-
-
- Serializes the given value by calling .ToString(). If the value is null, the key is removed.
-
-
-
-
- Provides culture-invariant serialization of value types, in lower case for querystring readability. Setting a key to null removes it.
-
-
-
-
-
-
-
-
-
- Parses a comma-delimited list of primitive values. If there are unparsable items in the list, they will be replaced with 'fallbackValue'. If fallbackValue is null, the function will return null
-
-
-
-
-
-
-
-
-
- Returns true if any of the specified keys contain a value
-
-
-
-
-
-
-
- Normalizes a command that has two possible names.
- If either of the commands has a null or empty value, those keys are removed.
- If both the primary and secondary are present, the secondary is removed.
- Otherwise, the secondary is renamed to the primary name.
-
-
-
-
-
-
-
- Creates and returns a new NameValueCollection instance that contains only the specified keys from the current collection.
-
-
-
-
-
-
-
- Creates and returns a new NameValueCollection instance that contains all of the
- keys/values from 'q', and any keys/values from 'defaults' that 'q' does not already
- contain.
-
- The settings specific to a particular query
- Default settings to use when not overridden by 'q'.
-
-
-
-
- Provides extension methods for copying streams
-
-
-
-
- Copies the remaining data in the current stream to a new MemoryStream instance.
-
-
-
-
-
-
- Copies the current stream into a new MemoryStream instance.
-
-
- True to copy entire stream if seeakable, false to only copy remaining data
-
-
-
-
- Copies the current stream into a new MemoryStream instance.
-
-
- True to copy entire stream if seeakable, false to only copy remaining data
- The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
-
-
-
- Copies the remaining data in the current stream to a byte[] array of exact size.
-
-
-
-
-
-
- Copies the current stream into a byte[] array of exact size.
-
-
- True to copy entire stream if seeakable, false to only copy remaining data
-
-
-
-
- Copies the remaining data from the this stream into the given stream.
-
-
- The stream to write to
-
-
-
- Copies this stream into the given stream
-
-
- The stream to write to
- True to copy entire stream if seeakable, false to only copy remaining data
-
-
-
- Copies this stream into the given stream
-
-
- The stream to write to
- True to copy entire stream if seeakable, false to only copy remaining data
- True to copy entire stream if seeakable, false to only copy remaining data
-
-
-
- Can return null if MemoryStream doesn't permit access to internal buffer.
-
-
-
-
-
-
-
- Copies the current stream into a byte[] array of exact size
-
-
- True to copy entire stream if seeakable, false to only copy remaining data.
- The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
-
-
-
- Copies the current stream into a byte[] array of exact size
-
-
- True to copy entire stream if seeakable, false to only copy remaining data.
- The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
-
-
-
- Attempts to return a byte[] array containing the remaining portion of the stream.
- Unlike CopyToBytes(), does not return a byte[] array of exact length, and may re-use the actual Stream's byte array, making it unsafe to write to in the future.
-
-
-
-
-
-
-
-
-
- Creates a 'gatherer' that pulls issues from IIssueProviders throughout the Config structure. Even plugins are queried.
-
-
-
-
-
- Security and stability issues.
-
-
-
-
- Behavioral issues, such as having no registered image encoders
-
-
-
-
- Errors in the module configuration
-
-
-
-
- Non-optimal settings
-
-
-
-
- Returns a copy of the list of reported issues.
-
-
-
-
-
- Adds the specified issue to the list unless it is an exact duplicate of another instance.
-
-
-
Writes the diagnostic message at the specified level.
@@ -568,1559 +206,245 @@
Provides automatic download of native dependencies (which VS doesn't see). Gets the correct bitness as well - very nice if you're changing app pool bitness and forgot to change binaries.
+
+
+ Returns a copy of the list of reported issues.
+
+
+
+
+
+ Adds the specified issue to the list unless it is an exact duplicate of another instance.
+
+
+
Thread safe countdown class
-
+
- Gets the current (app-wide) config instance.
+ Extends enumerations by allowing them to define alternate strings with the [EnumString("Alternate Name",true)] attribute, and support it through TryParse and ToPreferredString
+
+
+
+ Attempts case-insensitive parsing of the specified enum. Returns the specified default value if parsing fails.
+ Supports [EnumString("Alternate Value")] attributes and parses flags. If any segment of a comma-delimited list isn't parsed as either a number or string, defaultValue will be returned.
+
+
+
-
+
- Access and modify plugins
-
-
-
-
- Access and modify settings related to the HttpModule pipline. Register URL rewriting hooks, etc.
-
-
-
-
- Allows subclasses to be used instead of ImageBuilder. Replacements must override the Create method and call their own constructor instead.
-
-
-
-
-
- Returns a shared instance of ImageManager, (or a subclass if it has been upgraded).
- Instances change whenever ImageBuilderExtensions change.
+ Attempts case-insensitive parsing of the specified enum. Returns null if parsing failed.
+ Supports [EnumString("Alternate Value")] attributes and parses flags. If any segment of a comma-delimited list isn't parsed as either a number or string, null will be returned.
+
+
-
+
- Shortuct to CurrentImageBuilder.Build (Useful for COM clients). Also creates a destination folder if needed, unlike the normal .Build() call.
-
-
-
-
-
-
-
-
- The ResizeConfigrationSection is not thread safe, and should not be modified
- Dynamically loads the ResizerSection from web.config when accessed for the first time.
- If the resizer node doesn't exist, an empty configuration object is created with just the root resizer node.
-
-
-
-
- Returns a list of all issues reported by the resizing core, as well as by all the plugins
-
-
-
-
- Returns a deep copy of the specified node
-
-
-
-
-
- Returns a deep copy if the current state of the configuration tree (starting with the 'resizer' element as the root)
-
-
-
-
- Replaces the configuration tree with the specified alternative
-
-
-
-
-
- Replaces the configuration tree with the specified alternative
-
-
-
-
-
- Writes a diagnostic page to the specified physical path
-
-
-
-
-
- Returns a string of the diagnostics page
+ Retuns the string representation for the given enumeration
+
+
-
+
- Domain-relative path which also includes the path info portion. I.e, '/app/folder/file.aspx/path/info' could be a valid value. Relative to the domain root, not the site or app root.
-
-
-
-
- Populates the cache if it is empty. Not thread safe.
-
-
-
-
- Returns a unqiue copy of the image extensions supported by the pipeline. Performs a cached query to all registered IQuerystringPlugin instances.
- Use IsAcceptedImageType for better performance.
-
-
-
-
- Returns a unqiue copy of all querystring keys supported by the pipeline. Performs a cached query to all registered IQuerystringPlugin instances.
- Use HasPipelineDirective for better performance. (binary search)
-
-
-
-
- The specified path must not include a querystring. Slashes, spaces, question marks, ampersands, and colons are not permitted in the extension.
- If it contains a multipart extension like .txt.zip, only "zip" will be recognized. Must contain a dot - passing in "jpg" will fail.
-
-
-
-
-
-
- Returns true if any of the querystring keys match any of the directives supported by the pipeline (such as width, height, format, bgcolor, etc)
-
-
-
-
-
-
- Cached access to pipeline.fakeExtensions
-
-
-
-
- Removes the first fake extensionm detected at the end of 'path'
-
-
-
-
-
-
- Returns the value of Context.Items["resizer.newPath"] if present. If not, returns FilePath + PathInfo.
- Sets Context.Items["resizer.newPath"].
- Only useful during the Pipeline.PostAuthorizeRequestStart event.
-
-
-
-
- Returns the modified query string. If never set, returns a copy of Request.QueryString.
- Returns the same instance if called multiple times. Copy it if you want to make changes without causing issues.
-
-
-
-
- Get or sets whether the file extension check should be applied to the current request. Defaults to true.
- If set to true, will only affect the current request, and will only cause the Resizer to evaluate the rewriting rules on the request.
- Processing may still not occur if no querystring values are specified. Add 'cache=always' to force caching to occur.
-
-
-
-
- Returns true if the current request is being processed and/or cached by the pipeline.
- Will return false until *after* the FileExists method is called on the VirtualPathProviders, which is after the
- AuthorizeImage event fires.
- This will return a usable value if used from VirtualFile.Open(), or if used inside the PreHandleImage event or later.
-
-
-
-
- Returns an IVirtualFileAsync instance if the specified file can be provided by an async provider
-
-
-
-
-
-
-
- Returns either an IVirtualFile instance or a VirtualFile instance.
-
-
-
-
-
-
-
- Returns true if (a) A registered IVirtualImageProvider says it exists, or (b) if the VirtualPathProvider chain says it exists.
-
-
-
-
-
-
-
- Fired once, on the first PostAuthorizeRequest event.
-
-
-
-
- Fires during the PostAuthorizeRequest phase, prior to any module-specific logic.
- Executes for every request to the website. Use only as a last resort. Other events occur only for image requests, and thus have lower overhead.
-
-
-
-
- Fired during PostAuthorizeRequest, after ResizeExtension has been removed.
- On fired on requests with extensions that match supported image types.
-
- You can add additonal supported image extentions by registering a plugin that implementes IQuerystringPlugin, or you can add an
- extra extension in the URL and remove it here. Example: .psd.jpg
-
-
-
-
- Fired during PostAuthorizeRequest, after Rewrite.
- Any changes made here (which conflict) will be overwritten by the current querystring values. I.e, this is a good place to specify default settings.
- Only fired on accepted image types. (see Rewrite)
-
-
-
-
- Fired after all other rewrite events.
- Only fired on accepted image types. (see Rewrite)
-
-
-
-
- Fired after all rewriting is finished.
- e.AllowAccess defaults to the result of the UrlAuthorization module's verdict. It can be changed.
- Set e.AllowAccess to true to cause and 403 Access Dened result.
-
-
-
-
- Fired when the specified image doesn't exist. Only called for images that would normally be processed.
- May be called during PostAuthorizeRequest or later - End the request completely with a redirect if you want alternate behavior.
-
-
-
-
- Fired immediately before the image request is sent off to the caching system for proccessing.
- Allows modification of response headers, caching arguments, and callbacks.
-
-
-
-
- The number of images processed by this pipeline.
-
-
-
-
- Cache selection occurs as follows: (1) The first registered CachingSystem that returns true from .CanProcess() is the default
- (2) The SelectCachingSystem event is fired, allowing handlers to modify the selected cache.
- This method may return null.
-
-
-
-
-
-
-
- True once the InterceptModule or InterceptModuleAsync has been installed and is intercepting requests.
-
-
-
-
- True if the InterceptModuleAsync has been installed. Null if we can't find out.
-
-
-
-
- Returns true if the AppDomain has Unrestricted code access security
-
-
-
-
-
- If true, AuthorizeImage will be called for all image requests, not just those with command directives.
-
-
-
-
- If specified, DropQuerystringKeys will cause certain query string parameters to be excluded from processing.
-
-
-
-
- True if the specified extension is one that the pipeline can handle
-
-
-
-
-
-
- True if the querystring contains any directives that are understood by the pipeline
-
-
-
-
-
-
- The key in Context.Items to store the modified querystring (i.e, post-rewrite).
- Allows VirtualPathProviders to access the rewritten data.
-
-
-
-
- The key in Context.Items to store the IResponseArgs object
-
-
-
-
- The key in Context.Items to set if we want to cancel MVC routing for the request
-
-
-
-
- The key in Context.Items to access a the path to use instead of Request.path
-
-
-
-
- The behavior to use when accessing the file system.
-
-
-
-
- Get or sets whether the file extension check should be applied to the current request. Defaults to true.
- If set to true, will only affect the current request, and will only cause the Resizer to evaluate the rewriting rules on the request.
- Processing may still not occur if no querystring values are specified. Add 'cache=always' to force caching to occur.
-
-
-
-
- True once the InterceptModule has been installed.
-
-
-
-
- True if we know that InterceptModuleAsync is registered. Null if we don't know.
-
-
-
-
- Returns the value of Context.Items["resizer.newPath"] if present. If not, returns FilePath + PathInfo.
- Sets Context.Items["resizer.newPath"].
- Only useful during the Pipeline.PostAuthorizeRequestStart event.
-
-
-
-
- Removes the first fake extension detected at the end of 'path' (like image.jpg.ashx -> image.jpg).
-
-
-
-
-
-
- Returns an ImageBuilder instance to use for image processing.
-
-
-
-
-
- Returns a ICacheProvider instance that provides caching system selection and creation.
-
-
-
-
-
- Returns an IVirtualFile instance if the specified file exists.
-
-
-
-
-
-
-
- Returns an IVirtualFileAsync instance if the specified file can be provided by an async provider
-
-
-
-
-
-
-
- Returns true if (a) A registered IVirtualImageProvider says it exists, or (b) if the VirtualPathProvider chain says it exists.
-
-
-
-
-
-
-
- Returns true if any registered IVirtualImageProviderAsync says it exists.
-
-
-
-
-
-
-
- If true, AuthorizeImage will be called for all image requests, not just those with command directives.
-
-
-
-
- Provides thread-safe access to plugin addition, removal, and querying methods
-
-
-
-
- Creates a new plugin config section, attached to the specified parent
-
-
-
-
-
- Processes the <plugins> section if they are not already loaded. Thread safe.
- Only executes once.
-
-
-
-
- Forces loading of the plugins specified in configuration, even if they have already been loaded. Will add duplicate plugins and throw exceptions if you do not call RemoveAll() first.
-
-
-
-
- Returns true if the <plugins> section has been processed
-
-
-
-
- Not thread safe. Performs actual work.
-
-
-
-
- Returns the subset of installed plugins which implement the specified type or interface
-
-
-
-
-
-
- Returns all registered instances of the specified plugins
+ Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
- Returns true if at least one plugin of the specified type is registered.
-
-
-
-
-
-
- Returns true if 1 or more instances of the type are registered.
-
-
-
-
-
-
- Returns the first registerd instance of the specified plugin. For IMultiInstancePlugins, use GetAll()
-
-
-
-
-
-
- Returns the first registered instance of the specified plugin, or creates a new instance if the plugin isn't installed.
-
-
-
-
-
-
- Returns the first registered instance of the specified plugin, or installs the given instance instead, then re-tries the query
-
-
-
-
-
-
-
- Installs the specified plugin, returning the plugin instance.
- Convenience method, same as plugin.Install(Config.Current).
-
-
-
-
-
-
- Attempts uninstallation of the specified plugin, returning true if successful.
- Convenience method, same as plugin.Uninstall(Config.Current).
-
-
-
-
-
-
- Currently registered ICurrentConfigProviders.
-
-
-
-
- Currently registered set of ImageBuilderExtensions.
-
-
-
-
- Currently registered IEncoders.
-
-
-
-
- Currently registered ICache instances
-
-
-
-
- Plugins which accept querystring arguments are registered here.
-
-
-
-
- Plugins which accept new file extensions (in the url) are registered here.
-
-
-
-
- Plugins which provide virtual files are registered here.
-
-
-
-
- Plugins which modify image processing settings.
-
-
-
-
- All plugins should be registered here. Used for diagnostic purposes.
-
-
-
-
- Returns the most recently registered Logging plugin, or null.
-
-
-
-
- Returns an instance of the first encoder that claims to be able to handle the specified settings.
- Returns null if no encoders are available.
-
- Request settings, like format, quality, colors, dither, etc.
- May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
- May also be used for palette generation hinting by some encoders.
-
-
-
-
- Returns null on failure. Check GetIssues() for causes.
-
-
-
-
-
-
-
- This is called to get a sorted list of plugins based on their likelyhood of having the plugin.
-
-
-
-
-
-
-
- Searches all loaded assemblies for the specified type, applying rules and prefixes to resolve the namespace and assembly.
- Returns null if it could not find the type, and logs an issue.
-
-
-
-
-
-
- For use only by plugins during .Uninstall.
- Removes the specified plugin from AllPlugins, QuerystringPlugins, CachingSystems, ImageEncoders, and ImageBuiderExtensions, based
- on which interfaces the instance implements.
- Plugins may register event handlers and modify settings - thus you should use the plugin's method to uninstall them vs. using this method.
-
-
-
-
-
- Only for use by plugins during IPlugin.Install. Call Plugin.Install instead of this method, since plugins often must perform other initialization actions.
- Adds the specified plugin to AllPlugins, QuerystringPlugins, CachingSystems, ImageEncoders, and ImageBuiderExtensions, based
- on which interfaces the instance implements. For ICache and IEncoder, the plugin is inserted at the beginning of CachingSystems and ImageEncoders respectively.
- To reiterate, plugins may register event handlers and modify settings - thus you should use the plugin's method to uninstall them vs. using this method.
- Will not register a plugin that is already installed, unless it implementes IMultiInstancePlugin.
-
-
-
-
-
- Removes all plugins, of every kind. Logs any errors encountered. (Not all plugins support uninstallation)
-
-
-
-
- No support for namespaces, no intention of eventual serialization.
- Everything is case-insensitive, but preserves case. Not thread safe.
-
-
-
-
- Builds a tree of Nodes from the specified XML subtree. Duplicate attributes are sent to 'ir'
-
-
-
-
-
-
- Attributes
-
-
-
-
- Access attributes by name
-
+
-
+
- The concatenated text, significant whitespace, and entity references within this element.
- Not XML compliant for sure.
+ Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
- The name of the element.
-
-
-
-
- Child nodes
-
-
-
-
- Returns the subset of Children with a matching element name. (Case-insensitive)
-
-
-
-
-
-
- Queryies the subtree for the specified attribute on the specified element. Example selector: element.element.attrname
- Assumes that the last segment of the selector is an attribute name.
- Throws an ArgumentException if there is only one segment ( element ).
- Uses the cache.
-
-
-
-
-
-
- Sets the specified attribute value, creating parent elements if needed. Clears the query cache.
-
-
-
-
-
-
- Sets the specified attribute value, creating parent elements if needed. Clears the query cache.
-
-
-
-
-
-
-
- Traverses the specified path, creating any missing elements along the way. Uses existing nodes if found.
-
-
-
-
-
-
- Same as query(), except results are cached until clearQueryCache() is called.
- Faster, but can be incorrect if existing nodes are renamed, moved, or deleted.
-
-
-
-
-
-
- Makes a recusive copy of the subtree, keeping no duplicate references to mutable types.
-
-
-
-
-
- Returns true if the element has neither attributes nor children.
-
-
-
-
- Encapsulates a node/attribute selection query, such as "node.node.attribute"
-
-
-
-
- Returns a subset of the list starting at the specified index
-
-
-
-
-
-
- If this occurs, no data is available. The request is not for us to interfere with.
-
-
-
-
- Authorization was denied. The user should be shown a 403.
-
-
-
-
- Refer to RewrittenQueryHasDirective, ProcessingIndicated, CachingIndicated, RewrittenMappedPath, in order to decide what to do.
-
-
-
-
- Creates a route that matches any request where context.Items[contextItemsFlag] is (non-null).
-
-
-
-
-
- Implements IHttpHandler, serves content for the NoCache plugin
-
-
-
-
- We duplicate efforts in PostRewrite to ensure that the DiskCache doesn't block configuration changes.
- This won't help CloudFront, however.
-
-
-
-
-
-
-
- The default scale mode to use when 'width' and/or 'height' are used, and mode is not 'max'.
-
-
-
-
- The default scale mode to use when 'maxwidth' and/or 'maxheight' are used (or mode=max).
-
-
-
-
- Matches /resize(x,y,f)/ syntax
- Fixed Bug - will replace both slashes.. make first a lookbehind
-
-
-
-
- Parses and removes the resize folder syntax "resize(x,y,f)/" from the specified file path.
- Places settings into the referenced querystring
-
-
- The collection to place parsed values into
-
-
-
-
- Causes IE6 and earlier to use GIF versions of PNG files.
- By default, only fixes requests with ?iefix=true in the querystring.
- When catchall is enabled, it will filter all png images, unless iefix=false on those requests.
- Not compatible with CDNs or proxy servers, as they do not allow varying by user agent reliably.
-
-
-
-
- If true, 'iefix=true' will be the default for all PNG images, instead of 'iefix=false'.
-
-
-
-
- If true, the requests from IE will be HTTP redirected to new URLs. If false, the GIF will be silently served instead of the PNG, without any redirection.
- A CDN or caching proxy will mess things up regardless, but using redirection ensures that the CDN/proxy never caches the GIF version instead of the PNG.
-
-
-
-
- Returns true if the specified querystring and file will cause a PNG file to be returned.
-
-
-
-
-
-
- Returns true if the user agent string specifies MSIE versions 1 through 6 for Windows. Cached in context.Items after first call.
-
-
-
-
-
-
- Adds URL syntax support for legacy projects:
- http://webimageresizer.codeplex.com/,
- http://imagehandler.codeplex.com/,
- http://bbimagehandler.codeplex.com/,
- DAMP: http://our.umbraco.org/projects/backoffice-extensions/digibiz-advanced-media-picker,
- Support for http://bip.codeplex.com/ and http://dynamicimageprocess.codeplex.com/ urls is default since w/h are supported.
-
-
-
-
- Provides default client-caching behavior. Sends Last-Modified header if present, and Expires header if <clientcache minutes="value" /> is configured.
- Also defaults Cache-control to Public for anonymous requests (and private for authenticated requests)
-
-
-
-
- Allows gradients to be dynamically generated like so:
- /gradient.png?color1=white&color2=black&angle=40&width=20&height=100
-
-
-
-
- Redirects image 404 errors to a querystring-specified server-local location,
- while maintaining querystring values (by default) so layout isn't disrupted.
-
-
-
- The image to use in place of missing images can be specified by the "404"
- parameter in the querystring. The "404" value can also refer to a named
- value in the <plugins>/<Image404> setting in Web.config.
-
-
-
-
- Using <img src="missingimage.jpg?404=image.jpg&width=200" />
- with the default setting (<image404 baseDir="~/" />) will
- redirect to ~/image.jpg?width=200.
-
-
- You may also configure 'variables', which is the recommended approach.
- For example, <image404 propertyImageDefault="~/images/nophoto.png" />
- in the config file, and <img src="missingimage.jpg?404=propertyImageDefault&width=200" />
- will result in a redirect to ~/images/nophoto.png?width=200.
- Any querystring values in the config variable take precedence over
- querystring values in the image querystring. For example,
- <image404 propertyImageDefault="~/images/nophoto.png?format=png" />
- in the config file and
- <img src="missingimage.jpg?format=jpg&404=propertImageDefault&width=200" />
- will result in a redirect to ~/images/nophoto.png?format=png&width=200.
-
-
-
-
-
- Implements IHttpHandler, serves content for the NoCache plugin
-
-
-
-
- Default cache when DiskCache isn't installed.
- Useful for debugging purposes but unsuited for production use, and will use large quanities of RAM. (Scales to fewer than 5 concurrent requests).
- Serves content directly to the client from memory.
-
-
-
-
- Installs the caching system as the first choice.
-
-
-
-
-
-
- Removes the plugin.
-
-
-
-
-
-
- Sends the response directly to the client with no caching logic.
-
-
-
-
-
-
- Adds drop shadow capabilities (shadowColor, shadowOffset, and shadowWidth commands)
-
-
-
-
- Draws a gradient around the specified polygon. Fades from 'inner' to 'outer' over a distance of 'width' pixels.
-
-
-
-
-
-
-
-
-
- Returns an new NameValueCollection instance that only includes the "preset" and ("hmac" and "urlb64", if specified) querystring pairs from the specified instance.
-
-
-
-
-
-
-
- If true, the plugin will block all commands except those specified in a preset, and the &preset command itself.
- Only applies to InterceptModule (the URL API). Does not apply to ImageBuilder.Build calls. To replicate the behavior, simply prevent any querystring keys except 'preset' from being passed to ImageBuilder.Build.
-
-
-
-
- Can be used by plugins to implement 'trial version' functionality. Not currently used.
-
-
-
-
- The Trial plugin cannot be removed using this method.
-
-
-
-
-
-
- Determines when the diagnostics page can be viewed.
-
-
-
-
- Diagnostics are disabled
-
-
-
-
- Only local requests can access diagnostics
-
-
-
-
- All hosts can view diagnostics.
-
-
-
-
- Provides the incredibly helpful /resizer.debug page we all love.
-
- Mimics the behavior of customErrors by default. Not available if CustomErrors=true or retail=true. Available only to localhost if customErrors=RemoteOnly.
- Can be overriden by adding in the <resizer> section <diagnostics enableFor="None|AllHosts|LocalHost" />
-
-
-
-
-
- True if diagnostics can be displayed to the current user.
- If <diagnostics enableFor="None" />, returns false.
- If <diagnostics enableFor="Localhost" />, returns false for remote requests
- If <diagnostics enableFor="AllHosts" />, returns true.
- If unspecified, uses the same behavior as ASP.NET Custom Errors.
-
-
-
-
-
-
- Returns the ASP.NET trust level
-
-
-
-
-
- Provides basic encoding functionality for Jpeg, png, and gif output. Allows adjustable Jpeg compression, but doesn't implement indexed PNG files or quantized GIF files.
-
-
-
-
- If you set this to anything other than Gif, Png, or Jpeg, it will throw an exception. Defaults to Jpeg
-
-
-
-
- Returns true if the this encoder supports the specified image format
-
-
-
-
-
-
- 0..100 value. The Jpeg compression quality. 90 is the best setting. Not relevant in Png or Gif compression
-
-
-
-
- Writes the specified image to the stream using Quality and OutputFormat
-
-
-
-
-
-
- Returns true if the desired output type supports transparency.
-
-
-
-
- Returns the default mime-type for the OutputFormat
-
-
-
-
- Returns the default file extesnion for OutputFormat
-
-
-
-
- Tries to parse an ImageFormat from the settings.Format value.
- If an unrecogized format is specified, returns null.
- If an unsupported format is specified, it is returned.
- If *no* format is specified, returns defaultValue.
-
-
+
+
+
-
+
- Attempts to determine the ImageFormat of the source image. First attempts to parse the path, if a string is present in original.Tag. (or if 'original' is a string)
- Falls back to using original.RawFormat. Returns null if both 'original' is null.
- RawFormat has a bad reputation, so this may return unexpected values, like MemoryBitmap or something in some situations.
+ Provides culture-invariant parsing of int, double, float, bool, and enum values.
- The source image that was loaded from a stream, or a string path
+
+
+
+
-
+
- Returns the ImageFormat enumeration value based on the extension in the specified physical path. Extensions can lie, just a guess.
+ Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
+
+
+
-
+
- Returns an string instance from the specfied ImageFormat. First matching entry in imageExtensions is used.
- Returns null if not recognized.
+ Serializes the given value by calling .ToString(). If the value is null, the key is removed.
-
+
+
+
+
-
+
- Returns a dict of (lowercase invariant) image extensions and ImageFormat values
+ Provides culture-invariant serialization of value types, in lower case for querystring readability. Setting a key to null removes it.
-
-
-
- Returns an ImageFormat instance from the specfied file extension. Extensions lie sometimes, just a guess.
- returns null if not recognized.
-
-
+
+
+
+
-
+
- NOT thread-safe!
+ Parses a comma-delimited list of primitive values. If there are unparsable items in the list, they will be replaced with 'fallbackValue'. If fallbackValue is null, the function will return null
-
-
-
-
-
- Supports Png, Jpeg, Gif, Bmp, and Tiff. Throws a ArgumentOutOfRangeException if not png, jpeg, gif, bmp, or tiff
-
-
+
+
+
+
-
+
- Returns the first ImageCodeInfo instance with the specified mime type. Returns null if there are no matches.
+ Returns true if any of the specified keys contain a value
-
+
+
-
+
- Saves the specified image to the specified stream using jpeg compression of the specified quality.
+ Normalizes a command that has two possible names.
+ If either of the commands has a null or empty value, those keys are removed.
+ If both the the primary and secondary are present, the secondary is removed.
+ Otherwise, the secondary is renamed to the primary name.
-
- A number between 0 and 100. Defaults to 90 if passed a negative number. Numbers over 100 are truncated to 100.
- 90 is a *very* good setting.
-
-
+
+
-
+
- Saves the image in png form. If Stream 'target' is not seekable, a temporary MemoryStream will be used to buffer the image data into the stream
-
-
-
-
-
-
- Returns the querystring keys used by DefaultEncoder (quality, format, and thumbnail)
+ Creates and returns a new NameValueCollection instance that contains only the specified keys from the current collection.
+
+
-
+
- Returns signatures for jpeg, bmp, gif, png, wmf, ico, and tif
+ Creates and returns a new NameValueCollection instance that contains all of the
+ keys/values from 'q', and any keys/values from 'defaults' that 'q' does not already
+ contain.
+ The settings specific to a particular query
+ Default settings to use when not overridden by 'q'.
-
+
- Implements app-wide size Limits on image size
+ Provides extension methods for copying streams
-
+
- The image and total size limits
-
-
-
-
- Enforces two kinds of maximum size constraints: a Total size limit, and an Image size limit.
- Image limits do not include padding, border, or effect widths, and automatically shrink the 'width/height/maxwidth/maxheight' values to fit within the limits.
- Total limits are absolute and apply to the actual result dimensions, causing an exception if they are exceeded.
- Limits are checked during the layout phase, prior to resource-intensive bitmap operations.
-
-
-
-
- The maximum final size an image generated by ImageBuilder can be.
- Defaults to 3200x3200
-
-
-
-
- What action to take when the total size of the final image would exceed the TotalSize value.
- Defaults to ThowException
-
-
-
-
- Returns true if ImageSize is specified.
-
-
-
-
- The maximum size an un-rotated image can be drawn when creating a resized image.
- Rotation will increase the total size, as will any borders, paddings, margins, or
- effects. Not effective at preventing attacks, use totalSize.
- If larger values are specified in a querystring, they will automatically
- be scaled to fit within these dimensions.
- Defaults to 0x0, which means no limits
-
-
-
-
- Functions exactly like an IIS virtual folder, but doesn't require IIS configuration.
-
-
-
-
- True if the provider attempted to register itself as a VirtualPathProvider and failed due to limited security clearance.
- False if it did not attempt (say, due to missing IOPermission) , or if it succeeded.
-
-
-
-
- If true, the plugin will attempt to register itself as an application-wide VirtualPathProvider instead of a image resizer-specific IVirtualImageProvider.
-
-
-
-
- The virtual path served by the VirtualFolder
-
-
-
-
- The physical path
-
-
-
-
- Registers the VirtualFolder plugin as a virtual path provider.
+ Copies the remaining data in the current stream to a new MemoryStream instance.
+
-
+
- True if the plugin has detected it doesn't have sufficient IOPermission to operate.
+ Copies the current stream into a new MemoryStream instance.
-
-
-
- Converts relative and app-relative paths to domain-relative virtual paths.
-
-
+
+ True to copy entire stream if seeakable, false to only copy remaining data
-
+
- Attempts to convert a phyiscal path into a collapsed rooted physical path.
+ Copies the current stream into a new MemoryStream instance.
-
+
+ True to copy entire stream if seeakable, false to only copy remaining data
+ The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
+
- Collapses any .. segments
+ Copies the remaining data in the current stream to a byte[] array of exact size.
-
+
-
+
- Converts any virtual path in this folder to a physical path. Returns null if the virtual path is outside the folder.
+ Copies the current stream into a byte[] array of exact size.
-
+
+ True to copy entire stream if seeakable, false to only copy remaining data
-
+
- Returns true if the specified path is inside this virtual folder
+ Copies the remaining data from the this stream into the given stream.
-
+
+ The stream to write to
+
+
+
+ Copies this stream into the given stream
+
+
+ The stream to write to
+ True to copy entire stream if seeakable, false to only copy remaining data
+
+
+
+ Copies this stream into the given stream
+
+
+ The stream to write to
+ True to copy entire stream if seeakable, false to only copy remaining data
+ True to copy entire stream if seeakable, false to only copy remaining data
+
+
+
+ Copies the current stream into a byte[] array of exact size
+
+
+ True to copy entire stream if seeakable, false to only copy remaining data.
+ The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
+
- Returns true if (a) we have IOPermission, (b) the path is under our prefix, (c) the
- expected physical file does not exist (because we shouldn't interfere in that case), and
- (d) the other VPPs don't believe the file exists.
+ Attempts to return a byte[] array containing the remaining portion of the stream.
+ Unlike CopyToBytes(), does not return a byte[] array of exact length, and may re-use the actual Stream's byte array, making it unsafe to write to in the future.
-
+
+
+
-
-
- Returns the LastWriteTimeUtc value for the specified virtual file in this folder, or DateTime.MinValue if missing.
-
-
-
-
-
-
- Returns true if the file exists in this virtual folder, and would not be masking an existing file.
- Returns false if NoIOPermission is true.
-
-
-
-
-
-
-
- Unless the path is not within the virtual folder, or IO permissions are missing, will return an IVirtualFile instance for the path.
- The file may or may not exist.
-
-
-
-
-
-
-
- For internal use only by the .NET VPP system.
-
-
-
-
-
-
- For internal use only by the .NET VPP system.
-
-
-
-
-
-
- For internal use only by the .NET VPP system.
-
-
-
-
-
-
-
-
- Encapsulates a response plan for responding to a request.
-
-
-
-
- A virtual file to support IVirtualImageProvider
-
-
-
-
- Returns an opened stream to the file contents.
-
-
-
-
-
- Implement this if you are caching files provided by a virtual image provider (For example, remote or s3-hosted images).
-
-
-
-
- Returns a cached copy of virtual file if it is cached, and if caching is desired.
-
-
-
-
-
-
-
-
- Always implement this if possible. Allows caching systems to detect changes to source files and invalidate cached data properly.
-
-
-
-
- The modified (last write time) of the source file, in UTC form.
-
-
-
-
- Implement this to allow ImageResizer to access your custom blob store
-
-
-
-
- Returns true if the specified request should be handled by this virtual image provider
-
-
-
-
-
-
-
- Returns a virtual file instance for the specified path and querystring.
-
-
-
-
-
-
-
- Allows IVirtualImageProviders to expose access through the ASP.NET VirtualPathProvider system.
-
-
-
-
- Converts relative and app-relative paths to domain-relative virtual paths.
-
-
-
-
-
-
- Allows multi-tenancy support. The 'root' config only needs one plugin, which implements this interface.
-
-
-
-
- Returns a Config instance appropriate for the current request. If null is returned, the default/root instance will be used.
- Implementations MUST return the same instance of Config for two identical requests. Multiple Config instances per tenant/area will cause problems.
- MUST be thread-safe, concurrent calls WILL ocurr, and WILL occur during initial call.
-
-
-
-
-
- Provides a place to cache/store licenses. Only responsible for licenses used by plugins attached to the current Config instance.
-
-
-
-
- Returns a collection containing all licenses for the plugin's Config instance, in their native form
-
-
-
-
-
- Permits plugins to redact data from the diagnostics page, like passwords
-
-
-
-
- This interface has nothing to do with output caching. This allows VirtualFile instances to override the default cache key (.VirtualPath) for source caching of VirtualFile instances.
- See IVirtualFileCache
-
-
-
-
- Implement this if you are caching files provided by a virtual image provider (For example, remote or s3-hosted images).
-
-
-
-
- Returns a cached copy of virtual file if it is cached, and if caching is desired.
-
-
-
-
-
-
-
-
- For plugins that add support for new source file image extensions.
-
-
-
-
- If the plugin adds support for new file extensions (such as "psd"), they should be returned by this method.
-
-
-
-
-
- Tag your plugin with this interface if it supports having multiple instances registered at once
-
-
-
-
- All plugins must implement this. Enables web.config addition and removal.
-
-
-
-
- Installs the plugin in the specified Config instance. The plugin must handle all the work of loading settings, registering the plugin etc.
-
-
-
-
-
-
- Uninstalls the plugin. Should reverse all changes made during Install
-
-
-
-
-
-
- Provides a way to modify settings before they reach the managed API. Does not execute early enough to affect disk caching, although that may change in a later version.
-
-
-
-
- Implementations should support being called on their own result multiple times without behavioral differences. Currently only executed in the managed API, too late to affect the disk cache, but that will probably change (it's likely all ISettingsModifiers will get executed twice, once after PostRewrite and once before the managed API executes).
-
-
-
-
-
-
- Wraps a standard ASP.NET VirtualFile instance in an IVirtualFile-compatible wrapper.
-
-
-
-
- The VirtualFile instance this class is wrapping
-
-
-
-
- For plugins that access the query string (important!)
-
-
-
-
- If the plugin reads any values from the querystring, the names of the keys should be specified here.
- This information is required so that the HttpModule knows when to handle an image request.
-
-
-
-
-
- A virtual file to support IVirtualImageProvider
-
-
-
-
- The virtual path of the file (relative to the domain, like /app/folder/file.ext)
-
-
-
-
- Returns an opened stream to the file contents.
-
-
-
-
-
- Implement this to allow your class (or VirtualPathProvider subclass) to be used without registering it with the whole ASP.NET system.
-
-
-
-
- Returns true if the specified request should be handled by this virtual image provider
-
-
-
-
-
-
-
- Returns a virtual file instance for the specified path and querystring.
-
-
-
-
-
-
-
- For virtual files who want to provide their data in Bitmap form (like a PSD reader or gradient generator). Plugins should never assume this interface will be used, .Open() must also be implemented.
-
-
-
-
- Returns a Bitmap instance of the file's contents
-
-
-
-
-
- Always implement this if possible. Allows caching systems to detect changes to source files and invalidate cached data properly.
-
-
-
-
- The modified (last write time) of the source file, in UTC form.
-
-
Creates an ImageJob that won't run a full build - it will only do enough work in order to supply the requested data fields.
@@ -2134,6 +458,26 @@
+
+
+ Sets CreateParentDirectory to true. Provided for easy chaining so you can do one-liners.
+ new ImageJob(source,dest,settings).CreateDir().Build()
+
+
+
+
+
+ Internal use only.
+ Resolves the specified (potenetially templated) path into a physical path.
+ Applies the AddFileExtension setting using the 'ext' variable.
+ Supplies the guid, settings.*, filename, path, and originalExt variables.
+ The resolver method should supply 'ext', 'width', and 'height' (all of which refer to the final image).
+ If AllowDestinationPathVariables=False, only AddFileExtenson will be processed.
+
+
+
+
+
A list of strings which define properties that can be returned to the caller. "source.width", "source.height", "result.ext", "result.mime" are the most commonly used. Defaults to none
@@ -2170,16 +514,6 @@
The height, in pixels, of the first frame or page in the source image file
-
-
- The width, in pixels, of the first frame or page in the final image file
-
-
-
-
- The height, in pixels, of the first frame or page in the final image file
-
-
The correct file extension for the resulting file stream, without a leading dot. Will be null if the result is not an encoded image.
@@ -2195,11 +529,6 @@
The image processing settings
-
-
- The profiler to report start/stop events to.
-
-
The image processing instructions
@@ -2248,26 +577,6 @@
Defaults to false. When true, the parent directory of the destination filename will be created if it doesn't already exist.
-
-
- Sets CreateParentDirectory to true. Provided for easy chaining so you can do one-liners.
- new ImageJob(source,dest,settings).CreateDir().Build()
-
-
-
-
-
- Internal use only.
- Resolves the specified (potenetially templated) path into a physical path.
- Applies the AddFileExtension setting using the 'ext' variable.
- Supplies the guid, settings.*, filename, path, and originalExt variables.
- The resolver method should supply 'ext', 'width', and 'height' (all of which refer to the final image).
- If AllowDestinationPathVariables=False, only AddFileExtenson will be processed.
-
-
-
-
-
A name/value collection of image processsing instructions. The successor to ResizeSettings.
@@ -2390,6 +699,11 @@
Defines the vertical height of the crop rectangle's coordinate space. For example, setting this to 100 makes the crop Y1 and Y1 values percentages of the image height.
+
+
+ An X1,Y1,X2,Y2 array of coordinates. Unless CropXUnits and CropYUnits are specified, these are in the coordinate space of the original image.
+
+
An X1,Y1,X2,Y2 array of coordinates. Unless CropXUnits and CropYUnits are specified, these are in the coordinate space of the original image.
@@ -2564,297 +878,10 @@
Friendly get/set accessor for the ["borderWidth"] value. Returns null when unspecified.
-
+
- IResponseArgs implementation
-
-
-
-
- Obsolete. Do not use; RequestKey will include the modified date if present.
-
-
-
-
- A callback method that will resize and encode the image into a stream.
-
-
-
-
- A value derived from the request. Can be used as a cache key.
-
-
-
-
- Obsolete. Do not use; RequestKey will include the modified date if present.
-
-
-
-
- The content-type of the data, among other things. Set ResponseHeaders.ApplyDuringPreSendRequestHeaders to automatically
- write caching headers based on ResponseHeaders values.
- Caching systems that use redirects may use this data as hints when configuring caching on the remote server.
-
-
-
-
- The rewritten querystring. Can be useful for caching systems that accept querystring arguments.
-
-
-
-
- Provides cache selection logic
-
-
-
-
- Selects a caching system for the specified request and response
-
-
-
-
-
-
-
- Allows customization of response headers for a processed image, as well as configuration of the caching system.
-
-
-
-
- The mime-type of the output data. Defaults to null.
-
-
-
-
- The cache setting. Defaults to ServerAndPrivate
-
-
-
-
- The UTC time at which the cached data should expire.
- Browsers generally don't re-request resources until the they have expired (unlike modififeddate).
- If MinValue, will be ignored.
-
-
-
-
- The UTC modified date send with the response. Used by browsers with If-Modified-Since to check a cached value is still valid.
- If = MinValue, will be ignored.
-
-
-
-
- When true: If a client requests a refresh, the response will *still* be served from the server cache.
- Defaults to false
-
-
-
-
- ASP.Net sometimes sends Vary: * which obliterates caching. Vary is to be avoided anyhow.
- Defaults to true
-
-
-
-
- These headers should be applied first, prior to the application of other settings
-
-
-
-
- These headers are applied after applying all of the other settings. (and they will overwrite exisiting values).
-
-
-
-
- Returns a collection of dependencies used for invalidating the server cache.
- Note, having items here will disable kernel-mode caching. Perhaps it is better to simply use LastModified
-
-
-
-
-
- A delegate method to apply the values stored in IResponseHeaders to the specified HttpContext.
-
-
-
-
- True if the application should automatically execute ApplyToResponse() during the PreSendRequestHeaders event.
-
-
-
-
- The mime-type of the encoded image. Defaults to null
-
-
-
-
- Provides caching behavior
-
-
-
-
- Returns false if the cache is unable to process the request. If false, the caller should fall back to a different cache
-
-
-
-
-
-
- Must update the cache if needed, then either rewrite, redirect or serve the cached data.
-
-
-
-
-
-
- A callback method that will resize, encode, and write the data to the given stream.
- Callback may throw FileNotFoundException when running on top of an optimistic VPP
-
-
-
-
- A callback method to return the last modified date of the source file if available, or DateTime.MinValue if not available.
-
-
-
-
-
- A collection of data and callbacks that can be passed to a caching object.
-
-
-
-
- A string derived from the request, which can contain any kind of data. To get a cache key that varies with the source modified date,
- it should be combined with the value of GetModifiedDateUTC() and hashed.
-
-
-
-
- The rewritten querystring. Can be useful for caching systems that accept querystring arguments.
-
-
-
-
- A file extension appropriate for the resulting data. May be different than the extension on the original request.
-
-
-
-
- The content-type of the data, among other things. Set ResponseHeaders.ApplyDuringPreSendRequestHeaders to automatically
- write caching headers based on ResponseHeaders values.
- Caching systems that use redirects may use this data as hints when configuring caching on the remote server.
-
-
-
-
- Obsolete. Do not use; RequestKey will include the modified date if present.
-
-
-
-
- Obsolete. Do not use; RequestKey includes all invalidation information
-
-
-
-
- A callback method that will resize, encode, and write the data to the given stream.
-
-
-
-
- Handles reading the <resizer> section from Web.Config
-
-
-
-
- Create a ResizerSection instance that wraps the specified node. The node should be a <resizer> element.
-
-
-
-
-
- Parse the specified XML into a Node. The text should include 1 root element, <resizer>
-
-
-
-
-
- Returns the specified subtree, deep copied so it can be used without locking.
-
-
-
-
-
-
- Called for each child element not specified declaratively
-
-
-
-
-
-
-
- A provider (or selector) of IEncoder instances.
-
-
-
-
- Returns an encoder based on the provided settings and the source object
-
- Request settings, like format, quality, colors, dither, etc.
- May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
-
-
-
-
- An image encoder. Exposes methods for suitability checking, encoding, transparency compatibility checking, and mime-type/extension calculation.
-
-
-
-
- If the encoder can handle the requirements specified by 'settings' and 'source', it should return an encoder instance.
- If not, it should return null.
-
- Request settings, like format, quality, colors, dither, etc.
- May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
- May also be used for palette generation hinting by some encoders.
-
-
-
-
- Encodes the image to the specified stream
-
-
-
-
-
-
- True if the output format will support transparency as it is currently configured.
-
-
-
-
- Returns the appropriate mime-time for the output format as currently configured.
-
-
-
-
- Returns a file extension appropriate for the output format as currently configured, without a leading dot.
-
-
-
-
- What to do about remaining handlers/methods for the specified section
-
-
-
-
- Does nothing
-
-
-
-
- Requests that ImageBuilder cancels the default logic of the method, and stop executing plugin calls for the method immediately.
+ Provides a useable base class that can be used to modify the behavior of ImageBuilder.
+ When registered with an ImageBuilder instance, the ImageBuilder will call the corresponding methods on the extension prior to executing its own methods.
@@ -2942,7 +969,7 @@
-
+
Called for Build() calls that want the result encoded. (Not for Bitmap Build(source,settings) calls.
Only override this method if you need to replace the behavior of image encoding and image processing together, such as adding support
@@ -2952,7 +979,19 @@
-
+
+
+
+
+
+ Most calls funnel through here. Default behavior configures an ImageState instance and calls Process(imageState);
+ Shouldn't be overriden for any reason I can think of - use the appropriate virtual method under Process().
+ If an extension returns a Bitmap instance, it will be used instead of the default behavior.
+ Does NOT dispose of 'source' or 'source's underlying stream.
+
+
+
+
@@ -3221,6 +1260,1639 @@
+
+
+ All plugins must implement this. Enables web.config addition and removal.
+
+
+
+
+ Installs the plugin in the specified Config instance. The plugin must handle all the work of loading settings, registering the plugin etc.
+
+
+
+
+
+
+ Uninstalls the plugin. Should reverse all changes made during Install
+
+
+
+
+
+
+ For plugins that access the query string (important!)
+
+
+
+
+ If the plugin reads any values from the querystring, the names of the keys should be specified here.
+ This information is required so that the HttpModule knows when to handle an image request.
+
+
+
+
+
+ Provides a way to modify settings before they reach the managed API. Does not execute early enough to affect disk caching, although that may change in a later version.
+
+
+
+
+ Implementations should support being called on their own result multiple times without behavioral differences. Currently only executed in the managed API, too late to affect the disk cache, but that will probably change (it's likely all ISettingsModifiers will get executed twice, once after PostRewrite and once before the managed API executes).
+
+
+
+
+
+
+ We duplicate efforts in PostRewrite to ensure that the DiskCache doesn't block configuration changes.
+ This won't help CloudFront, however.
+
+
+
+
+
+
+
+ The default scale mode to use when 'width' and/or 'height' are used, and mode is not 'max'.
+
+
+
+
+ The default scale mode to use when 'maxwidth' and/or 'maxheight' are used (or mode=max).
+
+
+
+
+ Matches /resize(x,y,f)/ syntax
+ Fixed Bug - will replace both slashes.. make first a lookbehind
+
+
+
+
+ Parses and removes the resize folder syntax "resize(x,y,f)/" from the specified file path.
+ Places settings into the referenced querystring
+
+
+ The collection to place parsed values into
+
+
+
+
+ Causes IE6 and earlier to use GIF versions of PNG files.
+ By default, only fixes requests with ?iefix=true in the querystring.
+ When catchall is enabled, it will filter all png images, unless iefix=false on those requests.
+ Not compatible with CDNs or proxy servers, as they do not allow varying by user agent reliably.
+
+
+
+
+ Returns true if the specified querystring and file will cause a PNG file to be returned.
+
+
+
+
+
+
+ Returns true if the user agent string specifies MSIE versions 1 through 6 for Windows. Cached in context.Items after first call.
+
+
+
+
+
+
+ If true, 'iefix=true' will be the default for all PNG images, instead of 'iefix=false'.
+
+
+
+
+ If true, the requests from IE will be HTTP redirected to new URLs. If false, the GIF will be silently served instead of the PNG, without any redirection.
+ A CDN or caching proxy will mess things up regardless, but using redirection ensures that the CDN/proxy never caches the GIF version instead of the PNG.
+
+
+
+
+ Adds URL syntax support for legacy projects:
+ http://webimageresizer.codeplex.com/,
+ http://imagehandler.codeplex.com/,
+ http://bbimagehandler.codeplex.com/,
+ DAMP: http://our.umbraco.org/projects/backoffice-extensions/digibiz-advanced-media-picker,
+ Support for http://bip.codeplex.com/ and http://dynamicimageprocess.codeplex.com/ urls is default since w/h are supported.
+
+
+
+
+ Provides default client-caching behavior. Sends Last-Modified header if present, and Expires header if <clientcache minutes="value" /> is configured.
+ Also defaults Cache-control to Public for anonymous requests (and private for authenticated requests)
+
+
+
+
+ Allows gradients to be dynamically generated like so:
+ /gradient.png?color1=white&color2=black&angle=40&width=20&height=100
+
+
+
+
+ Implement this to allow your class (or VirtualPathProvider subclass) to be used without registering it with the whole ASP.NET system.
+
+
+
+
+ Returns true if the specified file exists.
+
+
+
+
+
+
+
+ Returns a virtual file instance for the specified path and querystring.
+
+
+
+
+
+
+
+ A virtual file to support IVirtualImageProvider
+
+
+
+
+ Returns an opened stream to the file contents.
+
+
+
+
+
+ The virtual path of the file (relative to the domain, like /app/folder/file.ext)
+
+
+
+
+ For virtual files who want to provide their data in Bitmap form (like a PSD reader or gradient generator). Plugins should never assume this interface will be used, .Open() must also be implemented.
+
+
+
+
+ Returns a Bitmap instance of the file's contents
+
+
+
+
+
+ This interface has nothing to do with output caching. This allows VirtualFile instances to override the default cache key (.VirtualPath) for source caching of VirtualFile instances.
+ See IVirtualFileCache
+
+
+
+
+ Redirects image 404 errors to a querystring-specified server-local location,
+ while maintaining querystring values (by default) so layout isn't disrupted.
+
+
+
+ The image to use in place of missing images can be specified by the "404"
+ parameter in the querystring. The "404" value can also refer to a named
+ value in the <plugins>/<Image404> setting in Web.config.
+
+
+
+
+ Using <img src="missingimage.jpg?404=image.jpg&width=200" />
+ with the default setting (<image404 baseDir="~/" />) will
+ redirect to ~/image.jpg?width=200.
+
+
+ You may also configure 'variables', which is the recommended approach.
+ For example, <image404 propertyImageDefault="~/images/nophoto.png" />
+ in the config file, and <img src="missingimage.jpg?404=propertyImageDefault&width=200" />
+ will result in a redirect to ~/images/nophoto.png?width=200.
+ Any querystring values in the config variable take precedence over
+ querystring values in the image querystring. For example,
+ <image404 propertyImageDefault="~/images/nophoto.png?format=png" />
+ in the config file and
+ <img src="missingimage.jpg?format=jpg&404=propertImageDefault&width=200" />
+ will result in a redirect to ~/images/nophoto.png?format=png&width=200.
+
+
+
+
+
+ Implements IHttpHandler, serves content for the NoCache plugin
+
+
+
+
+ IResponseArgs implementation
+
+
+
+
+ A collection of data and callbacks that can be passed to a caching object.
+
+
+
+
+ A string derived from the request, which can contain any kind of data. To get a cache key that varies with the source modified date,
+ it should be combined with the value of GetModifiedDateUTC() and hashed.
+
+
+
+
+ The rewritten querystring. Can be useful for caching systems that accept querystring arguments.
+
+
+
+
+ A file extension appropriate for the resulting data. May be different than the extension on the original request.
+
+
+
+
+ The content-type of the data, among other things. Set ResponseHeaders.ApplyDuringPreSendRequestHeaders to automatically
+ write caching headers based on ResponseHeaders values.
+ Caching systems that use redirects may use this data as hints when configuring caching on the remote server.
+
+
+
+
+ A delegate that returns the modified date of the source data.
+
+
+
+
+ True if a modified date is available for verifying cache integrity.
+
+
+
+
+ A callback method that will resize, encode, and write the data to the given stream.
+
+
+
+
+ A callback method to return the last modified date of the source file if available, or DateTime.MinValue if not.
+
+
+
+
+
+ A callback method that will resize and encode the image into a stream.
+
+
+
+
+ A value derived from the request. Can be used as a cache key.
+
+
+
+
+ True if the source file/record has a modified date
+
+
+
+
+ The content-type of the data, among other things. Set ResponseHeaders.ApplyDuringPreSendRequestHeaders to automatically
+ write caching headers based on ResponseHeaders values.
+ Caching systems that use redirects may use this data as hints when configuring caching on the remote server.
+
+
+
+
+ The rewritten querystring. Can be useful for caching systems that accept querystring arguments.
+
+
+
+
+ Provides cache selection logic
+
+
+
+
+ Selects a caching system for the specified request and response
+
+
+
+
+
+
+
+ Allows customization of response headers for a processed image, as well as configuration of the caching system.
+
+
+
+
+ The mime-type of the output data. Defaults to null.
+
+
+
+
+ The cache setting. Defaults to ServerAndPrivate
+
+
+
+
+ The UTC time at which the cached data should expire.
+ Browsers generally don't re-request resources until the they have expired (unlike modififeddate).
+ If MinValue, will be ignored.
+
+
+
+
+ The UTC modified date send with the response. Used by browsers with If-Modified-Since to check a cached value is still valid.
+ If = MinValue, will be ignored.
+
+
+
+
+ When true: If a client requests a refresh, the response will *still* be served from the server cache.
+ Defaults to false
+
+
+
+
+ ASP.Net sometimes sends Vary: * which obliterates caching. Vary is to be avoided anyhow.
+ Defaults to true
+
+
+
+
+ These headers should be applied first, prior to the application of other settings
+
+
+
+
+ These headers are applied after applying all of the other settings. (and they will overwrite exisiting values).
+
+
+
+
+ Returns a collection of dependencies used for invalidating the server cache.
+ Note, having items here will disable kernel-mode caching. Perhaps it is better to simply use LastModified
+
+
+
+
+
+ A delegate method to apply the values stored in IResponseHeaders to the specified HttpContext.
+
+
+
+
+ True if the application should automatically execute ApplyToResponse() during the PreSendRequestHeaders event.
+
+
+
+
+ Default cache when DiskCache isn't installed.
+ Useful for debugging purposes but unsuited for production use, and will use large quanities of RAM. (Scales to fewer than 5 concurrent requests).
+ Serves content directly to the client from memory.
+
+
+
+
+ Provides caching behavior
+
+
+
+
+ Returns false if the cache is unable to process the request. If false, the caller should fall back to a different cache
+
+
+
+
+
+
+ Must update the cache if needed, then either rewrite, redirect or serve the cached data.
+
+
+
+
+
+
+ Installs the caching system as the first choice.
+
+
+
+
+
+
+ Removes the plugin.
+
+
+
+
+
+
+ Sends the response directly to the client with no caching logic.
+
+
+
+
+
+
+ The mime-type of the encoded image. Defaults to null
+
+
+
+
+ Allows subclasses to be used instead of ImageBuilder. Replacements must override the Create method and call their own constructor instead.
+
+
+
+
+
+ Shortuct to CurrentImageBuilder.Build (Useful for COM clients). Also creates a destination folder if needed, unlike the normal .Build() call.
+
+
+
+
+
+
+
+
+ Returns a deep copy of the specified node
+
+
+
+
+
+ Returns a deep copy if the current state of the configuration tree (starting with the 'resizer' element as the root)
+
+
+
+
+ Replaces the configuration tree with the specified alternative
+
+
+
+
+
+ Replaces the configuration tree with the specified alternative
+
+
+
+
+
+ Writes a diagnostic page to the specified physical path
+
+
+
+
+
+ Returns a string of the diagnostics page
+
+
+
+
+
+ Gets the current (app-wide) config instance.
+
+
+
+
+
+ Access and modify plugins
+
+
+
+
+ Access and modify settings related to the HttpModule pipline. Register URL rewriting hooks, etc.
+
+
+
+
+ Returns a shared instance of ImageManager, (or a subclass if it has been upgraded).
+ Instances change whenever ImageBuilderExtensions change.
+
+
+
+
+
+ The ResizeConfigrationSection is not thread safe, and should not be modified
+ Dynamically loads the ResizerSection from web.config when accessed for the first time.
+ If the resizer node doesn't exist, an empty configuration object is created with just the root resizer node.
+
+
+
+
+ Returns a list of all issues reported by the resizing core, as well as by all the plugins
+
+
+
+
+ Creates a 'gatherer' that pulls issues from IIssueProviders throughout the Config structure. Even plugins are queried.
+
+
+
+
+
+ Security and stability issues.
+
+
+
+
+ Behavioral issues, such as having no registered image encoders
+
+
+
+
+ Errors in the module configuration
+
+
+
+
+ Non-optimal settings
+
+
+
+
+ Domain-relative path which also includes the path info portion. I.e, '/app/folder/file.aspx/path/info' could be a valid value. Relative to the domain root, not the site or app root.
+
+
+
+
+ True if the specified extension is one that the pipeline can handle
+
+
+
+
+
+
+ True if the querystring contains any directives that are understood by the pipeline
+
+
+
+
+
+
+ Removes the first fake extension detected at the end of 'path' (like image.jpg.ashx -> image.jpg).
+
+
+
+
+
+
+ Returns an ImageBuilder instance to use for image processing.
+
+
+
+
+
+ Returns a ICacheProvider instance that provides caching system selection and creation.
+
+
+
+
+
+ Returns an IVirtualFile instance if the specified file exists.
+
+
+
+
+
+
+
+ Returns true if (a) A registered IVirtualImageProvider says it exists, or (b) if the VirtualPathProvider chain says it exists.
+
+
+
+
+
+
+
+ The key in Context.Items to store the modified querystring (i.e, post-rewrite).
+ Allows VirtualPathProviders to access the rewritten data.
+
+
+
+
+ The key in Context.Items to store the IResponseArgs object
+
+
+
+
+ The key in Context.Items to set if we want to cancel MVC routing for the request
+
+
+
+
+ The key in Context.Items to access a the path to use instead of Request.path
+
+
+
+
+ The behavior to use when accessing the file system.
+
+
+
+
+ Get or sets whether the file extension check should be applied to the current request. Defaults to true.
+ If set to true, will only affect the current request, and will only cause the Resizer to evaluate the rewriting rules on the request.
+ Processing may still not occur if no querystring values are specified. Add 'cache=always' to force caching to occur.
+
+
+
+
+ True once the InterceptModule has been installed.
+
+
+
+
+ Returns the value of Context.Items["resizer.newPath"] if present. If not, returns FilePath + PathInfo.
+ Sets Context.Items["resizer.newPath"].
+ Only useful during the Pipeline.PostAuthorizeRequestStart event.
+
+
+
+
+ Populates the cache if it is empty. Not thread safe.
+
+
+
+
+ The specified path must not include a querystring. Slashes, spaces, question marks, ampersands, and colons are not permitted in the extension.
+ If it contains a multipart extension like .txt.zip, only "zip" will be recognized. Must contain a dot - passing in "jpg" will fail.
+
+
+
+
+
+
+ Returns true if any of the querystring keys match any of the directives supported by the pipeline (such as width, height, format, bgcolor, etc)
+
+
+
+
+
+
+ Removes the first fake extensionm detected at the end of 'path'
+
+
+
+
+
+
+ Returns either an IVirtualFile instance or a VirtualFile instance.
+
+
+
+
+
+
+
+ Returns true if (a) A registered IVirtualImageProvider says it exists, or (b) if the VirtualPathProvider chain says it exists.
+
+
+
+
+
+
+
+ Cache selection occurs as follows: (1) The first registered CachingSystem that returns true from .CanProcess() is the default
+ (2) The SelectCachingSystem event is fired, allowing handlers to modify the selected cache.
+ This method may return null.
+
+
+
+
+
+
+
+ Returns a unqiue copy of the image extensions supported by the pipeline. Performs a cached query to all registered IQuerystringPlugin instances.
+ Use IsAcceptedImageType for better performance.
+
+
+
+
+ Returns a unqiue copy of all querystring keys supported by the pipeline. Performs a cached query to all registered IQuerystringPlugin instances.
+ Use HasPipelineDirective for better performance. (binary search)
+
+
+
+
+ Cached access to pipeline.fakeExtensions
+
+
+
+
+ Returns the value of Context.Items["resizer.newPath"] if present. If not, returns FilePath + PathInfo.
+ Sets Context.Items["resizer.newPath"].
+ Only useful during the Pipeline.PostAuthorizeRequestStart event.
+
+
+
+
+ Returns the modified query string. If never set, returns a copy of Request.QueryString.
+ Returns the same instance if called multiple times. Copy it if you want to make changes without causing issues.
+
+
+
+
+ Get or sets whether the file extension check should be applied to the current request. Defaults to true.
+ If set to true, will only affect the current request, and will only cause the Resizer to evaluate the rewriting rules on the request.
+ Processing may still not occur if no querystring values are specified. Add 'cache=always' to force caching to occur.
+
+
+
+
+ Returns true if the current request is being processed and/or cached by the pipeline.
+ Will return false until *after* the FileExists method is called on the VirtualPathProviders, which is after the
+ AuthorizeImage event fires.
+ This will return a usable value if used from VirtualFile.Open(), or if used inside the PreHandleImage event or later.
+
+
+
+
+ Fired once, on the first PostAuthorizeRequest event.
+
+
+
+
+ Fires during the PostAuthorizeRequest phase, prior to any module-specific logic.
+ Executes for every request to the website. Use only as a last resort. Other events occur only for image requests, and thus have lower overhead.
+
+
+
+
+ Fired during PostAuthorizeRequest, after ResizeExtension has been removed.
+ On fired on requests with extensions that match supported image types.
+
+ You can add additonal supported image extentions by registering a plugin that implementes IQuerystringPlugin, or you can add an
+ extra extension in the URL and remove it here. Example: .psd.jpg
+
+
+
+
+ Fired during PostAuthorizeRequest, after Rewrite.
+ Any changes made here (which conflict) will be overwritten by the the current querystring values. I.e, this is a good place to specify default settings.
+ Only fired on accepted image types. (see Rewrite)
+
+
+
+
+ Fired after all other rewrite events.
+ Only fired on accepted image types. (see Rewrite)
+
+
+
+
+ Fired after all rewriting is finished.
+ e.AllowAccess defaults to the result of the UrlAuthorization module's verdict. It can be changed.
+ Set e.AllowAccess to true to cause and 403 Access Dened result.
+
+
+
+
+ Fired when the specified image doesn't exist. Only called for images that would normally be processed.
+ May be called during PostAuthorizeRequest or later - End the request completely with a redirect if you want alternate behavior.
+
+
+
+
+ Fired immediately before the image request is sent off to the caching system for proccessing.
+ Allows modification of response headers, caching arguments, and callbacks.
+
+
+
+
+ The number of images processed by this pipeline.
+
+
+
+
+ True once the InterceptModule has been installed and is intercepting requests.
+
+
+
+
+ Provides thread-safe access to plugin addition, removal, and querying methods
+
+
+
+
+ A provider (or selector) of IEncoder instances.
+
+
+
+
+ Returns an encoder based on the provided settings and the source object
+
+ Request settings, like format, quality, colors, dither, etc.
+ May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
+
+
+
+
+ Creates a new plugin config section, attached to the specified parent
+
+
+
+
+
+ Processes the <plugins> section if they are not already loaded. Thread safe.
+ Only executes once.
+
+
+
+
+ Forces loading of the plugins specified in configuration, even if they have already been loaded. Will add duplicate plugins and throw exceptions if you do not call RemoveAll() first.
+
+
+
+
+ Not thread safe. Performs actual work.
+
+
+
+
+ Returns the subset of installed plugins which implement the specified type or interface
+
+
+
+
+
+
+ Returns all registered instances of the specified plugins
+
+
+
+
+
+
+ Returns true if at least one plugin of the specified type is registered.
+
+
+
+
+
+
+ Returns true if 1 or more instances of the type are registered.
+
+
+
+
+
+
+ Returns the first registerd instance of the specified plugin. For IMultiInstancePlugins, use GetAll()
+
+
+
+
+
+
+ Returns the first registered instance of the specified plugin, or creates a new instance if the plugin isn't installed.
+
+
+
+
+
+
+ Returns the first registered instance of the specified plugin, or installs the given instance instead, then re-tries the query
+
+
+
+
+
+
+
+ Installs the specified plugin, returning the plugin instance.
+ Convenience method, same as plugin.Install(Config.Current).
+
+
+
+
+
+
+ Attempts uninstallation of the specified plugin, returning true if successful.
+ Convenience method, same as plugin.Uninstall(Config.Current).
+
+
+
+
+
+
+ Returns an instance of the first encoder that claims to be able to handle the specified settings.
+ Returns null if no encoders are available.
+
+ Request settings, like format, quality, colors, dither, etc.
+ May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
+ May also be used for palette generation hinting by some encoders.
+
+
+
+
+ This is called to get a sorted list of plugins based on their likelyhood of having the plugin.
+
+
+
+
+
+
+
+ Searches all loaded assemblies for the specified type, applying rules and prefixes to resolve the namespace and assembly.
+ Returns null if it could not find the type, and logs an issue.
+
+
+
+
+
+
+ For use only by plugins during .Uninstall.
+ Removes the specified plugin from AllPlugins, QuerystringPlugins, CachingSystems, ImageEncoders, and ImageBuiderExtensions, based
+ on which interfaces the instance implements.
+ Plugins may register event handlers and modify settings - thus you should use the plugin's method to uninstall them vs. using this method.
+
+
+
+
+
+ Only for use by plugins during IPlugin.Install. Call Plugin.Install instead of this method, since plugins often must perform other initialization actions.
+ Adds the specified plugin to AllPlugins, QuerystringPlugins, CachingSystems, ImageEncoders, and ImageBuiderExtensions, based
+ on which interfaces the instance implements. For ICache and IEncoder, the plugin is inserted at the beginning of CachingSystems and ImageEncoders respectively.
+ To reiterate, plugins may register event handlers and modify settings - thus you should use the plugin's method to uninstall them vs. using this method.
+ Will not register a plugin that is already installed, unless it implementes IMultiInstancePlugin.
+
+
+
+
+
+ Removes all plugins, of every kind. Logs any errors encountered. (Not all plugins support uninstallation)
+
+
+
+
+ Returns true if the <plugins> section has been processed
+
+
+
+
+ Currently registered ICurrentConfigProviders.
+
+
+
+
+ Currently registered set of ImageBuilderExtensions.
+
+
+
+
+ Currently registered IEncoders.
+
+
+
+
+ Currently registered ICache instances
+
+
+
+
+ Plugins which accept querystring arguments are registered here.
+
+
+
+
+ Plugins which accept new file extensions (in the url) are registered here.
+
+
+
+
+ Plugins which provide virtual files are registered here.
+
+
+
+
+ Plugins which modify image processing settings.
+
+
+
+
+ All plugins should be registered here. Used for diagnostic purposes.
+
+
+
+
+ Returns the most recently registered Logging plugin, or null.
+
+
+
+
+ No support for namespaces, no intention of eventual serialization.
+ Everything is case-insensitive, but preserves case. Not thread safe.
+
+
+
+
+ Builds a tree of Nodes from the specified XML subtree. Duplicate attributes are sent to 'ir'
+
+
+
+
+
+
+ Returns the subset of Children with a matching element name. (Case-insensitive)
+
+
+
+
+
+
+ Queryies the subtree for the specified attribute on the specified element. Example selector: element.element.attrname
+ Assumes that the last segment of the selector is an attribute name.
+ Throws an ArgumentException if there is only one segment ( element ).
+ Uses the cache.
+
+
+
+
+
+
+ Sets the specified attribute value, creating parent elements if needed. Clears the query cache.
+
+
+
+
+
+
+ Sets the specified attribute value, creating parent elements if needed. Clears the query cache.
+
+
+
+
+
+
+
+ Traverses the specified path, creating any missing elements along the way. Uses existing nodes if found.
+
+
+
+
+
+
+ Same as query(), except results are cached until clearQueryCache() is called.
+ Faster, but can be incorrect if existing nodes are renamed, moved, or deleted.
+
+
+
+
+
+
+ Makes a recusive copy of the subtree, keeping no duplicate references to mutable types.
+
+
+
+
+
+ Attributes
+
+
+
+
+ Access attributes by name
+
+
+
+
+
+
+ The concatenated text, significant whitespace, and entity references within this element.
+ Not XML compliant for sure.
+
+
+
+
+ The name of the element.
+
+
+
+
+ Child nodes
+
+
+
+
+ Returns true if the element has neither attributes nor children.
+
+
+
+
+ Encapsulates a node/attribute selection query, such as "node.node.attribute"
+
+
+
+
+ Returns a subset of the list starting at the specified index
+
+
+
+
+
+
+ Adds drop shadow capabilities (shadowColor, shadowOffset, and shadowWidth commands)
+
+
+
+
+ Draws a gradient around the specified polygon. Fades from 'inner' to 'outer' over a distance of 'width' pixels.
+
+
+
+
+
+
+
+
+
+ Returns an new NameValueCollection instance that only includes the "preset" and ("hmac" and "urlb64", if specified) querystring pairs from the specified instance.
+
+
+
+
+
+
+
+ If true, the plugin will block all commands except those specified in a preset, and the &preset command itself.
+ Only applies to InterceptModule (the URL API). Does not apply to ImageBuilder.Build calls. To replicate the behavior, simply prevent any querystring keys except 'preset' from being passed to ImageBuilder.Build.
+
+
+
+
+ Allows multi-tenancy support. The 'root' config only needs one plugin, which implements this interface.
+
+
+
+
+ Returns a Config instance appropriate for the current request. If null is returned, the default/root instance will be used.
+ Implementations MUST return the same instance of Config for two identical requests. Multiple Config instances per tenant/area will cause problems.
+ MUST be thread-safe, concurrent calls WILL ocurr, and WILL occur during initial call.
+
+
+
+
+
+ Provides license verification and enforcement services. Do not access directly; use your local embedded static method to verify instance integrity.
+
+
+
+
+ Notify the license service that the given feature is being used for the given domain.
+
+
+
+
+
+
+
+ Configure the display name for the given feature id
+
+
+
+
+
+
+ Returns a changing shared secret to make interface hijacking difficult.
+
+
+
+
+
+
+ Returns a plaintext report on licensing status
+
+ If true, pending verifications will be completed before the method returns
+
+
+
+
+ Provides a place to cache/store licenses. Only responsible for licenses used by plugins attached to the current Config instance.
+
+
+
+
+ Returns a collection containing all licenses for the plugin's Config instance, in encrypted binary form.
+
+
+
+
+
+ Stores the given licenses (excluding those present in web.config).
+
+ A collection of 'description' and 'encrypted binary license' pairs.
+
+
+
+ Permits plugins to redact data from the diagnostics page, like passwords
+
+
+
+
+ Implement this if you are caching files provided by a virtual image provider (For example, remote or s3-hosted images).
+
+
+
+
+ Returns a cached copy of virtual file if it is cached, and if caching is desired.
+
+
+
+
+
+
+
+
+ For plugins that add support for new source file image extensions.
+
+
+
+
+ If the plugin adds support for new file extensions (such as "psd"), they should be returned by this method.
+
+
+
+
+
+ Can be used by plugins to implement 'trial version' functionality. Not currently used.
+
+
+
+
+ The Trial plugin cannot be removed using this method.
+
+
+
+
+
+
+ Determines when the diagnostics page can be viewed.
+
+
+
+
+ Diagnostics are disabled
+
+
+
+
+ Only local requests can access diagnostics
+
+
+
+
+ All hosts can view diagnostics.
+
+
+
+
+ Provides the incredibly helpful /resizer.debug page we all love.
+
+ Mimics the behavior of customErrors by default. Not available if CustomErrors=true or retail=true. Available only to localhost if customErrors=RemoteOnly.
+ Can be overriden by adding in the <resizer> section <diagnostics enableFor="None|AllHosts|LocalHost" />
+
+
+
+
+
+ True if diagnostics can be displayed to the current user.
+ If <diagnostics enableFor="None" />, returns false.
+ If <diagnostics enableFor="Localhost" />, returns false for remote requests
+ If <diagnostics enableFor="AllHosts" />, returns true.
+ If unspecified, uses the same behavior as ASP.NET Custom Errors.
+
+
+
+
+
+
+ Returns the ASP.NET trust level
+
+
+
+
+
+ Tag your plugin with this interface if it supports having multiple instances registered at once
+
+
+
+
+ Wraps a standard ASP.NET VirtualFile instance in an IVirtualFile-compatible wrapper.
+
+
+
+
+ The VirtualFile instance this class is wrapping
+
+
+
+
+ Handles reading the <resizer> section from Web.Config
+
+
+
+
+ Create a ResizerSection instance that wraps the specified node. The node should be a <resizer> element.
+
+
+
+
+
+ Parse the specified XML into a Node. The text should include 1 root element, <resizer>
+
+
+
+
+
+ Returns the specified subtree, deep copied so it can be used without locking.
+
+
+
+
+
+
+ Called for each child element not specified declaratively
+
+
+
+
+
+
+
+ SafeList is mutable, but it uses immutable data structures to minimize the need for locking.
+ The provided manipulation
+ Exposes a immutable list. Changes are made by copying the lists.
+ SafeList is
+ Never perform logic on SafeList directly, always use GetList() or GetCollection() first, followed by SetList().
+ If you need involved list-fu, use ModifyList and specify a callback. It will execute inside a lock, preventing changes on other threads from overwriting each other.
+
+
+
+
+
+ Returns an immutable snapshot of the collection
+
+
+
+
+
+ Returns a mutable snapshot of the list
+
+
+
+
+
+ Replaces the current collection with a new one. (copied to ensure safety)
+ Use ModifyList when modifying the list. Use this only when the previous or current state of the list is irrelevant.
+
+
+
+
+
+ Adds the specified item to the end of the list
+
+
+
+
+
+ Removes the item from the list
+
+
+
+
+
+ Adds the specified item to the beginning of the list
+
+
+
+
+
+ Allows a caller to perform logic on the list inside a lock, and return a modified list.
+ Callbacks should be fast, and should reference the IList they are fed, not this SafeList instance.
+ Calling methods on the SafeList instance will cause a deadlock.
+
+
+
+
+
+ Returns true if the collection contains the specified item at the moment.
+
+
+
+
+
+
+ Returns the first item in the list. May return null if the list is empty.
+
+
+
+
+ Returns the first item in the list. May return null if the list is empty.
+
+
+
+
+ Provides basic encoding functionality for Jpeg, png, and gif output. Allows adjustable Jpeg compression, but doesn't implement indexed PNG files or quantized GIF files.
+
+
+
+
+ An image encoder. Exposes methods for suitability checking, encoding, transparency compatibility checking, and mime-type/extension calculation.
+
+
+
+
+ If the encoder can handle the requirements specified by 'settings' and 'source', it should return an encoder instance.
+ If not, it should return null.
+
+ Request settings, like format, quality, colors, dither, etc.
+ May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
+ May also be used for palette generation hinting by some encoders.
+
+
+
+
+ Encodes the image to the specified stream
+
+
+
+
+
+
+ True if the output format will support transparency as it is currently configured.
+
+
+
+
+ Returns the appropriate mime-time for the output format as currently configured.
+
+
+
+
+ Returns a file extension appropriate for the output format as currently configured, without a leading dot.
+
+
+
+
+ Returns true if the this encoder supports the specified image format
+
+
+
+
+
+
+ Writes the specified image to the stream using Quality and OutputFormat
+
+
+
+
+
+
+ Tries to parse an ImageFormat from the settings.Format value.
+ If an unrecogized format is specified, returns null.
+ If an unsupported format is specified, it is returned.
+ If *no* format is specified, returns defaultValue.
+
+
+
+
+
+
+
+ Attempts to determine the ImageFormat of the source image. First attempts to parse the path, if a string is present in original.Tag. (or if 'original' is a string)
+ Falls back to using original.RawFormat. Returns null if both 'original' is null.
+ RawFormat has a bad reputation, so this may return unexpected values, like MemoryBitmap or something in some situations.
+
+ The source image that was loaded from a stream, or a string path
+
+
+
+
+ Returns the ImageFormat enumeration value based on the extension in the specified physical path. Extensions can lie, just a guess.
+
+
+
+
+
+
+ Returns an string instance from the specfied ImageFormat. First matching entry in imageExtensions is used.
+ Returns null if not recognized.
+
+
+
+
+
+
+ Returns a dict of (lowercase invariant) image extensions and ImageFormat values
+
+
+
+
+ Returns an ImageFormat instance from the specfied file extension. Extensions lie sometimes, just a guess.
+ returns null if not recognized.
+
+
+
+
+
+
+ NOT thread-safe!
+
+
+
+
+
+
+ Supports Png, Jpeg, Gif, Bmp, and Tiff. Throws a ArgumentOutOfRangeException if not png, jpeg, gif, bmp, or tiff
+
+
+
+
+
+
+ Returns the first ImageCodeInfo instance with the specified mime type. Returns null if there are no matches.
+
+
+
+
+
+
+ Saves the specified image to the specified stream using jpeg compression of the specified quality.
+
+
+ A number between 0 and 100. Defaults to 90 if passed a negative number. Numbers over 100 are truncated to 100.
+ 90 is a *very* good setting.
+
+
+
+
+
+ Saves the image in png form. If Stream 'target' is not seekable, a temporary MemoryStream will be used to buffer the image data into the stream
+
+
+
+
+
+
+ Returns the querystring keys used by DefaultEncoder (quality, format, and thumbnail)
+
+
+
+
+
+ Returns signatures for jpeg, bmp, gif, png, wmf, ico, and tif
+
+
+
+
+
+ If you set this to anything other than Gif, Png, or Jpeg, it will throw an exception. Defaults to Jpeg
+
+
+
+
+ 0..100 value. The Jpeg compression quality. 90 is the best setting. Not relevant in Png or Gif compression
+
+
+
+
+ Returns true if the desired output type supports transparency.
+
+
+
+
+ Returns the default mime-type for the OutputFormat
+
+
+
+
+ Returns the default file extesnion for OutputFormat
+
+
+
+
+ Implements app-wide size Limits on image size
+
+
+
+
+ The image and total size limits
+
+
+
+
+ What to do about remaining handlers/methods for the specified section
+
+
+
+
+ Does nothing
+
+
+
+
+ Requests that ImageBuilder cancels the default logic of the method, and stop executing plugin calls for the method immediately.
+
+
Represents the widths of edges of a box.
@@ -3254,6 +2926,12 @@
+
+
+ Gets edge offsets as a clockwise array, starting with Top.
+
+
+
Returns double.NaN unless all edges are the same width, in which case that width is returned
@@ -3269,229 +2947,6 @@
Returns true if th
-
-
- Gets edge offsets as a clockwise array, starting with Top.
-
-
-
-
-
- Provides a subset of layout logic; specifically determining the crop window, target image size, and (initial) target canvas size.
-
-
-
-
- Encapsulates the state of an image being resized.
- Can be used to simulate a resize as well as actually perform one.
- All code should ignore when Bitmaps and Graphics objects are null, and go about simulating all the mathematical functions as normal.
-
-
-
-
-
- The commands to apply to the bitmap
-
-
-
-
- The original size of the source bitmap. Use this instead of accessing the bitmap directly for this information, since the bitmap may not always be available
-
-
-
-
- Rendering choices can depend on whether the output format supports transparency.
-
-
-
-
- The layout object. Used for calculated and flowing the layout of the various rings around the image (padding, border, effect, margin, etc).
-
-
-
-
- The size of the target bitmap image. Set after all sizing operations have completed.
-
-
-
-
- The dimensions of the bitmap afer all operations have been applied to it (Calling FlipRotate can change the bitmap dimensions).
-
-
-
-
- The rectangular portion of the source image to copy
-
-
-
-
- (read-only) Same as copyRect.Size, convenience property.
-
-
-
-
- The source bitmap. If null, skip drawing commands, but continue layout logic.
-
-
-
-
- An optional intermediate bitmap, created by plugins who need to process the source bitmap it gets rendered to destBitmap. If defined, it should be used instead of sourceBitmap during RenderImage(), and disposed immediately after use.
-
-
-
-
- If 'sourceBitmap' is CMYK and `preRenderBitmap` is null, converts `sourceBitmap` to RGB and stores in 'preRenderBitmap'
-
-
-
-
- Clones 'sourceBitmap' into 'preRenderBitmap' if null.
-
-
-
-
- Applies copyRect (if it will have any effect), placing the result in preRenderBitmap, and resetting copyRect
-
-
-
-
- Ensures that the working bitmap is in 32bpp RGBA format - otherwise it is converted.
-
-
-
-
- The destination bitmap. If null, skip drawing commands, but continue layout logic.
-
-
-
-
- A graphics object to write to the destination bitmap. If null, skip drawing commands, but continue layout logic.
-
-
-
-
- Allows color correction/modification during the image copy.
-
-
-
-
- Allows extensions to store data along with the image state
-
-
-
-
- Disposes sourceBitmap, destGraphics, destBitmap, and copyAttributes if they are non-null
-
-
-
-
- Provides a useable base class that can be used to modify the behavior of ImageBuilder.
- When registered with an ImageBuilder instance, the ImageBuilder will call the corresponding methods on the extension prior to executing its own methods.
-
-
-
-
- This polygon participates in the layout phase, and reserves space when added. Affected by all batch operations. Will be returned by LastRing until a new ring is added.
-
-
-
-
- Doesn't participate in layout, takes no space, but is affected by batch operations. Will never be returned by LastRing and ignored when calculating bounding boxes.
-
-
-
-
- Completely ignored by all operations, left intact.
-
-
-
-
- How the pointsToTranslate should be translated if they are cropped out of the destination image.
-
-
-
-
- An ordered, named collection of polygons.
- pointsToTranslate, imageOuterEdge, imageAreaOuterEdge.
-
-
-
-
-
-
- Access and set the Point[] arrays of rings by key. Case-insensitive.
-
-
-
-
-
-
- Returns the last ring that was added. Only returns PointSets where flags = Ring
-
-
-
-
- Inflates the last ring using the specified padding options. Returns the resulting ring object
-
-
-
-
-
-
-
- Add points this way to see where they will occur on the destination image
-
-
-
-
-
-
-
- Gets a bounding box that encloses all rings that don't have ExcludeFromBoundingBox set.
-
-
-
-
-
- Returns a rectangle representing the given ring - if it is an axis-parallel rectangle. Otherwise returns null;
-
-
-
-
-
-
- Rotates all existing rings (Except those flagged ignore)
-
-
-
-
-
-
-
- Normalizes all rings and invisible polygons so that the outermost ring's bounding box starts at the specified orign.
-
-
-
-
-
-
- Scales all rings and invisible polygons by the specified factor, around the specified point.
-
-
-
-
-
-
- Translates and scales all rings and invisible polygons as specified.
-
-
-
-
-
-
-
-
-
Output image formats
@@ -3789,27 +3244,6 @@
Shouldn't be used except to make a factory instance.
-
-
- Handles the encoder selection and provision proccess.
-
-
-
-
- May be null. A class to modify or normalize ResizeSettings instances before they are used.
-
-
-
-
- Provides a resolution service for app-relative URLs.
-
-
-
-
- Returns a shared instance of ImageBuilder or a subclass, equivalent to Config.Current.CurrentImageBuilder
-
-
-
Create a new instance of ImageBuilder using the specified extensions, encoder provider, file provider, and settings filter. Extension methods will be fired in the order they exist in the collection.
@@ -3956,22 +3390,22 @@
-
+
Override this when you need to override the behavior of image encoding and/or Bitmap processing
Not for external use. Does NOT dispose of 'source' or 'source's underlying stream.
-
+
-
+
Override this when you need to override the behavior of Bitmap processing.
Not for external use. Does NOT dispose of 'source' or 'source's underlying stream.
-
+
True if the output method will support transparency. If false, the image should be provided a matte color
@@ -4049,6 +3483,27 @@
+
+
+ Handles the encoder selection and provision proccess.
+
+
+
+
+ May be null. A class to modify or normalize ResizeSettings instances before they are used.
+
+
+
+
+ Provides a resolution service for app-relative URLs.
+
+
+
+
+ Returns a shared instance of ImageBuilder or a subclass, equivalent to Config.Current.CurrentImageBuilder
+
+
+
Monitors incoming image requests to determine if resizing (or other processing) is being requested.
@@ -4060,11 +3515,6 @@
-
-
- Current configuration. Same as Config.Current.Pipeline
-
-
This is where we filter requests and intercept those that want resizing performed.
@@ -4076,24 +3526,42 @@
-
+
Generates the resized image to disk (if needed), then rewrites the request to that location.
Perform 404 checking before calling this method. Assumes file exists.
Called during PostAuthorizeRequest
-
+
+
We don't actually send the data - but we still want to control the headers on the data.
- PreSendRequestHeaders allows us to change the content-type and cache headers at exactly the last moment
+ PreSendRequestHeaders allows us to change the content-type and cache headers at excatly the last
+
+
+ Current configuration. Same as Config.Current.Pipeline
+
+
+
+
+ A callback method that will resize, encode, and write the data to the given stream.
+ Callback may throw FileNotFoundException when running on top of an optimistic VPP
+
+
+
+
+ A callback method to return the last modified date of the source file if available, or DateTime.MinValue if not available.
+
+
+
Represents an non-recoverable exception that occured while processing the image.
@@ -4117,46 +3585,238 @@
One or more source files was missing
-
+
- Wraps a , optionally overriding the State object (since the Task Asynchronous Pattern doesn't normally use it).
+ Encapsulates the state of an image being resized.
+ Can be used to simulate a resize as well as actually perform one.
+ All code should ignore when Bitmaps and Graphics objects are null, and go about simulating all the mathematical functions as normal.
+
- Class copied from System.Web.Mvc, but with modifications
-
+
- Initializes a new instance of the class.
+ The commands to apply to the bitmap
- The to wrap.
- User-defined object that qualifies or contains information about an asynchronous operation.
-
+
- Gets a user-defined object that qualifies or contains information about an asynchronous operation.
+ The original size of the source bitmap. Use this instead of accessing the bitmap directly for this information, since the bitmap may not always be available
- A user-defined object that qualifies or contains information about an asynchronous operation.
-
+
- Gets a that is used to wait for an asynchronous operation to complete.
+ Rendering choices can depend on whether the output format supports transparency.
- A that is used to wait for an asynchronous operation to complete.
-
+
- Gets a value indicating whether the asynchronous operation completed synchronously.
+ The layout object. Used for calculated and flowing the layout of the various rings around the image (padding, border, effect, margin, etc).
- true if the asynchronous operation completed synchronously; otherwise, false.
-
+
- Gets a value indicating whether the asynchronous operation has completed.
+ The size of the target bitmap image. Set after all sizing operations have completed.
- true if the operation is complete; otherwise, false.
-
+
- Gets the task.
+ The dimensions of the bitmap afer all operations have been applied to it (Calling FlipRotate can change the bitmap dimensions).
+
+
+
+
+ The rectangular portion of the source image to copy
+
+
+
+
+ The source bitmap. If null, skip drawing commands, but continue layout logic.
+
+
+
+
+ An optional intermediate bitmap, created by plugins who need to process the source bitmap it gets rendered to destBitmap. If defined, it should be used instead of sourceBitmap during RenderImage(), and disposed immediately after use.
+
+
+
+
+ If 'sourceBitmap' is CMYK and `preRenderBitmap` is null, converts `sourceBitmap` to RGB and stores in 'preRenderBitmap'
+
+
+
+
+ Clones 'sourceBitmap' into 'preRenderBitmap' if null.
+
+
+
+
+ Applies copyRect (if it will have any effect), placing the result in preRenderBitmap, and resetting copyRect
+
+
+
+
+ Ensures that the working bitmap is in 32bpp RGBA format - otherwise it is converted.
+
+
+
+
+ The destination bitmap. If null, skip drawing commands, but continue layout logic.
+
+
+
+
+ A graphics object to write to the destination bitmap. If null, skip drawing commands, but continue layout logic.
+
+
+
+
+ Allows color correction/modification during the image copy.
+
+
+
+
+ Disposes sourceBitmap, destGraphics, destBitmap, and copyAttributes if they are non-null
+
+
+
+
+ (read-only) Same as copyRect.Size, convenience property.
+
+
+
+
+ Allows extensions to store data along with the image state
+
+
+
+
+ An ordered, named collection of polygons.
+ pointsToTranslate, imageOuterEdge, imageAreaOuterEdge.
+
+
+
+
+
+
+ Inflates the last ring using the specified padding options. Returns the resulting ring object
+
+
+
+
+
+
+
+ Add points this way to see where they will occur on the destination image
+
+
+
+
+
+
+
+ Gets a bounding box that encloses all rings that don't have ExcludeFromBoundingBox set.
+
+
+
+
+
+ Rotates all existing rings (Except those flagged ignore)
+
+
+
+
+
+
+
+ Normalizes all rings and invisible polygons so that the outermost ring's bounding box starts at the specified orign.
+
+
+
+
+
+
+ Scales all rings and invisible polygons by the specified factor, around the specified point.
+
+
+
+
+
+
+ Translates and scales all rings and invisible polygons as specified.
+
+
+
+
+
+
+ Access and set the Point[] arrays of rings by key. Case-insensitive.
+
+
+
+
+
+
+ Returns the last ring that was added. Only returns PointSets where flags = Ring
+
+
+
+
+ This polygon participates in the layout phase, and reserves space when added. Affected by all batch operations. Will be returned by LastRing until a new ring is added.
+
+
+
+
+ Doesn't participate in layout, takes no space, but is affected by batch operations. Will never be returned by LastRing and ignored when calculating bounding boxes.
+
+
+
+
+ Completely ignored by all operations, left intact.
+
+
+
+
+ How the pointsToTranslate should be translated if they are cropped out of the destination image.
+
+
+
+
+ Enforces two kinds of maximum size constraints: a Total size limit, and an Image size limit.
+ Image limits do not include padding, border, or effect widths, and automatically shrink the 'width/height/maxwidth/maxheight' values to fit within the limits.
+ Total limits are absolute and apply to the actual result dimensions, causing an exception if they are exceeded.
+ Limits are checked during the layout phase, prior to resource-intensive bitmap operations.
+
+
+
+
+ The maximum final size an image generated by ImageBuilder can be.
+ Defaults to 3200x3200
+
+
+
+
+ What action to take when the total size of the final image would exceed the TotalSize value.
+ Defaults to ThowException
+
+
+
+
+ Returns true if ImageSize is specified.
+
+
+
+
+ The maximum size an un-rotated image can be drawn when creating a resized image.
+ Rotation will increase the total size, as will any borders, paddings, margins, or
+ effects. Not effective at preventing attacks, use totalSize.
+ If larger values are specified in a querystring, they will automatically
+ be scaled to fit within these dimensions.
+ Defaults to 0x0, which means no limits
+
+
+
+
+
@@ -4174,16 +3834,6 @@
A set of utility methods for manipulating virtual paths
-
-
- Returns HostingEnvironment.ApplicationVirtualPath or "/", if asp.net is not running
-
-
-
-
- If not running in ASP.NET, returns the folder containing the DLL.
-
-
Should be called SetFullExtension.
@@ -4348,32 +3998,8 @@
-
-
- Parses the querystring from the given path into a NameValueCollection.
- accepts "file?key=value" and "?key=value&key2=value2" formats. (no path is required)
- UrlDecodes keys and values. Does not enforce correct syntax, I.E. '?key=value?key2=value2' is allowed. However, '&key=value?key2=value' will only get key2 parsed.
- When allowSemicolons is true, semicolon paths like ';key=value;key2=value2' are allowed, as are hybrid paths: ';key=value?key2=value2&key3=value3'.
-
-
-
-
-
-
-
- Parses the querystring from the given path into a NameValueCollection.
- accepts "file?key=value" and "?key=value&key2=value2" formats. (no path is required)
- UrlDecodes keys and values. Does not enforce correct syntax, I.E. '?key=value?key2=value2' is allowed. However, '&key=value?key2=value' will only get key2 parsed.
- When allowSemicolons is true, semicolon paths like ';key=value;key2=value2' are allowed, as are hybrid paths: ';key=value?key2=value2&key3=value3'.
-
- Does NOT parse fragments correctly.
-
-
-
- Returns the portion of the 'path' before the querystring. May include the scheme, server, port, path and path info, depending upon what 'path' contained.
-
-
-
+
+
Parses a querystring into a name/value collection. The given string cannot include path or fragment information - it must be *just* the querystring.
@@ -4459,13 +4085,6 @@
-
-
- A method that resolves variable names to values for the ResolveVariablesInPath method
-
-
-
-
Returns a new collection containing only the specified keys from the old one
@@ -4474,12 +4093,21 @@
-
+
- Returns true if the current AppDomain has unrestricted .NET FileIOPermission to the given paths.
- Does NOT check NTFS permissions; that's completely separate.
+ Returns HostingEnvironment.ApplicationVirtualPath or "/", if asp.net is not running
-
+
+
+
+ If not running in ASP.NET, returns the folder containing the DLL.
+
+
+
+
+ A method that resolves variable names to values for the ResolveVariablesInPath method
+
+
@@ -4577,7 +4205,7 @@
Returns a bounding box for the specified set of points. Odd points are Y values, even points are X values
-
+
@@ -4737,13 +4365,6 @@
-
-
- Round a floating-point rectangle by apply ceil to x/y and floor to width/height
-
-
-
-
Aligns the specified rectangle object with its reference ('container') rectangle using the specified alignment. The container can be smaller than 'obj'.
@@ -4786,8 +4407,8 @@
Returns the distance between two points
-
-
+
+
@@ -4841,98 +4462,15 @@
-
+
- A Stream utility class that helps to provide seekability to any source
- stream.
+ Always implement this if possible. Allows caching systems to detect changes to source files and invalidate cached data properly.
-
+
- Returns a seekable stream for a given source stream. If wrapped,
- the source stream will be disposed when the returned stream is.
+ The modified (last write time) of the source file, in UTC form.
- The stream to wrap or return.
- If the source stream is already seekable, it is returned
- unwrapped. If not, it is wrapped in a SeekableStreamWrapper.
-
-
-
- Returns a seekable stream for a given source stream. If wrapped,
- the source stream will be disposed when the returned stream is.
-
- The stream to wrap or return.
- Whether to dispose the source stream
- when the wrapper is disposed. If a wrapper is created, this
- parameter will be true on the return to ensure the wrapper
- gets properly disposed.
- If the source stream is already seekable, it is returned
- unwrapped. If not, it is wrapped in a SeekableStreamWrapper.
-
-
-
- Disposes the seekable stream wrapper, and the wrapped stream if
- originally requested.
-
-
-
-
-
- Gets whether the stream wrapper can be written to or not.
- This is only true while the wrapper is being initialized, and
- otherwise false for all other callers.
-
-
-
-
- Parses lists in the form "3,4,5,2,5" and "(3,4,40,50)". If a number cannot be parsed (i.e, number 2 in "5,,2,3") defaultValue is used.
-
-
-
-
-
-
-
- Copies all remaining data from 'source' to 'dest'
-
-
-
-
-
-
- Returns RotateNoneFlipNone if not a recognized value.
-
-
-
-
-
-
- Returns 0 if not a recognized value. Rounds the value to 0, 90, 180, or 270
-
-
-
-
-
- Throws an exception if the specified value is unsupported. Rotation values are not supported, and should be specified with the Rotate or srcRotate command.
-
-
-
-
-
- Parses padding, allowing syntax (all) and (left, top, right, bottom). Parens are optional.
-
-
-
-
-
-
- Draws a gradient around the specified polygon. Fades from 'inner' to 'outer' over a distance of 'width' pixels.
-
-
-
-
-
-
@@ -4984,6 +4522,48 @@
The desired image format, like 'jpg', 'gif', or 'png'. Leave null if you want to preserve the original format.
+
+
+ Returns true if any of the specified keys are present in this NameValueCollection
+
+
+
+
+
+
+ If 'thumbnail' and 'format' are not specified, sets 'format' to the specified value.
+
+
+
+
+
+ Returns a string containing all the settings in the class, in querystring form. Use ToStringEncoded() to get a URL-safe querystring.
+ This method does not encode commas, spaces, etc.
+
+
+
+
+
+ Returns a querystring with all the settings in this class. Querystring keys and values are URL encoded properly.
+
+
+
+
+
+ This method will 'normalize' command aliases to the primary key name and resolve duplicates.
+ w->width, h->height, sourceFlip->sFlip, thumbnail->format
+
+
+
+
+ Normalizes a command that has two possible names.
+ If either of the commands has a null or empty value, those keys are removed.
+ If both the the primary and secondary are present, the secondary is removed.
+ Otherwise, the secondary is renamed to the primary name.
+
+
+
+
["width"]: Sets the desired width of the image. (minus padding, borders, margins, effects, and rotation).
@@ -5024,13 +4604,6 @@
["mode"]: Sets the fit mode for the image. max, min, pad, crop, carve, stretch
-
-
- Returns true if any of the specified keys are present in this NameValueCollection
-
-
-
-
["rotate"] The degress to rotate the image clockwise. -360 to 360.
@@ -5151,40 +4724,263 @@
0 indicates that the crop values are relative to the original size of the image.
-
+
- If 'thumbnail' and 'format' are not specified, sets 'format' to the specified value.
+ A Stream utility class that helps to provide seekability to any source
+ stream.
-
-
+
- Returns a string containing all the settings in the class, in querystring form. Use ToStringEncoded() to get a URL-safe querystring.
- This method does not encode commas, spaces, etc.
+ Returns a seekable stream for a given source stream. If wrapped,
+ the source stream will be disposed when the returned stream is.
+
+ The stream to wrap or return.
+ If the source stream is already seekable, it is returned
+ unwrapped. If not, it is wrapped in a SeekableStreamWrapper.
+
+
+
+ Returns a seekable stream for a given source stream. If wrapped,
+ the source stream will be disposed when the returned stream is.
+
+ The stream to wrap or return.
+ Whether to dispose the source stream
+ when the wrapper is disposed. If a wrapper is created, this
+ parameter will be true on the return to ensure the wrapper
+ gets properly disposed.
+ If the source stream is already seekable, it is returned
+ unwrapped. If not, it is wrapped in a SeekableStreamWrapper.
+
+
+
+ Disposes the seekable stream wrapper, and the wrapped stream if
+ originally requested.
+
+
+
+
+
+ Gets whether the stream wrapper can be written to or not.
+ This is only true while the wrapper is being initialized, and
+ otherwise false for all other callers.
+
+
+
+
+ Copies a read stream to a write stream.
+
+
+
+
+
+
+ Copies the remaining portion of the specified stream to a byte array of exact size.
+
+
+
+
+
+
+ Builds a key for the cached version, using the hashcode of the normalized URL.
+ if subfolders > 1, dirSeparator will be used to separate the subfolder and the key.
+ No extension is appended.
+ I.e, a13514\124211ab132592 or 12412ababc12141
+
+
+
+
+
+
+
+
+ Returns a string for the subfolder name. The bits used are from the end of the hash - this should make
+ the hashes in each directory more unique, and speed up performance (8.3 filename calculations are slow when lots of files share the same first 6 chars.
+ Returns null if not configured. Rounds subfolders up to the nearest power of two.
+
+
+
+
+
+
+
+ Parses lists in the form "3,4,5,2,5" and "(3,4,40,50)". If a number cannot be parsed (i.e, number 2 in "5,,2,3") defaultValue is used.
+
+
+
+
+
+
+
+ Copies all remaining data from 'source' to 'dest'
+
+
+
+
+
+
+ Returns RotateNoneFlipNone if not a recognized value.
+
+
+
+
+
+
+ Returns 0 if not a recognized value. Rounds the value to 0, 90, 180, or 270
-
+
- Returns a querystring with all the settings in this class. Querystring keys and values are URL encoded properly.
+ Throws an exception if the specified value is unsupported. Rotation values are not supported, and should be specified with the Rotate or srcRotate command.
-
+
- This method will 'normalize' command aliases to the primary key name and resolve duplicates.
- w->width, h->height, sourceFlip->sFlip, thumbnail->format
+ Parses padding, allowing syntax (all) and (left, top, right, bottom). Parens are optional.
+
+
+
+
+
+
+ Draws a gradient around the specified polygon. Fades from 'inner' to 'outer' over a distance of 'width' pixels.
+
+
+
+
+
+
+
+
+
+ Functions exactly like an IIS virtual folder, but doesn't require IIS configuration.
-
+
- Normalizes a command that has two possible names.
- If either of the commands has a null or empty value, those keys are removed.
- If both the primary and secondary are present, the secondary is removed.
- Otherwise, the secondary is renamed to the primary name.
+ Registers the VirtualFolder plugin as a virtual path provider.
+
+
+
+
+
+ Converts relative and app-relative paths to domain-relative virtual paths.
+
+
+
+
+
+
+ Attempts to convert a phyiscal path into a collapsed rooted physical path.
+
+
+
+
+
+
+ Collapses any .. segments
+
+
+
+
+
+
+ Converts any virtual path in this folder to a physical path. Returns null if the virtual path is outside the folder.
+
+
+
+
+
+
+ Returns true if the specified path is inside this virtual folder
+
+
+
+
+
+
+ Returns true if (a) we have IOPermission, (b) the path is under our prefix, (c) the
+ expected physical file does not exist (because we shouldn't interfere in that case), and
+ (d) the other VPPs don't believe the file exists.
+
+
+
+
+
+
+ Returns the LastWriteTimeUtc value for the specified virtual file in this folder, or DateTime.MinValue if missing.
+
+
+
+
+
+
+ Returns true if the file exists in this virtual folder, and would not be masking an existing file.
+ Returns false if NoIOPermission is true.
+
+
+
+
+
+
+
+ Unless the path is not within the virtual folder, or IO permissions are missing, will return an IVirtualFile instance for the path.
+ The file may or may not exist.
+
+
+
+
+
+
+
+ For internal use only by the .NET VPP system.
+
+
+
+
+
+
+ For internal use only by the .NET VPP system.
+
+
+
+
+
+
+ For internal use only by the .NET VPP system.
+
+
+
+
+
+
+
+
+ True if the provider attempted to register itself as a VirtualPathProvider and failed due to limited security clearance.
+ False if it did not attempt (say, due to missing IOPermission) , or if it succeeded.
+
+
+
+
+ If true, the plugin will attempt to register itself as an application-wide VirtualPathProvider instead of a image resizer-specific IVirtualImageProvider.
+
+
+
+
+ The virtual path served by the VirtualFolder
+
+
+
+
+ The physical path
+
+
+
+
+ True if the plugin has detected it doesn't have sufficient IOPermission to operate.
-
-
diff --git a/Projects/WebGIM/GIM_site/bin/VersGen.dll b/Projects/WebGIM/GIM_site/bin/VersGen.dll
index c57e4db..c56c5c5 100644
Binary files a/Projects/WebGIM/GIM_site/bin/VersGen.dll and b/Projects/WebGIM/GIM_site/bin/VersGen.dll differ
diff --git a/Projects/WebGIM/GIM_site/packages.config b/Projects/WebGIM/GIM_site/packages.config
index b404c2f..694c2e7 100644
--- a/Projects/WebGIM/GIM_site/packages.config
+++ b/Projects/WebGIM/GIM_site/packages.config
@@ -11,10 +11,10 @@
-
-
-
-
+
+
+
+
diff --git a/Projects/WebGIM/VersGen/WebGIM.cs b/Projects/WebGIM/VersGen/WebGIM.cs
index d6d0b41..d5d8ec6 100644
--- a/Projects/WebGIM/VersGen/WebGIM.cs
+++ b/Projects/WebGIM/VersGen/WebGIM.cs
@@ -5,7 +5,7 @@
using System.Reflection;
-[assembly: AssemblyVersion("1.6.291.524")]
-[assembly: AssemblyFileVersion("1.6.291.524")]
+[assembly: AssemblyVersion("1.6.292.526")]
+[assembly: AssemblyFileVersion("1.6.292.526")]
[assembly: AssemblyCopyright("Steamware © 2006-2016")]
[assembly: AssemblyCompany("Steamware")]
diff --git a/Projects/WebGIM/VersGen/WebGIM.tt b/Projects/WebGIM/VersGen/WebGIM.tt
index 9f3ed20..49fb46e 100644
--- a/Projects/WebGIM/VersGen/WebGIM.tt
+++ b/Projects/WebGIM/VersGen/WebGIM.tt
@@ -6,8 +6,8 @@
using System.Reflection;
-[assembly: AssemblyVersion("1.6.291.<#= this.RevisionNumber #>")]
-[assembly: AssemblyFileVersion("1.6.291.<#= this.RevisionNumber #>")]
+[assembly: AssemblyVersion("1.6.292.<#= this.RevisionNumber #>")]
+[assembly: AssemblyFileVersion("1.6.292.<#= this.RevisionNumber #>")]
[assembly: AssemblyCopyright("Steamware © 2006-<#= DateTime.Now.Year #>")]
[assembly: AssemblyCompany("Steamware")]
<#+
diff --git a/Projects/WebGIM/VersGen/bin/Release/VersGen.dll b/Projects/WebGIM/VersGen/bin/Release/VersGen.dll
index c57e4db..c56c5c5 100644
Binary files a/Projects/WebGIM/VersGen/bin/Release/VersGen.dll and b/Projects/WebGIM/VersGen/bin/Release/VersGen.dll differ
diff --git a/Projects/WebGIM/packages/ImageResizer.3.4.3/ImageResizer.3.4.3.nupkg b/Projects/WebGIM/packages/ImageResizer.3.4.3/ImageResizer.3.4.3.nupkg
new file mode 100644
index 0000000..98673c3
Binary files /dev/null and b/Projects/WebGIM/packages/ImageResizer.3.4.3/ImageResizer.3.4.3.nupkg differ
diff --git a/Projects/WebGIM/packages/ImageResizer.4.0.4/lib/net45/ImageResizer.XML b/Projects/WebGIM/packages/ImageResizer.3.4.3/lib/ImageResizer.XML
similarity index 93%
rename from Projects/WebGIM/packages/ImageResizer.4.0.4/lib/net45/ImageResizer.XML
rename to Projects/WebGIM/packages/ImageResizer.3.4.3/lib/ImageResizer.XML
index ee1f74e..76f46ba 100644
--- a/Projects/WebGIM/packages/ImageResizer.4.0.4/lib/net45/ImageResizer.XML
+++ b/Projects/WebGIM/packages/ImageResizer.3.4.3/lib/ImageResizer.XML
@@ -4,16 +4,6 @@
ImageResizer
-
-
- Generates the resized image to disk (if needed), then rewrites the request to that location.
- Perform 404 checking before calling this method. Assumes file exists.
- Called during PostAuthorizeRequest
-
-
-
-
-
Represents the widths of edges of a box.
@@ -47,6 +37,12 @@
+
+
+ Gets edge offsets as a clockwise array, starting with Top.
+
+
+
Returns double.NaN unless all edges are the same width, in which case that width is returned
@@ -62,12 +58,6 @@
Returns true if th
-
-
- Gets edge offsets as a clockwise array, starting with Top.
-
-
-
Provides culture-invariant parsing of byte, int, double, float, bool, and enum values.
@@ -108,363 +98,11 @@
Provides culture-invariant serialization of value types, in lower case for querystring readability. Setting a key to null removes it.
-
-
-
-
-
-
- SafeList is mutable, but it uses immutable data structures to minimize the need for locking.
- The provided manipulation
- Exposes a immutable list. Changes are made by copying the lists.
- SafeList is
- Never perform logic on SafeList directly, always use GetList() or GetCollection() first, followed by SetList().
- If you need involved list-fu, use ModifyList and specify a callback. It will execute inside a lock, preventing changes on other threads from overwriting each other.
-
-
-
-
-
- Returns an immutable snapshot of the collection
-
-
-
-
-
- Returns a mutable snapshot of the list
-
-
-
-
-
- Replaces the current collection with a new one. (copied to ensure safety)
- Use ModifyList when modifying the list. Use this only when the previous or current state of the list is irrelevant.
-
-
-
-
-
- Adds the specified item to the end of the list
-
-
-
-
-
- Removes the item from the list
-
-
-
-
-
- Returns the first item in the list. May return null if the list is empty.
-
-
-
-
- Returns the first item in the list. May return null if the list is empty.
-
-
-
-
- Adds the specified item to the beginning of the list
-
-
-
-
-
- Allows a caller to perform logic on the list inside a lock, and return a modified list.
- Callbacks should be fast, and should reference the IList they are fed, not this SafeList instance.
- Calling methods on the SafeList instance will cause a deadlock.
-
-
-
-
-
- Returns true if the collection contains the specified item at the moment.
-
-
-
-
-
-
- Extends enumerations by allowing them to define alternate strings with the [EnumString("Alternate Name",true)] attribute, and support it through TryParse and ToPreferredString
-
-
-
-
- Attempts case-insensitive parsing of the specified enum. Returns the specified default value if parsing fails.
- Supports [EnumString("Alternate Value")] attributes and parses flags. If any segment of a comma-delimited list isn't parsed as either a number or string, defaultValue will be returned.
-
-
-
-
-
-
-
-
- Attempts case-insensitive parsing of the specified enum. Returns null if parsing failed.
- Supports [EnumString("Alternate Value")] attributes and parses flags. If any segment of a comma-delimited list isn't parsed as either a number or string, null will be returned.
-
-
-
-
-
-
-
- Retuns the string representation for the given enumeration
-
-
-
-
-
-
-
- Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
-
-
-
-
- Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
-
-
-
-
-
- Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
-
-
-
-
-
- Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
-
-
-
-
- Serializes the given value by calling .ToString(). If the value is null, the key is removed.
-
-
-
-
- Provides culture-invariant serialization of value types, in lower case for querystring readability. Setting a key to null removes it.
-
-
-
-
-
-
-
-
-
- Parses a comma-delimited list of primitive values. If there are unparsable items in the list, they will be replaced with 'fallbackValue'. If fallbackValue is null, the function will return null
-
-
-
-
-
-
-
-
-
- Returns true if any of the specified keys contain a value
-
-
-
-
-
-
-
- Normalizes a command that has two possible names.
- If either of the commands has a null or empty value, those keys are removed.
- If both the primary and secondary are present, the secondary is removed.
- Otherwise, the secondary is renamed to the primary name.
-
-
-
-
-
-
-
- Creates and returns a new NameValueCollection instance that contains only the specified keys from the current collection.
-
-
-
-
-
-
-
- Creates and returns a new NameValueCollection instance that contains all of the
- keys/values from 'q', and any keys/values from 'defaults' that 'q' does not already
- contain.
-
- The settings specific to a particular query
- Default settings to use when not overridden by 'q'.
-
-
-
-
- Provides extension methods for copying streams
-
-
-
-
- Copies the remaining data in the current stream to a new MemoryStream instance.
-
-
-
-
-
-
- Copies the current stream into a new MemoryStream instance.
-
-
- True to copy entire stream if seeakable, false to only copy remaining data
-
-
-
-
- Copies the current stream into a new MemoryStream instance.
-
-
- True to copy entire stream if seeakable, false to only copy remaining data
- The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
-
-
-
- Copies the remaining data in the current stream to a byte[] array of exact size.
-
-
-
-
-
-
- Copies the current stream into a byte[] array of exact size.
-
-
- True to copy entire stream if seeakable, false to only copy remaining data
-
-
-
-
- Copies the remaining data from the this stream into the given stream.
-
-
- The stream to write to
-
-
-
- Copies this stream into the given stream
-
-
- The stream to write to
- True to copy entire stream if seeakable, false to only copy remaining data
-
-
-
- Copies this stream into the given stream
-
-
- The stream to write to
- True to copy entire stream if seeakable, false to only copy remaining data
- True to copy entire stream if seeakable, false to only copy remaining data
-
-
-
- Can return null if MemoryStream doesn't permit access to internal buffer.
-
-
-
-
-
-
-
- Copies the current stream into a byte[] array of exact size
-
-
- True to copy entire stream if seeakable, false to only copy remaining data.
- The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
-
-
-
- Copies the current stream into a byte[] array of exact size
-
-
- True to copy entire stream if seeakable, false to only copy remaining data.
- The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
-
-
-
- Attempts to return a byte[] array containing the remaining portion of the stream.
- Unlike CopyToBytes(), does not return a byte[] array of exact length, and may re-use the actual Stream's byte array, making it unsafe to write to in the future.
-
-
-
-
-
-
-
-
-
- Creates a 'gatherer' that pulls issues from IIssueProviders throughout the Config structure. Even plugins are queried.
-
-
-
-
-
- Security and stability issues.
-
-
-
-
- Behavioral issues, such as having no registered image encoders
-
-
-
-
- Errors in the module configuration
-
-
-
-
- Non-optimal settings
-
-
-
-
- Returns a copy of the list of reported issues.
-
-
-
-
-
- Adds the specified issue to the list unless it is an exact duplicate of another instance.
-
-
-
Writes the diagnostic message at the specified level.
@@ -568,1559 +206,245 @@
Provides automatic download of native dependencies (which VS doesn't see). Gets the correct bitness as well - very nice if you're changing app pool bitness and forgot to change binaries.
+
+
+ Returns a copy of the list of reported issues.
+
+
+
+
+
+ Adds the specified issue to the list unless it is an exact duplicate of another instance.
+
+
+
Thread safe countdown class
-
+
- Gets the current (app-wide) config instance.
+ Extends enumerations by allowing them to define alternate strings with the [EnumString("Alternate Name",true)] attribute, and support it through TryParse and ToPreferredString
+
+
+
+ Attempts case-insensitive parsing of the specified enum. Returns the specified default value if parsing fails.
+ Supports [EnumString("Alternate Value")] attributes and parses flags. If any segment of a comma-delimited list isn't parsed as either a number or string, defaultValue will be returned.
+
+
+
-
+
- Access and modify plugins
-
-
-
-
- Access and modify settings related to the HttpModule pipline. Register URL rewriting hooks, etc.
-
-
-
-
- Allows subclasses to be used instead of ImageBuilder. Replacements must override the Create method and call their own constructor instead.
-
-
-
-
-
- Returns a shared instance of ImageManager, (or a subclass if it has been upgraded).
- Instances change whenever ImageBuilderExtensions change.
+ Attempts case-insensitive parsing of the specified enum. Returns null if parsing failed.
+ Supports [EnumString("Alternate Value")] attributes and parses flags. If any segment of a comma-delimited list isn't parsed as either a number or string, null will be returned.
+
+
-
+
- Shortuct to CurrentImageBuilder.Build (Useful for COM clients). Also creates a destination folder if needed, unlike the normal .Build() call.
-
-
-
-
-
-
-
-
- The ResizeConfigrationSection is not thread safe, and should not be modified
- Dynamically loads the ResizerSection from web.config when accessed for the first time.
- If the resizer node doesn't exist, an empty configuration object is created with just the root resizer node.
-
-
-
-
- Returns a list of all issues reported by the resizing core, as well as by all the plugins
-
-
-
-
- Returns a deep copy of the specified node
-
-
-
-
-
- Returns a deep copy if the current state of the configuration tree (starting with the 'resizer' element as the root)
-
-
-
-
- Replaces the configuration tree with the specified alternative
-
-
-
-
-
- Replaces the configuration tree with the specified alternative
-
-
-
-
-
- Writes a diagnostic page to the specified physical path
-
-
-
-
-
- Returns a string of the diagnostics page
+ Retuns the string representation for the given enumeration
+
+
-
+
- Domain-relative path which also includes the path info portion. I.e, '/app/folder/file.aspx/path/info' could be a valid value. Relative to the domain root, not the site or app root.
-
-
-
-
- Populates the cache if it is empty. Not thread safe.
-
-
-
-
- Returns a unqiue copy of the image extensions supported by the pipeline. Performs a cached query to all registered IQuerystringPlugin instances.
- Use IsAcceptedImageType for better performance.
-
-
-
-
- Returns a unqiue copy of all querystring keys supported by the pipeline. Performs a cached query to all registered IQuerystringPlugin instances.
- Use HasPipelineDirective for better performance. (binary search)
-
-
-
-
- The specified path must not include a querystring. Slashes, spaces, question marks, ampersands, and colons are not permitted in the extension.
- If it contains a multipart extension like .txt.zip, only "zip" will be recognized. Must contain a dot - passing in "jpg" will fail.
-
-
-
-
-
-
- Returns true if any of the querystring keys match any of the directives supported by the pipeline (such as width, height, format, bgcolor, etc)
-
-
-
-
-
-
- Cached access to pipeline.fakeExtensions
-
-
-
-
- Removes the first fake extensionm detected at the end of 'path'
-
-
-
-
-
-
- Returns the value of Context.Items["resizer.newPath"] if present. If not, returns FilePath + PathInfo.
- Sets Context.Items["resizer.newPath"].
- Only useful during the Pipeline.PostAuthorizeRequestStart event.
-
-
-
-
- Returns the modified query string. If never set, returns a copy of Request.QueryString.
- Returns the same instance if called multiple times. Copy it if you want to make changes without causing issues.
-
-
-
-
- Get or sets whether the file extension check should be applied to the current request. Defaults to true.
- If set to true, will only affect the current request, and will only cause the Resizer to evaluate the rewriting rules on the request.
- Processing may still not occur if no querystring values are specified. Add 'cache=always' to force caching to occur.
-
-
-
-
- Returns true if the current request is being processed and/or cached by the pipeline.
- Will return false until *after* the FileExists method is called on the VirtualPathProviders, which is after the
- AuthorizeImage event fires.
- This will return a usable value if used from VirtualFile.Open(), or if used inside the PreHandleImage event or later.
-
-
-
-
- Returns an IVirtualFileAsync instance if the specified file can be provided by an async provider
-
-
-
-
-
-
-
- Returns either an IVirtualFile instance or a VirtualFile instance.
-
-
-
-
-
-
-
- Returns true if (a) A registered IVirtualImageProvider says it exists, or (b) if the VirtualPathProvider chain says it exists.
-
-
-
-
-
-
-
- Fired once, on the first PostAuthorizeRequest event.
-
-
-
-
- Fires during the PostAuthorizeRequest phase, prior to any module-specific logic.
- Executes for every request to the website. Use only as a last resort. Other events occur only for image requests, and thus have lower overhead.
-
-
-
-
- Fired during PostAuthorizeRequest, after ResizeExtension has been removed.
- On fired on requests with extensions that match supported image types.
-
- You can add additonal supported image extentions by registering a plugin that implementes IQuerystringPlugin, or you can add an
- extra extension in the URL and remove it here. Example: .psd.jpg
-
-
-
-
- Fired during PostAuthorizeRequest, after Rewrite.
- Any changes made here (which conflict) will be overwritten by the current querystring values. I.e, this is a good place to specify default settings.
- Only fired on accepted image types. (see Rewrite)
-
-
-
-
- Fired after all other rewrite events.
- Only fired on accepted image types. (see Rewrite)
-
-
-
-
- Fired after all rewriting is finished.
- e.AllowAccess defaults to the result of the UrlAuthorization module's verdict. It can be changed.
- Set e.AllowAccess to true to cause and 403 Access Dened result.
-
-
-
-
- Fired when the specified image doesn't exist. Only called for images that would normally be processed.
- May be called during PostAuthorizeRequest or later - End the request completely with a redirect if you want alternate behavior.
-
-
-
-
- Fired immediately before the image request is sent off to the caching system for proccessing.
- Allows modification of response headers, caching arguments, and callbacks.
-
-
-
-
- The number of images processed by this pipeline.
-
-
-
-
- Cache selection occurs as follows: (1) The first registered CachingSystem that returns true from .CanProcess() is the default
- (2) The SelectCachingSystem event is fired, allowing handlers to modify the selected cache.
- This method may return null.
-
-
-
-
-
-
-
- True once the InterceptModule or InterceptModuleAsync has been installed and is intercepting requests.
-
-
-
-
- True if the InterceptModuleAsync has been installed. Null if we can't find out.
-
-
-
-
- Returns true if the AppDomain has Unrestricted code access security
-
-
-
-
-
- If true, AuthorizeImage will be called for all image requests, not just those with command directives.
-
-
-
-
- If specified, DropQuerystringKeys will cause certain query string parameters to be excluded from processing.
-
-
-
-
- True if the specified extension is one that the pipeline can handle
-
-
-
-
-
-
- True if the querystring contains any directives that are understood by the pipeline
-
-
-
-
-
-
- The key in Context.Items to store the modified querystring (i.e, post-rewrite).
- Allows VirtualPathProviders to access the rewritten data.
-
-
-
-
- The key in Context.Items to store the IResponseArgs object
-
-
-
-
- The key in Context.Items to set if we want to cancel MVC routing for the request
-
-
-
-
- The key in Context.Items to access a the path to use instead of Request.path
-
-
-
-
- The behavior to use when accessing the file system.
-
-
-
-
- Get or sets whether the file extension check should be applied to the current request. Defaults to true.
- If set to true, will only affect the current request, and will only cause the Resizer to evaluate the rewriting rules on the request.
- Processing may still not occur if no querystring values are specified. Add 'cache=always' to force caching to occur.
-
-
-
-
- True once the InterceptModule has been installed.
-
-
-
-
- True if we know that InterceptModuleAsync is registered. Null if we don't know.
-
-
-
-
- Returns the value of Context.Items["resizer.newPath"] if present. If not, returns FilePath + PathInfo.
- Sets Context.Items["resizer.newPath"].
- Only useful during the Pipeline.PostAuthorizeRequestStart event.
-
-
-
-
- Removes the first fake extension detected at the end of 'path' (like image.jpg.ashx -> image.jpg).
-
-
-
-
-
-
- Returns an ImageBuilder instance to use for image processing.
-
-
-
-
-
- Returns a ICacheProvider instance that provides caching system selection and creation.
-
-
-
-
-
- Returns an IVirtualFile instance if the specified file exists.
-
-
-
-
-
-
-
- Returns an IVirtualFileAsync instance if the specified file can be provided by an async provider
-
-
-
-
-
-
-
- Returns true if (a) A registered IVirtualImageProvider says it exists, or (b) if the VirtualPathProvider chain says it exists.
-
-
-
-
-
-
-
- Returns true if any registered IVirtualImageProviderAsync says it exists.
-
-
-
-
-
-
-
- If true, AuthorizeImage will be called for all image requests, not just those with command directives.
-
-
-
-
- Provides thread-safe access to plugin addition, removal, and querying methods
-
-
-
-
- Creates a new plugin config section, attached to the specified parent
-
-
-
-
-
- Processes the <plugins> section if they are not already loaded. Thread safe.
- Only executes once.
-
-
-
-
- Forces loading of the plugins specified in configuration, even if they have already been loaded. Will add duplicate plugins and throw exceptions if you do not call RemoveAll() first.
-
-
-
-
- Returns true if the <plugins> section has been processed
-
-
-
-
- Not thread safe. Performs actual work.
-
-
-
-
- Returns the subset of installed plugins which implement the specified type or interface
-
-
-
-
-
-
- Returns all registered instances of the specified plugins
+ Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
-
- Returns true if at least one plugin of the specified type is registered.
-
-
-
-
-
-
- Returns true if 1 or more instances of the type are registered.
-
-
-
-
-
-
- Returns the first registerd instance of the specified plugin. For IMultiInstancePlugins, use GetAll()
-
-
-
-
-
-
- Returns the first registered instance of the specified plugin, or creates a new instance if the plugin isn't installed.
-
-
-
-
-
-
- Returns the first registered instance of the specified plugin, or installs the given instance instead, then re-tries the query
-
-
-
-
-
-
-
- Installs the specified plugin, returning the plugin instance.
- Convenience method, same as plugin.Install(Config.Current).
-
-
-
-
-
-
- Attempts uninstallation of the specified plugin, returning true if successful.
- Convenience method, same as plugin.Uninstall(Config.Current).
-
-
-
-
-
-
- Currently registered ICurrentConfigProviders.
-
-
-
-
- Currently registered set of ImageBuilderExtensions.
-
-
-
-
- Currently registered IEncoders.
-
-
-
-
- Currently registered ICache instances
-
-
-
-
- Plugins which accept querystring arguments are registered here.
-
-
-
-
- Plugins which accept new file extensions (in the url) are registered here.
-
-
-
-
- Plugins which provide virtual files are registered here.
-
-
-
-
- Plugins which modify image processing settings.
-
-
-
-
- All plugins should be registered here. Used for diagnostic purposes.
-
-
-
-
- Returns the most recently registered Logging plugin, or null.
-
-
-
-
- Returns an instance of the first encoder that claims to be able to handle the specified settings.
- Returns null if no encoders are available.
-
- Request settings, like format, quality, colors, dither, etc.
- May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
- May also be used for palette generation hinting by some encoders.
-
-
-
-
- Returns null on failure. Check GetIssues() for causes.
-
-
-
-
-
-
-
- This is called to get a sorted list of plugins based on their likelyhood of having the plugin.
-
-
-
-
-
-
-
- Searches all loaded assemblies for the specified type, applying rules and prefixes to resolve the namespace and assembly.
- Returns null if it could not find the type, and logs an issue.
-
-
-
-
-
-
- For use only by plugins during .Uninstall.
- Removes the specified plugin from AllPlugins, QuerystringPlugins, CachingSystems, ImageEncoders, and ImageBuiderExtensions, based
- on which interfaces the instance implements.
- Plugins may register event handlers and modify settings - thus you should use the plugin's method to uninstall them vs. using this method.
-
-
-
-
-
- Only for use by plugins during IPlugin.Install. Call Plugin.Install instead of this method, since plugins often must perform other initialization actions.
- Adds the specified plugin to AllPlugins, QuerystringPlugins, CachingSystems, ImageEncoders, and ImageBuiderExtensions, based
- on which interfaces the instance implements. For ICache and IEncoder, the plugin is inserted at the beginning of CachingSystems and ImageEncoders respectively.
- To reiterate, plugins may register event handlers and modify settings - thus you should use the plugin's method to uninstall them vs. using this method.
- Will not register a plugin that is already installed, unless it implementes IMultiInstancePlugin.
-
-
-
-
-
- Removes all plugins, of every kind. Logs any errors encountered. (Not all plugins support uninstallation)
-
-
-
-
- No support for namespaces, no intention of eventual serialization.
- Everything is case-insensitive, but preserves case. Not thread safe.
-
-
-
-
- Builds a tree of Nodes from the specified XML subtree. Duplicate attributes are sent to 'ir'
-
-
-
-
-
-
- Attributes
-
-
-
-
- Access attributes by name
-
+
-
+
- The concatenated text, significant whitespace, and entity references within this element.
- Not XML compliant for sure.
+ Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
-
-
- The name of the element.
-
-
-
-
- Child nodes
-
-
-
-
- Returns the subset of Children with a matching element name. (Case-insensitive)
-
-
-
-
-
-
- Queryies the subtree for the specified attribute on the specified element. Example selector: element.element.attrname
- Assumes that the last segment of the selector is an attribute name.
- Throws an ArgumentException if there is only one segment ( element ).
- Uses the cache.
-
-
-
-
-
-
- Sets the specified attribute value, creating parent elements if needed. Clears the query cache.
-
-
-
-
-
-
- Sets the specified attribute value, creating parent elements if needed. Clears the query cache.
-
-
-
-
-
-
-
- Traverses the specified path, creating any missing elements along the way. Uses existing nodes if found.
-
-
-
-
-
-
- Same as query(), except results are cached until clearQueryCache() is called.
- Faster, but can be incorrect if existing nodes are renamed, moved, or deleted.
-
-
-
-
-
-
- Makes a recusive copy of the subtree, keeping no duplicate references to mutable types.
-
-
-
-
-
- Returns true if the element has neither attributes nor children.
-
-
-
-
- Encapsulates a node/attribute selection query, such as "node.node.attribute"
-
-
-
-
- Returns a subset of the list starting at the specified index
-
-
-
-
-
-
- If this occurs, no data is available. The request is not for us to interfere with.
-
-
-
-
- Authorization was denied. The user should be shown a 403.
-
-
-
-
- Refer to RewrittenQueryHasDirective, ProcessingIndicated, CachingIndicated, RewrittenMappedPath, in order to decide what to do.
-
-
-
-
- Creates a route that matches any request where context.Items[contextItemsFlag] is (non-null).
-
-
-
-
-
- Implements IHttpHandler, serves content for the NoCache plugin
-
-
-
-
- We duplicate efforts in PostRewrite to ensure that the DiskCache doesn't block configuration changes.
- This won't help CloudFront, however.
-
-
-
-
-
-
-
- The default scale mode to use when 'width' and/or 'height' are used, and mode is not 'max'.
-
-
-
-
- The default scale mode to use when 'maxwidth' and/or 'maxheight' are used (or mode=max).
-
-
-
-
- Matches /resize(x,y,f)/ syntax
- Fixed Bug - will replace both slashes.. make first a lookbehind
-
-
-
-
- Parses and removes the resize folder syntax "resize(x,y,f)/" from the specified file path.
- Places settings into the referenced querystring
-
-
- The collection to place parsed values into
-
-
-
-
- Causes IE6 and earlier to use GIF versions of PNG files.
- By default, only fixes requests with ?iefix=true in the querystring.
- When catchall is enabled, it will filter all png images, unless iefix=false on those requests.
- Not compatible with CDNs or proxy servers, as they do not allow varying by user agent reliably.
-
-
-
-
- If true, 'iefix=true' will be the default for all PNG images, instead of 'iefix=false'.
-
-
-
-
- If true, the requests from IE will be HTTP redirected to new URLs. If false, the GIF will be silently served instead of the PNG, without any redirection.
- A CDN or caching proxy will mess things up regardless, but using redirection ensures that the CDN/proxy never caches the GIF version instead of the PNG.
-
-
-
-
- Returns true if the specified querystring and file will cause a PNG file to be returned.
-
-
-
-
-
-
- Returns true if the user agent string specifies MSIE versions 1 through 6 for Windows. Cached in context.Items after first call.
-
-
-
-
-
-
- Adds URL syntax support for legacy projects:
- http://webimageresizer.codeplex.com/,
- http://imagehandler.codeplex.com/,
- http://bbimagehandler.codeplex.com/,
- DAMP: http://our.umbraco.org/projects/backoffice-extensions/digibiz-advanced-media-picker,
- Support for http://bip.codeplex.com/ and http://dynamicimageprocess.codeplex.com/ urls is default since w/h are supported.
-
-
-
-
- Provides default client-caching behavior. Sends Last-Modified header if present, and Expires header if <clientcache minutes="value" /> is configured.
- Also defaults Cache-control to Public for anonymous requests (and private for authenticated requests)
-
-
-
-
- Allows gradients to be dynamically generated like so:
- /gradient.png?color1=white&color2=black&angle=40&width=20&height=100
-
-
-
-
- Redirects image 404 errors to a querystring-specified server-local location,
- while maintaining querystring values (by default) so layout isn't disrupted.
-
-
-
- The image to use in place of missing images can be specified by the "404"
- parameter in the querystring. The "404" value can also refer to a named
- value in the <plugins>/<Image404> setting in Web.config.
-
-
-
-
- Using <img src="missingimage.jpg?404=image.jpg&width=200" />
- with the default setting (<image404 baseDir="~/" />) will
- redirect to ~/image.jpg?width=200.
-
-
- You may also configure 'variables', which is the recommended approach.
- For example, <image404 propertyImageDefault="~/images/nophoto.png" />
- in the config file, and <img src="missingimage.jpg?404=propertyImageDefault&width=200" />
- will result in a redirect to ~/images/nophoto.png?width=200.
- Any querystring values in the config variable take precedence over
- querystring values in the image querystring. For example,
- <image404 propertyImageDefault="~/images/nophoto.png?format=png" />
- in the config file and
- <img src="missingimage.jpg?format=jpg&404=propertImageDefault&width=200" />
- will result in a redirect to ~/images/nophoto.png?format=png&width=200.
-
-
-
-
-
- Implements IHttpHandler, serves content for the NoCache plugin
-
-
-
-
- Default cache when DiskCache isn't installed.
- Useful for debugging purposes but unsuited for production use, and will use large quanities of RAM. (Scales to fewer than 5 concurrent requests).
- Serves content directly to the client from memory.
-
-
-
-
- Installs the caching system as the first choice.
-
-
-
-
-
-
- Removes the plugin.
-
-
-
-
-
-
- Sends the response directly to the client with no caching logic.
-
-
-
-
-
-
- Adds drop shadow capabilities (shadowColor, shadowOffset, and shadowWidth commands)
-
-
-
-
- Draws a gradient around the specified polygon. Fades from 'inner' to 'outer' over a distance of 'width' pixels.
-
-
-
-
-
-
-
-
-
- Returns an new NameValueCollection instance that only includes the "preset" and ("hmac" and "urlb64", if specified) querystring pairs from the specified instance.
-
-
-
-
-
-
-
- If true, the plugin will block all commands except those specified in a preset, and the &preset command itself.
- Only applies to InterceptModule (the URL API). Does not apply to ImageBuilder.Build calls. To replicate the behavior, simply prevent any querystring keys except 'preset' from being passed to ImageBuilder.Build.
-
-
-
-
- Can be used by plugins to implement 'trial version' functionality. Not currently used.
-
-
-
-
- The Trial plugin cannot be removed using this method.
-
-
-
-
-
-
- Determines when the diagnostics page can be viewed.
-
-
-
-
- Diagnostics are disabled
-
-
-
-
- Only local requests can access diagnostics
-
-
-
-
- All hosts can view diagnostics.
-
-
-
-
- Provides the incredibly helpful /resizer.debug page we all love.
-
- Mimics the behavior of customErrors by default. Not available if CustomErrors=true or retail=true. Available only to localhost if customErrors=RemoteOnly.
- Can be overriden by adding in the <resizer> section <diagnostics enableFor="None|AllHosts|LocalHost" />
-
-
-
-
-
- True if diagnostics can be displayed to the current user.
- If <diagnostics enableFor="None" />, returns false.
- If <diagnostics enableFor="Localhost" />, returns false for remote requests
- If <diagnostics enableFor="AllHosts" />, returns true.
- If unspecified, uses the same behavior as ASP.NET Custom Errors.
-
-
-
-
-
-
- Returns the ASP.NET trust level
-
-
-
-
-
- Provides basic encoding functionality for Jpeg, png, and gif output. Allows adjustable Jpeg compression, but doesn't implement indexed PNG files or quantized GIF files.
-
-
-
-
- If you set this to anything other than Gif, Png, or Jpeg, it will throw an exception. Defaults to Jpeg
-
-
-
-
- Returns true if the this encoder supports the specified image format
-
-
-
-
-
-
- 0..100 value. The Jpeg compression quality. 90 is the best setting. Not relevant in Png or Gif compression
-
-
-
-
- Writes the specified image to the stream using Quality and OutputFormat
-
-
-
-
-
-
- Returns true if the desired output type supports transparency.
-
-
-
-
- Returns the default mime-type for the OutputFormat
-
-
-
-
- Returns the default file extesnion for OutputFormat
-
-
-
-
- Tries to parse an ImageFormat from the settings.Format value.
- If an unrecogized format is specified, returns null.
- If an unsupported format is specified, it is returned.
- If *no* format is specified, returns defaultValue.
-
-
+
+
+
-
+
- Attempts to determine the ImageFormat of the source image. First attempts to parse the path, if a string is present in original.Tag. (or if 'original' is a string)
- Falls back to using original.RawFormat. Returns null if both 'original' is null.
- RawFormat has a bad reputation, so this may return unexpected values, like MemoryBitmap or something in some situations.
+ Provides culture-invariant parsing of int, double, float, bool, and enum values.
- The source image that was loaded from a stream, or a string path
+
+
+
+
-
+
- Returns the ImageFormat enumeration value based on the extension in the specified physical path. Extensions can lie, just a guess.
+ Provides culture-invariant parsing of int, double, float, bool, and enum values.
-
+
+
+
-
+
- Returns an string instance from the specfied ImageFormat. First matching entry in imageExtensions is used.
- Returns null if not recognized.
+ Serializes the given value by calling .ToString(). If the value is null, the key is removed.
-
+
+
+
+
-
+
- Returns a dict of (lowercase invariant) image extensions and ImageFormat values
+ Provides culture-invariant serialization of value types, in lower case for querystring readability. Setting a key to null removes it.
-
-
-
- Returns an ImageFormat instance from the specfied file extension. Extensions lie sometimes, just a guess.
- returns null if not recognized.
-
-
+
+
+
+
-
+
- NOT thread-safe!
+ Parses a comma-delimited list of primitive values. If there are unparsable items in the list, they will be replaced with 'fallbackValue'. If fallbackValue is null, the function will return null
-
-
-
-
-
- Supports Png, Jpeg, Gif, Bmp, and Tiff. Throws a ArgumentOutOfRangeException if not png, jpeg, gif, bmp, or tiff
-
-
+
+
+
+
-
+
- Returns the first ImageCodeInfo instance with the specified mime type. Returns null if there are no matches.
+ Returns true if any of the specified keys contain a value
-
+
+
-
+
- Saves the specified image to the specified stream using jpeg compression of the specified quality.
+ Normalizes a command that has two possible names.
+ If either of the commands has a null or empty value, those keys are removed.
+ If both the the primary and secondary are present, the secondary is removed.
+ Otherwise, the secondary is renamed to the primary name.
-
- A number between 0 and 100. Defaults to 90 if passed a negative number. Numbers over 100 are truncated to 100.
- 90 is a *very* good setting.
-
-
+
+
-
+
- Saves the image in png form. If Stream 'target' is not seekable, a temporary MemoryStream will be used to buffer the image data into the stream
-
-
-
-
-
-
- Returns the querystring keys used by DefaultEncoder (quality, format, and thumbnail)
+ Creates and returns a new NameValueCollection instance that contains only the specified keys from the current collection.
+
+
-
+
- Returns signatures for jpeg, bmp, gif, png, wmf, ico, and tif
+ Creates and returns a new NameValueCollection instance that contains all of the
+ keys/values from 'q', and any keys/values from 'defaults' that 'q' does not already
+ contain.
+ The settings specific to a particular query
+ Default settings to use when not overridden by 'q'.
-
+
- Implements app-wide size Limits on image size
+ Provides extension methods for copying streams
-
+
- The image and total size limits
-
-
-
-
- Enforces two kinds of maximum size constraints: a Total size limit, and an Image size limit.
- Image limits do not include padding, border, or effect widths, and automatically shrink the 'width/height/maxwidth/maxheight' values to fit within the limits.
- Total limits are absolute and apply to the actual result dimensions, causing an exception if they are exceeded.
- Limits are checked during the layout phase, prior to resource-intensive bitmap operations.
-
-
-
-
- The maximum final size an image generated by ImageBuilder can be.
- Defaults to 3200x3200
-
-
-
-
- What action to take when the total size of the final image would exceed the TotalSize value.
- Defaults to ThowException
-
-
-
-
- Returns true if ImageSize is specified.
-
-
-
-
- The maximum size an un-rotated image can be drawn when creating a resized image.
- Rotation will increase the total size, as will any borders, paddings, margins, or
- effects. Not effective at preventing attacks, use totalSize.
- If larger values are specified in a querystring, they will automatically
- be scaled to fit within these dimensions.
- Defaults to 0x0, which means no limits
-
-
-
-
- Functions exactly like an IIS virtual folder, but doesn't require IIS configuration.
-
-
-
-
- True if the provider attempted to register itself as a VirtualPathProvider and failed due to limited security clearance.
- False if it did not attempt (say, due to missing IOPermission) , or if it succeeded.
-
-
-
-
- If true, the plugin will attempt to register itself as an application-wide VirtualPathProvider instead of a image resizer-specific IVirtualImageProvider.
-
-
-
-
- The virtual path served by the VirtualFolder
-
-
-
-
- The physical path
-
-
-
-
- Registers the VirtualFolder plugin as a virtual path provider.
+ Copies the remaining data in the current stream to a new MemoryStream instance.
+
-
+
- True if the plugin has detected it doesn't have sufficient IOPermission to operate.
+ Copies the current stream into a new MemoryStream instance.
-
-
-
- Converts relative and app-relative paths to domain-relative virtual paths.
-
-
+
+ True to copy entire stream if seeakable, false to only copy remaining data
-
+
- Attempts to convert a phyiscal path into a collapsed rooted physical path.
+ Copies the current stream into a new MemoryStream instance.
-
+
+ True to copy entire stream if seeakable, false to only copy remaining data
+ The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
+
- Collapses any .. segments
+ Copies the remaining data in the current stream to a byte[] array of exact size.
-
+
-
+
- Converts any virtual path in this folder to a physical path. Returns null if the virtual path is outside the folder.
+ Copies the current stream into a byte[] array of exact size.
-
+
+ True to copy entire stream if seeakable, false to only copy remaining data
-
+
- Returns true if the specified path is inside this virtual folder
+ Copies the remaining data from the this stream into the given stream.
-
+
+ The stream to write to
+
+
+
+ Copies this stream into the given stream
+
+
+ The stream to write to
+ True to copy entire stream if seeakable, false to only copy remaining data
+
+
+
+ Copies this stream into the given stream
+
+
+ The stream to write to
+ True to copy entire stream if seeakable, false to only copy remaining data
+ True to copy entire stream if seeakable, false to only copy remaining data
+
+
+
+ Copies the current stream into a byte[] array of exact size
+
+
+ True to copy entire stream if seeakable, false to only copy remaining data.
+ The buffer size to use (in bytes) if a buffer is required. Default: 4KiB
-
+
- Returns true if (a) we have IOPermission, (b) the path is under our prefix, (c) the
- expected physical file does not exist (because we shouldn't interfere in that case), and
- (d) the other VPPs don't believe the file exists.
+ Attempts to return a byte[] array containing the remaining portion of the stream.
+ Unlike CopyToBytes(), does not return a byte[] array of exact length, and may re-use the actual Stream's byte array, making it unsafe to write to in the future.
-
+
+
+
-
-
- Returns the LastWriteTimeUtc value for the specified virtual file in this folder, or DateTime.MinValue if missing.
-
-
-
-
-
-
- Returns true if the file exists in this virtual folder, and would not be masking an existing file.
- Returns false if NoIOPermission is true.
-
-
-
-
-
-
-
- Unless the path is not within the virtual folder, or IO permissions are missing, will return an IVirtualFile instance for the path.
- The file may or may not exist.
-
-
-
-
-
-
-
- For internal use only by the .NET VPP system.
-
-
-
-
-
-
- For internal use only by the .NET VPP system.
-
-
-
-
-
-
- For internal use only by the .NET VPP system.
-
-
-
-
-
-
-
-
- Encapsulates a response plan for responding to a request.
-
-
-
-
- A virtual file to support IVirtualImageProvider
-
-
-
-
- Returns an opened stream to the file contents.
-
-
-
-
-
- Implement this if you are caching files provided by a virtual image provider (For example, remote or s3-hosted images).
-
-
-
-
- Returns a cached copy of virtual file if it is cached, and if caching is desired.
-
-
-
-
-
-
-
-
- Always implement this if possible. Allows caching systems to detect changes to source files and invalidate cached data properly.
-
-
-
-
- The modified (last write time) of the source file, in UTC form.
-
-
-
-
- Implement this to allow ImageResizer to access your custom blob store
-
-
-
-
- Returns true if the specified request should be handled by this virtual image provider
-
-
-
-
-
-
-
- Returns a virtual file instance for the specified path and querystring.
-
-
-
-
-
-
-
- Allows IVirtualImageProviders to expose access through the ASP.NET VirtualPathProvider system.
-
-
-
-
- Converts relative and app-relative paths to domain-relative virtual paths.
-
-
-
-
-
-
- Allows multi-tenancy support. The 'root' config only needs one plugin, which implements this interface.
-
-
-
-
- Returns a Config instance appropriate for the current request. If null is returned, the default/root instance will be used.
- Implementations MUST return the same instance of Config for two identical requests. Multiple Config instances per tenant/area will cause problems.
- MUST be thread-safe, concurrent calls WILL ocurr, and WILL occur during initial call.
-
-
-
-
-
- Provides a place to cache/store licenses. Only responsible for licenses used by plugins attached to the current Config instance.
-
-
-
-
- Returns a collection containing all licenses for the plugin's Config instance, in their native form
-
-
-
-
-
- Permits plugins to redact data from the diagnostics page, like passwords
-
-
-
-
- This interface has nothing to do with output caching. This allows VirtualFile instances to override the default cache key (.VirtualPath) for source caching of VirtualFile instances.
- See IVirtualFileCache
-
-
-
-
- Implement this if you are caching files provided by a virtual image provider (For example, remote or s3-hosted images).
-
-
-
-
- Returns a cached copy of virtual file if it is cached, and if caching is desired.
-
-
-
-
-
-
-
-
- For plugins that add support for new source file image extensions.
-
-
-
-
- If the plugin adds support for new file extensions (such as "psd"), they should be returned by this method.
-
-
-
-
-
- Tag your plugin with this interface if it supports having multiple instances registered at once
-
-
-
-
- All plugins must implement this. Enables web.config addition and removal.
-
-
-
-
- Installs the plugin in the specified Config instance. The plugin must handle all the work of loading settings, registering the plugin etc.
-
-
-
-
-
-
- Uninstalls the plugin. Should reverse all changes made during Install
-
-
-
-
-
-
- Provides a way to modify settings before they reach the managed API. Does not execute early enough to affect disk caching, although that may change in a later version.
-
-
-
-
- Implementations should support being called on their own result multiple times without behavioral differences. Currently only executed in the managed API, too late to affect the disk cache, but that will probably change (it's likely all ISettingsModifiers will get executed twice, once after PostRewrite and once before the managed API executes).
-
-
-
-
-
-
- Wraps a standard ASP.NET VirtualFile instance in an IVirtualFile-compatible wrapper.
-
-
-
-
- The VirtualFile instance this class is wrapping
-
-
-
-
- For plugins that access the query string (important!)
-
-
-
-
- If the plugin reads any values from the querystring, the names of the keys should be specified here.
- This information is required so that the HttpModule knows when to handle an image request.
-
-
-
-
-
- A virtual file to support IVirtualImageProvider
-
-
-
-
- The virtual path of the file (relative to the domain, like /app/folder/file.ext)
-
-
-
-
- Returns an opened stream to the file contents.
-
-
-
-
-
- Implement this to allow your class (or VirtualPathProvider subclass) to be used without registering it with the whole ASP.NET system.
-
-
-
-
- Returns true if the specified request should be handled by this virtual image provider
-
-
-
-
-
-
-
- Returns a virtual file instance for the specified path and querystring.
-
-
-
-
-
-
-
- For virtual files who want to provide their data in Bitmap form (like a PSD reader or gradient generator). Plugins should never assume this interface will be used, .Open() must also be implemented.
-
-
-
-
- Returns a Bitmap instance of the file's contents
-
-
-
-
-
- Always implement this if possible. Allows caching systems to detect changes to source files and invalidate cached data properly.
-
-
-
-
- The modified (last write time) of the source file, in UTC form.
-
-
Creates an ImageJob that won't run a full build - it will only do enough work in order to supply the requested data fields.
@@ -2134,6 +458,26 @@
+
+
+ Sets CreateParentDirectory to true. Provided for easy chaining so you can do one-liners.
+ new ImageJob(source,dest,settings).CreateDir().Build()
+
+
+
+
+
+ Internal use only.
+ Resolves the specified (potenetially templated) path into a physical path.
+ Applies the AddFileExtension setting using the 'ext' variable.
+ Supplies the guid, settings.*, filename, path, and originalExt variables.
+ The resolver method should supply 'ext', 'width', and 'height' (all of which refer to the final image).
+ If AllowDestinationPathVariables=False, only AddFileExtenson will be processed.
+
+
+
+
+
A list of strings which define properties that can be returned to the caller. "source.width", "source.height", "result.ext", "result.mime" are the most commonly used. Defaults to none
@@ -2170,16 +514,6 @@
The height, in pixels, of the first frame or page in the source image file
-
-
- The width, in pixels, of the first frame or page in the final image file
-
-
-
-
- The height, in pixels, of the first frame or page in the final image file
-
-
The correct file extension for the resulting file stream, without a leading dot. Will be null if the result is not an encoded image.
@@ -2195,11 +529,6 @@
The image processing settings
-
-
- The profiler to report start/stop events to.
-
-
The image processing instructions
@@ -2248,26 +577,6 @@
Defaults to false. When true, the parent directory of the destination filename will be created if it doesn't already exist.
-
-
- Sets CreateParentDirectory to true. Provided for easy chaining so you can do one-liners.
- new ImageJob(source,dest,settings).CreateDir().Build()
-
-
-
-
-
- Internal use only.
- Resolves the specified (potenetially templated) path into a physical path.
- Applies the AddFileExtension setting using the 'ext' variable.
- Supplies the guid, settings.*, filename, path, and originalExt variables.
- The resolver method should supply 'ext', 'width', and 'height' (all of which refer to the final image).
- If AllowDestinationPathVariables=False, only AddFileExtenson will be processed.
-
-
-
-
-
A name/value collection of image processsing instructions. The successor to ResizeSettings.
@@ -2390,6 +699,11 @@
Defines the vertical height of the crop rectangle's coordinate space. For example, setting this to 100 makes the crop Y1 and Y1 values percentages of the image height.
+
+
+ An X1,Y1,X2,Y2 array of coordinates. Unless CropXUnits and CropYUnits are specified, these are in the coordinate space of the original image.
+
+
An X1,Y1,X2,Y2 array of coordinates. Unless CropXUnits and CropYUnits are specified, these are in the coordinate space of the original image.
@@ -2564,297 +878,10 @@
Friendly get/set accessor for the ["borderWidth"] value. Returns null when unspecified.
-
+
- IResponseArgs implementation
-
-
-
-
- Obsolete. Do not use; RequestKey will include the modified date if present.
-
-
-
-
- A callback method that will resize and encode the image into a stream.
-
-
-
-
- A value derived from the request. Can be used as a cache key.
-
-
-
-
- Obsolete. Do not use; RequestKey will include the modified date if present.
-
-
-
-
- The content-type of the data, among other things. Set ResponseHeaders.ApplyDuringPreSendRequestHeaders to automatically
- write caching headers based on ResponseHeaders values.
- Caching systems that use redirects may use this data as hints when configuring caching on the remote server.
-
-
-
-
- The rewritten querystring. Can be useful for caching systems that accept querystring arguments.
-
-
-
-
- Provides cache selection logic
-
-
-
-
- Selects a caching system for the specified request and response
-
-
-
-
-
-
-
- Allows customization of response headers for a processed image, as well as configuration of the caching system.
-
-
-
-
- The mime-type of the output data. Defaults to null.
-
-
-
-
- The cache setting. Defaults to ServerAndPrivate
-
-
-
-
- The UTC time at which the cached data should expire.
- Browsers generally don't re-request resources until the they have expired (unlike modififeddate).
- If MinValue, will be ignored.
-
-
-
-
- The UTC modified date send with the response. Used by browsers with If-Modified-Since to check a cached value is still valid.
- If = MinValue, will be ignored.
-
-
-
-
- When true: If a client requests a refresh, the response will *still* be served from the server cache.
- Defaults to false
-
-
-
-
- ASP.Net sometimes sends Vary: * which obliterates caching. Vary is to be avoided anyhow.
- Defaults to true
-
-
-
-
- These headers should be applied first, prior to the application of other settings
-
-
-
-
- These headers are applied after applying all of the other settings. (and they will overwrite exisiting values).
-
-
-
-
- Returns a collection of dependencies used for invalidating the server cache.
- Note, having items here will disable kernel-mode caching. Perhaps it is better to simply use LastModified
-
-
-
-
-
- A delegate method to apply the values stored in IResponseHeaders to the specified HttpContext.
-
-
-
-
- True if the application should automatically execute ApplyToResponse() during the PreSendRequestHeaders event.
-
-
-
-
- The mime-type of the encoded image. Defaults to null
-
-
-
-
- Provides caching behavior
-
-
-
-
- Returns false if the cache is unable to process the request. If false, the caller should fall back to a different cache
-
-
-
-
-
-
- Must update the cache if needed, then either rewrite, redirect or serve the cached data.
-
-
-
-
-
-
- A callback method that will resize, encode, and write the data to the given stream.
- Callback may throw FileNotFoundException when running on top of an optimistic VPP
-
-
-
-
- A callback method to return the last modified date of the source file if available, or DateTime.MinValue if not available.
-
-
-
-
-
- A collection of data and callbacks that can be passed to a caching object.
-
-
-
-
- A string derived from the request, which can contain any kind of data. To get a cache key that varies with the source modified date,
- it should be combined with the value of GetModifiedDateUTC() and hashed.
-
-
-
-
- The rewritten querystring. Can be useful for caching systems that accept querystring arguments.
-
-
-
-
- A file extension appropriate for the resulting data. May be different than the extension on the original request.
-
-
-
-
- The content-type of the data, among other things. Set ResponseHeaders.ApplyDuringPreSendRequestHeaders to automatically
- write caching headers based on ResponseHeaders values.
- Caching systems that use redirects may use this data as hints when configuring caching on the remote server.
-
-
-
-
- Obsolete. Do not use; RequestKey will include the modified date if present.
-
-
-
-
- Obsolete. Do not use; RequestKey includes all invalidation information
-
-
-
-
- A callback method that will resize, encode, and write the data to the given stream.
-
-
-
-
- Handles reading the <resizer> section from Web.Config
-
-
-
-
- Create a ResizerSection instance that wraps the specified node. The node should be a <resizer> element.
-
-
-
-
-
- Parse the specified XML into a Node. The text should include 1 root element, <resizer>
-
-
-
-
-
- Returns the specified subtree, deep copied so it can be used without locking.
-
-
-
-
-
-
- Called for each child element not specified declaratively
-
-
-
-
-
-
-
- A provider (or selector) of IEncoder instances.
-
-
-
-
- Returns an encoder based on the provided settings and the source object
-
- Request settings, like format, quality, colors, dither, etc.
- May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
-
-
-
-
- An image encoder. Exposes methods for suitability checking, encoding, transparency compatibility checking, and mime-type/extension calculation.
-
-
-
-
- If the encoder can handle the requirements specified by 'settings' and 'source', it should return an encoder instance.
- If not, it should return null.
-
- Request settings, like format, quality, colors, dither, etc.
- May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
- May also be used for palette generation hinting by some encoders.
-
-
-
-
- Encodes the image to the specified stream
-
-
-
-
-
-
- True if the output format will support transparency as it is currently configured.
-
-
-
-
- Returns the appropriate mime-time for the output format as currently configured.
-
-
-
-
- Returns a file extension appropriate for the output format as currently configured, without a leading dot.
-
-
-
-
- What to do about remaining handlers/methods for the specified section
-
-
-
-
- Does nothing
-
-
-
-
- Requests that ImageBuilder cancels the default logic of the method, and stop executing plugin calls for the method immediately.
+ Provides a useable base class that can be used to modify the behavior of ImageBuilder.
+ When registered with an ImageBuilder instance, the ImageBuilder will call the corresponding methods on the extension prior to executing its own methods.
@@ -2942,7 +969,7 @@
-
+
Called for Build() calls that want the result encoded. (Not for Bitmap Build(source,settings) calls.
Only override this method if you need to replace the behavior of image encoding and image processing together, such as adding support
@@ -2952,7 +979,19 @@
-
+
+
+
+
+
+ Most calls funnel through here. Default behavior configures an ImageState instance and calls Process(imageState);
+ Shouldn't be overriden for any reason I can think of - use the appropriate virtual method under Process().
+ If an extension returns a Bitmap instance, it will be used instead of the default behavior.
+ Does NOT dispose of 'source' or 'source's underlying stream.
+
+
+
+
@@ -3221,6 +1260,1639 @@
+
+
+ All plugins must implement this. Enables web.config addition and removal.
+
+
+
+
+ Installs the plugin in the specified Config instance. The plugin must handle all the work of loading settings, registering the plugin etc.
+
+
+
+
+
+
+ Uninstalls the plugin. Should reverse all changes made during Install
+
+
+
+
+
+
+ For plugins that access the query string (important!)
+
+
+
+
+ If the plugin reads any values from the querystring, the names of the keys should be specified here.
+ This information is required so that the HttpModule knows when to handle an image request.
+
+
+
+
+
+ Provides a way to modify settings before they reach the managed API. Does not execute early enough to affect disk caching, although that may change in a later version.
+
+
+
+
+ Implementations should support being called on their own result multiple times without behavioral differences. Currently only executed in the managed API, too late to affect the disk cache, but that will probably change (it's likely all ISettingsModifiers will get executed twice, once after PostRewrite and once before the managed API executes).
+
+
+
+
+
+
+ We duplicate efforts in PostRewrite to ensure that the DiskCache doesn't block configuration changes.
+ This won't help CloudFront, however.
+
+
+
+
+
+
+
+ The default scale mode to use when 'width' and/or 'height' are used, and mode is not 'max'.
+
+
+
+
+ The default scale mode to use when 'maxwidth' and/or 'maxheight' are used (or mode=max).
+
+
+
+
+ Matches /resize(x,y,f)/ syntax
+ Fixed Bug - will replace both slashes.. make first a lookbehind
+
+
+
+
+ Parses and removes the resize folder syntax "resize(x,y,f)/" from the specified file path.
+ Places settings into the referenced querystring
+
+
+ The collection to place parsed values into
+
+
+
+
+ Causes IE6 and earlier to use GIF versions of PNG files.
+ By default, only fixes requests with ?iefix=true in the querystring.
+ When catchall is enabled, it will filter all png images, unless iefix=false on those requests.
+ Not compatible with CDNs or proxy servers, as they do not allow varying by user agent reliably.
+
+
+
+
+ Returns true if the specified querystring and file will cause a PNG file to be returned.
+
+
+
+
+
+
+ Returns true if the user agent string specifies MSIE versions 1 through 6 for Windows. Cached in context.Items after first call.
+
+
+
+
+
+
+ If true, 'iefix=true' will be the default for all PNG images, instead of 'iefix=false'.
+
+
+
+
+ If true, the requests from IE will be HTTP redirected to new URLs. If false, the GIF will be silently served instead of the PNG, without any redirection.
+ A CDN or caching proxy will mess things up regardless, but using redirection ensures that the CDN/proxy never caches the GIF version instead of the PNG.
+
+
+
+
+ Adds URL syntax support for legacy projects:
+ http://webimageresizer.codeplex.com/,
+ http://imagehandler.codeplex.com/,
+ http://bbimagehandler.codeplex.com/,
+ DAMP: http://our.umbraco.org/projects/backoffice-extensions/digibiz-advanced-media-picker,
+ Support for http://bip.codeplex.com/ and http://dynamicimageprocess.codeplex.com/ urls is default since w/h are supported.
+
+
+
+
+ Provides default client-caching behavior. Sends Last-Modified header if present, and Expires header if <clientcache minutes="value" /> is configured.
+ Also defaults Cache-control to Public for anonymous requests (and private for authenticated requests)
+
+
+
+
+ Allows gradients to be dynamically generated like so:
+ /gradient.png?color1=white&color2=black&angle=40&width=20&height=100
+
+
+
+
+ Implement this to allow your class (or VirtualPathProvider subclass) to be used without registering it with the whole ASP.NET system.
+
+
+
+
+ Returns true if the specified file exists.
+
+
+
+
+
+
+
+ Returns a virtual file instance for the specified path and querystring.
+
+
+
+
+
+
+
+ A virtual file to support IVirtualImageProvider
+
+
+
+
+ Returns an opened stream to the file contents.
+
+
+
+
+
+ The virtual path of the file (relative to the domain, like /app/folder/file.ext)
+
+
+
+
+ For virtual files who want to provide their data in Bitmap form (like a PSD reader or gradient generator). Plugins should never assume this interface will be used, .Open() must also be implemented.
+
+
+
+
+ Returns a Bitmap instance of the file's contents
+
+
+
+
+
+ This interface has nothing to do with output caching. This allows VirtualFile instances to override the default cache key (.VirtualPath) for source caching of VirtualFile instances.
+ See IVirtualFileCache
+
+
+
+
+ Redirects image 404 errors to a querystring-specified server-local location,
+ while maintaining querystring values (by default) so layout isn't disrupted.
+
+
+
+ The image to use in place of missing images can be specified by the "404"
+ parameter in the querystring. The "404" value can also refer to a named
+ value in the <plugins>/<Image404> setting in Web.config.
+
+
+
+
+ Using <img src="missingimage.jpg?404=image.jpg&width=200" />
+ with the default setting (<image404 baseDir="~/" />) will
+ redirect to ~/image.jpg?width=200.
+
+
+ You may also configure 'variables', which is the recommended approach.
+ For example, <image404 propertyImageDefault="~/images/nophoto.png" />
+ in the config file, and <img src="missingimage.jpg?404=propertyImageDefault&width=200" />
+ will result in a redirect to ~/images/nophoto.png?width=200.
+ Any querystring values in the config variable take precedence over
+ querystring values in the image querystring. For example,
+ <image404 propertyImageDefault="~/images/nophoto.png?format=png" />
+ in the config file and
+ <img src="missingimage.jpg?format=jpg&404=propertImageDefault&width=200" />
+ will result in a redirect to ~/images/nophoto.png?format=png&width=200.
+
+
+
+
+
+ Implements IHttpHandler, serves content for the NoCache plugin
+
+
+
+
+ IResponseArgs implementation
+
+
+
+
+ A collection of data and callbacks that can be passed to a caching object.
+
+
+
+
+ A string derived from the request, which can contain any kind of data. To get a cache key that varies with the source modified date,
+ it should be combined with the value of GetModifiedDateUTC() and hashed.
+
+
+
+
+ The rewritten querystring. Can be useful for caching systems that accept querystring arguments.
+
+
+
+
+ A file extension appropriate for the resulting data. May be different than the extension on the original request.
+
+
+
+
+ The content-type of the data, among other things. Set ResponseHeaders.ApplyDuringPreSendRequestHeaders to automatically
+ write caching headers based on ResponseHeaders values.
+ Caching systems that use redirects may use this data as hints when configuring caching on the remote server.
+
+
+
+
+ A delegate that returns the modified date of the source data.
+
+
+
+
+ True if a modified date is available for verifying cache integrity.
+
+
+
+
+ A callback method that will resize, encode, and write the data to the given stream.
+
+
+
+
+ A callback method to return the last modified date of the source file if available, or DateTime.MinValue if not.
+
+
+
+
+
+ A callback method that will resize and encode the image into a stream.
+
+
+
+
+ A value derived from the request. Can be used as a cache key.
+
+
+
+
+ True if the source file/record has a modified date
+
+
+
+
+ The content-type of the data, among other things. Set ResponseHeaders.ApplyDuringPreSendRequestHeaders to automatically
+ write caching headers based on ResponseHeaders values.
+ Caching systems that use redirects may use this data as hints when configuring caching on the remote server.
+
+
+
+
+ The rewritten querystring. Can be useful for caching systems that accept querystring arguments.
+
+
+
+
+ Provides cache selection logic
+
+
+
+
+ Selects a caching system for the specified request and response
+
+
+
+
+
+
+
+ Allows customization of response headers for a processed image, as well as configuration of the caching system.
+
+
+
+
+ The mime-type of the output data. Defaults to null.
+
+
+
+
+ The cache setting. Defaults to ServerAndPrivate
+
+
+
+
+ The UTC time at which the cached data should expire.
+ Browsers generally don't re-request resources until the they have expired (unlike modififeddate).
+ If MinValue, will be ignored.
+
+
+
+
+ The UTC modified date send with the response. Used by browsers with If-Modified-Since to check a cached value is still valid.
+ If = MinValue, will be ignored.
+
+
+
+
+ When true: If a client requests a refresh, the response will *still* be served from the server cache.
+ Defaults to false
+
+
+
+
+ ASP.Net sometimes sends Vary: * which obliterates caching. Vary is to be avoided anyhow.
+ Defaults to true
+
+
+
+
+ These headers should be applied first, prior to the application of other settings
+
+
+
+
+ These headers are applied after applying all of the other settings. (and they will overwrite exisiting values).
+
+
+
+
+ Returns a collection of dependencies used for invalidating the server cache.
+ Note, having items here will disable kernel-mode caching. Perhaps it is better to simply use LastModified
+
+
+
+
+
+ A delegate method to apply the values stored in IResponseHeaders to the specified HttpContext.
+
+
+
+
+ True if the application should automatically execute ApplyToResponse() during the PreSendRequestHeaders event.
+
+
+
+
+ Default cache when DiskCache isn't installed.
+ Useful for debugging purposes but unsuited for production use, and will use large quanities of RAM. (Scales to fewer than 5 concurrent requests).
+ Serves content directly to the client from memory.
+
+
+
+
+ Provides caching behavior
+
+
+
+
+ Returns false if the cache is unable to process the request. If false, the caller should fall back to a different cache
+
+
+
+
+
+
+ Must update the cache if needed, then either rewrite, redirect or serve the cached data.
+
+
+
+
+
+
+ Installs the caching system as the first choice.
+
+
+
+
+
+
+ Removes the plugin.
+
+
+
+
+
+
+ Sends the response directly to the client with no caching logic.
+
+
+
+
+
+
+ The mime-type of the encoded image. Defaults to null
+
+
+
+
+ Allows subclasses to be used instead of ImageBuilder. Replacements must override the Create method and call their own constructor instead.
+
+
+
+
+
+ Shortuct to CurrentImageBuilder.Build (Useful for COM clients). Also creates a destination folder if needed, unlike the normal .Build() call.
+
+
+
+
+
+
+
+
+ Returns a deep copy of the specified node
+
+
+
+
+
+ Returns a deep copy if the current state of the configuration tree (starting with the 'resizer' element as the root)
+
+
+
+
+ Replaces the configuration tree with the specified alternative
+
+
+
+
+
+ Replaces the configuration tree with the specified alternative
+
+
+
+
+
+ Writes a diagnostic page to the specified physical path
+
+
+
+
+
+ Returns a string of the diagnostics page
+
+
+
+
+
+ Gets the current (app-wide) config instance.
+
+
+
+
+
+ Access and modify plugins
+
+
+
+
+ Access and modify settings related to the HttpModule pipline. Register URL rewriting hooks, etc.
+
+
+
+
+ Returns a shared instance of ImageManager, (or a subclass if it has been upgraded).
+ Instances change whenever ImageBuilderExtensions change.
+
+
+
+
+
+ The ResizeConfigrationSection is not thread safe, and should not be modified
+ Dynamically loads the ResizerSection from web.config when accessed for the first time.
+ If the resizer node doesn't exist, an empty configuration object is created with just the root resizer node.
+
+
+
+
+ Returns a list of all issues reported by the resizing core, as well as by all the plugins
+
+
+
+
+ Creates a 'gatherer' that pulls issues from IIssueProviders throughout the Config structure. Even plugins are queried.
+
+
+
+
+
+ Security and stability issues.
+
+
+
+
+ Behavioral issues, such as having no registered image encoders
+
+
+
+
+ Errors in the module configuration
+
+
+
+
+ Non-optimal settings
+
+
+
+
+ Domain-relative path which also includes the path info portion. I.e, '/app/folder/file.aspx/path/info' could be a valid value. Relative to the domain root, not the site or app root.
+
+
+
+
+ True if the specified extension is one that the pipeline can handle
+
+
+
+
+
+
+ True if the querystring contains any directives that are understood by the pipeline
+
+
+
+
+
+
+ Removes the first fake extension detected at the end of 'path' (like image.jpg.ashx -> image.jpg).
+
+
+
+
+
+
+ Returns an ImageBuilder instance to use for image processing.
+
+
+
+
+
+ Returns a ICacheProvider instance that provides caching system selection and creation.
+
+
+
+
+
+ Returns an IVirtualFile instance if the specified file exists.
+
+
+
+
+
+
+
+ Returns true if (a) A registered IVirtualImageProvider says it exists, or (b) if the VirtualPathProvider chain says it exists.
+
+
+
+
+
+
+
+ The key in Context.Items to store the modified querystring (i.e, post-rewrite).
+ Allows VirtualPathProviders to access the rewritten data.
+
+
+
+
+ The key in Context.Items to store the IResponseArgs object
+
+
+
+
+ The key in Context.Items to set if we want to cancel MVC routing for the request
+
+
+
+
+ The key in Context.Items to access a the path to use instead of Request.path
+
+
+
+
+ The behavior to use when accessing the file system.
+
+
+
+
+ Get or sets whether the file extension check should be applied to the current request. Defaults to true.
+ If set to true, will only affect the current request, and will only cause the Resizer to evaluate the rewriting rules on the request.
+ Processing may still not occur if no querystring values are specified. Add 'cache=always' to force caching to occur.
+
+
+
+
+ True once the InterceptModule has been installed.
+
+
+
+
+ Returns the value of Context.Items["resizer.newPath"] if present. If not, returns FilePath + PathInfo.
+ Sets Context.Items["resizer.newPath"].
+ Only useful during the Pipeline.PostAuthorizeRequestStart event.
+
+
+
+
+ Populates the cache if it is empty. Not thread safe.
+
+
+
+
+ The specified path must not include a querystring. Slashes, spaces, question marks, ampersands, and colons are not permitted in the extension.
+ If it contains a multipart extension like .txt.zip, only "zip" will be recognized. Must contain a dot - passing in "jpg" will fail.
+
+
+
+
+
+
+ Returns true if any of the querystring keys match any of the directives supported by the pipeline (such as width, height, format, bgcolor, etc)
+
+
+
+
+
+
+ Removes the first fake extensionm detected at the end of 'path'
+
+
+
+
+
+
+ Returns either an IVirtualFile instance or a VirtualFile instance.
+
+
+
+
+
+
+
+ Returns true if (a) A registered IVirtualImageProvider says it exists, or (b) if the VirtualPathProvider chain says it exists.
+
+
+
+
+
+
+
+ Cache selection occurs as follows: (1) The first registered CachingSystem that returns true from .CanProcess() is the default
+ (2) The SelectCachingSystem event is fired, allowing handlers to modify the selected cache.
+ This method may return null.
+
+
+
+
+
+
+
+ Returns a unqiue copy of the image extensions supported by the pipeline. Performs a cached query to all registered IQuerystringPlugin instances.
+ Use IsAcceptedImageType for better performance.
+
+
+
+
+ Returns a unqiue copy of all querystring keys supported by the pipeline. Performs a cached query to all registered IQuerystringPlugin instances.
+ Use HasPipelineDirective for better performance. (binary search)
+
+
+
+
+ Cached access to pipeline.fakeExtensions
+
+
+
+
+ Returns the value of Context.Items["resizer.newPath"] if present. If not, returns FilePath + PathInfo.
+ Sets Context.Items["resizer.newPath"].
+ Only useful during the Pipeline.PostAuthorizeRequestStart event.
+
+
+
+
+ Returns the modified query string. If never set, returns a copy of Request.QueryString.
+ Returns the same instance if called multiple times. Copy it if you want to make changes without causing issues.
+
+
+
+
+ Get or sets whether the file extension check should be applied to the current request. Defaults to true.
+ If set to true, will only affect the current request, and will only cause the Resizer to evaluate the rewriting rules on the request.
+ Processing may still not occur if no querystring values are specified. Add 'cache=always' to force caching to occur.
+
+
+
+
+ Returns true if the current request is being processed and/or cached by the pipeline.
+ Will return false until *after* the FileExists method is called on the VirtualPathProviders, which is after the
+ AuthorizeImage event fires.
+ This will return a usable value if used from VirtualFile.Open(), or if used inside the PreHandleImage event or later.
+
+
+
+
+ Fired once, on the first PostAuthorizeRequest event.
+
+
+
+
+ Fires during the PostAuthorizeRequest phase, prior to any module-specific logic.
+ Executes for every request to the website. Use only as a last resort. Other events occur only for image requests, and thus have lower overhead.
+
+
+
+
+ Fired during PostAuthorizeRequest, after ResizeExtension has been removed.
+ On fired on requests with extensions that match supported image types.
+
+ You can add additonal supported image extentions by registering a plugin that implementes IQuerystringPlugin, or you can add an
+ extra extension in the URL and remove it here. Example: .psd.jpg
+
+
+
+
+ Fired during PostAuthorizeRequest, after Rewrite.
+ Any changes made here (which conflict) will be overwritten by the the current querystring values. I.e, this is a good place to specify default settings.
+ Only fired on accepted image types. (see Rewrite)
+
+
+
+
+ Fired after all other rewrite events.
+ Only fired on accepted image types. (see Rewrite)
+
+
+
+
+ Fired after all rewriting is finished.
+ e.AllowAccess defaults to the result of the UrlAuthorization module's verdict. It can be changed.
+ Set e.AllowAccess to true to cause and 403 Access Dened result.
+
+
+
+
+ Fired when the specified image doesn't exist. Only called for images that would normally be processed.
+ May be called during PostAuthorizeRequest or later - End the request completely with a redirect if you want alternate behavior.
+
+
+
+
+ Fired immediately before the image request is sent off to the caching system for proccessing.
+ Allows modification of response headers, caching arguments, and callbacks.
+
+
+
+
+ The number of images processed by this pipeline.
+
+
+
+
+ True once the InterceptModule has been installed and is intercepting requests.
+
+
+
+
+ Provides thread-safe access to plugin addition, removal, and querying methods
+
+
+
+
+ A provider (or selector) of IEncoder instances.
+
+
+
+
+ Returns an encoder based on the provided settings and the source object
+
+ Request settings, like format, quality, colors, dither, etc.
+ May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
+
+
+
+
+ Creates a new plugin config section, attached to the specified parent
+
+
+
+
+
+ Processes the <plugins> section if they are not already loaded. Thread safe.
+ Only executes once.
+
+
+
+
+ Forces loading of the plugins specified in configuration, even if they have already been loaded. Will add duplicate plugins and throw exceptions if you do not call RemoveAll() first.
+
+
+
+
+ Not thread safe. Performs actual work.
+
+
+
+
+ Returns the subset of installed plugins which implement the specified type or interface
+
+
+
+
+
+
+ Returns all registered instances of the specified plugins
+
+
+
+
+
+
+ Returns true if at least one plugin of the specified type is registered.
+
+
+
+
+
+
+ Returns true if 1 or more instances of the type are registered.
+
+
+
+
+
+
+ Returns the first registerd instance of the specified plugin. For IMultiInstancePlugins, use GetAll()
+
+
+
+
+
+
+ Returns the first registered instance of the specified plugin, or creates a new instance if the plugin isn't installed.
+
+
+
+
+
+
+ Returns the first registered instance of the specified plugin, or installs the given instance instead, then re-tries the query
+
+
+
+
+
+
+
+ Installs the specified plugin, returning the plugin instance.
+ Convenience method, same as plugin.Install(Config.Current).
+
+
+
+
+
+
+ Attempts uninstallation of the specified plugin, returning true if successful.
+ Convenience method, same as plugin.Uninstall(Config.Current).
+
+
+
+
+
+
+ Returns an instance of the first encoder that claims to be able to handle the specified settings.
+ Returns null if no encoders are available.
+
+ Request settings, like format, quality, colors, dither, etc.
+ May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
+ May also be used for palette generation hinting by some encoders.
+
+
+
+
+ This is called to get a sorted list of plugins based on their likelyhood of having the plugin.
+
+
+
+
+
+
+
+ Searches all loaded assemblies for the specified type, applying rules and prefixes to resolve the namespace and assembly.
+ Returns null if it could not find the type, and logs an issue.
+
+
+
+
+
+
+ For use only by plugins during .Uninstall.
+ Removes the specified plugin from AllPlugins, QuerystringPlugins, CachingSystems, ImageEncoders, and ImageBuiderExtensions, based
+ on which interfaces the instance implements.
+ Plugins may register event handlers and modify settings - thus you should use the plugin's method to uninstall them vs. using this method.
+
+
+
+
+
+ Only for use by plugins during IPlugin.Install. Call Plugin.Install instead of this method, since plugins often must perform other initialization actions.
+ Adds the specified plugin to AllPlugins, QuerystringPlugins, CachingSystems, ImageEncoders, and ImageBuiderExtensions, based
+ on which interfaces the instance implements. For ICache and IEncoder, the plugin is inserted at the beginning of CachingSystems and ImageEncoders respectively.
+ To reiterate, plugins may register event handlers and modify settings - thus you should use the plugin's method to uninstall them vs. using this method.
+ Will not register a plugin that is already installed, unless it implementes IMultiInstancePlugin.
+
+
+
+
+
+ Removes all plugins, of every kind. Logs any errors encountered. (Not all plugins support uninstallation)
+
+
+
+
+ Returns true if the <plugins> section has been processed
+
+
+
+
+ Currently registered ICurrentConfigProviders.
+
+
+
+
+ Currently registered set of ImageBuilderExtensions.
+
+
+
+
+ Currently registered IEncoders.
+
+
+
+
+ Currently registered ICache instances
+
+
+
+
+ Plugins which accept querystring arguments are registered here.
+
+
+
+
+ Plugins which accept new file extensions (in the url) are registered here.
+
+
+
+
+ Plugins which provide virtual files are registered here.
+
+
+
+
+ Plugins which modify image processing settings.
+
+
+
+
+ All plugins should be registered here. Used for diagnostic purposes.
+
+
+
+
+ Returns the most recently registered Logging plugin, or null.
+
+
+
+
+ No support for namespaces, no intention of eventual serialization.
+ Everything is case-insensitive, but preserves case. Not thread safe.
+
+
+
+
+ Builds a tree of Nodes from the specified XML subtree. Duplicate attributes are sent to 'ir'
+
+
+
+
+
+
+ Returns the subset of Children with a matching element name. (Case-insensitive)
+
+
+
+
+
+
+ Queryies the subtree for the specified attribute on the specified element. Example selector: element.element.attrname
+ Assumes that the last segment of the selector is an attribute name.
+ Throws an ArgumentException if there is only one segment ( element ).
+ Uses the cache.
+
+
+
+
+
+
+ Sets the specified attribute value, creating parent elements if needed. Clears the query cache.
+
+
+
+
+
+
+ Sets the specified attribute value, creating parent elements if needed. Clears the query cache.
+
+
+
+
+
+
+
+ Traverses the specified path, creating any missing elements along the way. Uses existing nodes if found.
+
+
+
+
+
+
+ Same as query(), except results are cached until clearQueryCache() is called.
+ Faster, but can be incorrect if existing nodes are renamed, moved, or deleted.
+
+
+
+
+
+
+ Makes a recusive copy of the subtree, keeping no duplicate references to mutable types.
+
+
+
+
+
+ Attributes
+
+
+
+
+ Access attributes by name
+
+
+
+
+
+
+ The concatenated text, significant whitespace, and entity references within this element.
+ Not XML compliant for sure.
+
+
+
+
+ The name of the element.
+
+
+
+
+ Child nodes
+
+
+
+
+ Returns true if the element has neither attributes nor children.
+
+
+
+
+ Encapsulates a node/attribute selection query, such as "node.node.attribute"
+
+
+
+
+ Returns a subset of the list starting at the specified index
+
+
+
+
+
+
+ Adds drop shadow capabilities (shadowColor, shadowOffset, and shadowWidth commands)
+
+
+
+
+ Draws a gradient around the specified polygon. Fades from 'inner' to 'outer' over a distance of 'width' pixels.
+
+
+
+
+
+
+
+
+
+ Returns an new NameValueCollection instance that only includes the "preset" and ("hmac" and "urlb64", if specified) querystring pairs from the specified instance.
+
+
+
+
+
+
+
+ If true, the plugin will block all commands except those specified in a preset, and the &preset command itself.
+ Only applies to InterceptModule (the URL API). Does not apply to ImageBuilder.Build calls. To replicate the behavior, simply prevent any querystring keys except 'preset' from being passed to ImageBuilder.Build.
+
+
+
+
+ Allows multi-tenancy support. The 'root' config only needs one plugin, which implements this interface.
+
+
+
+
+ Returns a Config instance appropriate for the current request. If null is returned, the default/root instance will be used.
+ Implementations MUST return the same instance of Config for two identical requests. Multiple Config instances per tenant/area will cause problems.
+ MUST be thread-safe, concurrent calls WILL ocurr, and WILL occur during initial call.
+
+
+
+
+
+ Provides license verification and enforcement services. Do not access directly; use your local embedded static method to verify instance integrity.
+
+
+
+
+ Notify the license service that the given feature is being used for the given domain.
+
+
+
+
+
+
+
+ Configure the display name for the given feature id
+
+
+
+
+
+
+ Returns a changing shared secret to make interface hijacking difficult.
+
+
+
+
+
+
+ Returns a plaintext report on licensing status
+
+ If true, pending verifications will be completed before the method returns
+
+
+
+
+ Provides a place to cache/store licenses. Only responsible for licenses used by plugins attached to the current Config instance.
+
+
+
+
+ Returns a collection containing all licenses for the plugin's Config instance, in encrypted binary form.
+
+
+
+
+
+ Stores the given licenses (excluding those present in web.config).
+
+ A collection of 'description' and 'encrypted binary license' pairs.
+
+
+
+ Permits plugins to redact data from the diagnostics page, like passwords
+
+
+
+
+ Implement this if you are caching files provided by a virtual image provider (For example, remote or s3-hosted images).
+
+
+
+
+ Returns a cached copy of virtual file if it is cached, and if caching is desired.
+
+
+
+
+
+
+
+
+ For plugins that add support for new source file image extensions.
+
+
+
+
+ If the plugin adds support for new file extensions (such as "psd"), they should be returned by this method.
+
+
+
+
+
+ Can be used by plugins to implement 'trial version' functionality. Not currently used.
+
+
+
+
+ The Trial plugin cannot be removed using this method.
+
+
+
+
+
+
+ Determines when the diagnostics page can be viewed.
+
+
+
+
+ Diagnostics are disabled
+
+
+
+
+ Only local requests can access diagnostics
+
+
+
+
+ All hosts can view diagnostics.
+
+
+
+
+ Provides the incredibly helpful /resizer.debug page we all love.
+
+ Mimics the behavior of customErrors by default. Not available if CustomErrors=true or retail=true. Available only to localhost if customErrors=RemoteOnly.
+ Can be overriden by adding in the <resizer> section <diagnostics enableFor="None|AllHosts|LocalHost" />
+
+
+
+
+
+ True if diagnostics can be displayed to the current user.
+ If <diagnostics enableFor="None" />, returns false.
+ If <diagnostics enableFor="Localhost" />, returns false for remote requests
+ If <diagnostics enableFor="AllHosts" />, returns true.
+ If unspecified, uses the same behavior as ASP.NET Custom Errors.
+
+
+
+
+
+
+ Returns the ASP.NET trust level
+
+
+
+
+
+ Tag your plugin with this interface if it supports having multiple instances registered at once
+
+
+
+
+ Wraps a standard ASP.NET VirtualFile instance in an IVirtualFile-compatible wrapper.
+
+
+
+
+ The VirtualFile instance this class is wrapping
+
+
+
+
+ Handles reading the <resizer> section from Web.Config
+
+
+
+
+ Create a ResizerSection instance that wraps the specified node. The node should be a <resizer> element.
+
+
+
+
+
+ Parse the specified XML into a Node. The text should include 1 root element, <resizer>
+
+
+
+
+
+ Returns the specified subtree, deep copied so it can be used without locking.
+
+
+
+
+
+
+ Called for each child element not specified declaratively
+
+
+
+
+
+
+
+ SafeList is mutable, but it uses immutable data structures to minimize the need for locking.
+ The provided manipulation
+ Exposes a immutable list. Changes are made by copying the lists.
+ SafeList is
+ Never perform logic on SafeList directly, always use GetList() or GetCollection() first, followed by SetList().
+ If you need involved list-fu, use ModifyList and specify a callback. It will execute inside a lock, preventing changes on other threads from overwriting each other.
+
+
+
+
+
+ Returns an immutable snapshot of the collection
+
+
+
+
+
+ Returns a mutable snapshot of the list
+
+
+
+
+
+ Replaces the current collection with a new one. (copied to ensure safety)
+ Use ModifyList when modifying the list. Use this only when the previous or current state of the list is irrelevant.
+
+
+
+
+
+ Adds the specified item to the end of the list
+
+
+
+
+
+ Removes the item from the list
+
+
+
+
+
+ Adds the specified item to the beginning of the list
+
+
+
+
+
+ Allows a caller to perform logic on the list inside a lock, and return a modified list.
+ Callbacks should be fast, and should reference the IList they are fed, not this SafeList instance.
+ Calling methods on the SafeList instance will cause a deadlock.
+
+
+
+
+
+ Returns true if the collection contains the specified item at the moment.
+
+
+
+
+
+
+ Returns the first item in the list. May return null if the list is empty.
+
+
+
+
+ Returns the first item in the list. May return null if the list is empty.
+
+
+
+
+ Provides basic encoding functionality for Jpeg, png, and gif output. Allows adjustable Jpeg compression, but doesn't implement indexed PNG files or quantized GIF files.
+
+
+
+
+ An image encoder. Exposes methods for suitability checking, encoding, transparency compatibility checking, and mime-type/extension calculation.
+
+
+
+
+ If the encoder can handle the requirements specified by 'settings' and 'source', it should return an encoder instance.
+ If not, it should return null.
+
+ Request settings, like format, quality, colors, dither, etc.
+ May be a Drawing.Image instance, a path, or null. To provide both, set Image.tag to the path. Helps the encoder detect the original format if the format was not specified.
+ May also be used for palette generation hinting by some encoders.
+
+
+
+
+ Encodes the image to the specified stream
+
+
+
+
+
+
+ True if the output format will support transparency as it is currently configured.
+
+
+
+
+ Returns the appropriate mime-time for the output format as currently configured.
+
+
+
+
+ Returns a file extension appropriate for the output format as currently configured, without a leading dot.
+
+
+
+
+ Returns true if the this encoder supports the specified image format
+
+
+
+
+
+
+ Writes the specified image to the stream using Quality and OutputFormat
+
+
+
+
+
+
+ Tries to parse an ImageFormat from the settings.Format value.
+ If an unrecogized format is specified, returns null.
+ If an unsupported format is specified, it is returned.
+ If *no* format is specified, returns defaultValue.
+
+
+
+
+
+
+
+ Attempts to determine the ImageFormat of the source image. First attempts to parse the path, if a string is present in original.Tag. (or if 'original' is a string)
+ Falls back to using original.RawFormat. Returns null if both 'original' is null.
+ RawFormat has a bad reputation, so this may return unexpected values, like MemoryBitmap or something in some situations.
+
+ The source image that was loaded from a stream, or a string path
+
+
+
+
+ Returns the ImageFormat enumeration value based on the extension in the specified physical path. Extensions can lie, just a guess.
+
+
+
+
+
+
+ Returns an string instance from the specfied ImageFormat. First matching entry in imageExtensions is used.
+ Returns null if not recognized.
+
+
+
+
+
+
+ Returns a dict of (lowercase invariant) image extensions and ImageFormat values
+
+
+
+
+ Returns an ImageFormat instance from the specfied file extension. Extensions lie sometimes, just a guess.
+ returns null if not recognized.
+
+
+
+
+
+
+ NOT thread-safe!
+
+
+
+
+
+
+ Supports Png, Jpeg, Gif, Bmp, and Tiff. Throws a ArgumentOutOfRangeException if not png, jpeg, gif, bmp, or tiff
+
+
+
+
+
+
+ Returns the first ImageCodeInfo instance with the specified mime type. Returns null if there are no matches.
+
+
+
+
+
+
+ Saves the specified image to the specified stream using jpeg compression of the specified quality.
+
+
+ A number between 0 and 100. Defaults to 90 if passed a negative number. Numbers over 100 are truncated to 100.
+ 90 is a *very* good setting.
+
+
+
+
+
+ Saves the image in png form. If Stream 'target' is not seekable, a temporary MemoryStream will be used to buffer the image data into the stream
+
+
+
+
+
+
+ Returns the querystring keys used by DefaultEncoder (quality, format, and thumbnail)
+
+
+
+
+
+ Returns signatures for jpeg, bmp, gif, png, wmf, ico, and tif
+
+
+
+
+
+ If you set this to anything other than Gif, Png, or Jpeg, it will throw an exception. Defaults to Jpeg
+
+
+
+
+ 0..100 value. The Jpeg compression quality. 90 is the best setting. Not relevant in Png or Gif compression
+
+
+
+
+ Returns true if the desired output type supports transparency.
+
+
+
+
+ Returns the default mime-type for the OutputFormat
+
+
+
+
+ Returns the default file extesnion for OutputFormat
+
+
+
+
+ Implements app-wide size Limits on image size
+
+
+
+
+ The image and total size limits
+
+
+
+
+ What to do about remaining handlers/methods for the specified section
+
+
+
+
+ Does nothing
+
+
+
+
+ Requests that ImageBuilder cancels the default logic of the method, and stop executing plugin calls for the method immediately.
+
+
Represents the widths of edges of a box.
@@ -3254,6 +2926,12 @@
+
+
+ Gets edge offsets as a clockwise array, starting with Top.
+
+
+
Returns double.NaN unless all edges are the same width, in which case that width is returned
@@ -3269,229 +2947,6 @@
Returns true if th
-
-
- Gets edge offsets as a clockwise array, starting with Top.
-
-
-
-
-
- Provides a subset of layout logic; specifically determining the crop window, target image size, and (initial) target canvas size.
-
-
-
-
- Encapsulates the state of an image being resized.
- Can be used to simulate a resize as well as actually perform one.
- All code should ignore when Bitmaps and Graphics objects are null, and go about simulating all the mathematical functions as normal.
-
-
-
-
-
- The commands to apply to the bitmap
-
-
-
-
- The original size of the source bitmap. Use this instead of accessing the bitmap directly for this information, since the bitmap may not always be available
-
-
-
-
- Rendering choices can depend on whether the output format supports transparency.
-
-
-
-
- The layout object. Used for calculated and flowing the layout of the various rings around the image (padding, border, effect, margin, etc).
-
-
-
-
- The size of the target bitmap image. Set after all sizing operations have completed.
-
-
-
-
- The dimensions of the bitmap afer all operations have been applied to it (Calling FlipRotate can change the bitmap dimensions).
-
-
-
-
- The rectangular portion of the source image to copy
-
-
-
-
- (read-only) Same as copyRect.Size, convenience property.
-
-
-
-
- The source bitmap. If null, skip drawing commands, but continue layout logic.
-
-
-
-
- An optional intermediate bitmap, created by plugins who need to process the source bitmap it gets rendered to destBitmap. If defined, it should be used instead of sourceBitmap during RenderImage(), and disposed immediately after use.
-
-
-
-
- If 'sourceBitmap' is CMYK and `preRenderBitmap` is null, converts `sourceBitmap` to RGB and stores in 'preRenderBitmap'
-
-
-
-
- Clones 'sourceBitmap' into 'preRenderBitmap' if null.
-
-
-
-
- Applies copyRect (if it will have any effect), placing the result in preRenderBitmap, and resetting copyRect
-
-
-
-
- Ensures that the working bitmap is in 32bpp RGBA format - otherwise it is converted.
-
-
-
-
- The destination bitmap. If null, skip drawing commands, but continue layout logic.
-
-
-
-
- A graphics object to write to the destination bitmap. If null, skip drawing commands, but continue layout logic.
-
-
-
-
- Allows color correction/modification during the image copy.
-
-
-
-
- Allows extensions to store data along with the image state
-
-
-
-
- Disposes sourceBitmap, destGraphics, destBitmap, and copyAttributes if they are non-null
-
-
-
-
- Provides a useable base class that can be used to modify the behavior of ImageBuilder.
- When registered with an ImageBuilder instance, the ImageBuilder will call the corresponding methods on the extension prior to executing its own methods.
-
-
-
-
- This polygon participates in the layout phase, and reserves space when added. Affected by all batch operations. Will be returned by LastRing until a new ring is added.
-
-
-
-
- Doesn't participate in layout, takes no space, but is affected by batch operations. Will never be returned by LastRing and ignored when calculating bounding boxes.
-
-
-
-
- Completely ignored by all operations, left intact.
-
-
-
-
- How the pointsToTranslate should be translated if they are cropped out of the destination image.
-
-
-
-
- An ordered, named collection of polygons.
- pointsToTranslate, imageOuterEdge, imageAreaOuterEdge.
-
-
-
-
-
-
- Access and set the Point[] arrays of rings by key. Case-insensitive.
-
-
-
-
-
-
- Returns the last ring that was added. Only returns PointSets where flags = Ring
-
-
-
-
- Inflates the last ring using the specified padding options. Returns the resulting ring object
-
-
-
-
-
-
-
- Add points this way to see where they will occur on the destination image
-
-
-
-
-
-
-
- Gets a bounding box that encloses all rings that don't have ExcludeFromBoundingBox set.
-
-
-
-
-
- Returns a rectangle representing the given ring - if it is an axis-parallel rectangle. Otherwise returns null;
-
-
-
-
-
-
- Rotates all existing rings (Except those flagged ignore)
-
-
-
-
-
-
-
- Normalizes all rings and invisible polygons so that the outermost ring's bounding box starts at the specified orign.
-
-
-
-
-
-
- Scales all rings and invisible polygons by the specified factor, around the specified point.
-
-
-
-
-
-
- Translates and scales all rings and invisible polygons as specified.
-
-
-
-
-
-
-
-
-
Output image formats
@@ -3789,27 +3244,6 @@
Shouldn't be used except to make a factory instance.
-
-
- Handles the encoder selection and provision proccess.
-
-
-
-
- May be null. A class to modify or normalize ResizeSettings instances before they are used.
-
-
-
-
- Provides a resolution service for app-relative URLs.
-
-
-
-
- Returns a shared instance of ImageBuilder or a subclass, equivalent to Config.Current.CurrentImageBuilder
-
-
-
Create a new instance of ImageBuilder using the specified extensions, encoder provider, file provider, and settings filter. Extension methods will be fired in the order they exist in the collection.
@@ -3956,22 +3390,22 @@
-
+
Override this when you need to override the behavior of image encoding and/or Bitmap processing
Not for external use. Does NOT dispose of 'source' or 'source's underlying stream.
-
+
-
+
Override this when you need to override the behavior of Bitmap processing.
Not for external use. Does NOT dispose of 'source' or 'source's underlying stream.
-
+
True if the output method will support transparency. If false, the image should be provided a matte color
@@ -4049,6 +3483,27 @@
+
+
+ Handles the encoder selection and provision proccess.
+
+
+
+
+ May be null. A class to modify or normalize ResizeSettings instances before they are used.
+
+
+
+
+ Provides a resolution service for app-relative URLs.
+
+
+
+
+ Returns a shared instance of ImageBuilder or a subclass, equivalent to Config.Current.CurrentImageBuilder
+
+
+
Monitors incoming image requests to determine if resizing (or other processing) is being requested.
@@ -4060,11 +3515,6 @@
-
-
- Current configuration. Same as Config.Current.Pipeline
-
-
This is where we filter requests and intercept those that want resizing performed.
@@ -4076,24 +3526,42 @@
-
+
Generates the resized image to disk (if needed), then rewrites the request to that location.
Perform 404 checking before calling this method. Assumes file exists.
Called during PostAuthorizeRequest
-
+
+
We don't actually send the data - but we still want to control the headers on the data.
- PreSendRequestHeaders allows us to change the content-type and cache headers at exactly the last moment
+ PreSendRequestHeaders allows us to change the content-type and cache headers at excatly the last
+
+
+ Current configuration. Same as Config.Current.Pipeline
+
+
+
+
+ A callback method that will resize, encode, and write the data to the given stream.
+ Callback may throw FileNotFoundException when running on top of an optimistic VPP
+
+
+
+
+ A callback method to return the last modified date of the source file if available, or DateTime.MinValue if not available.
+
+
+
Represents an non-recoverable exception that occured while processing the image.
@@ -4117,46 +3585,238 @@
One or more source files was missing
-
+
- Wraps a , optionally overriding the State object (since the Task Asynchronous Pattern doesn't normally use it).
+ Encapsulates the state of an image being resized.
+ Can be used to simulate a resize as well as actually perform one.
+ All code should ignore when Bitmaps and Graphics objects are null, and go about simulating all the mathematical functions as normal.
+
- Class copied from System.Web.Mvc, but with modifications
-
+
- Initializes a new instance of the class.
+ The commands to apply to the bitmap
- The to wrap.
- User-defined object that qualifies or contains information about an asynchronous operation.
-
+
- Gets a user-defined object that qualifies or contains information about an asynchronous operation.
+ The original size of the source bitmap. Use this instead of accessing the bitmap directly for this information, since the bitmap may not always be available
- A user-defined object that qualifies or contains information about an asynchronous operation.
-
+
- Gets a that is used to wait for an asynchronous operation to complete.
+ Rendering choices can depend on whether the output format supports transparency.
- A that is used to wait for an asynchronous operation to complete.
-
+
- Gets a value indicating whether the asynchronous operation completed synchronously.
+ The layout object. Used for calculated and flowing the layout of the various rings around the image (padding, border, effect, margin, etc).
- true if the asynchronous operation completed synchronously; otherwise, false.
-
+
- Gets a value indicating whether the asynchronous operation has completed.
+ The size of the target bitmap image. Set after all sizing operations have completed.
- true if the operation is complete; otherwise, false.
-
+
- Gets the task.
+ The dimensions of the bitmap afer all operations have been applied to it (Calling FlipRotate can change the bitmap dimensions).
+
+
+
+
+ The rectangular portion of the source image to copy
+
+
+
+
+ The source bitmap. If null, skip drawing commands, but continue layout logic.
+
+
+
+
+ An optional intermediate bitmap, created by plugins who need to process the source bitmap it gets rendered to destBitmap. If defined, it should be used instead of sourceBitmap during RenderImage(), and disposed immediately after use.
+
+
+
+
+ If 'sourceBitmap' is CMYK and `preRenderBitmap` is null, converts `sourceBitmap` to RGB and stores in 'preRenderBitmap'
+
+
+
+
+ Clones 'sourceBitmap' into 'preRenderBitmap' if null.
+
+
+
+
+ Applies copyRect (if it will have any effect), placing the result in preRenderBitmap, and resetting copyRect
+
+
+
+
+ Ensures that the working bitmap is in 32bpp RGBA format - otherwise it is converted.
+
+
+
+
+ The destination bitmap. If null, skip drawing commands, but continue layout logic.
+
+
+
+
+ A graphics object to write to the destination bitmap. If null, skip drawing commands, but continue layout logic.
+
+
+
+
+ Allows color correction/modification during the image copy.
+
+
+
+
+ Disposes sourceBitmap, destGraphics, destBitmap, and copyAttributes if they are non-null
+
+
+
+
+ (read-only) Same as copyRect.Size, convenience property.
+
+
+
+
+ Allows extensions to store data along with the image state
+
+
+
+
+ An ordered, named collection of polygons.
+ pointsToTranslate, imageOuterEdge, imageAreaOuterEdge.
+
+
+
+
+
+
+ Inflates the last ring using the specified padding options. Returns the resulting ring object
+
+
+
+
+
+
+
+ Add points this way to see where they will occur on the destination image
+
+
+
+
+
+
+
+ Gets a bounding box that encloses all rings that don't have ExcludeFromBoundingBox set.
+
+
+
+
+
+ Rotates all existing rings (Except those flagged ignore)
+
+
+
+
+
+
+
+ Normalizes all rings and invisible polygons so that the outermost ring's bounding box starts at the specified orign.
+
+
+
+
+
+
+ Scales all rings and invisible polygons by the specified factor, around the specified point.
+
+
+
+
+
+
+ Translates and scales all rings and invisible polygons as specified.
+
+
+
+
+
+
+ Access and set the Point[] arrays of rings by key. Case-insensitive.
+
+
+
+
+
+
+ Returns the last ring that was added. Only returns PointSets where flags = Ring
+
+
+
+
+ This polygon participates in the layout phase, and reserves space when added. Affected by all batch operations. Will be returned by LastRing until a new ring is added.
+
+
+
+
+ Doesn't participate in layout, takes no space, but is affected by batch operations. Will never be returned by LastRing and ignored when calculating bounding boxes.
+
+
+
+
+ Completely ignored by all operations, left intact.
+
+
+
+
+ How the pointsToTranslate should be translated if they are cropped out of the destination image.
+
+
+
+
+ Enforces two kinds of maximum size constraints: a Total size limit, and an Image size limit.
+ Image limits do not include padding, border, or effect widths, and automatically shrink the 'width/height/maxwidth/maxheight' values to fit within the limits.
+ Total limits are absolute and apply to the actual result dimensions, causing an exception if they are exceeded.
+ Limits are checked during the layout phase, prior to resource-intensive bitmap operations.
+
+
+
+
+ The maximum final size an image generated by ImageBuilder can be.
+ Defaults to 3200x3200
+
+
+
+
+ What action to take when the total size of the final image would exceed the TotalSize value.
+ Defaults to ThowException
+
+
+
+
+ Returns true if ImageSize is specified.
+
+
+
+
+ The maximum size an un-rotated image can be drawn when creating a resized image.
+ Rotation will increase the total size, as will any borders, paddings, margins, or
+ effects. Not effective at preventing attacks, use totalSize.
+ If larger values are specified in a querystring, they will automatically
+ be scaled to fit within these dimensions.
+ Defaults to 0x0, which means no limits
+
+
+
+
+
@@ -4174,16 +3834,6 @@
A set of utility methods for manipulating virtual paths
-
-
- Returns HostingEnvironment.ApplicationVirtualPath or "/", if asp.net is not running
-
-
-
-
- If not running in ASP.NET, returns the folder containing the DLL.
-
-
Should be called SetFullExtension.
@@ -4348,32 +3998,8 @@
-
-
- Parses the querystring from the given path into a NameValueCollection.
- accepts "file?key=value" and "?key=value&key2=value2" formats. (no path is required)
- UrlDecodes keys and values. Does not enforce correct syntax, I.E. '?key=value?key2=value2' is allowed. However, '&key=value?key2=value' will only get key2 parsed.
- When allowSemicolons is true, semicolon paths like ';key=value;key2=value2' are allowed, as are hybrid paths: ';key=value?key2=value2&key3=value3'.
-
-
-
-
-
-
-
- Parses the querystring from the given path into a NameValueCollection.
- accepts "file?key=value" and "?key=value&key2=value2" formats. (no path is required)
- UrlDecodes keys and values. Does not enforce correct syntax, I.E. '?key=value?key2=value2' is allowed. However, '&key=value?key2=value' will only get key2 parsed.
- When allowSemicolons is true, semicolon paths like ';key=value;key2=value2' are allowed, as are hybrid paths: ';key=value?key2=value2&key3=value3'.
-
- Does NOT parse fragments correctly.
-
-
-
- Returns the portion of the 'path' before the querystring. May include the scheme, server, port, path and path info, depending upon what 'path' contained.
-
-
-
+
+
Parses a querystring into a name/value collection. The given string cannot include path or fragment information - it must be *just* the querystring.
@@ -4459,13 +4085,6 @@
-
-
- A method that resolves variable names to values for the ResolveVariablesInPath method
-
-
-
-
Returns a new collection containing only the specified keys from the old one
@@ -4474,12 +4093,21 @@
-
+
- Returns true if the current AppDomain has unrestricted .NET FileIOPermission to the given paths.
- Does NOT check NTFS permissions; that's completely separate.
+ Returns HostingEnvironment.ApplicationVirtualPath or "/", if asp.net is not running
-
+
+
+
+ If not running in ASP.NET, returns the folder containing the DLL.
+
+
+
+
+ A method that resolves variable names to values for the ResolveVariablesInPath method
+
+
@@ -4577,7 +4205,7 @@
Returns a bounding box for the specified set of points. Odd points are Y values, even points are X values
-
+
@@ -4737,13 +4365,6 @@
-
-
- Round a floating-point rectangle by apply ceil to x/y and floor to width/height
-
-
-
-
Aligns the specified rectangle object with its reference ('container') rectangle using the specified alignment. The container can be smaller than 'obj'.
@@ -4786,8 +4407,8 @@
Returns the distance between two points
-
-
+
+
@@ -4841,98 +4462,15 @@
-
+
- A Stream utility class that helps to provide seekability to any source
- stream.
+ Always implement this if possible. Allows caching systems to detect changes to source files and invalidate cached data properly.
-
+
- Returns a seekable stream for a given source stream. If wrapped,
- the source stream will be disposed when the returned stream is.
+ The modified (last write time) of the source file, in UTC form.
- The stream to wrap or return.
- If the source stream is already seekable, it is returned
- unwrapped. If not, it is wrapped in a SeekableStreamWrapper.
-
-
-
- Returns a seekable stream for a given source stream. If wrapped,
- the source stream will be disposed when the returned stream is.
-
- The stream to wrap or return.
- Whether to dispose the source stream
- when the wrapper is disposed. If a wrapper is created, this
- parameter will be true on the return to ensure the wrapper
- gets properly disposed.
- If the source stream is already seekable, it is returned
- unwrapped. If not, it is wrapped in a SeekableStreamWrapper.
-
-
-
- Disposes the seekable stream wrapper, and the wrapped stream if
- originally requested.
-
-
-
-
-
- Gets whether the stream wrapper can be written to or not.
- This is only true while the wrapper is being initialized, and
- otherwise false for all other callers.
-
-
-
-
- Parses lists in the form "3,4,5,2,5" and "(3,4,40,50)". If a number cannot be parsed (i.e, number 2 in "5,,2,3") defaultValue is used.
-
-
-
-
-
-
-
- Copies all remaining data from 'source' to 'dest'
-
-
-
-
-
-
- Returns RotateNoneFlipNone if not a recognized value.
-
-
-
-
-
-
- Returns 0 if not a recognized value. Rounds the value to 0, 90, 180, or 270
-
-
-
-
-
- Throws an exception if the specified value is unsupported. Rotation values are not supported, and should be specified with the Rotate or srcRotate command.
-
-
-
-
-
- Parses padding, allowing syntax (all) and (left, top, right, bottom). Parens are optional.
-
-
-
-
-
-
- Draws a gradient around the specified polygon. Fades from 'inner' to 'outer' over a distance of 'width' pixels.
-
-
-
-
-
-
@@ -4984,6 +4522,48 @@
The desired image format, like 'jpg', 'gif', or 'png'. Leave null if you want to preserve the original format.
+
+
+ Returns true if any of the specified keys are present in this NameValueCollection
+
+
+
+
+
+
+ If 'thumbnail' and 'format' are not specified, sets 'format' to the specified value.
+
+
+
+
+
+ Returns a string containing all the settings in the class, in querystring form. Use ToStringEncoded() to get a URL-safe querystring.
+ This method does not encode commas, spaces, etc.
+
+
+
+
+
+ Returns a querystring with all the settings in this class. Querystring keys and values are URL encoded properly.
+
+
+
+
+
+ This method will 'normalize' command aliases to the primary key name and resolve duplicates.
+ w->width, h->height, sourceFlip->sFlip, thumbnail->format
+
+
+
+
+ Normalizes a command that has two possible names.
+ If either of the commands has a null or empty value, those keys are removed.
+ If both the the primary and secondary are present, the secondary is removed.
+ Otherwise, the secondary is renamed to the primary name.
+
+
+
+
["width"]: Sets the desired width of the image. (minus padding, borders, margins, effects, and rotation).
@@ -5024,13 +4604,6 @@
["mode"]: Sets the fit mode for the image. max, min, pad, crop, carve, stretch
-
-
- Returns true if any of the specified keys are present in this NameValueCollection
-
-
-
-
["rotate"] The degress to rotate the image clockwise. -360 to 360.
@@ -5151,40 +4724,263 @@
0 indicates that the crop values are relative to the original size of the image.
-
+
- If 'thumbnail' and 'format' are not specified, sets 'format' to the specified value.
+ A Stream utility class that helps to provide seekability to any source
+ stream.
-
-
+
- Returns a string containing all the settings in the class, in querystring form. Use ToStringEncoded() to get a URL-safe querystring.
- This method does not encode commas, spaces, etc.
+ Returns a seekable stream for a given source stream. If wrapped,
+ the source stream will be disposed when the returned stream is.
+
+ The stream to wrap or return.
+ If the source stream is already seekable, it is returned
+ unwrapped. If not, it is wrapped in a SeekableStreamWrapper.
+
+
+
+ Returns a seekable stream for a given source stream. If wrapped,
+ the source stream will be disposed when the returned stream is.
+
+ The stream to wrap or return.
+ Whether to dispose the source stream
+ when the wrapper is disposed. If a wrapper is created, this
+ parameter will be true on the return to ensure the wrapper
+ gets properly disposed.
+ If the source stream is already seekable, it is returned
+ unwrapped. If not, it is wrapped in a SeekableStreamWrapper.
+
+
+
+ Disposes the seekable stream wrapper, and the wrapped stream if
+ originally requested.
+
+
+
+
+
+ Gets whether the stream wrapper can be written to or not.
+ This is only true while the wrapper is being initialized, and
+ otherwise false for all other callers.
+
+
+
+
+ Copies a read stream to a write stream.
+
+
+
+
+
+
+ Copies the remaining portion of the specified stream to a byte array of exact size.
+
+
+
+
+
+
+ Builds a key for the cached version, using the hashcode of the normalized URL.
+ if subfolders > 1, dirSeparator will be used to separate the subfolder and the key.
+ No extension is appended.
+ I.e, a13514\124211ab132592 or 12412ababc12141
+
+
+
+
+
+
+
+
+ Returns a string for the subfolder name. The bits used are from the end of the hash - this should make
+ the hashes in each directory more unique, and speed up performance (8.3 filename calculations are slow when lots of files share the same first 6 chars.
+ Returns null if not configured. Rounds subfolders up to the nearest power of two.
+
+
+
+
+
+
+
+ Parses lists in the form "3,4,5,2,5" and "(3,4,40,50)". If a number cannot be parsed (i.e, number 2 in "5,,2,3") defaultValue is used.
+
+
+
+
+
+
+
+ Copies all remaining data from 'source' to 'dest'
+
+
+
+
+
+
+ Returns RotateNoneFlipNone if not a recognized value.
+
+
+
+
+
+
+ Returns 0 if not a recognized value. Rounds the value to 0, 90, 180, or 270
-
+
- Returns a querystring with all the settings in this class. Querystring keys and values are URL encoded properly.
+ Throws an exception if the specified value is unsupported. Rotation values are not supported, and should be specified with the Rotate or srcRotate command.
-
+
- This method will 'normalize' command aliases to the primary key name and resolve duplicates.
- w->width, h->height, sourceFlip->sFlip, thumbnail->format
+ Parses padding, allowing syntax (all) and (left, top, right, bottom). Parens are optional.
+
+
+
+
+
+
+ Draws a gradient around the specified polygon. Fades from 'inner' to 'outer' over a distance of 'width' pixels.
+
+
+
+
+
+
+
+
+
+ Functions exactly like an IIS virtual folder, but doesn't require IIS configuration.
-
+
- Normalizes a command that has two possible names.
- If either of the commands has a null or empty value, those keys are removed.
- If both the primary and secondary are present, the secondary is removed.
- Otherwise, the secondary is renamed to the primary name.
+ Registers the VirtualFolder plugin as a virtual path provider.
+
+
+
+
+
+ Converts relative and app-relative paths to domain-relative virtual paths.
+
+
+
+
+
+
+ Attempts to convert a phyiscal path into a collapsed rooted physical path.
+
+
+
+
+
+
+ Collapses any .. segments
+
+
+
+
+
+
+ Converts any virtual path in this folder to a physical path. Returns null if the virtual path is outside the folder.
+
+
+
+
+
+
+ Returns true if the specified path is inside this virtual folder
+
+
+
+
+
+
+ Returns true if (a) we have IOPermission, (b) the path is under our prefix, (c) the
+ expected physical file does not exist (because we shouldn't interfere in that case), and
+ (d) the other VPPs don't believe the file exists.
+
+
+
+
+
+
+ Returns the LastWriteTimeUtc value for the specified virtual file in this folder, or DateTime.MinValue if missing.
+
+
+
+
+
+
+ Returns true if the file exists in this virtual folder, and would not be masking an existing file.
+ Returns false if NoIOPermission is true.
+
+
+
+
+
+
+
+ Unless the path is not within the virtual folder, or IO permissions are missing, will return an IVirtualFile instance for the path.
+ The file may or may not exist.
+
+
+
+
+
+
+
+ For internal use only by the .NET VPP system.
+
+
+
+
+
+
+ For internal use only by the .NET VPP system.
+
+
+
+
+
+
+ For internal use only by the .NET VPP system.
+
+
+
+
+
+
+
+
+ True if the provider attempted to register itself as a VirtualPathProvider and failed due to limited security clearance.
+ False if it did not attempt (say, due to missing IOPermission) , or if it succeeded.
+
+
+
+
+ If true, the plugin will attempt to register itself as an application-wide VirtualPathProvider instead of a image resizer-specific IVirtualImageProvider.
+
+
+
+
+ The virtual path served by the VirtualFolder
+
+
+
+
+ The physical path
+
+
+
+
+ True if the plugin has detected it doesn't have sufficient IOPermission to operate.
-
-
diff --git a/Projects/WebGIM/packages/ImageResizer.3.4.3/lib/ImageResizer.dll b/Projects/WebGIM/packages/ImageResizer.3.4.3/lib/ImageResizer.dll
new file mode 100644
index 0000000..94a482c
Binary files /dev/null and b/Projects/WebGIM/packages/ImageResizer.3.4.3/lib/ImageResizer.dll differ
diff --git a/Projects/WebGIM/packages/ImageResizer.4.0.4/ImageResizer.4.0.4.nupkg b/Projects/WebGIM/packages/ImageResizer.4.0.4/ImageResizer.4.0.4.nupkg
deleted file mode 100644
index 61d3a9c..0000000
Binary files a/Projects/WebGIM/packages/ImageResizer.4.0.4/ImageResizer.4.0.4.nupkg and /dev/null differ
diff --git a/Projects/WebGIM/packages/ImageResizer.4.0.4/lib/net45/ImageResizer.dll b/Projects/WebGIM/packages/ImageResizer.4.0.4/lib/net45/ImageResizer.dll
deleted file mode 100644
index 931a695..0000000
Binary files a/Projects/WebGIM/packages/ImageResizer.4.0.4/lib/net45/ImageResizer.dll and /dev/null differ
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/ImageResizer.Plugins.DiskCache.3.4.3.nupkg b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/ImageResizer.Plugins.DiskCache.3.4.3.nupkg
new file mode 100644
index 0000000..c2949f9
Binary files /dev/null and b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/ImageResizer.Plugins.DiskCache.3.4.3.nupkg differ
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/content/Web.config.transform b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/content/Web.config.transform
similarity index 100%
rename from Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/content/Web.config.transform
rename to Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/content/Web.config.transform
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/lib/net45/ImageResizer.Plugins.DiskCache.XML b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/lib/ImageResizer.Plugins.DiskCache.XML
similarity index 82%
rename from Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/lib/net45/ImageResizer.Plugins.DiskCache.XML
rename to Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/lib/ImageResizer.Plugins.DiskCache.XML
index 92f48d4..fba538e 100644
--- a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/lib/net45/ImageResizer.Plugins.DiskCache.XML
+++ b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/lib/ImageResizer.Plugins.DiskCache.XML
@@ -4,16 +4,12 @@
ImageResizer.Plugins.DiskCache
-
-
- How many bytes of buffered file data to hold in memory before refusing futher queue requests and forcing them to be executed synchronously.
-
-
-
+
If the collection contains the specified item, it is returned. Otherwise, null is returned.
-
+
+
@@ -33,134 +29,222 @@
Returns false when (a) the specified AsyncWrite value already exists, (b) the queue is full, or (c) the thread pool queue is full
-
-
+
- Returns the UTC time this AsyncWrite object was created.
+ How many bytes of buffered file data to hold in memory before refusing futher queue requests and forcing them to be executed synchronously.
-
-
- Returns the length of the Data
-
-
-
-
-
- Returns the length of the buffer capacity
-
-
-
Wraps the data in a readonly MemoryStream so it can be accessed on another thread
-
+
- Handles access to a disk-based file cache. Handles locking and versioning.
- Supports subfolders for scalability.
+ Returns the UTC time this AsyncWrite object was created.
-
+
- Fired immediately before GetCachedFile return the result value.
+ Defaults to 10MB limit, and samples usage over the last 10 minutes when deciding what to remove. Stuff not used in the last 10 minutes gets discarded even if the limit hasn't been reached.
-
+
- Provides string-based locking for file write access.
+ Implements IHttpHandler, serves content for the NoCache plugin
-
+
- Provides string-based locking for image resizing (not writing, just processing). Prevents duplication of efforts in asynchronous mode, where 'Locks' is not being used.
+ Throws an exception if the class is already modified
-
+
- Contains all the queued and in-progress writes to the cache.
+ Loads the settings from 'c', starts the cache, and registers the plugin.
+ Will throw an invalidoperationexception if already started.
-
-
-
- Provides an in-memory index of the cache.
-
-
-
-
- If the cached data exists and is up-to-date, returns the path to it. Otherwise, this function tries to cache the data and return the path.
-
- The basis for the cache key.
- The extension to use for the cached file.
- A method that accepts a Stream argument and writes the data to it.
- =
+
-
+
- May return either a physical file name or a MemoryStream with the data.
- Faster than GetCachedFile, as writes are (usually) asynchronous. If the write queue is full, the write is forced to be synchronous again.
- Identical to GetCachedFile() when asynchronous=false
+ Returns true if the configured settings are valid and .NET (not NTFS) permissions will work.
-
-
-
-
-
+
- Returns true if either (a) the file was written, or (b) the file already existed with a matching modified date.
- Returns false if the in-process lock failed. Throws an exception if any kind of file or processing exception occurs.
+ Returns true if .NET permissions allow writing to the cache directory. Does not check NTFS permissions.
-
-
-
-
-
-
-
+
- Provides locking based on a string key.
- Locks are local to the LockProvider instance.
- The class handles disposing of unused locks. Generally used for
- coordinating writes to files (of which there can be millions).
- Only keeps key/lock pairs in memory which are in use.
- Thread-safe.
+ Attempts to start the DiskCache using the current settings. Returns true if succesful or if already started. Returns false on a configuration error.
+ Called by Install()
-
+
- The only objects in this collection should be for open files.
+ Returns true if stopped succesfully. Cannot be restarted
+
+
+
+
+
+ Sets the location of the cache directory.
+ Can be a virtual path (like /App/imagecache) or an application-relative path (like ~/imagecache, the default).
+ Relative paths are assummed to be relative to the application root.
+ All values are converted to virtual path format upon assignment (/App/imagecache)
+ Will throw an InvalidOperationException if changed after the plugin is installed.
-
+
- Synchronization object for modifications to the 'locks' dictionary
+ Returns the physical path of the cache directory specified in VirtualCacheDir.
-
+
- Returns true if the given key *might* be locked.
+ Returns true if the DiskCache instance is operational.
+
+
+
+
+ The estimated ram usage for the entire cache. Relies upon the accuracy of the calculator delegate
+
+
+
+
+ Specifies counter granularity, memory limits, cleanup intervals, and threading optimization level.
+
+
+
+
+ Whether to optimize for performance or counter accuracy. Defaults to Fast
+
+
+
+
+ How granular to track the time. For example, with a granularity of 8 (default), and an 8-minute tracking duration, the counter will track the last 7-8 minutes (maximum 0-59.9 second time window variance).
+
+
+
+
+ Specifies a hard limit on the number of bytes used for tracking purposes. Causes the smallest-valued items to get discarded first. Doesn't count key size unless SetCustomSize is called on the items. Set to 0 to disable (default)
+
+
+
+
+ Specifies how often to eliminate 0-valued items from the dictionary. Defaults to 20 seconds. Only potentially triggered by .Increment() or PingCleanup() calls.
+
+
+
+
+ The estimated size (in bytes) of a counter (excluding the key). Based on CounterGranularity
+
+
+
+
+ Much faster than accurate mode, but at the expense of extremely rare counter inaccuracies. Irrelevant in light of counter granularity, usually.
+
+
+
+
+ Maintains a dictionary of keys to counters. Counters track how many events have occured during the last X minutes/seconds/ticks for the given item.
+ Can enforce size limits and cleanup empty counters on an inverval.
+
+
+
+
+
+ For incrementing and finding counters based on keys
+
+
+
+
+ Purely for cleanup purposes. Allows fast removal of pairs based on the EventCounter instance.
+
+
+
+
+ Lock for access to dictionaries
+
+
+
+
+ Lock on EventCounter.sortValue members. Redundant with cleanupLock implemented.
+
+
+
+
+ Lock to prevent concurrent cleanups from occuring
+
+
+
+
+ Lock to prevent duplicate work items from being scheduled.
+
+
+
+
+ Starts cleanup on a thread pool thread if it hasn't been started within the desired interval. If cleanup starts and other cleanup is running, it cancels. The assumption is that one cleanup of either type is enough within the interval.
+
+
+
+
+ Performs cleanup on the dictionaries in either MakeRoom or Maintenance mode. Returns true if the goal was achieved, false if the cleanup was canceled because another cleanup was executing conurrently.
+
+
+
+
+
+ Increment the counter for the given item. Pings cleanup as well.
+
+
+ Sets the custom size offset for the specified key (used for cleanup purposes). If -1, existing value will remain unchanged.
+
+
+
+ Calculate the counter value for the given item
-
+
- Attempts to execute the 'success' callback inside a lock based on 'key'. If successful, returns true.
- If the lock cannot be acquired within 'timoutMs', returns false
- In a worst-case scenario, it could take up to twice as long as 'timeoutMs' to return false.
+ The duration for which to track events. For example, 5 minutes will keep a rolling value of how many events have occured in the last 5 minutes
+
+
+
+
+ The estimated number of bytes used for tracking, plus the sum of the CustomSize values. Key space not included unless the caller always includes key size in CustomSize parameter.
+
+
+
+
+ Maintains a rotating data structure to track events over a moving time period.
+
+
+
+
+ Returns the value of the counter
+
+
+
+
+
+ Warning! Not synchronized or updated. Use must be externally synchromized and value set externally
+
+
+
+
+ User-defined size of related item (key and/or a related cache object). Defaults to 0;
-
-
-
@@ -191,18 +275,6 @@
Represents a cached view of a folder of cached items
-
-
- Defaults to false. Set to true immediately after being refreshed from the filesystem.
- Set to false if a file disappears from the filesystem cache without the cache index being notified first.
- Used by the cleanup system - not of importance to the cache write system.
-
-
-
-
- Fired when a file disappears from the cache folder without the cache index knowing about it.
-
-
Returns null if (a) the file doesn't exist, or (b) the file isn't populated. Calling code should always fall back to filesystem calls on a null result.
@@ -314,6 +386,18 @@
+
+
+ Defaults to false. Set to true immediately after being refreshed from the filesystem.
+ Set to false if a file disappears from the filesystem cache without the cache index being notified first.
+ Used by the cleanup system - not of importance to the cache write system.
+
+
+
+
+ Fired when a file disappears from the cache folder without the cache index knowing about it.
+
+
Provides thread-safe access to the index of the disk cache
@@ -355,11 +439,6 @@
The result of the cache check
-
-
- When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
-
-
Notifies the CleanupManager that a request is in process. Helps CleanupManager optimize background work so it doesn't interfere with request processing.
@@ -371,6 +450,11 @@
+
+
+ When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
+
+
Queues the item if no other identical items exist in the queue. Returns true if the item was added.
@@ -391,11 +475,10 @@
-
+
Creates and starts a thread that consumes the queue, pausing until notified when 'queue' empties.
-
@@ -426,11 +509,6 @@
The last time we did work (or attempted to do work, failing if the queue was empty)
-
-
- When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
-
-
When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
@@ -454,6 +532,11 @@
+
+
+ When true, indicates that another process is managing cleanup operations - this thread is idle, waiting for the other process to end before it can pick up work.
+
+
An item in the work queue
@@ -510,6 +593,44 @@
Supports subfolders for scalability.
+
+
+ If the cached data exists and is up-to-date, returns the path to it. Otherwise, this function tries to cache the data and return the path.
+
+ The basis for the key. Should not include the modified date, that is handled inside the function.
+ The extension to use for the cached file.
+ A method that accepts a Stream argument and writes the data to it.
+ The modified date of the source file. Should be DateTime.MinValue if not available
+
+
+
+
+
+ May return either a physical file name or a MemoryStream with the data.
+ Faster than GetCachedFile, as writes are (usually) asynchronous. If the write queue is full, the write is forced to be synchronous again.
+ Identical to GetCachedFile() when asynchronous=false
+
+
+
+
+
+
+
+
+
+
+ Returns true if either (a) the file was written, or (b) the file already existed with a matching modified date.
+ Returns false if the in-process lock failed. Throws an exception if any kind of file or processing exception occurs.
+
+
+
+
+
+
+
+
+
+
Fired immediately before GetCachedFile return the result value.
@@ -535,42 +656,6 @@
Provides an in-memory index of the cache.
-
-
- If the cached data exists and is up-to-date, returns the path to it. Otherwise, this function tries to cache the data and return the path.
-
- The basis for the cache key.
- The extension to use for the cached file.
- A method that accepts a Stream argument and writes the data to it.
- =
-
-
-
-
- May return either a physical file name or a MemoryStream with the data.
- Faster than GetCachedFile, as writes are (usually) asynchronous. If the write queue is full, the write is forced to be synchronous again.
- Identical to GetCachedFile() when asynchronous=false
-
-
-
-
-
-
-
-
-
-
- Returns true if either (a) the file was written, or (b) the file already existed with a matching modified date.
- Returns false if the in-process lock failed. Throws an exception if any kind of file or processing exception occurs.
-
-
-
-
-
-
-
-
-
Indicates a problem with disk caching. Causes include a missing (or too small) ImageDiskCacheDir setting, and severe I/O locking preventing
@@ -582,66 +667,6 @@
Provides methods for creating, maintaining, and securing the disk cache.
-
-
- Controls how many subfolders to use for disk caching. Rounded to the next power of to. (1->2, 3->4, 5->8, 9->16, 17->32, 33->64, 65->128,129->256,etc.)
- NTFS does not handle more than 8,000 files per folder well. Larger folders also make cleanup more resource-intensive.
- Defaults to 8192, which combined with the default setting of 400 images per folder, allows for scalability to ~1.5 million actively used image versions.
- For example, given a desired cache size of 100,000 items, this should be set to 256.
-
-
-
-
- Allows disk caching to be disabled for debugging purposes. Defaults to true.
-
-
-
-
- If true, items from the cache folder will be automatically 'garbage collected' if the cache size limits are exceeded.
- Defaults to false.
-
-
-
-
- Only relevant when AutoClean=true. Settings about how background cache cleanup are performed.
- It is best not to modify these settings. There are very complicated and non-obvious factors involved in their choice.
-
-
-
-
- Sets the timeout time to 15 seconds as default.
-
-
-
-
- How many milliseconds to wait for a cached item to be available. Values below 0 are set to 0. Defaults to 15 seconds.
- Actual time spent waiting may be 2 or 3x this value, if multiple layers of synchronization require a wait.
-
-
-
-
- If true, writes to the disk cache will be performed outside the request thread, allowing responses to return to the client quicker.
-
-
-
-
- If more than this amount of memory (in bytes) is currently allocated by queued writes, the request will be processed synchronously instead of asynchronously.
-
-
-
-
- Sets the location of the cache directory.
- Can be a virtual path (like /App/imagecache) or an application-relative path (like ~/imagecache, the default).
- Relative paths are assummed to be relative to the application root.
- All values are converted to virtual path format upon assignment (/App/imagecache)
- Will throw an InvalidOperationException if changed after the plugin is installed.
-
-
-
-
- Returns the physical path of the cache directory specified in VirtualCacheDir.
-
-
Throws an exception if the class is already modified
@@ -672,13 +697,6 @@
-
-
- Removes the plugin from the given configuration container
-
-
-
-
Returns true if the configured settings are valid and .NET (not NTFS) permissions will work.
@@ -691,11 +709,6 @@
-
-
- Returns true if the DiskCache instance is operational.
-
-
Attempts to start the DiskCache using the current settings. Returns true if succesful or if already started. Returns false on a configuration error.
@@ -708,9 +721,73 @@
-
+
- Returns the license key feature codes that are able to activate this plugins.
+ Controls how many subfolders to use for disk caching. Rounded to the next power of to. (1->2, 3->4, 5->8, 9->16, 17->32, 33->64, 65->128,129->256,etc.)
+ NTFS does not handle more than 8,000 files per folder well. Larger folders also make cleanup more resource-intensive.
+ Defaults to 32, which combined with the default setting of 400 images per folder, allows for scalability to 12,800 actively used image versions.
+ For example, given a desired cache size of 100,000 items, this should be set to 256.
+
+
+
+
+ Allows disk caching to be disabled for debuginng purposes. Defaults to true.
+
+
+
+
+ If true, items from the cache folder will be automatically 'garbage collected' if the cache size limits are exceeded.
+ Defaults to false.
+
+
+
+
+ Only relevant when AutoClean=true. Settings about how background cache cleanup are performed.
+ It is best not to modify these settings. There are very complicated and non-obvious factors involved in their choice.
+
+
+
+
+ How many milliseconds to wait for a cached item to be available. Values below 0 are set to 0. Defaults to 15 seconds.
+ Actual time spent waiting may be 2 or 3x this value, if multiple layers of synchronization require a wait.
+
+
+
+
+ If true, when a source file is changed, a new file will be created instead of overwriting the old cached file.
+ This helps prevent file lock contention on high-traffic servers. Defaults to true.
+ Do NOT set this to false in a Web Garden or if you have overlapped recycle enabled, as you may risk having occasional failed requests due
+ to write contention by separate proccesses.
+ Changes the hash function, so you should delete the cache folder whenever this setting is modified.
+
+
+
+
+ If true, writes to the disk cache will be performed outside the request thread, allowing responses to return to the client quicker.
+
+
+
+
+ If more than this amount of memory (in bytes) is currently allocated by queued writes, the request will be processed synchronously instead of asynchronously.
+
+
+
+
+ Sets the location of the cache directory.
+ Can be a virtual path (like /App/imagecache) or an application-relative path (like ~/imagecache, the default).
+ Relative paths are assummed to be relative to the application root.
+ All values are converted to virtual path format upon assignment (/App/imagecache)
+ Will throw an InvalidOperationException if changed after the plugin is installed.
+
+
+
+
+ Returns the physical path of the cache directory specified in VirtualCacheDir.
+
+
+
+
+ Returns true if the DiskCache instance is operational.
@@ -762,16 +839,16 @@
Please note "LastUsed" values are (initially) only accurate to about a hour, due to delayed write.
- If a file has been used after the app started running, the last used date is accurate.
+ If a file has been used after the app started running, the the last used date is accurate.
Please note "LastUsed" values are (initially) only accurate to about a hour, due to delayed write.
- If a file has been used after the app started running, the last used date is accurate.
+ If a file has been used after the app started running, the the last used date is accurate.
-
+
Provides locking based on a string key.
Locks are local to the LockProvider instance.
@@ -779,27 +856,26 @@
coordinating writes to files (of which there can be millions).
Only keeps key/lock pairs in memory which are in use.
Thread-safe.
- Uses SemaphoreSlim instead of locks to be thread-context agnostic.
-
+
The only objects in this collection should be for open files.
-
+
Synchronization object for modifications to the 'locks' dictionary
-
+
Returns true if the given key *might* be locked.
-
+
Attempts to execute the 'success' callback inside a lock based on 'key'. If successful, returns true.
If the lock cannot be acquired within 'timoutMs', returns false
@@ -807,8 +883,14 @@
+
+
+
+ Defaults to 10MB limit, and samples usage over the last 10 minutes when deciding what to remove. Stuff not used in the last 10 minutes gets discarded even if the limit hasn't been reached.
+
+
Builds a key for the cached version, using the hashcode of the normalized URL.
@@ -855,6 +937,7 @@
If CheckWebConfig has never executed, it is executed immediately, but only once.
Verifies a Web.config file is present in the directory, and creates it if needed.
+
@@ -866,270 +949,7 @@
Should only be called inside a lock. Creates the cache dir and the web.config file if they are missing. Updates
_lastCheckedWebConfig and _checkedWebConfigOnce
-
-
-
- Returns the license key feature codes that are able to activate this plugins.
-
-
-
-
- Defaults to 10MB limit, and samples usage over the last 10 minutes when deciding what to remove. Stuff not used in the last 10 minutes gets discarded even if the limit hasn't been reached.
-
-
-
-
- Adds the plugin to the given configuration container
-
-
-
-
-
-
- Removes the plugin from the given configuration container
-
-
-
-
-
-
- Implements IHttpHandler, serves content for the NoCache plugin
-
-
-
-
- Like DiskCache, but for source files. Not advisable if your source image collection is larger than available local storage.
-
-
-
-
- Creates a new instance of SourceDiskCache
-
-
-
-
- Sets the location of the cache directory.
- Can be a virtual path (like /App/imagecache) or an application-relative path (like ~/imagecache, the default).
- Relative paths are assummed to be relative to the application root.
- All values are converted to virtual path format upon assignment (/App/imagecache)
- Will throw an InvalidOperationException if changed after the plugin is installed.
-
-
-
-
- Returns the physical path of the cache directory specified in VirtualCacheDir.
-
-
-
-
- Throws an exception if the class is already modified
-
-
-
-
- Returns true if the DiskCache instance is operational.
-
-
-
-
- Loads the settings from 'c', starts the cache, and registers the plugin.
- Will throw an invalidoperationexception if already started.
-
-
-
-
-
-
- Removes this plugin from the given configuration container
-
-
-
-
-
-
- Returns true if the configured settings are valid and .NET (not NTFS) permissions will work.
-
-
-
-
-
- Returns true if .NET permissions allow writing to the cache directory. Does not check NTFS permissions.
-
-
-
-
-
- Attempts to start the DiskCache using the current settings. Returns true if succesful or if already started. Returns false on a configuration error.
- Called by Install()
-
-
-
-
- Returns true if stopped succesfully. Cannot be restarted
-
-
-
-
-
- Returns the license key feature codes that are able to activate this plugins.
-
-
-
-
- The estimated ram usage for the entire cache. Relies upon the accuracy of the calculator delegate
-
-
-
-
- Specifies counter granularity, memory limits, cleanup intervals, and threading optimization level.
-
-
-
-
- Much faster than accurate mode, but at the expense of extremely rare counter inaccuracies. Irrelevant in light of counter granularity, usually.
-
-
-
-
- Whether to optimize for performance or counter accuracy. Defaults to Fast
-
-
-
-
- How granular to track the time. For example, with a granularity of 8 (default), and an 8-minute tracking duration, the counter will track the last 7-8 minutes (maximum 0-59.9 second time window variance).
-
-
-
-
- Specifies a hard limit on the number of bytes used for tracking purposes. Causes the smallest-valued items to get discarded first. Doesn't count key size unless SetCustomSize is called on the items. Set to 0 to disable (default)
-
-
-
-
- Specifies how often to eliminate 0-valued items from the dictionary. Defaults to 20 seconds. Only potentially triggered by .Increment() or PingCleanup() calls.
-
-
-
-
- The estimated size (in bytes) of a counter (excluding the key). Based on CounterGranularity
-
-
-
-
- Maintains a dictionary of keys to counters. Counters track how many events have occured during the last X minutes/seconds/ticks for the given item.
- Can enforce size limits and cleanup empty counters on an inverval.
-
-
-
-
-
- The duration for which to track events. For example, 5 minutes will keep a rolling value of how many events have occured in the last 5 minutes
-
-
-
-
- The estimated number of bytes used for tracking, plus the sum of the CustomSize values. Key space not included unless the caller always includes key size in CustomSize parameter.
-
-
-
-
- For incrementing and finding counters based on keys
-
-
-
-
- Purely for cleanup purposes. Allows fast removal of pairs based on the EventCounter instance.
-
-
-
-
- Lock for access to dictionaries
-
-
-
-
- Lock on EventCounter.sortValue members. Redundant with cleanupLock implemented.
-
-
-
-
- Lock to prevent concurrent cleanups from occuring
-
-
-
-
- Lock to prevent duplicate work items from being scheduled.
-
-
-
-
- Starts cleanup on a thread pool thread if it hasn't been started within the desired interval. If cleanup starts and other cleanup is running, it cancels. The assumption is that one cleanup of either type is enough within the interval.
-
-
-
-
- Performs cleanup on the dictionaries in either MakeRoom or Maintenance mode. Returns true if the goal was achieved, false if the cleanup was canceled because another cleanup was executing conurrently.
-
-
-
-
-
- Increment the counter for the given item. Pings cleanup as well.
-
-
- Sets the custom size offset for the specified key (used for cleanup purposes). If -1, existing value will remain unchanged.
-
-
-
- Calculate the counter value for the given item
-
-
-
-
-
-
- Maintains a rotating data structure to track events over a moving time period.
-
-
-
-
- User-defined size of related item (key and/or a related cache object). Defaults to 0;
-
-
-
-
- Returns the value of the counter
-
-
-
-
-
- Warning! Not synchronized or updated. Use must be externally synchromized and value set externally
-
-
-
-
- Defaults to 10MB limit, and samples usage over the last 10 minutes when deciding what to remove. Stuff not used in the last 10 minutes gets discarded even if the limit hasn't been reached.
-
-
-
-
- Retrieves file if cached.
-
-
-
-
-
-
-
-
- Returns the license key feature codes that are able to activate this plugins.
-
-
-
-
- Source file cached in memory.
-
+
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/lib/ImageResizer.Plugins.DiskCache.dll b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/lib/ImageResizer.Plugins.DiskCache.dll
new file mode 100644
index 0000000..0837491
Binary files /dev/null and b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.3.4.3/lib/ImageResizer.Plugins.DiskCache.dll differ
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/ImageResizer.Plugins.DiskCache.4.0.4.nupkg b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/ImageResizer.Plugins.DiskCache.4.0.4.nupkg
deleted file mode 100644
index 42ae07c..0000000
Binary files a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/ImageResizer.Plugins.DiskCache.4.0.4.nupkg and /dev/null differ
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/lib/net45/ImageResizer.Plugins.DiskCache.dll b/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/lib/net45/ImageResizer.Plugins.DiskCache.dll
deleted file mode 100644
index 2b043fe..0000000
Binary files a/Projects/WebGIM/packages/ImageResizer.Plugins.DiskCache.4.0.4/lib/net45/ImageResizer.Plugins.DiskCache.dll and /dev/null differ
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/ImageResizer.Plugins.SeamCarving.3.4.3.nupkg b/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/ImageResizer.Plugins.SeamCarving.3.4.3.nupkg
new file mode 100644
index 0000000..3c642c6
Binary files /dev/null and b/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/ImageResizer.Plugins.SeamCarving.3.4.3.nupkg differ
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/content/Web.config.transform b/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/content/Web.config.transform
similarity index 100%
rename from Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/content/Web.config.transform
rename to Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/content/Web.config.transform
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/lib/net45/ImageResizer.Plugins.SeamCarving.XML b/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/lib/ImageResizer.Plugins.SeamCarving.XML
similarity index 85%
rename from Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/lib/net45/ImageResizer.Plugins.SeamCarving.XML
rename to Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/lib/ImageResizer.Plugins.SeamCarving.XML
index 9ea243a..4d874e1 100644
--- a/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/lib/net45/ImageResizer.Plugins.SeamCarving.XML
+++ b/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/lib/ImageResizer.Plugins.SeamCarving.XML
@@ -33,86 +33,6 @@
A quirky version of LZW supporting only 32K dictionary sizes, expecting a UTF8-like encoding method, and offering custom alphabet support
-
-
- The maximum number of CAIR.exe instances to allow at the same time. After this limit is reached,
- requests will wait until requests will MaxConcurrentWaitingThreads is reached, at which point
- requests will be denied so the thread pool doesn't become exhausted.
- Set this value to at least CPU cores * 2, as the proccess is also I/O bound. Set to 0 for no limit (default).
-
-
-
-
- The maximum number of waiting threads (for a CAIR.exe instance) to permit before denying requests. Set to 0 (default) to permit an endless number of threads to wait (although request timeout will still be effect).
- Set this value to at least 30
-
-
-
-
- Number of executing CAIR.exe processes
-
-
-
-
- Number of threads waiting for a CAIR.exe process.
-
-
-
-
- Used for efficient thread waiting
-
-
-
-
- This plugin provides content-aware image resizing and 5 different algorithms.
-
-
-
-
- Creates a new instance of SeamCarvingPlugin
-
-
-
-
- Returns the querystrings command keys supported by this plugin.
-
-
-
-
-
- Adds the plugin to the given configuration container
-
-
-
-
-
-
- Removes the plugin from the given configuration container
-
-
-
-
-
-
- The exception that is thrown when an error in input stream occurs during decoding.
-
-
-
-
- The exception that is thrown when the value of an argument is outside the allowable range.
-
-
-
-
- Callback progress.
-
-
- input size. -1 if unknown.
-
-
- output size. -1 if unknown.
-
-
Codes streams.
@@ -136,6 +56,27 @@
if input stream is not valid
+
+
+ The exception that is thrown when an error in input stream occurs during decoding.
+
+
+
+
+ The exception that is thrown when the value of an argument is outside the allowable range.
+
+
+
+
+ Callback progress.
+
+
+ input size. -1 if unknown.
+
+
+ output size. -1 if unknown.
+
+
Provides the fields that represent properties idenitifiers for compressing.
@@ -216,5 +157,34 @@
Specifies mode with end marker.
+
+
+ Number of executing CAIR.exe processes
+
+
+
+
+ Number of threads waiting for a CAIR.exe process.
+
+
+
+
+ Used for efficient thread waiting
+
+
+
+
+ The maximum number of CAIR.exe instances to allow at the same time. After this limit is reached,
+ requests will wait until requests will MaxConcurrentWaitingThreads is reached, at which point
+ requests will be denied so the thread pool doesn't become exhausted.
+ Set this value to at least CPU cores * 2, as the proccess is also I/O bound. Set to 0 for no limit (default).
+
+
+
+
+ The maximum number of waiting threads (for a CAIR.exe instance) to permit before denying requests. Set to 0 (default) to permit an endless number of threads to wait (although request timeout will still be effect).
+ Set this value to at least 30
+
+
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/lib/net45/ImageResizer.Plugins.SeamCarving.dll b/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/lib/ImageResizer.Plugins.SeamCarving.dll
similarity index 84%
rename from Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/lib/net45/ImageResizer.Plugins.SeamCarving.dll
rename to Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/lib/ImageResizer.Plugins.SeamCarving.dll
index 7135910..21d9efc 100644
Binary files a/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/lib/net45/ImageResizer.Plugins.SeamCarving.dll and b/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.3.4.3/lib/ImageResizer.Plugins.SeamCarving.dll differ
diff --git a/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/ImageResizer.Plugins.SeamCarving.4.0.4.nupkg b/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/ImageResizer.Plugins.SeamCarving.4.0.4.nupkg
deleted file mode 100644
index e4a0bae..0000000
Binary files a/Projects/WebGIM/packages/ImageResizer.Plugins.SeamCarving.4.0.4/ImageResizer.Plugins.SeamCarving.4.0.4.nupkg and /dev/null differ
diff --git a/Projects/WebGIM/packages/ImageResizer.WebConfig.3.4.3/ImageResizer.WebConfig.3.4.3.nupkg b/Projects/WebGIM/packages/ImageResizer.WebConfig.3.4.3/ImageResizer.WebConfig.3.4.3.nupkg
new file mode 100644
index 0000000..54861da
Binary files /dev/null and b/Projects/WebGIM/packages/ImageResizer.WebConfig.3.4.3/ImageResizer.WebConfig.3.4.3.nupkg differ
diff --git a/Projects/WebGIM/packages/ImageResizer.WebConfig.4.0.4/content/Web.config.transform b/Projects/WebGIM/packages/ImageResizer.WebConfig.3.4.3/content/Web.config.transform
similarity index 100%
rename from Projects/WebGIM/packages/ImageResizer.WebConfig.4.0.4/content/Web.config.transform
rename to Projects/WebGIM/packages/ImageResizer.WebConfig.3.4.3/content/Web.config.transform
diff --git a/Projects/WebGIM/packages/ImageResizer.WebConfig.4.0.4/readme.txt b/Projects/WebGIM/packages/ImageResizer.WebConfig.3.4.3/readme.txt
similarity index 100%
rename from Projects/WebGIM/packages/ImageResizer.WebConfig.4.0.4/readme.txt
rename to Projects/WebGIM/packages/ImageResizer.WebConfig.3.4.3/readme.txt
diff --git a/Projects/WebGIM/packages/ImageResizer.WebConfig.4.0.4/ImageResizer.WebConfig.4.0.4.nupkg b/Projects/WebGIM/packages/ImageResizer.WebConfig.4.0.4/ImageResizer.WebConfig.4.0.4.nupkg
deleted file mode 100644
index 91a3168..0000000
Binary files a/Projects/WebGIM/packages/ImageResizer.WebConfig.4.0.4/ImageResizer.WebConfig.4.0.4.nupkg and /dev/null differ