Example #1
0
 private void OnMerging(Object sender, MergeEventArgs e)
 {
     _log.InfoFormat("Merging items --> Source: '{0}', Target: '{1}'", e.SourceServerItem, e.TargetServerItem);
     _log.InfoFormat("Merging items --> IsConflict: {0}, IsLatest: {1}, ", e.IsConflict, e.IsLatest);
     _log.InfoFormat("Merging items --> Status: {0}, Resolution: {1}, ", e.Status, e.Resolution);
     _log.InfoFormat(string.Empty);
 }
Example #2
0
 private void MergeStart(object sender, MergeEventArgs e)
 {
     mergerButton.Enabled = false;
     sortButton.Enabled   = false;
     prograss.Show();
     prograss.Value   = 0;
     prograss.Maximum = e.Count;
 }
Example #3
0
 private void MergeCompleted(object sender, MergeEventArgs e)
 {
     Program.Controller.Do("replaceImg", Album, e.Album);
     MergeButton.Enabled = true;
     sortButton.Enabled  = true;
     prograss.Visible    = false;
     DialogResult        = DialogResult.OK;
 }
Example #4
0
        public void OnMergeStateChange(MergeEventArgs e)
        {
            EventHandler <MergeEventArgs> handler = MergeStateChange;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Example #5
0
 private void MergeCompleted(object sender, MergeEventArgs e)
 {
     Connector.Do("replaceImg", Album, e.Album);
     mergerButton.Enabled = true;
     sortButton.Enabled   = true;
     prograss.Visible     = false;
     if (completedHideCheck.Checked)
     {
         DialogResult = DialogResult.OK;
     }
 }
Example #6
0
        public void DoMerge(string[] arrFileNames, string saveFile)
        {
            MergeEventArgs arg = new MergeEventArgs();
            //以合并后的文件名称和打开方式来创建、初始化FileStream文件流
            FileStream addStream = new FileStream(saveFile, FileMode.Create);
            //以FileStream文件流来初始化BinaryWriter书写器,此用以合并分割的文件
            long size = 0;

            using (BinaryWriter addWriter = new BinaryWriter(addStream))
            {
                foreach (string file in arrFileNames)
                {
                    FileInfo info = new FileInfo(file);
                    size += info.Length;
                }
                for (int index = 0; index < arrFileNames.Length; index++)
                {
                    string file = arrFileNames[index];
                    // ReSharper disable AssignNullToNotNullAttribute
                    file = Path.Combine(Path.GetDirectoryName(file),
                                        String.Concat(Path.GetFileNameWithoutExtension(file), ".fsp", index + 1));
                    // ReSharper restore AssignNullToNotNullAttribute
                    //以小文件所对应的文件名称和打开模式来初始化FileStream文件流,起读取分割作用
                    FileStream tempStream = new FileStream(file, FileMode.Open);
                    //用FileStream文件流来初始化BinaryReader文件阅读器,也起读取分割文件作用
                    BinaryReader tempReader = new BinaryReader(tempStream);
                    int          readLength = (int)(tempStream.Length > _maxReadSize ? _maxReadSize : tempStream.Length);
                    int          readCount  = (int)(tempStream.Length > _maxReadSize && tempStream.Length % _maxReadSize != 0
                                               ? (tempStream.Length / _maxReadSize) + 1
                                               : tempStream.Length / _maxReadSize);
                    readCount = tempStream.Length > _maxReadSize ? readCount : 1;
                    for (int i = 0; i < readCount; i++)
                    {
                        //读取分割文件中的数据,并生成合并后文件
                        addWriter.Write(tempReader.ReadBytes(readLength));

                        arg.FileName = file;
                        arg.Percent  = (int)(((double)addStream.Length / size) * 100);
                        arg.Length   = tempStream.Length;
                        OnMergeStateChange(arg);
                    }
                    //关闭BinaryReader文件阅读器
                    tempReader.Close();
                    //关闭FileStream文件流
                    tempStream.Close();
                }
                //关闭BinaryWriter文件书写器
                addWriter.Close();
            }
            //关闭FileStream文件流
            addStream.Close();
        }
Example #7
0
        } // OnBeforeMerge

        private void OnAfterMerge(object sender, MergeEventArgs e)
        {
            AfterMerge?.Invoke(sender, e);
        } // OnAfterMerge
Example #8
0
        } // OnAfterDownload

        private void OnBeforeMerge(object sender, MergeEventArgs e)
        {
            BeforeMerge?.Invoke(sender, e);
        } // OnBeforeMerge
Example #9
0
 public void OnMergeCompleted(MergeEventArgs e)
 {
     MergeCompleted?.Invoke(this, e);
 }
Example #10
0
 private void OnMergeProcessing(MergeEventArgs e) => MergeProcessing?.Invoke(this, e);
Example #11
0
 private void OnMergeStarted(MergeEventArgs e) => MergeStarted?.Invoke(this, e);
