Files
MicrosoftIris/UIX/Microsoft/Iris/Drawing/TextImageItem.cs
T

73 lines
2.0 KiB
C#
Raw Normal View History

2022-03-03 08:14:05 -06:00
// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Drawing.TextImageItem
// 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.Render;
using Microsoft.Iris.Render.Extensions;
using Microsoft.Iris.RenderAPI.Drawing;
namespace Microsoft.Iris.Drawing
{
internal class TextImageItem : ImageCacheItem
{
private TextRun _run;
private Dib _dib;
private string _samplingModeName;
private Color _textColor;
private bool _outlineFlag;
internal TextImageItem(
IRenderSession renderSession,
TextRun run,
string samplingModeName,
bool outlineFlag,
Color textColor)
: base(renderSession, run.Content)
{
_run = run;
_run.RegisterUsage(this);
_dib = null;
_samplingModeName = samplingModeName;
_outlineFlag = outlineFlag;
_textColor = textColor;
}
protected override void OnDispose()
{
_run.UnregisterUsage(this);
ReleaseDib();
base.OnDispose();
}
internal TextRun Run => _run;
protected override bool EnsureBuffer()
{
if (_dib == null)
_dib = _run.Rasterize(_samplingModeName, _textColor, _outlineFlag);
return true;
}
protected override bool DoImageLoad() => RenderImage.LoadContent(_dib.ImageFormat, _dib.ContentSize, _dib.Stride, _dib.Data);
protected override void OnImageLoadComplete()
{
if (HasLoadsInProgress)
return;
ReleaseDib();
}
public override string ToString() => _run.Content;
private void ReleaseDib()
{
if (_dib == null)
return;
_dib.Dispose();
_dib = null;
}
}
}