Пример #1
0
        private async Task ResizeOne(XElement element)
        {
            var size       = element.Element(ns + "Size");
            int viewWidth  = (int)decimal.Parse(size.Attribute("width").Value, CultureInfo.InvariantCulture);
            int viewHeight = (int)decimal.Parse(size.Attribute("height").Value, CultureInfo.InvariantCulture);

            using (var image = ReadImage(element))
            {
                using (var dialog = new ResizeImagesDialog(image, viewWidth, viewHeight))
                {
                    var result = dialog.ShowDialog(owner);
                    if (result == DialogResult.OK)
                    {
                        if (!dialog.PreserveSize)
                        {
                            using (var data = dialog.GetImage())
                            {
                                if (data != null)
                                {
                                    WriteImage(element, data);
                                }
                            }
                        }

                        size.SetAttributeValue("width", dialog.WidthPixels.ToString(CultureInfo.InvariantCulture));
                        size.SetAttributeValue("height", dialog.HeightPixels.ToString(CultureInfo.InvariantCulture));
                        size.SetAttributeValue("isSetByUser", "true");

                        await one.Update(page);
                    }
                }
            }
        }
Пример #2
0
        private async Task ResizeOne(XElement element)
        {
            var size       = element.Element(ns + "Size");
            int viewWidth  = (int)decimal.Parse(size.Attribute("width").Value, CultureInfo.InvariantCulture);
            int viewHeight = (int)decimal.Parse(size.Attribute("height").Value, CultureInfo.InvariantCulture);

            using (var image = ReadImage(element))
            {
                // when pasting an image onto the page, width or height can be zero
                // OneNote ignores both if either is zero so we'll do the same...
                if (viewWidth == 0 || viewHeight == 0)
                {
                    viewWidth  = image.Width;
                    viewHeight = image.Height;
                }

                using (var dialog = new ResizeImagesDialog(image, viewWidth, viewHeight))
                {
                    var result = dialog.ShowDialog(owner);
                    if (result != DialogResult.OK)
                    {
                        return;
                    }

                    if (dialog.NeedsRewrite)
                    {
                        using (var data = dialog.GetImage())
                        {
                            if (data != null)
                            {
                                WriteImage(element, data);
                            }
                        }
                    }

                    size.SetAttributeValue("width", dialog.ImageWidth.ToString(CultureInfo.InvariantCulture));
                    size.SetAttributeValue("height", dialog.ImageHeight.ToString(CultureInfo.InvariantCulture));
                    size.SetAttributeValue("isSetByUser", "true");

                    logger.WriteLine($"resized from {viewWidth} x {viewHeight} to {dialog.ImageWidth} x {dialog.ImageHeight}");

                    await one.Update(page);
                }
            }
        }
Пример #3
0
        private async Task ResizeMany(IEnumerable <XElement> elements)
        {
            using (var dialog = new ResizeImagesDialog())
            {
                var result = dialog.ShowDialog(owner);
                if (result == DialogResult.OK)
                {
                    var width = dialog.WidthPixels.ToString(CultureInfo.InvariantCulture);

                    foreach (var element in elements)
                    {
                        var size = element.Element(ns + "Size");

                        var imageWidth = (int)decimal.Parse(
                            size.Attribute("width").Value, CultureInfo.InvariantCulture);

                        var imageHeight = (int)decimal.Parse(
                            size.Attribute("height").Value, CultureInfo.InvariantCulture);

                        var height = (int)(imageHeight * (dialog.WidthPixels / imageWidth));

                        if (!dialog.PreserveSize)
                        {
                            using (var image = ReadImage(element))
                            {
                                using (var data = image.Resize((int)dialog.WidthPixels, height, dialog.Quality))
                                {
                                    WriteImage(element, data);
                                }
                            }
                        }

                        size.SetAttributeValue("width", width);
                        size.SetAttributeValue("height", height.ToString(CultureInfo.InvariantCulture));
                        size.SetAttributeValue("isSetByUser", "true");
                    }

                    await one.Update(page);
                }
            }
        }
Пример #4
0
        private async Task ResizeMany(IEnumerable <XElement> elements)
        {
            using (var dialog = new ResizeImagesDialog())
            {
                var result = dialog.ShowDialog(owner);
                if (result != DialogResult.OK)
                {
                    return;
                }

                foreach (var element in elements)
                {
                    using (var image = ReadImage(element))
                    {
                        var size = element.Element(ns + "Size");

                        var viewWidth = (int)decimal.Parse(
                            size.Attribute("width").Value, CultureInfo.InvariantCulture);

                        var viewHeight = (int)decimal.Parse(
                            size.Attribute("height").Value, CultureInfo.InvariantCulture);

                        // when pasting an image onto the page, width or height can be zero
                        // OneNote ignores both if either is zero so we'll do the same...
                        if (viewWidth == 0 || viewHeight == 0)
                        {
                            viewWidth  = image.Width;
                            viewHeight = image.Height;
                        }

                        int width, height;
                        if (dialog.Percent > 0)
                        {
                            width  = (int)(viewWidth * (dialog.Percent / 100));
                            height = (int)(viewHeight * (dialog.Percent / 100));
                        }
                        else
                        {
                            width = (int)dialog.ImageWidth;

                            height = dialog.LockAspect
                                                                ? (int)(viewHeight * (dialog.ImageWidth / viewWidth))
                                                                : (int)dialog.ImageHeight;
                        }

                        if (dialog.NeedsRewrite)
                        {
                            Image data = null;
                            try
                            {
                                data = dialog.Adjust(image.Resize(width, height));
                                WriteImage(element, data);
                            }
                            finally
                            {
                                data?.Dispose();
                            }
                        }

                        size.SetAttributeValue("width", width.ToString(CultureInfo.InvariantCulture));
                        size.SetAttributeValue("height", height.ToString(CultureInfo.InvariantCulture));
                        size.SetAttributeValue("isSetByUser", "true");

                        logger.WriteLine($"resized from {image.Width} x {image.Height} to {width} x {height}");
                    }
                }

                await one.Update(page);
            }
        }