Exemplo n.º 1
0
        public static Bitmap CallThumbnailer(Guid guid, string filePath, uint size)
        {
            using (FileStream fs = File.OpenRead(filePath))
            {
                using (var istm = new ManagedIStream(fs))
                {
                    var    thumbType    = Type.GetTypeFromCLSID(guid);
                    object thumbHandler = Activator.CreateInstance(thumbType);
                    if (thumbHandler is IInitializeWithStream)
                    {
                        var init_res = ((IInitializeWithStream)thumbHandler).Initialize(istm, 0);
                        if (thumbHandler is IThumbnailProvider)
                        {
                            IntPtr        pHbitmap;
                            WTS_ALPHATYPE alphaType;
                            var           thumb_res = ((IThumbnailProvider)thumbHandler).GetThumbnail(size, out pHbitmap, out alphaType);

                            var img = Image.FromHbitmap(pHbitmap);
                            return(img);
                        }
                        else
                        {
                            throw new NotSupportedException();
                        }
                    }
                    else
                    {
                        throw new NotSupportedException();
                    }
                }
            }
        }
 public void NavigateComplete2(object pDisp, ref object url)
 {
     UnsafeNativeMethods.IWebBrowser2 webBrowser = (UnsafeNativeMethods.IWebBrowser2)pDisp;
     if (this._parent.AxIWebBrowser2 == webBrowser)
     {
         if (this._parent.DocumentStream != null)
         {
             Invariant.Assert(this._parent.NavigatingToAboutBlank && string.Compare((string)url, "about:blank", StringComparison.OrdinalIgnoreCase) == 0);
             try
             {
                 UnsafeNativeMethods.IHTMLDocument nativeHTMLDocument = this._parent.NativeHTMLDocument;
                 if (nativeHTMLDocument != null)
                 {
                     UnsafeNativeMethods.IPersistStreamInit          persistStreamInit = nativeHTMLDocument as UnsafeNativeMethods.IPersistStreamInit;
                     System.Runtime.InteropServices.ComTypes.IStream pstm = new ManagedIStream(this._parent.DocumentStream);
                     persistStreamInit.Load(pstm);
                 }
                 return;
             }
             finally
             {
                 this._parent.DocumentStream = null;
             }
         }
         string text = (string)url;
         if (this._parent.NavigatingToAboutBlank)
         {
             Invariant.Assert(string.Compare(text, "about:blank", StringComparison.OrdinalIgnoreCase) == 0);
             text = null;
         }
         Uri uri = string.IsNullOrEmpty(text) ? null : new Uri(text);
         NavigationEventArgs e = new NavigationEventArgs(uri, null, null, null, null, true);
         this._parent.OnNavigated(e);
     }
 }
Exemplo n.º 3
0
        static void ToTiff(string path)
        {
            using (var bmp = WicBitmapSource.Load(path))
            {
                //Dump(bmp.GetMetadataReader());

                for (var i = 0; i < 8; i++)
                {
                    var option = (WICTiffCompressionOption)i;
                    using var file    = File.OpenWrite("test." + option + ".tiff");
                    using var encoder = WICImagingFactory.CreateEncoder(WicCodec.GUID_ContainerFormatTiff);
                    var mis = new ManagedIStream(file);
                    encoder.Initialize(mis);

                    var newFrame = encoder.CreateNewFrame();

                    var dic = new Dictionary <string, object>();
                    dic["TiffCompressionMethod"] = option;
                    newFrame.Item2.Write(dic);
                    newFrame.Initialize();

                    using (var writer = newFrame.GetMetadataQueryWriter())
                    {
                        //writer.SetMetadataByName("/ifd/{ushort=296}", 1);
                        writer.SetMetadataByName("/ifd/xmp/exif:ImageUniqueID", "ImageId" + option);
                    }

                    newFrame.WriteSource(bmp.ComObject);
                    newFrame.Item1.Commit();

                    encoder.Commit();
                }
            }
        }
