private static void ImageListBox_MeasureItem(object sender, MeasureItemEventArgs e)
        {
            e.ItemHeight = Consts.ImageListBoxItemMaxHeight + Consts.ImageListBoxItemImageMargin;

            var listBox = sender as ListBox;

            if (listBox == null)
            {
                return;
            }
            if (e.Index < 0)
            {
                return;
            }

            var item = listBox.Items[e.Index] as ImagedItem <FirmwareImageMetadata>;

            if (item == null)
            {
                return;
            }

            try
            {
                var cachedImage = ImageCacheManager.GetImage(item.ImageCacheIndex, item.Value.BlockType);
                e.ItemHeight = Math.Min(e.ItemHeight, cachedImage.Height + Consts.ImageListBoxItemImageMargin);
            }
            catch (ObjectDisposedException)
            {
                // Ignore
            }
        }
Пример #2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            appleMusicManager = new AppleMusicManager();
            imageCacheManager = new ImageCacheManager();
            mediaItems        = new MediaItem [0] [];

            // Configure self sizing cells.
            TableView.RowHeight          = UITableView.AutomaticDimension;
            TableView.EstimatedRowHeight = 100;

            // Configure the `UISearchController`.
            searchController = new UISearchController(searchResultsController: null);
            searchController.SearchResultsUpdater             = this;
            searchController.DimsBackgroundDuringPresentation = false;
            searchController.SearchBar.Delegate = this;
            TableView.TableHeaderView           = searchController.SearchBar;
            DefinesPresentationContext          = true;

            /*
             * Add the notification observers needed to respond to events from
             * the `AuthorizationManager`, `MPMediaLibrary` and `UIApplication`.
             * This is so that if the user enables/disables capabilities in the
             * Settings app the application will reflect those changes accurately.
             */
            var notificationCenter = NSNotificationCenter.DefaultCenter;

            authorizationDidUpdateNotificationToken = notificationCenter.AddObserver(AuthorizationManager.AuthorizationDidUpdateNotification,
                                                                                     HandleAuthorizationManagerAuthorizationDidUpdateNotification,
                                                                                     null);
            willEnterForegroundNotificationToken = notificationCenter.AddObserver(UIApplication.WillEnterForegroundNotification,
                                                                                  HandleAuthorizationManagerAuthorizationDidUpdateNotification,
                                                                                  null);
        }
        private void StringListBox_MeasureItem(object sender, MeasureItemEventArgs e)
        {
            e.ItemHeight = Consts.ImageListBoxItemMaxHeight + Consts.ImageListBoxItemImageMargin;

            var listBox = sender as ListBox;

            if (listBox == null)
            {
                return;
            }
            if (e.Index < 0)
            {
                return;
            }

            var item = listBox.Items[e.Index] as FirmwareStringMetadata;

            if (item == null)
            {
                return;
            }

            try
            {
                var cachedImage = ImageCacheManager.GetStringImage(item.Index, SelectedImageBlock);
                e.ItemHeight = Math.Min(e.ItemHeight, cachedImage.Height + Consts.ImageListBoxItemImageMargin);
            }
            catch (ObjectDisposedException)
            {
                // Ignore
            }
        }
Пример #4
0
 public DrawVideoAudioLinkage(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
     rect = new Rectangle();
     penVideoAudioLinkageGood.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
     penVideoAudioLinkageBad.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
 }
