Example #1
0
 public static IEnumerable<Rectangle> ComputeView(this Page page, IPageViewer viewer)
 {
     viewer.ViewTransformation = Page.ReadingDirectionToMatrix(page.Direction);
     IEnumerable<Rectangle> view = viewer.ComputeView(page.TransformedCells);
     Matrix invert = Page.ReadingDirectionToInverseMatrix(page.Direction);
     return (from rectangle in view select rectangle.Transform(invert));
 }
        private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
        {
            _viewer = null;

            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        private IPageViewer getViewer()
        {
            if (_viewer == null) {

                switch (_viewMode)
                {
                    case MangaConfiguration.ViewModeKind.Strip:
                        _viewer = new StripPageViewer(_width, _height);
                        break;
                    case MangaConfiguration.ViewModeKind.Cell:
                        _viewer = new CellsPageViewer(_width, _height);
                        break;
                    case MangaConfiguration.ViewModeKind.Free:
                        _viewer = new FullPageViewer();
                        break;
                    default:
                        _viewer = null;
                        break;
                }

                if (_viewer != null) _viewer.ViewTransformation = _viewTransformation;
            }

            return _viewer;
        }
Example #4
0
        private Bitmap drawPageView(Bitmap input, IPageViewer viewer)
        {
            return MakeBitmap(input.Width, input.Height, (Graphics g) =>
            {
                Page page = getPage(input);

                using (Pen p = new Pen(Color.Red, 3)) {
                    g.DrawImageUnscaled(input, 0, 0);
                    System.Drawing.Point? lastPoint = null;

                    foreach (var rectangle in page.ComputeView(viewer))
                    {
                        g.DrawRectangle(p, rectangle);

                        var newPoint = rectangleCenter(rectangle);
                        if (lastPoint != null)
                        {
                            drawArrow(g, Color.DarkGreen, lastPoint.Value, newPoint);
                        }
                        lastPoint = newPoint;
                    }
                }
            });
        }