Exemplo n.º 4
0
        public static ComObject <IWICBitmapSource> LoadBitmapSource(Stream stream, WICDecodeOptions metadataOptions = WICDecodeOptions.WICDecodeMetadataCacheOnDemand)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            var wfac = (IWICImagingFactory) new WICImagingFactory();
            IWICBitmapDecoder     decoder = null;
            IWICBitmapFrameDecode frame   = null;
            var mis = new ManagedIStream(stream);

            try
            {
                wfac.CreateDecoderFromStream(mis, IntPtr.Zero, metadataOptions, out decoder).ThrowOnError();
                decoder.GetFrame(0, out frame).ThrowOnError();
                wfac.CreateFormatConverter(out var converter).ThrowOnError();
                var format = WICConstants.GUID_WICPixelFormat32bppPBGRA;
                converter.Initialize(frame, ref format, WICBitmapDitherType.WICBitmapDitherTypeNone, null, 0, WICBitmapPaletteType.WICBitmapPaletteTypeCustom).ThrowOnError();
                return(new ComObject <IWICBitmapSource>(converter));
            }
            finally
            {
                ComObject.Release(frame);
                ComObject.Release(decoder);
                ComObject.Release(wfac);
            }
        }
Exemplo n.º 5
0
        private void btStart_Click(object sender, EventArgs e)
        {
            if (rbSTreamTypeFile.Checked)
            {
                FileStream     fs     = new FileStream(edFilename.Text, FileMode.Open);
                ManagedIStream stream = new ManagedIStream(fs);

                // specifing settings
                // MediaPlayer1.Source_Mode = VFMediaPlayerSource.Memory_DS;
                MediaPlayer1.Source_Stream      = stream;
                MediaPlayer1.Source_Stream_Size = fs.Length;
            }
            else
            {
                byte[]       source = File.ReadAllBytes(edFilename.Text);
                MemoryStream ms     = new MemoryStream(source);

                ManagedIStream stream = new ManagedIStream(ms);

                // specifing settings
                // MediaPlayer1.Source_Mode = VFMediaPlayerSource.Memory_DS;
                MediaPlayer1.Source_Stream      = stream;
                MediaPlayer1.Source_Stream_Size = ms.Length;
            }

            // video and audio present in file. tune this settings to play audio files or video files without audio
            MediaPlayer1.Source_Stream_VideoPresent = true;
            MediaPlayer1.Source_Stream_AudioPresent = true;

            MediaPlayer1.Source_Mode = VFMediaPlayerSource.Memory_DS;

            MediaPlayer1.Audio_OutputDevice = "Default DirectSound Device";

            if (VideoCapture.Filter_Supported_EVR())
            {
                MediaPlayer1.Video_Renderer.Video_Renderer = VFVideoRenderer.EVR;
            }
            else if (VideoCapture.Filter_Supported_VMR9())
            {
                MediaPlayer1.Video_Renderer.Video_Renderer = VFVideoRenderer.VMR9;
            }
            else
            {
                MediaPlayer1.Video_Renderer.Video_Renderer = VFVideoRenderer.VideoRenderer;
            }

            MediaPlayer1.Debug_Mode = cbDebugMode.Checked;
            MediaPlayer1.Play();

            tbTimeline.Maximum = (int)(MediaPlayer1.Duration_Time() / 1000);
            timer1.Enabled     = true;
        }
Exemplo n.º 6
0
        static void CopyGif()
        {
            using (var dec = WicBitmapDecoder.Load(@"source.gif"))
            {
                var reader = dec.GetMetadataQueryReader();
                Dump(reader);
                Console.WriteLine();

                foreach (var frame in dec)
                {
                    Console.WriteLine(frame.Size);

                    reader = frame.GetMetadataReader();
                    Dump(reader);
                    Console.WriteLine();
                }


                using (var encoder = WICImagingFactory.CreateEncoder(dec.ContainerFormat))
                {
                    using (var file = File.OpenWrite("test.gif"))
                    {
                        var mis = new ManagedIStream(file);
                        encoder.Initialize(mis);

                        foreach (var frame in dec)
                        {
                            var newFrame = encoder.CreateNewFrame();
                            newFrame.Initialize();

                            var md = frame.GetMetadataReader().Enumerate();
                            using (var writer = newFrame.GetMetadataQueryWriter())
                            {
                                writer.EncodeMetadata(md);

                                // change delay here
                                writer.SetMetadataByName("/grctlext/Delay", (ushort)5);
                            }

                            if (frame.Palette != null)
                            {
                                newFrame.SetPalette(frame.Palette.ComObject);
                            }

                            newFrame.WriteSource(frame.ComObject);
                            newFrame.Item1.Commit();
                        }
                        encoder.Commit();
                    }
                }
            }
        }