Example #12
0
        /// <summary>
        /// 执行拼合
        /// </summary>
        public void RunMerge()
        {
            var e       = new MergeEventArgs();
            var Array   = Queues.ToArray().Reverse();//序列反转
            int count   = 0;
            var version = Img_Version.Ver2;

            foreach (Album al in Array)
            {
                if (al.List.Count > count)  //获得最大帧数
                {
                    count = al.List.Count;
                }
                if (al.Version > version)  //获得最高文件版本
                {
                    version = al.Version;
                }
            }
            var Album = new Album {
                Version = version
            };

            Album.InitHandle(null);
            Album.Tables = new List <List <Color> >();
            e.Count      = count;
            e.Album      = Album;
            OnMergeStarted(e);//启动拼合事件
            var entitys = new List <Sprite>();

            for (var i = 0; i < count; i++)
            {
                var entity     = new Sprite(Album);
                var width      = 1;
                var height     = 1;
                var max_width  = 0;
                var max_height = 0;
                var x          = 800;
                var y          = 600;
                var type       = ColorBits.ARGB_1555;
                foreach (var al in Array)
                {
                    if (i < al.List.Count)
                    {
                        var source = al.List[i];
                        if (source.Type == ColorBits.LINK)  //如果为链接贴图。则引用指向贴图的属性
                        {
                            source = source.Target;
                        }
                        if (source.Canvas_Width > max_width)  //最大画布
                        {
                            max_width = source.Canvas_Height;
                        }
                        if (source.Canvas_Height > max_height)
                        {
                            max_height = source.Canvas_Height;
                        }
                        if (source.Compress == Compress.NONE && source.Width * source.Height == 1)  //将透明图层过滤
                        {
                            continue;
                        }
                        if (source.Width + source.X > width)  //获得最右点坐标
                        {
                            width = source.Width + source.X;
                        }
                        if (source.Height + source.Y > height)  //获得最下点坐标
                        {
                            height = source.Height + source.Y;
                        }
                        if (source.X < x)  //获得最左点坐标
                        {
                            x = source.X;
                        }
                        if (source.Y < y)  //获得最上点坐标
                        {
                            y = source.Y;
                        }
                        if (source.Type > type && source.Type < ColorBits.LINK)
                        {
                            type = source.Type;
                        }
                    }
                }
                width  -= x;                     //获得上下左右两端的差,即宽高
                height -= y;
                width   = width > 1 ? width : 1; //防止宽高小于1
                height  = height > 1 ? height : 1;
                if (width * height > 1)          //当贴图面积大于1时,使用zlib压缩
                {
                    entity.Compress = Compress.ZLIB;
                }
                entity.Type        = type;
                entity.Index       = entitys.Count;
                entity.Location    = new Point(x, y);
                entity.Canvas_Size = new Size(max_width, max_height);
                var image = new Bitmap(width, height);
                using (var g = Graphics.FromImage(image)) {
                    foreach (var al in Array)
                    {
                        if (i < al.List.Count)
                        {
                            var source = al.List[i];
                            if (source.Type == ColorBits.LINK)
                            {
                                source = source.Target;
                            }
                            g.DrawImage(source.Picture, source.X - x, source.Y - y);//绘制贴图
                        }
                    }
                }
                entity.ReplaceImage(type, false, image); //替换贴图
                e.Progress++;                            //拼合进度自增
                OnMergeProcessing(e);
                entitys.Add(entity);
            }
            Album.List.AddRange(entitys);
            OnMergeCompleted(e);//拼合完成
        }
Example #13
0
 /// <summary>
 /// Handles the Merging event of the versionControlServer control.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="Microsoft.TeamFoundation.VersionControl.Client.MergeEventArgs"/> instance containing the event data.</param>
 /// <remarks>Documented by CFI, 2010-06-27</remarks>
 protected void versionControlServer_Merging(object sender, MergeEventArgs e)
 {
     MessageBox.Show("Merging");
 }
Example #14
0
 public void OnMergeStateChange(MergeEventArgs e)
 {
     EventHandler<MergeEventArgs> handler = MergeStateChange;
     if (handler != null) handler(this, e);
 }
