Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- JsonClassDataContract.cs
- MarkedHighlightComponent.cs
- smtpconnection.cs
- RawStylusSystemGestureInputReport.cs
- pingexception.cs
- ListenerAdapterBase.cs
- BamlRecords.cs
- InstanceOwner.cs
- BindingOperations.cs
- DataGridViewTopRowAccessibleObject.cs
- Base64Encoder.cs
- TextEditorMouse.cs
- BamlLocalizableResourceKey.cs
- MatrixCamera.cs
- Delegate.cs
- DiscoveryDocumentReference.cs
- DbConnectionClosed.cs
- Exceptions.cs
- OdbcDataAdapter.cs
- ActivityTypeResolver.xaml.cs
- TextViewBase.cs
- BuildProviderAppliesToAttribute.cs
- ListViewPagedDataSource.cs
- IListConverters.cs
- PropertyItemInternal.cs
- ExceptionHandlerDesigner.cs
- TraceSource.cs
- LineInfo.cs
- SymbolType.cs
- PrintingPermissionAttribute.cs
- ControlsConfig.cs
- SBCSCodePageEncoding.cs
- BitmapCacheBrush.cs
- PixelFormats.cs
- Screen.cs
- SecurityToken.cs
- TrackingRecord.cs
- FixedFlowMap.cs
- ButtonFieldBase.cs
- SymLanguageVendor.cs
- BaseCodeDomTreeGenerator.cs
- ReflectEventDescriptor.cs
- DrawingCollection.cs
- MatrixAnimationBase.cs
- SystemIPGlobalStatistics.cs
- QueryAccessibilityHelpEvent.cs
- SQLString.cs
- MetadataSource.cs
- WorkflowPersistenceService.cs
- PlatformNotSupportedException.cs
- TextTreePropertyUndoUnit.cs
- BrowsableAttribute.cs
- ValueQuery.cs
- DependencyObjectProvider.cs
- DataGridViewTextBoxEditingControl.cs
- TypedTableHandler.cs
- MessageDirection.cs
- BinaryUtilClasses.cs
- SqlCacheDependencySection.cs
- TranslateTransform.cs
- SapiGrammar.cs
- Matrix3D.cs
- PackageDigitalSignature.cs
- ToolStripSeparatorRenderEventArgs.cs
- GridEntry.cs
- FormsAuthenticationModule.cs
- Win32.cs
- SafeHandles.cs
- Encoding.cs
- CompositeActivityTypeDescriptor.cs
- PropertyEmitter.cs
- StatusBarAutomationPeer.cs
- ComponentEditorPage.cs
- X509CertificateEndpointIdentity.cs
- InheritanceContextHelper.cs
- ObjectListCommandEventArgs.cs
- Command.cs
- MapPathBasedVirtualPathProvider.cs
- ListViewHitTestInfo.cs
- BooleanStorage.cs
- CalendarDay.cs
- SqlNodeAnnotation.cs
- EventTask.cs
- ObjectConverter.cs
- ParameterCollection.cs
- AsyncPostBackErrorEventArgs.cs
- WindowsSolidBrush.cs
- PropertyFilterAttribute.cs
- MessageSmuggler.cs
- DatePickerAutomationPeer.cs
- SourceLineInfo.cs
- DocumentsTrace.cs
- SettingsAttributeDictionary.cs
- ToolStripPanelRenderEventArgs.cs
- Stylesheet.cs
- BrowserCapabilitiesCodeGenerator.cs
- IODescriptionAttribute.cs
- ScrollChrome.cs
- ThousandthOfEmRealDoubles.cs
- UrlPath.cs