Exemplo n.º 7
0
        public Image GetImage()
        {
            Image ret = null;

              try
              {
            Guid clsid = Guid.Empty;
            foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders())
            {
              if (codec.FilenameExtension.IndexOf("*.JPG") >= 0)
              {
            clsid = codec.Clsid;
            break;
              }
            }

            IntPtr img = IntPtr.Zero;
            int st = GDIPlus_DLL.GdipCreateBitmapFromGdiDib(bmpptr, pixptr, ref img);
            if ((st != 0) || (img == IntPtr.Zero))
              return ret;

            /*
            string tempFile = Path.GetTempFileName(); // "TEMPSCANIMAGE.JPG";
            st = GDIPlus_DLL.GdipSaveImageToFile (img, tempFile, ref clsid, IntPtr.Zero);
            if (st == 0)
            {
              //Image iff = Image.FromFile(tempFile);
              //ret = iff.Clone() as Image;
              ret = (Image)Image.FromFile(tempFile);
              GDIPlus_DLL.GdipDisposeImage(img);
              File.Delete(tempFile);
            }
            */

            MemoryStream ms = new MemoryStream();
            ManagedIStream mis = new ManagedIStream(ms);
            st = GDIPlus_DLL.GdipSaveImageToStream(img, mis, ref clsid, IntPtr.Zero);
            if (st == 0)
            {
              ret = new Bitmap(ms);
              GDIPlus_DLL.GdipDisposeImage(img);
            }
            GC.SuppressFinalize(mis);
              }
              catch (Exception ex)
              {
            MessageBox.Show(ex.Source + " : " + ex.Message + Environment.NewLine + " [" + ex.StackTrace + "]", "Error !!!");
              }
            return ret;
        }
Exemplo n.º 8
0
        private void btStop_Click(object sender, EventArgs e)
        {
            MediaPlayer1.Stop();
            timer1.Enabled   = false;
            tbTimeline.Value = 0;

            _fileStream?.Dispose();
            _fileStream = null;

            _memoryStream?.Dispose();
            _memoryStream = null;

            _memorySource = null;
            _stream       = null;
        }
Exemplo n.º 9
0
        public bool AddToFileSystem(IFsiDirectoryItem rootItem, CancellationToken cancellationToken, string basePath = "")
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return(false);
            }

            try
            {
                var stream = new ManagedIStream(File.Open(Path, FileMode.Open, FileAccess.Read, FileShare.Read));
                rootItem.AddFile(System.IO.Path.Combine(basePath, DisplayName), stream);
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Exemplo n.º 10
0
        public void Save(
            Stream stream,
            Guid encoderContainerFormat,
            Guid?pixelFormat = null,
            WICBitmapEncoderCacheOption cacheOptions = WICBitmapEncoderCacheOption.WICBitmapEncoderNoCache,
            IEnumerable <KeyValuePair <string, object> > encoderOptions = null,
            IEnumerable <WicMetadataKeyValue> metadata = null,
            WicPalette encoderPalette = null,
            WicPalette framePalette   = null,
            WICRect?sourceRectangle   = null)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            using (var encoder = WICImagingFactory.CreateEncoder(encoderContainerFormat))
            {
                var mis = new ManagedIStream(stream);
                encoder.Initialize(mis, cacheOptions);

                if (encoderPalette != null)
                {
                    // gifs...
                    encoder.SetPalette(encoderPalette.ComObject);
                }

                var frameBag = encoder.CreateNewFrame();

                if (encoderOptions != null)
                {
                    frameBag.Item2.Write(encoderOptions);
                }

                frameBag.Initialize();

                if (metadata?.Any() == true)
                {
                    using (var writer = frameBag.GetMetadataQueryWriter())
                    {
                        writer.EncodeMetadata(metadata);
                    }
                }

                if (pixelFormat.HasValue)
                {
                    frameBag.SetPixelFormat(pixelFormat.Value);
                }

                if (framePalette != null)
                {
                    frameBag.Item1.SetPalette(framePalette.ComObject);
                }

                // "WIC error 0x88982F0C. The component is not initialized" here can mean the palette is not set
                // "WIC error 0x88982F45. The bitmap palette is unavailable" here means for example we're saving a file that doesn't support palette (even if we called SetPalette before, it may be useless)
                frameBag.WriteSource(_comObject, sourceRectangle);
                frameBag.Item1.Commit();
                encoder.Commit();
            }
        }