Пример #5
0
 public DrawVideoAudioLinkage(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
     rect = new Rectangle();
     penVideoAudioLinkageGood.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
     penVideoAudioLinkageBad.DashStyle  = System.Drawing.Drawing2D.DashStyle.Dot;
 }
        private void ImportFontMenuItem_Click(object sender, EventArgs e)
        {
            if (SelectedImageMetadata.Count == 0)
            {
                return;
            }

            using (var importFontWindow = new ImportFontWindow(SelectedImageMetadata))
            {
                if (importFontWindow.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                var importedData = importFontWindow.GetImportedData();
                foreach (var imageDataTuple in importedData)
                {
                    var metadata  = imageDataTuple.Item1;
                    var imageData = imageDataTuple.Item2;

                    ProcessImage(x => imageData, metadata);
                }
                ImageCacheManager.RebuildCache(m_firmware);
                ImageListBox.Invalidate();
                ImageListBox_SelectedValueChanged(ImageListBox, EventArgs.Empty);
            }
        }
        private bool[,] ProcessImage(Func <bool[, ], bool[, ]> imageDataProcessor, FirmwareImageMetadata imageMetadata, bool rebuildCache = false)
        {
            var processedData      = imageDataProcessor(ImagePixelGrid.Data);
            var processedImageSize = processedData.GetSize();
            var imageSizeChanged   = imageMetadata.Width != processedImageSize.Width || imageMetadata.Height != processedImageSize.Height;

            imageMetadata.Width  = (byte)processedImageSize.Width;
            imageMetadata.Height = (byte)processedImageSize.Height;

            m_firmware.WriteImage(processedData, imageMetadata);

            if (imageSizeChanged || rebuildCache)
            {
                ImageCacheManager.RebuildImageCache(m_firmware);
                ImageListBox.Invalidate();
            }
            else
            {
                var cachedImage = FirmwareImageProcessor.CreateBitmap(processedData);
                ImageCacheManager.SetImage(imageMetadata.Index, imageMetadata.BlockType, cachedImage);

                var updateCache = new Action(() =>
                {
                    ImageListBox.Invoke(new Action(() =>
                    {
                        var itemRect = ImageListBox.GetItemRectangle(imageMetadata.Index - 1);
                        ImageListBox.Invalidate(itemRect);
                    }));
                });
                updateCache.BeginInvoke(null, null);
            }

            return(processedData);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            imageCacheManager = new ImageCacheManager();
            mediaItems        = new MediaItem [0];
        }
Пример #9
0
        /// <param name="secStart">needs to be in seconds to figure out which thumb</param>
        /// <param name="len">needs to be in seconds to figure out which thumb</param>
        public void DrawClipBitmaps(
            Graphics g,
            IVidkaOpContext context,
            ImageCacheManager imgCache,
            VidkaClipVideoAbstract vclip,
            int x1, int y1, int clipw, int clipvh,
            double secStart, double len)
        {
            string thumbsFile = context.FileMapping.AddGetThumbnailFilename(vclip.FileName);
            //if (!File.Exists(thumbsFile))
            //	return;
            //Image origThumb = System.Drawing.Image.FromFile(thumbsFile, true);
            //var bmpThumb = new Bitmap(origThumb);
            var heightForThumbs = Math.Max(clipvh - 2 * THUMB_MARGIN_Y, ThumbnailExtraction.ThumbH);
            var thumbPrefWidth  = heightForThumbs * ThumbnailExtraction.ThumbW / ThumbnailExtraction.ThumbH;
            var howManyThumbs   = (clipw - THUMB_MARGIN) / (thumbPrefWidth + THUMB_MARGIN);

            if (howManyThumbs == 0)
            {
                howManyThumbs = 1;
            }
            var xCenteringOffset = (clipw - howManyThumbs * (thumbPrefWidth + THUMB_MARGIN)) / 2;
            var isStill          = vclip is VidkaClipImage ||
                                   vclip is VidkaClipTextSimple; // TODO: I hate this code

            for (int i = 0; i < howManyThumbs; i++)
            {
                //DrawVideoThumbnail(
                //	g: g,
                //	bmpAll: bmpThumb,
                //	timeSec: secStart + (i + 0.5) * len / howManyThumbs,
                //	xCenter: x1 + xCenteringOffset + i * (thumbPrefWidth + THUMB_MARGIN) + (thumbPrefWidth + THUMB_MARGIN) / 2,
                //	yCenter: y1 + clipvh / 2,
                //	preferredWidth: thumbPrefWidth,
                //	maxWidth: clipw);
                var timeSec    = secStart + (i + 0.5) * len / howManyThumbs;
                var imageIndex = (int)(timeSec / ThumbnailExtraction.ThumbIntervalSec);
                if (isStill)
                {
                    imageIndex = 0;
                }
                DrawVideoThumbnail(
                    g: g,
                    imgCache: imgCache,
                    filenameAll: thumbsFile,
                    index: imageIndex,
                    xCenter: x1 + xCenteringOffset + i * (thumbPrefWidth + THUMB_MARGIN) + (thumbPrefWidth + THUMB_MARGIN) / 2,
                    yCenter: y1 + clipvh / 2,
                    preferredWidth: thumbPrefWidth,
                    maxWidth: clipw);
            }
            //bmpThumb.Dispose();
            //origThumb.Dispose();
        }
Пример #10
0
 public static async Task ReceivedMessageEvent(SocketMessage arg)
 {
     if (arg.Channel.Id != DiscordContextOverseer.GetLoggingChannel().Id) //avoid caching images the bot is posting
     {
         var names  = new List <string>();
         var result = GetImageUrls(arg, out names);
         if (result != null)
         {
             await ImageCacheManager.CacheImageAsync(result, names, arg.Id);
         }
     }
 }
        private void ImageListBox_DrawItem(object sender, DrawItemEventArgs e)
        {
            var listBox = sender as ListBox;

            if (listBox == null)
            {
                return;
            }
            if (e.Index < 0)
            {
                return;
            }

            var item = listBox.Items[e.Index] as ImagedItem <FirmwareImageMetadata>;

            if (item == null)
            {
                return;
            }

            e.Graphics.SmoothingMode      = SmoothingMode.None;
            e.Graphics.InterpolationMode  = InterpolationMode.Low;
            e.Graphics.CompositingQuality = CompositingQuality.HighSpeed;
            e.DrawBackground();

            var itemText = item.ToString();

            try
            {
                var imageScale = 1f;
                var image      = ImageCacheManager.GetImage(item.ImageCacheIndex, item.Value.BlockType);

                var greatestDimension = Math.Max(image.Width, image.Height);
                if (greatestDimension > Consts.ImageListBoxItemMaxHeight)
                {
                    imageScale = (float)greatestDimension / Consts.ImageListBoxItemMaxHeight;
                }

                var resultWidth  = image.Width / imageScale;
                var resultHeight = image.Height / imageScale;

                e.Graphics.DrawImage(image, e.Bounds.X + Consts.ImageListBoxItemImageMargin, e.Bounds.Y + (int)(e.Bounds.Height / 2f - resultHeight / 2f), resultWidth, resultHeight);
            }
            catch (ObjectDisposedException)
            {
                // Ignore
            }

            var stringRectX = e.Bounds.X + Consts.ImageListBoxItemMaxHeight + Consts.ImageListBoxItemImageMargin * 2;

            e.Graphics.DrawString(itemText, e.Font, new SolidBrush(e.ForeColor), new RectangleF(stringRectX, e.Bounds.Y, e.Bounds.Width - stringRectX - Consts.ImageListBoxItemImageMargin, e.Bounds.Height), m_listBoxStringFormat);
            e.DrawFocusRectangle();
        }
Пример #12
0
        public void ReloadFirmware(IEditorTabPage initiator)
        {
            if (m_firmware == null)
            {
                return;
            }

            m_tabPages.ForEach(x => x.OnWorkspaceReset());
            m_firmware.ReloadResources(m_loader);
            ImageCacheManager.RebuildCache(m_firmware);
            m_tabPages.ForEach(x => x.OnFirmwareLoaded(m_firmware));
        }
Пример #13
0
        /// <param name="secStart">needs to be in seconds to figure out which thumb</param>
        /// <param name="len">needs to be in seconds to figure out which thumb</param>
        public void DrawClipBitmaps(
            Graphics g,
            IVidkaOpContext context,
            ImageCacheManager imgCache,
            VidkaClipVideoAbstract vclip,
            int x1, int y1, int clipw, int clipvh,
            double secStart, double len)
        {
            string thumbsFile = context.FileMapping.AddGetThumbnailFilename(vclip.FileName);
            //if (!File.Exists(thumbsFile))
            //	return;
            //Image origThumb = System.Drawing.Image.FromFile(thumbsFile, true);
            //var bmpThumb = new Bitmap(origThumb);
            var heightForThumbs = Math.Max(clipvh - 2 * THUMB_MARGIN_Y, ThumbnailExtraction.ThumbH);
            var thumbPrefWidth = heightForThumbs * ThumbnailExtraction.ThumbW / ThumbnailExtraction.ThumbH;
            var howManyThumbs = (clipw - THUMB_MARGIN) / (thumbPrefWidth + THUMB_MARGIN);
            if (howManyThumbs == 0)
            {
                howManyThumbs = 1;

            }
            var xCenteringOffset = (clipw - howManyThumbs * (thumbPrefWidth + THUMB_MARGIN)) / 2;
            var isStill = vclip is VidkaClipImage
                || vclip is VidkaClipTextSimple; // TODO: I hate this code
            for (int i = 0; i < howManyThumbs; i++)
            {
                //DrawVideoThumbnail(
                //	g: g,
                //	bmpAll: bmpThumb,
                //	timeSec: secStart + (i + 0.5) * len / howManyThumbs,
                //	xCenter: x1 + xCenteringOffset + i * (thumbPrefWidth + THUMB_MARGIN) + (thumbPrefWidth + THUMB_MARGIN) / 2,
                //	yCenter: y1 + clipvh / 2,
                //	preferredWidth: thumbPrefWidth,
                //	maxWidth: clipw);
                var timeSec = secStart + (i + 0.5) * len / howManyThumbs;
                var imageIndex = (int)(timeSec / ThumbnailExtraction.ThumbIntervalSec);
                if (isStill)
                    imageIndex = 0;
                DrawVideoThumbnail(
                    g: g,
                    imgCache: imgCache,
                    filenameAll: thumbsFile,
                    index: imageIndex,
                    xCenter: x1 + xCenteringOffset + i * (thumbPrefWidth + THUMB_MARGIN) + (thumbPrefWidth + THUMB_MARGIN) / 2,
                    yCenter: y1 + clipvh / 2,
                    preferredWidth: thumbPrefWidth,
                    maxWidth: clipw);
            }
            //bmpThumb.Dispose();
            //origThumb.Dispose();
        }
Пример #14
0
        private void OpenDialogAndReadFirmwareOnOk(string firmwareName, Func <string, Firmware> readFirmwareDelegate)
        {
            string firmwareFile;

            using (var op = new OpenFileDialog {
                Title = string.Format("Select \"{0}\" firmware file ...", firmwareName), Filter = Consts.FirmwareFilter
            })
            {
                if (op.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                firmwareFile = op.FileName;
            }

            ResetWorkspace();
            try
            {
                var firmware = readFirmwareDelegate(firmwareFile);
                if (firmware == null)
                {
                    throw new InvalidOperationException("No one definition is not appropriate for the selected firmware file.");
                }

                m_firmware     = firmware;
                m_firmwareFile = firmwareFile;

                ImageCacheManager.RebuildImageCache(m_firmware);
                m_tabPages.ForEach(x =>
                {
                    x.OnFirmwareLoaded(m_firmware);
                    x.IsDirty = false;
                });

                SaveMenuItem.Enabled          = true;
                SaveEncryptedMenuItem.Enabled = true;
                SaveDecryptedMenuItem.Enabled = true;

                Text = string.Format("{0} - {1}", Consts.ApplicationTitle, firmwareFile);
                LoadedFirmwareLabel.Text = string.Format("Loaded firmware: {0} {1}", firmware.IsEncrypted ? Consts.Encrypted : Consts.Decrypted, m_firmware.Definition.Name);
            }
            catch (Exception ex)
            {
                InfoBox.Show("Unable to load firmware.\n{0}", ex.Message);
            }
        }
Пример #15
0
        private void ImportResourcePack([NotNull] IList <int> originalImageIndices, [NotNull] IList <bool[, ]> importedImages)
        {
            if (importedImages == null)
            {
                throw new ArgumentNullException("importedImages");
            }
            if (originalImageIndices == null)
            {
                throw new ArgumentNullException("originalImageIndices");
            }
            if (importedImages.Count == 0)
            {
                return;
            }

            for (var i = 0; i < originalImageIndices.Count; i++)
            {
                var originalImageIndex = originalImageIndices[i];
                var importedImage      = importedImages[i];

                if (m_firmware.Block1Images.Count > 0)
                {
                    FirmwareImageMetadata block1ImageMetadata;
                    if (m_firmware.Block1Images.TryGetValue(originalImageIndex, out block1ImageMetadata))
                    {
                        var block1Image = FirmwareImageProcessor.PasteImage(block1ImageMetadata.CreateImage(), importedImage);
                        m_firmware.WriteImage(block1Image, block1ImageMetadata);
                    }
                }

                if (m_firmware.Block2Images.Count > 0)
                {
                    FirmwareImageMetadata block2ImageMetadata;
                    if (m_firmware.Block2Images.TryGetValue(originalImageIndex, out block2ImageMetadata))
                    {
                        var block2Image = FirmwareImageProcessor.PasteImage(block2ImageMetadata.CreateImage(), importedImage);
                        m_firmware.WriteImage(block2Image, block2ImageMetadata);
                    }
                }
            }

            IsDirty = true;
            ImageCacheManager.RebuildCache(m_firmware);
        }
Пример #16
0
        private void DrawVideoThumbnail(Graphics g, ImageCacheManager imgCache, string filenameAll, int index, int xCenter, int yCenter, int preferredWidth, int maxWidth)
        {
            var bmpThumb = imgCache.getThumb(filenameAll, index);

            srcRect.X       = 0;
            srcRect.Y       = 0;
            srcRect.Width   = ThumbnailExtraction.ThumbW;
            srcRect.Height  = ThumbnailExtraction.ThumbH;
            destRect.Width  = preferredWidth;
            destRect.Height = preferredWidth * ThumbnailExtraction.ThumbH / ThumbnailExtraction.ThumbW;
            if (maxWidth < preferredWidth)
            {
                destRect.Width = maxWidth;
                var srcWidth = ThumbnailExtraction.ThumbW * maxWidth / preferredWidth;
                srcRect.X     = (ThumbnailExtraction.ThumbW - srcWidth) / 2;
                srcRect.Width = srcWidth;
            }
            destRect.X = xCenter - destRect.Width / 2;
            destRect.Y = yCenter - destRect.Height / 2;
            g.DrawImage(bmpThumb, destRect: destRect, srcRect: srcRect, srcUnit: GraphicsUnit.Pixel);
        }
Пример #17
0
        private void ImportResourcePack([NotNull] IList <int> originalImageIndices, [NotNull] IList <bool[, ]> importedImages)
        {
            if (importedImages == null)
            {
                throw new ArgumentNullException("importedImages");
            }
            if (originalImageIndices == null)
            {
                throw new ArgumentNullException("originalImageIndices");
            }
            if (importedImages.Count == 0)
            {
                return;
            }

            var block1MetadataDictionary = m_firmware.Block1Images.ToDictionary(x => x.Index, x => x);
            var block2MetadataDictionary = m_firmware.Block2Images.ToDictionary(x => x.Index, x => x);

            for (var i = 0; i < originalImageIndices.Count; i++)
            {
                var originalImageIndex = originalImageIndices[i];
                var importedImage      = importedImages[i];

                if (block1MetadataDictionary.Count > 0)
                {
                    var block1ImageMetadata = block1MetadataDictionary[originalImageIndex];
                    var block1Image         = FirmwareImageProcessor.PasteImage(block1ImageMetadata.CreateImage(), importedImage);
                    m_firmware.WriteImage(block1Image, block1ImageMetadata);
                }

                if (block2MetadataDictionary.Count > 0)
                {
                    var block2ImageMetadata = block2MetadataDictionary[originalImageIndex];
                    var block2Image         = FirmwareImageProcessor.PasteImage(block2ImageMetadata.CreateImage(), importedImage);
                    m_firmware.WriteImage(block2Image, block2ImageMetadata);
                }
            }

            ImageCacheManager.RebuildImageCache(m_firmware);
        }
Пример #18
0
        private void ListIssues_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstIssues.Refresh();

            ClearSearchResults();
            if (lstIssues.SelectedIndex < 0)
            {
                return;
            }
            string issueId = ((Issue)lstIssues.SelectedItem).IssueID;

            lblComicName.Text  = _currentComic.Comics[0].ComicName;
            lblComicName.Text += @"  (" + _currentVolume.Volume.StartYear + @") " + @" Issue #" + ((Issue)lstIssues.SelectedItem).Issue_Number;
            CvIssueResponse issue = ComicVineManager.GetIssue(issueId);

            webDetails.DocumentText = "0";
            if (webDetails.Document != null)
            {
                webDetails.Document.OpenNew(true);
                webDetails.Document.Write(issue.Issue.Description);
            }

            webDetails.Refresh();
            if (issue.Issue.Image != null)
            {
                if (!string.IsNullOrEmpty(issue.Issue.Image.LargeUrl))
                {
                    imgDetail.Image = ImageCacheManager.GetImage(issue.Issue.Image.LargeUrl);
                }
                else
                {
                    imgDetail.Image = ImageCacheManager.GetImage(_currentComic.Comics[0].ComicImageURL);
                }
            }



            SetStatus("Ready ...");
        }
Пример #19
0
        private void OpenFirmware(string firmwareFile, Func <string, Firmware> readFirmwareDelegate)
        {
            ResetWorkspace();
            try
            {
                var firmware = readFirmwareDelegate(firmwareFile);
                if (firmware == null)
                {
                    throw new InvalidOperationException("No one definition is not appropriate for the selected firmware file.");
                }

                m_firmware     = firmware;
                m_firmwareFile = firmwareFile;

                ImageCacheManager.RebuildCache(m_firmware);
                m_tabPages.ForEach(x =>
                {
                    x.OnFirmwareLoaded(m_firmware);
                    x.IsDirty = false;
                });

                SaveMenuItem.Enabled          = true;
                SaveEncryptedMenuItem.Enabled = true;
                SaveDecryptedMenuItem.Enabled = SaveDecryptedMenuItem.Visible = m_firmware.EncryptionType != EncryptionType.ArcticFox;
                StatusLabel.Text = @"Firmware file has been successfully loaded.";

                m_mruFirmwares.Add(firmwareFile);
                UpdateOpenedFirmwareInfo();
            }
            catch (Exception ex)
            {
                m_mruFirmwares.Remove(firmwareFile);
                InfoBox.Show("Unable to load firmware.\n{0}", ex.Message);
            }
            finally
            {
                InitializeMruMenu();
            }
        }
        private void Icb_MeasureItem(object sender, MeasureItemEventArgs e)
        {
            e.ItemHeight = Consts.ImageListBoxItemMaxHeight + Consts.ImageListBoxItemImageMargin;

            var comboBox = sender as ComboBox;

            if (comboBox == null)
            {
                return;
            }
            if (e.Index < 0)
            {
                return;
            }

            var stringMetadata = comboBox.Tag as Tuple <FirmwareStringMetadata, int>;

            if (stringMetadata == null)
            {
                return;
            }

            var item = comboBox.Items[e.Index] as ImagedItem <byte>;

            if (item == null)
            {
                return;
            }

            try
            {
                var cachedImage = ImageCacheManager.GetGlyphImage(item.ImageCacheIndex, SelectedImageBlock);
                e.ItemHeight = Math.Min(e.ItemHeight, cachedImage.Height + Consts.ImageListBoxItemImageMargin);
            }
            catch (ObjectDisposedException)
            {
                // Ignore
            }
        }
Пример #21
0
        private void BindComic(CvVolume volume)
        {
            if (volume.Image?.LargeUrl == null)
            {
                volume = ComicVineManager.GetVolume(volume.Id.ToString()).Volume;
            }

            imgDetail.Image   = ImageCacheManager.GetImage(volume.Image.LargeUrl);
            lblComicName.Text = volume.Name;
            CvVolumeResponse v = new CvVolumeResponse();

            v.Volume           = volume;
            _currentVolume     = v;
            lblComicName.Text += @"  (" + _currentVolume.Volume.StartYear + @")";

            webDetails.DocumentText = "0";
            if (webDetails.Document != null)
            {
                webDetails.Document.OpenNew(true);
                webDetails.Document.Write(_currentVolume.Volume.Description);
            }

            webDetails.Refresh();

            if (_currentVolume.Volume.Publisher == null)
            {
                if (_currentVolume.Volume.Publisher != null)
                {
                    var pub = ComicVineManager.GetPublisher(_currentVolume.Volume.Publisher.Id);
                    imgPublisher.Image = ImageCacheManager.GetImage(pub.Publisher.Image.IconUrl);
                }
            }
            else
            {
                imgPublisher.Image = null;
            }
        }
Пример #22
0
        private void BindComic(Title title)
        {
            _currentComic = MylarManager.GetComic(title.ComicID);

            imgDetail.Image = ImageCacheManager.GetImage(_currentComic.Comics[0].ComicImageURL ?? _currentVolume.Volume.Image.LargeUrl);

            lblComicName.Text = _currentComic.Comics[0].ComicName;

            _currentVolume     = ComicVineManager.GetVolume(title.ComicID);
            lblComicName.Text += @"  (" + _currentVolume.Volume.StartYear + @")";

            webDetails.DocumentText = "0";
            if (webDetails.Document != null)
            {
                webDetails.Document.OpenNew(true);
                webDetails.Document.Write(_currentVolume.Volume.Description);
            }

            webDetails.Refresh();

            var pub = ComicVineManager.GetPublisher(_currentVolume.Volume.Publisher.Id);

            imgPublisher.Image = ImageCacheManager.GetImage(pub.Publisher.Image.IconUrl);
        }
Пример #23
0
        /// <summary>
        /// The last parameter, sec2X is used to porperly position the wave within the given x1..x1+clipw space if it is too short
        /// </summary>
        public void DrawWaveform(
            Graphics g,
            IVidkaOpContext context,
            ImageCacheManager imgCache,
            string mediaFilename,
            double audioLengthSec,
            double videoLengthSec,
            double audioOffsetSec,
            int x1, int y1, int clipw, int cliph,
            double secStart, double secEnd,
            bool isMuted, bool hasCustomAudio)
        {
            double audioT1 = (audioOffsetSec + secStart) / audioLengthSec;
            double audioT2 = (audioOffsetSec + secEnd) / audioLengthSec;

            if (audioT1 > 1)
            {
                return;
            }
            if (audioT2 < 0)
            {
                return;
            }

            string waveFile = context.FileMapping.AddGetWaveFilenameJpg(mediaFilename);

            if (File.Exists(waveFile))
            {
                Bitmap bmpWave = imgCache.getWaveImg(waveFile);//Image ot

                double audioT1L = 0, audioT2R = 0;
                if (audioT1 < 0)
                {
                    audioT1L = -audioT1;
                    audioT1  = 0;
                }
                if (audioT2 > 1)
                {
                    audioT2R = audioT2 - 1;
                    audioT2  = 1;
                }
                var totalT = audioT1L + (audioT2 - audioT1) + audioT2R;
                var xAud1  = audioT1L * clipw / totalT;
                var xAud2  = (audioT1L + (audioT2 - audioT1)) * clipw / totalT;
                var xSrc1  = (int)(bmpWave.Width * audioT1);
                var xSrc2  = (int)(bmpWave.Width * audioT2);
                srcRect.X       = xSrc1;
                srcRect.Width   = xSrc2 - xSrc1;
                srcRect.Y       = 0;
                srcRect.Height  = bmpWave.Height; //TODO: use constant from Ops
                destRect.X      = x1 + (int)xAud1;
                destRect.Y      = y1;
                destRect.Width  = (int)(xAud2 - xAud1);
                destRect.Height = cliph;
                g.DrawImage(bmpWave, destRect: destRect, srcRect: srcRect, srcUnit: GraphicsUnit.Pixel);
            }
            if (isMuted)
            {
                g.FillRectangle(PPP.brushHazyMute, destRect);
            }
            if (hasCustomAudio)
            {
                g.FillRectangle(PPP.brushHazyCustomAudio, destRect);
            }
        }
Пример #24
0
 private void DrawVideoThumbnail(Graphics g, ImageCacheManager imgCache, string filenameAll, int index, int xCenter, int yCenter, int preferredWidth, int maxWidth)
 {
     var bmpThumb = imgCache.getThumb(filenameAll, index);
     srcRect.X = 0;
     srcRect.Y = 0;
     srcRect.Width = ThumbnailExtraction.ThumbW;
     srcRect.Height = ThumbnailExtraction.ThumbH;
     destRect.Width = preferredWidth;
     destRect.Height = preferredWidth * ThumbnailExtraction.ThumbH / ThumbnailExtraction.ThumbW;
     if (maxWidth < preferredWidth)
     {
         destRect.Width = maxWidth;
         var srcWidth = ThumbnailExtraction.ThumbW * maxWidth / preferredWidth;
         srcRect.X = (ThumbnailExtraction.ThumbW - srcWidth) / 2;
         srcRect.Width = srcWidth;
     }
     destRect.X = xCenter - destRect.Width / 2;
     destRect.Y = yCenter - destRect.Height / 2;
     g.DrawImage(bmpThumb, destRect: destRect, srcRect: srcRect, srcUnit: GraphicsUnit.Pixel);
 }
Пример #25
0
 public DrawOriginalAudio(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
Пример #26
0
 public DrawAudioHover(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
Пример #27
0
 public DrawVideoAudioAligns(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
     penRenderBreakupLine.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
 }
Пример #28
0
        public static async Task DeletedMessageEvent(Cacheable <IMessage, ulong> msg, ISocketMessageChannel channel)
        {
            try
            {
                var logChannel = DiscordContextOverseer.GetDeletedMessageLog();
                var message    = await msg.GetOrDownloadAsync();

                if (message != null)
                {
                    var embed = new EmbedBuilder();
                    List <CachedFile> filesData = null;
                    bool hasImages = false;

                    //if at least one image (embedded or attached) was in the deleted message, look for it in the cache
                    bool imageExists = CheckForImageWithinEmbeds(message);
                    bool hasURLs     = CheckForURLs(message);
                    if ((message.Embeds.Count > 0 && imageExists) || (message.Attachments.Count > 0 && hasURLs))
                    {
                        hasImages = true;
                        filesData = ImageCacheManager.FindImagesInCache(message.Id);
                    }
                    if (hasImages)
                    {
                        if (filesData != null)
                        {
                            embed.WithTitle($"🗑 {message.Author.Username}#{message.Author.Discriminator} deleted message containing {filesData.Count} image{((filesData.Count > 1) ? "s" : "") } in {message.Channel.Name}. UserID = {message.Author.Id}");
                        }
                        else
                        {
                            embed.WithTitle($"🗑 {message.Author.Username}#{message.Author.Discriminator} deleted message containing images that weren't cached in {message.Channel.Name}. UserID = {message.Author.Id}");
                        }
                    }
                    else //it's just a message
                    {
                        embed.WithTitle($"🗑 {message.Author.Username}#{message.Author.Discriminator} deleted message messageID {message.Id} in {message.Channel.Name}. UserID = {message.Author.Id}");
                    }

                    //check for other types of embeds
                    string extraMessageContent = SearchForOtherEmbedTypes(message);

                    embed.WithDescription(message.Content + extraMessageContent);
                    embed.WithColor(new Color(255, 0, 0));

                    await logChannel.SendMessageAsync("", false, embed.Build());

                    if (filesData != null)
                    {
                        foreach (var file in filesData)
                        {
                            using (var ms = new MemoryStream(file.File))
                            {
                                await logChannel.SendFileAsync(ms, file.FileName);
                            }
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                await ExceptionManager.LogExceptionAsync(ErrMessages.DeletedMessageException, ex);
            }
        }
Пример #29
0
 public DrawVideoAudioAligns(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
     penRenderBreakupLine.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
 }
Пример #30
0
 public DrawAudioHover(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
Пример #31
0
 public DrawOriginalAudio(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
Пример #32
0
 public DrawCurFrameMarker(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
        private void Icb_SelectedValueChanged(object sender, EventArgs e)
        {
            var icb = sender as ComboBox;

            if (icb == null)
            {
                return;
            }

            var tag  = icb.Tag as Tuple <FirmwareStringMetadata, int>;
            var item = icb.SelectedItem as ImagedItem <byte>;

            if (tag == null)
            {
                return;
            }
            if (item == null)
            {
                return;
            }

            var value = item.Value;
            var idx   = CharLayoutPanel.Controls.IndexOf(icb);

            m_firmware.WriteChar(value, tag.Item2, tag.Item1);
            var itemRect = StringListBox.GetItemRectangle(LastSelectedStringListBoxItemIndex);

            StringListBox.Invalidate(itemRect);
            ImageCacheManager.RebuildStringImageCache(m_firmware, BlockType.Block1);

            UpdateStringPreview();

            if (value == 0x00)
            {
                for (var i = idx + 1; i < CharLayoutPanel.Controls.Count; i++)
                {
                    var relatedIcb = CharLayoutPanel.Controls[i] as ComboBox;
                    if (relatedIcb == null)
                    {
                        continue;
                    }

                    relatedIcb.SelectedIndex = 0;
                    relatedIcb.Enabled       = false;
                }
            }
            else if (idx + 1 < CharLayoutPanel.Controls.Count)
            {
                var relatedIcb = CharLayoutPanel.Controls[idx + 1] as ComboBox;
                if (relatedIcb == null)
                {
                    return;
                }

                if (relatedIcb.SelectedIndex == 0 && !relatedIcb.Enabled)
                {
                    relatedIcb.Enabled = true;
                }
            }

            IsDirty = true;
        }
Пример #34
0
 public Draw0Canvas(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
Пример #35
0
 public Draw0Canvas(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
        private void ImportImages([NotNull] IList <int> originalImageIndices, [NotNull] IList <bool[, ]> importedImages)
        {
            if (importedImages == null)
            {
                throw new ArgumentNullException("importedImages");
            }
            if (originalImageIndices == null)
            {
                throw new ArgumentNullException("originalImageIndices");
            }
            if (importedImages.Count == 0)
            {
                return;
            }

            var minimumImagesCount = Math.Min(originalImageIndices.Count, importedImages.Count);

            originalImageIndices = originalImageIndices.Take(minimumImagesCount).ToList();
            importedImages       = importedImages.Take(minimumImagesCount).ToList();

            ImageImportMode importMode;
            bool            allowResizeOriginalImages;

            using (var importWindow = new PreviewResourcePackWindow(m_firmware, originalImageIndices, importedImages, false, m_currentBlock))
            {
                importWindow.Text             = Consts.ApplicationTitleWoVersion + @" - Paste image(s)";
                importWindow.ImportButtonText = "Paste";
                if (importWindow.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                importMode = importWindow.GetImportMode();
                allowResizeOriginalImages = importWindow.AllowResizeOriginalImages;
            }

            for (var i = 0; i < minimumImagesCount; i++)
            {
                var index = i;
                var originalImageIndex = originalImageIndices[index];
                var importedImage      = importedImages[index];
                if (importMode == ImageImportMode.Block1)
                {
                    var block1ImageMetadata = m_firmware.Block1Images.First(x => x.Index == originalImageIndex);
                    if (allowResizeOriginalImages)
                    {
                        ProcessImage(x => importedImage, block1ImageMetadata);
                    }
                    else
                    {
                        ProcessImage(x => FirmwareImageProcessor.PasteImage(block1ImageMetadata.CreateImage(), importedImage), block1ImageMetadata);
                    }
                }
                else if (importMode == ImageImportMode.Block2)
                {
                    var block2ImageMetadata = m_firmware.Block2Images.First(x => x.Index == originalImageIndex);
                    if (allowResizeOriginalImages)
                    {
                        ProcessImage(x => importedImage, block2ImageMetadata);
                    }
                    else
                    {
                        ProcessImage(x => FirmwareImageProcessor.PasteImage(block2ImageMetadata.CreateImage(), importedImage), block2ImageMetadata);
                    }
                }
                else
                {
                    var block1ImageMetadata = m_firmware.Block1Images.First(x => x.Index == originalImageIndex);
                    var block2ImageMetadata = m_firmware.Block2Images.First(x => x.Index == originalImageIndex);

                    if (allowResizeOriginalImages)
                    {
                        ProcessImage(x => importedImage, block1ImageMetadata);
                        ProcessImage(x => importedImage, block2ImageMetadata);
                    }
                    else
                    {
                        ProcessImage(x => FirmwareImageProcessor.PasteImage(block1ImageMetadata.CreateImage(), importedImage), block1ImageMetadata);
                        ProcessImage(x => FirmwareImageProcessor.PasteImage(block2ImageMetadata.CreateImage(), importedImage), block2ImageMetadata);
                    }
                }
            }

            ImageCacheManager.RebuildImageCache(m_firmware);
            ImageListBox.Invalidate();
            ImageListBox_SelectedValueChanged(ImageListBox, EventArgs.Empty);
        }
Пример #37
0
 public DrawVideoClips(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
Пример #38
0
        /// <summary>
        /// The last parameter, sec2X is used to porperly position the wave within the given x1..x1+clipw space if it is too short
        /// </summary>
        public void DrawWaveform(
            Graphics g,
            IVidkaOpContext context,
            ImageCacheManager imgCache,
            string mediaFilename,
            double audioLengthSec,
            double videoLengthSec,
            double audioOffsetSec,
            int x1, int y1, int clipw, int cliph,
            double secStart, double secEnd,
            bool isMuted, bool hasCustomAudio)
        {
            double audioT1 = (audioOffsetSec + secStart) / audioLengthSec;
            double audioT2 = (audioOffsetSec + secEnd) / audioLengthSec;
            if (audioT1 > 1)
                return;
            if (audioT2 < 0)
                return;

            string waveFile = context.FileMapping.AddGetWaveFilenameJpg(mediaFilename);
            if (File.Exists(waveFile))
            {
                Bitmap bmpWave = imgCache.getWaveImg(waveFile);//Image ot

                double audioT1L = 0, audioT2R = 0;
                if (audioT1 < 0)
                {
                    audioT1L = -audioT1;
                    audioT1 = 0;
                }
                if (audioT2 > 1)
                {
                    audioT2R = audioT2 - 1;
                    audioT2 = 1;
                }
                var totalT = audioT1L + (audioT2 - audioT1) + audioT2R;
                var xAud1 = audioT1L * clipw / totalT;
                var xAud2 = (audioT1L + (audioT2 - audioT1)) * clipw / totalT;
                var xSrc1 = (int)(bmpWave.Width * audioT1);
                var xSrc2 = (int)(bmpWave.Width * audioT2);
                srcRect.X = xSrc1;
                srcRect.Width = xSrc2 - xSrc1;
                srcRect.Y = 0;
                srcRect.Height = bmpWave.Height; //TODO: use constant from Ops
                destRect.X = x1 + (int)xAud1;
                destRect.Y = y1;
                destRect.Width = (int)(xAud2 - xAud1);
                destRect.Height = cliph;
                g.DrawImage(bmpWave, destRect: destRect, srcRect: srcRect, srcUnit: GraphicsUnit.Pixel);
            }
            if (isMuted)
                g.FillRectangle(PPP.brushHazyMute, destRect);
            if (hasCustomAudio)
                g.FillRectangle(PPP.brushHazyCustomAudio, destRect);
        }
Пример #39
0
 public DrawDraggySeparately(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
Пример #40
0
 public DrawVideoClips(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }
Пример #41
0
 public DrawDraggySeparately(IVidkaOpContext context, ImageCacheManager imageMan)
     : base(context, imageMan)
 {
 }