mirror of
https://github.com/ZuneDev/MicrosoftIris.git
synced 2026-07-27 13:13:29 -07:00
Add project files.
This commit is contained in:
@@ -0,0 +1,195 @@
|
||||
// Decompiled with JetBrains decompiler
|
||||
// Type: Microsoft.Iris.Image
|
||||
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
||||
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
|
||||
// Assembly location: C:\Program Files\Zune\UIX.dll
|
||||
|
||||
using Microsoft.Iris.Drawing;
|
||||
using Microsoft.Iris.Markup;
|
||||
using Microsoft.Iris.Render;
|
||||
using Microsoft.Iris.Session;
|
||||
using System;
|
||||
|
||||
namespace Microsoft.Iris
|
||||
{
|
||||
public class Image : AssemblyObjectProxyHelper.IFrameworkProxyObject
|
||||
{
|
||||
private UIImage _uiImage;
|
||||
private ImageLoadCompleteHandler _completeHandlers;
|
||||
|
||||
public Image(string source)
|
||||
: this(source, 0, 0, false)
|
||||
{
|
||||
}
|
||||
|
||||
public Image(string source, ImageInset imageInset)
|
||||
: this(source, imageInset.ToInset(), 0, 0, false, false)
|
||||
{
|
||||
}
|
||||
|
||||
public Image(string source, int maximumWidth, int maximumHeight)
|
||||
: this(source, maximumWidth, maximumHeight, false)
|
||||
{
|
||||
}
|
||||
|
||||
public Image(string source, int maximumWidth, int maximumHeight, bool flippable)
|
||||
: this(source, maximumWidth, maximumHeight, flippable, false)
|
||||
{
|
||||
}
|
||||
|
||||
public Image(
|
||||
string source,
|
||||
int maximumWidth,
|
||||
int maximumHeight,
|
||||
bool flippable,
|
||||
bool antialiasEdges)
|
||||
: this(source, Inset.Zero, maximumWidth, maximumHeight, flippable, antialiasEdges)
|
||||
{
|
||||
}
|
||||
|
||||
internal Image(
|
||||
string source,
|
||||
Inset inset,
|
||||
int maximumWidth,
|
||||
int maximumHeight,
|
||||
bool flippable,
|
||||
bool antialiasEdges)
|
||||
{
|
||||
if (source == null)
|
||||
throw new ArgumentNullException(nameof(source));
|
||||
_uiImage = new UriImage(source, inset, new Size(maximumWidth, maximumHeight), flippable, antialiasEdges);
|
||||
}
|
||||
|
||||
public Image(
|
||||
string uniqueID,
|
||||
int imageWidth,
|
||||
int imageHeight,
|
||||
int stride,
|
||||
RawImageFormat format,
|
||||
IntPtr data)
|
||||
: this(uniqueID, imageWidth, imageHeight, stride, format, data, 0, 0, false)
|
||||
{
|
||||
}
|
||||
|
||||
public Image(
|
||||
string uniqueID,
|
||||
int imageWidth,
|
||||
int imageHeight,
|
||||
int stride,
|
||||
RawImageFormat format,
|
||||
IntPtr data,
|
||||
int maximumWidth,
|
||||
int maximumHeight,
|
||||
bool flippable)
|
||||
: this(uniqueID, imageWidth, imageHeight, stride, format, data, maximumWidth, maximumHeight, flippable, false)
|
||||
{
|
||||
}
|
||||
|
||||
public Image(
|
||||
string uniqueID,
|
||||
int imageWidth,
|
||||
int imageHeight,
|
||||
int stride,
|
||||
RawImageFormat format,
|
||||
IntPtr data,
|
||||
int maximumWidth,
|
||||
int maximumHeight,
|
||||
bool flippable,
|
||||
bool anitaliasEdges)
|
||||
{
|
||||
SurfaceFormat surfaceFormat;
|
||||
if (!ImageFormatUtils.RawImageFormatToSurfaceFormat(format, out surfaceFormat))
|
||||
throw new ArgumentException(nameof(format));
|
||||
uniqueID = "RAW:" + uniqueID;
|
||||
_uiImage = new RawImage(uniqueID, new Size(imageWidth, imageHeight), stride, surfaceFormat, data, false, Inset.Zero, new Size(maximumWidth, maximumHeight), flippable, anitaliasEdges);
|
||||
}
|
||||
|
||||
public string Source => _uiImage.Source;
|
||||
|
||||
public bool Load()
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
_uiImage.Load();
|
||||
return _uiImage.Status == ImageStatus.Loading;
|
||||
}
|
||||
|
||||
public event ImageLoadCompleteHandler ImageLoadComplete
|
||||
{
|
||||
add
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
if (_uiImage.Status == ImageStatus.PendingLoad)
|
||||
throw new InvalidOperationException("Image Load event cannot be used before Load is called");
|
||||
if (_completeHandlers == null)
|
||||
_uiImage.LoadComplete += new ContentLoadCompleteHandler(OnContentLoadComplete);
|
||||
_completeHandlers += value;
|
||||
}
|
||||
remove
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
if (_uiImage.Status == ImageStatus.PendingLoad)
|
||||
throw new InvalidOperationException("Image Load event cannot be used before Load is called");
|
||||
_completeHandlers -= value;
|
||||
if (_completeHandlers != null)
|
||||
return;
|
||||
_uiImage.LoadComplete -= new ContentLoadCompleteHandler(OnContentLoadComplete);
|
||||
}
|
||||
}
|
||||
|
||||
public int Width
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _uiImage.Width;
|
||||
}
|
||||
}
|
||||
|
||||
public int Height
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _uiImage.Height;
|
||||
}
|
||||
}
|
||||
|
||||
public static void RemoveCache(string source) => RemoveCache(source, 0, 0, false, false);
|
||||
|
||||
public static void RemoveCache(string source, int maximumWidth, int maximumHeight) => RemoveCache(source, maximumWidth, maximumHeight, false, false);
|
||||
|
||||
public static void RemoveCache(
|
||||
string source,
|
||||
int maximumWidth,
|
||||
int maximumHeight,
|
||||
bool flippable)
|
||||
{
|
||||
RemoveCache(source, maximumWidth, maximumHeight, flippable, false);
|
||||
}
|
||||
|
||||
public static void RemoveCache(
|
||||
string source,
|
||||
int maximumWidth,
|
||||
int maximumHeight,
|
||||
bool flippable,
|
||||
bool antialiasEdges)
|
||||
{
|
||||
if (source == null)
|
||||
throw new ArgumentNullException(nameof(source));
|
||||
UriImage.RemoveCache(source, new Size(maximumWidth, maximumHeight), flippable, antialiasEdges);
|
||||
}
|
||||
|
||||
private void OnContentLoadComplete(object owner, ImageStatus status) => _completeHandlers(this);
|
||||
|
||||
internal UIImage UIImage
|
||||
{
|
||||
get
|
||||
{
|
||||
UIDispatcher.VerifyOnApplicationThread();
|
||||
return _uiImage;
|
||||
}
|
||||
}
|
||||
|
||||
object AssemblyObjectProxyHelper.IFrameworkProxyObject.FrameworkObject => _uiImage;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user