Exemplo n.º 11
0
        private async void btStart_Click(object sender, EventArgs e)
        {
            mmError.Text = string.Empty;

            // video and audio present in file. tune this settings to play audio files or video files without audio
            bool videoPresent;
            bool audioPresent;

            if (rbVideoWithAudio.Checked)
            {
                videoPresent = true;
                audioPresent = true;
            }
            else if (rbVideoWithoutAudio.Checked)
            {
                videoPresent = true;
                audioPresent = false;
            }
            else
            {
                videoPresent = false;
                audioPresent = true;
            }

            if (rbSTreamTypeFile.Checked)
            {
                _fileStream = new FileStream(edFilename.Text, FileMode.Open);
                _stream     = new ManagedIStream(_fileStream);

                // specifying settings
                MediaPlayer1.Source_MemoryStream = new MemoryStreamSource(_stream, videoPresent, audioPresent, _fileStream.Length);
            }
            else
            {
                _memorySource = File.ReadAllBytes(edFilename.Text);
                _memoryStream = new MemoryStream(_memorySource);
                _stream       = new ManagedIStream(_memoryStream);

                // specifying settings
                MediaPlayer1.Source_MemoryStream = new MemoryStreamSource(_stream, videoPresent, audioPresent, _fileStream.Length);
            }

            MediaPlayer1.Source_Mode = MediaPlayerSourceMode.Memory_DS;

            MediaPlayer1.Audio_OutputDevice = "Default DirectSound Device";

            if (FilterHelpers.Filter_Supported_EVR())
            {
                MediaPlayer1.Video_Renderer.VideoRenderer = VideoRendererMode.EVR;
            }
            else if (FilterHelpers.Filter_Supported_VMR9())
            {
                MediaPlayer1.Video_Renderer.VideoRenderer = VideoRendererMode.VMR9;
            }
            else
            {
                MediaPlayer1.Video_Renderer.VideoRenderer = VideoRendererMode.VideoRenderer;
            }

            MediaPlayer1.Debug_Mode = cbDebugMode.Checked;
            await MediaPlayer1.PlayAsync();

            tbTimeline.Maximum = (int)(await MediaPlayer1.Duration_TimeAsync()).TotalSeconds;
            timer1.Enabled     = true;
        }
Exemplo n.º 12
0
    public static IntPtr GenerateHICON(ImageSource image, Size dimensions)
    {
        if (image == null)
        {
            return(IntPtr.Zero);
        }
        BitmapFrame bitmapFrame = image as BitmapFrame;

        if (bitmapFrame != null)
        {
            bitmapFrame = Utility.GetBestMatch(bitmapFrame.Decoder.Frames, (int)dimensions.Width, (int)dimensions.Height);
        }
        else
        {
            Rect   rectangle = new Rect(0.0, 0.0, dimensions.Width, dimensions.Height);
            double num       = dimensions.Width / dimensions.Height;
            double num2      = image.Width / image.Height;
            if (image.Width <= dimensions.Width && image.Height <= dimensions.Height)
            {
                rectangle = new Rect((dimensions.Width - image.Width) / 2.0, (dimensions.Height - image.Height) / 2.0, image.Width, image.Height);
            }
            else if (num > num2)
            {
                double num3 = image.Width / image.Height * dimensions.Width;
                rectangle = new Rect((dimensions.Width - num3) / 2.0, 0.0, num3, dimensions.Height);
            }
            else if (num < num2)
            {
                double num4 = image.Height / image.Width * dimensions.Height;
                rectangle = new Rect(0.0, (dimensions.Height - num4) / 2.0, dimensions.Width, num4);
            }
            DrawingVisual  drawingVisual  = new DrawingVisual();
            DrawingContext drawingContext = drawingVisual.RenderOpen();
            drawingContext.DrawImage(image, rectangle);
            drawingContext.Close();
            RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((int)dimensions.Width, (int)dimensions.Height, 96.0, 96.0, PixelFormats.Pbgra32);
            renderTargetBitmap.Render(drawingVisual);
            bitmapFrame = BitmapFrame.Create(renderTargetBitmap);
        }
        IntPtr result;

        using (MemoryStream memoryStream = new MemoryStream())
        {
            new PngBitmapEncoder
            {
                Frames =
                {
                    bitmapFrame
                }
            }.Save(memoryStream);
            using (ManagedIStream managedIStream = new ManagedIStream(memoryStream))
            {
                IntPtr zero = IntPtr.Zero;
                try
                {
                    Status status = NativeMethods.GdipCreateBitmapFromStream(managedIStream, out zero);
                    if (status != Status.Ok)
                    {
                        result = IntPtr.Zero;
                    }
                    else
                    {
                        IntPtr intPtr;
                        status = NativeMethods.GdipCreateHICONFromBitmap(zero, out intPtr);
                        if (status != Status.Ok)
                        {
                            result = IntPtr.Zero;
                        }
                        else
                        {
                            result = intPtr;
                        }
                    }
                }
                finally
                {
                    Utility.SafeDisposeImage(ref zero);
                }
            }
        }
        return(result);
    }
