Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / ColorConvertedBitmapExtension.cs / 1 / ColorConvertedBitmapExtension.cs
/****************************************************************************\
*
* File: ColorConvertedBitmapExtension.cs
*
* Class for Xaml markup extension for static resource references.
*
* Copyright (C) 2004 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.IO;
using System.Collections;
using System.Diagnostics;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Reflection;
using MS.Internal;
namespace System.Windows
{
///
/// Class for Xaml markup extension for ColorConvertedBitmap with non-embedded profile.
///
[MarkupExtensionReturnType(typeof(ColorConvertedBitmap))]
public class ColorConvertedBitmapExtension : MarkupExtension
{
///
/// Constructor that takes no parameters
///
public ColorConvertedBitmapExtension()
{
}
///
/// Constructor that takes the markup for a "{ColorConvertedBitmap image source.icc destination.icc}"
///
public ColorConvertedBitmapExtension(
object image)
{
if (image == null)
{
throw new ArgumentNullException("image");
}
string[] tokens = ((string)image).Split(new char[] { ' ' });
foreach (string str in tokens)
{
if (str.Length > 0)
{
if (_image == null)
{
_image = str;
}
else if (_sourceProfile == null)
{
_sourceProfile = str;
}
else if (_destinationProfile == null)
{
_destinationProfile = str;
}
else
{
throw new InvalidOperationException(SR.Get(SRID.ColorConvertedBitmapExtensionSyntax));
}
}
}
}
///
/// Return an object that should be set on the targetObject's targetProperty
/// for this markup extension. For ColorConvertedBitmapExtension, this is the object found in
/// a resource dictionary in the current parent chain that is keyed by ResourceKey
///
///
/// The object to set on this property.
///
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (_image == null)
{
throw new InvalidOperationException(SR.Get(SRID.ColorConvertedBitmapExtensionNoSourceImage));
}
if (_sourceProfile == null)
{
throw new InvalidOperationException(SR.Get(SRID.ColorConvertedBitmapExtensionNoSourceProfile));
}
// Save away the BaseUri.
IUriContext uriContext = serviceProvider.GetService(typeof(IUriContext)) as IUriContext;
if( uriContext == null )
{
throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionNoContext, GetType().Name, "IUriContext" ));
}
_baseUri = uriContext.BaseUri;
Uri imageUri = GetResolvedUri(_image);
Uri sourceProfileUri = GetResolvedUri(_sourceProfile);
Uri destinationProfileUri = GetResolvedUri(_destinationProfile);
ColorContext sourceContext = new ColorContext(sourceProfileUri);
ColorContext destinationContext = destinationProfileUri != null ?
new ColorContext(destinationProfileUri) :
new ColorContext(PixelFormats.Default);
BitmapDecoder decoder = BitmapDecoder.Create(
imageUri,
BitmapCreateOptions.IgnoreColorProfile | BitmapCreateOptions.IgnoreImageCache,
BitmapCacheOption.None
);
BitmapSource bitmap = decoder.Frames[0];
FormatConvertedBitmap formatConverted = new FormatConvertedBitmap(bitmap, PixelFormats.Bgra32, null, 0.0);
object result = formatConverted;
try
{
ColorConvertedBitmap colorConverted = new ColorConvertedBitmap(formatConverted, sourceContext, destinationContext, PixelFormats.Bgra32);
result= colorConverted;
}
catch (FileFormatException)
{ // Gracefully ignore non-matching profile
// If the file contains a bad color context, we catch the exception here
// since color transform isn't possible
// with the given color context.
}
return result;
}
private Uri GetResolvedUri(string uri)
{
if (uri == null)
{
return null;
}
return new Uri(_baseUri,uri);
}
string _image;
string _sourceProfile;
Uri _baseUri;
string _destinationProfile;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/****************************************************************************\
*
* File: ColorConvertedBitmapExtension.cs
*
* Class for Xaml markup extension for static resource references.
*
* Copyright (C) 2004 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.IO;
using System.Collections;
using System.Diagnostics;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Reflection;
using MS.Internal;
namespace System.Windows
{
///
/// Class for Xaml markup extension for ColorConvertedBitmap with non-embedded profile.
///
[MarkupExtensionReturnType(typeof(ColorConvertedBitmap))]
public class ColorConvertedBitmapExtension : MarkupExtension
{
///
/// Constructor that takes no parameters
///
public ColorConvertedBitmapExtension()
{
}
///
/// Constructor that takes the markup for a "{ColorConvertedBitmap image source.icc destination.icc}"
///
public ColorConvertedBitmapExtension(
object image)
{
if (image == null)
{
throw new ArgumentNullException("image");
}
string[] tokens = ((string)image).Split(new char[] { ' ' });
foreach (string str in tokens)
{
if (str.Length > 0)
{
if (_image == null)
{
_image = str;
}
else if (_sourceProfile == null)
{
_sourceProfile = str;
}
else if (_destinationProfile == null)
{
_destinationProfile = str;
}
else
{
throw new InvalidOperationException(SR.Get(SRID.ColorConvertedBitmapExtensionSyntax));
}
}
}
}
///
/// Return an object that should be set on the targetObject's targetProperty
/// for this markup extension. For ColorConvertedBitmapExtension, this is the object found in
/// a resource dictionary in the current parent chain that is keyed by ResourceKey
///
///
/// The object to set on this property.
///
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (_image == null)
{
throw new InvalidOperationException(SR.Get(SRID.ColorConvertedBitmapExtensionNoSourceImage));
}
if (_sourceProfile == null)
{
throw new InvalidOperationException(SR.Get(SRID.ColorConvertedBitmapExtensionNoSourceProfile));
}
// Save away the BaseUri.
IUriContext uriContext = serviceProvider.GetService(typeof(IUriContext)) as IUriContext;
if( uriContext == null )
{
throw new InvalidOperationException(SR.Get(SRID.MarkupExtensionNoContext, GetType().Name, "IUriContext" ));
}
_baseUri = uriContext.BaseUri;
Uri imageUri = GetResolvedUri(_image);
Uri sourceProfileUri = GetResolvedUri(_sourceProfile);
Uri destinationProfileUri = GetResolvedUri(_destinationProfile);
ColorContext sourceContext = new ColorContext(sourceProfileUri);
ColorContext destinationContext = destinationProfileUri != null ?
new ColorContext(destinationProfileUri) :
new ColorContext(PixelFormats.Default);
BitmapDecoder decoder = BitmapDecoder.Create(
imageUri,
BitmapCreateOptions.IgnoreColorProfile | BitmapCreateOptions.IgnoreImageCache,
BitmapCacheOption.None
);
BitmapSource bitmap = decoder.Frames[0];
FormatConvertedBitmap formatConverted = new FormatConvertedBitmap(bitmap, PixelFormats.Bgra32, null, 0.0);
object result = formatConverted;
try
{
ColorConvertedBitmap colorConverted = new ColorConvertedBitmap(formatConverted, sourceContext, destinationContext, PixelFormats.Bgra32);
result= colorConverted;
}
catch (FileFormatException)
{ // Gracefully ignore non-matching profile
// If the file contains a bad color context, we catch the exception here
// since color transform isn't possible
// with the given color context.
}
return result;
}
private Uri GetResolvedUri(string uri)
{
if (uri == null)
{
return null;
}
return new Uri(_baseUri,uri);
}
string _image;
string _sourceProfile;
Uri _baseUri;
string _destinationProfile;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PageThemeParser.cs
- PersianCalendar.cs
- WindowAutomationPeer.cs
- Activity.cs
- mediaclock.cs
- CoTaskMemHandle.cs
- _SSPIWrapper.cs
- ListViewAutomationPeer.cs
- BaseTemplateParser.cs
- sqlmetadatafactory.cs
- ToolStripDesignerAvailabilityAttribute.cs
- XamlPathDataSerializer.cs
- DesignRelation.cs
- SqlBulkCopyColumnMappingCollection.cs
- DynamicScriptObject.cs
- GeneralTransform2DTo3DTo2D.cs
- FlowLayoutSettings.cs
- Calendar.cs
- TypeGeneratedEventArgs.cs
- EntityTypeEmitter.cs
- RegexRunner.cs
- BinarySerializer.cs
- ServiceMetadataExtension.cs
- XmlSchemaObjectTable.cs
- ConditionCollection.cs
- MediaEntryAttribute.cs
- QueryAccessibilityHelpEvent.cs
- BindingOperations.cs
- InheritanceContextHelper.cs
- Currency.cs
- HttpProfileBase.cs
- TogglePattern.cs
- StringExpressionSet.cs
- LogicalTreeHelper.cs
- StringDictionary.cs
- RegexFCD.cs
- TrackingMemoryStreamFactory.cs
- TableParaClient.cs
- ManagementObject.cs
- PersonalizationStateQuery.cs
- Hashtable.cs
- _DisconnectOverlappedAsyncResult.cs
- UpdateCompiler.cs
- ModelServiceImpl.cs
- HtmlTableCell.cs
- FormsAuthenticationModule.cs
- XslNumber.cs
- XMLUtil.cs
- Executor.cs
- DynamicMetaObject.cs
- RelationalExpressions.cs
- TypeBuilderInstantiation.cs
- TransformProviderWrapper.cs
- MultiPageTextView.cs
- ContractMapping.cs
- HtmlTextViewAdapter.cs
- LocationChangedEventArgs.cs
- WmlSelectionListAdapter.cs
- WebSysDescriptionAttribute.cs
- StringBlob.cs
- PTConverter.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- ColumnMap.cs
- OperatingSystem.cs
- ResXFileRef.cs
- NodeLabelEditEvent.cs
- XmlUnspecifiedAttribute.cs
- ExtensionWindowHeader.cs
- ObjectDataSourceFilteringEventArgs.cs
- InvalidAsynchronousStateException.cs
- TreeNodeCollection.cs
- TraceRecords.cs
- InvariantComparer.cs
- IdentityManager.cs
- RotateTransform3D.cs
- DetailsView.cs
- LogLogRecordHeader.cs
- TreeViewHitTestInfo.cs
- ADMembershipUser.cs
- WrapPanel.cs
- _FixedSizeReader.cs
- BaseDataListDesigner.cs
- ReadOnlyCollectionBuilder.cs
- DataAdapter.cs
- RegexCompiler.cs
- DataGridViewCellEventArgs.cs
- TextEditorDragDrop.cs
- RijndaelManaged.cs
- ConditionalAttribute.cs
- RenamedEventArgs.cs
- ClientOperationFormatterProvider.cs
- AxParameterData.cs
- LinkLabelLinkClickedEvent.cs
- ExpressionLink.cs
- ThrowHelper.cs
- TypeConverterAttribute.cs
- EmbeddedMailObjectCollectionEditor.cs
- PolicyStatement.cs
- XmlDataSourceView.cs
- ApplicationDirectory.cs