Example #15
0
        public void DoMerge(string[] arrFileNames, string saveFile)
        {
            MergeEventArgs arg = new MergeEventArgs();
            //以合并后的文件名称和打开方式来创建、初始化FileStream文件流
            FileStream addStream = new FileStream(saveFile, FileMode.Create);
            //以FileStream文件流来初始化BinaryWriter书写器,此用以合并分割的文件
            long size = 0;
            using (BinaryWriter addWriter = new BinaryWriter(addStream))
            {
                foreach(string file in arrFileNames)
                {
                    FileInfo info = new FileInfo(file);
                    size += info.Length;
                }
                for (int index = 0; index < arrFileNames.Length; index++)
                {
                    string file = arrFileNames[index];
                    // ReSharper disable AssignNullToNotNullAttribute
                    file = Path.Combine(Path.GetDirectoryName(file),
                                        String.Concat(Path.GetFileNameWithoutExtension(file), ".fsp", index + 1));
                    // ReSharper restore AssignNullToNotNullAttribute
                    //以小文件所对应的文件名称和打开模式来初始化FileStream文件流,起读取分割作用
                    FileStream tempStream = new FileStream(file, FileMode.Open);
                    //用FileStream文件流来初始化BinaryReader文件阅读器,也起读取分割文件作用
                    BinaryReader tempReader = new BinaryReader(tempStream);
                    int readLength = (int)(tempStream.Length > _maxReadSize ? _maxReadSize : tempStream.Length);
                    int readCount = (int) (tempStream.Length > _maxReadSize && tempStream.Length%_maxReadSize != 0
                                               ? (tempStream.Length/_maxReadSize) + 1
                                               : tempStream.Length/_maxReadSize);
                    readCount = tempStream.Length > _maxReadSize ? readCount : 1;
                    for (int i = 0; i < readCount; i++)
                    {
                        
                        //读取分割文件中的数据,并生成合并后文件
                        addWriter.Write(tempReader.ReadBytes(readLength));

                        arg.FileName = file;
                        arg.Percent = (int) (((double) addStream.Length/size)*100);
                        arg.Length = tempStream.Length;
                        OnMergeStateChange(arg);
                    }
                    //关闭BinaryReader文件阅读器
                    tempReader.Close();
                    //关闭FileStream文件流
                    tempStream.Close();
                }
                //关闭BinaryWriter文件书写器
                addWriter.Close();
            }
            //关闭FileStream文件流
            addStream.Close();
        }
Example #16
0
 public void OnMergeStarted(MergeEventArgs e)
 {
     MergeStarted?.Invoke(this, e);
 }
Example #17
0
 public void OnMergeProcessing(MergeEventArgs e)
 {
     MergeProcessing?.Invoke(this, e);
 }
Example #18
0
 private void OnMergeCompleted(MergeEventArgs e) => MergeCompleted?.Invoke(this, e);
Example #19
0
        public static void Merge(IEnumerable <Album> list, int targetVersion, IMergeProgress progress)
        {
            var e = new MergeEventArgs();

            list = list.Reverse(); //序列反转
            var count   = 0;
            var version = targetVersion > 0 ? (ImgVersion)targetVersion : ImgVersion.Ver2;

            foreach (var al in list)
            {
                if (al.List.Count > count)
                {
                    count = al.List.Count;
                }
                if (targetVersion == 0 && al.Version > version)
                {
                    version = al.Version;
                }
            }
            var file = new Album {
                Version = version
            };

            file.InitHandle(null);
            e.Count = count;
            e.Album = file;
            progress.OnMergeStarted(e); //启动拼合事件
            var entitys = new List <Sprite>();

            for (var i = 0; i < count; i++)
            {
                var entity     = new Sprite(file);
                var width      = 1;
                var height     = 1;
                var max_width  = 0;
                var max_height = 0;
                var x          = 800;
                var y          = 600;
                var type       = ColorBits.ARGB_1555;
                foreach (var al in list)
                {
                    if (i < al.List.Count)
                    {
                        var source = al.List[i];
                        if (source.Type == ColorBits.LINK)
                        {
                            source = source.Target;
                        }
                        if (source.FrameWidth > max_width)
                        {
                            max_width = source.FrameHeight;
                        }
                        if (source.FrameHeight > max_height)
                        {
                            max_height = source.FrameHeight;
                        }
                        if (source.Hidden)
                        {
                            continue;
                        }
                        if (source.Width + source.X > width)
                        {
                            width = source.Width + source.X;
                        }
                        if (source.Height + source.Y > height)
                        {
                            height = source.Height + source.Y;
                        }
                        if (source.X < x)
                        {
                            x = source.X;
                        }
                        if (source.Y < y)
                        {
                            y = source.Y;
                        }
                        if (source.Type > type && source.Type < ColorBits.LINK)
                        {
                            type = source.Type;
                        }
                    }
                }

                width  -= x;                     //获得上下左右两端的差,即宽高
                height -= y;
                width   = width > 1 ? width : 1; //防止宽高小于1
                height  = height > 1 ? height : 1;
                if (width * height > 1)
                {
                    entity.CompressMode = CompressMode.ZLIB;
                }
                entity.Type      = type;
                entity.Index     = entitys.Count;
                entity.Location  = new Point(x, y);
                entity.FrameSize = new Size(max_width, max_height);
                var image = new Bitmap(width, height);
                using (var g = Graphics.FromImage(image)) {
                    foreach (var al in list)
                    {
                        if (i < al.List.Count)
                        {
                            var source = al.List[i];
                            if (source.Type == ColorBits.LINK)
                            {
                                source = source.Target;
                            }
                            g.DrawImage(source.Picture, source.X - x, source.Y - y); //绘制贴图
                        }
                    }
                }
                entity.ReplaceImage(type, false, image); //替换贴图
                e.Progress++;                            //拼合进度自增
                progress.OnMergeProcessing(e);
                entitys.Add(entity);
            }
            file.List.AddRange(entitys);
            progress.OnMergeCompleted(e); //拼合完成
        }
Example #20
0
 private void MergeProcessing(object sender, MergeEventArgs e) => prograss.Value++;