Exemplo n.º 13
0
        protected override void Command()
        {
            try
            {
                Body2  CorpsBase         = null;
                String MateriauCorpsBase = "";
                if (MdlBase.eSelect_RecupererTypeObjet() == e_swSelectType.swSelFACES)
                {
                    var face = MdlBase.eSelect_RecupererObjet <Face2>();
                    CorpsBase = face.GetBody();
                }
                else if (MdlBase.eSelect_RecupererTypeObjet() == e_swSelectType.swSelSOLIDBODIES)
                {
                    CorpsBase = MdlBase.eSelect_RecupererObjet <Body2>();
                }

                if (CorpsBase == null)
                {
                    System.Windows.Forms.MessageBox.Show("Erreur de corps selectionné");
                    return;
                }

                MateriauCorpsBase = CorpsBase.eGetMateriauCorpsOuPiece(MdlBase.ePartDoc(), MdlBase.eNomConfigActive());

                System.Windows.Forms.OpenFileDialog pDialogue = new System.Windows.Forms.OpenFileDialog
                {
                    Filter           = "Fichier texte (*.data)|*.data|Tout les fichiers (*.*)|*.*",
                    Multiselect      = false,
                    InitialDirectory = Path.GetDirectoryName(Path.Combine(MdlBase.GetPathName(), "Pieces", "Corps")),
                    RestoreDirectory = true
                };

                String Chemin = "";

                if (pDialogue.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    Chemin = pDialogue.FileName;
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Erreur de chemin");
                    return;
                }

                Body2  CorpsCharge         = null;
                String MateriauCorpsCharge = "";
                String NoCorps             = "";
                Byte[] Tab = File.ReadAllBytes(Chemin);
                using (MemoryStream ms = new MemoryStream(Tab))
                {
                    ManagedIStream MgIs = new ManagedIStream(ms);
                    Modeler        mdlr = (Modeler)App.Sw.GetModeler();
                    CorpsCharge = (Body2)mdlr.Restore(MgIs);
                }

                if (CorpsCharge == null)
                {
                    System.Windows.Forms.MessageBox.Show("Erreur de corps chargé");
                    return;
                }

                NoCorps = Path.GetFileNameWithoutExtension(Chemin).Substring(1);

                System.Windows.Forms.MessageBox.Show("NoCorps : " + NoCorps);

                var cheminNomenclature = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(Chemin)), "Nomenclature.txt");

                System.Windows.Forms.MessageBox.Show("Chemin Nomenclature : " + cheminNomenclature);

                using (var sr = new StreamReader(cheminNomenclature, Encoding.GetEncoding(1252)))
                {
                    // On lit la première ligne contenant l'entête des colonnes
                    String ligne = sr.ReadLine();

                    if (ligne.IsRef())
                    {
                        while ((ligne = sr.ReadLine()) != null)
                        {
                            if (!String.IsNullOrWhiteSpace(ligne))
                            {
                                var tab = ligne.Split(new char[] { '\t' });
                                if (NoCorps == tab[0])
                                {
                                    MateriauCorpsCharge = tab[4];
                                    break;
                                }
                            }
                        }
                    }
                }

                if (String.IsNullOrWhiteSpace(MateriauCorpsCharge))
                {
                    System.Windows.Forms.MessageBox.Show("Erreur de materiau corps chargé");
                    return;
                }

                var Result = "Est different";
                if (MateriauCorpsCharge == MateriauCorpsBase)
                {
                    Result = "Est semblable";
                }

                System.Windows.Forms.MessageBox.Show("Materiau : " + MateriauCorpsCharge + " " + MateriauCorpsBase + "  " + Result);

                Result = "Est different";
                if (CorpsBase.eComparerGeometrie(CorpsCharge) == Sw.Comparaison_e.Semblable)
                {
                    Result = "Est semblable";
                }

                System.Windows.Forms.MessageBox.Show("Corps : " + Result);
            }
            catch (Exception e)
            {
                this.LogMethode(new Object[] { e });
            }
        }