Пример #1
0
        /* Callback from GS with the rendered thumbnail.  Also update progress */
        private void ThumbPageCallback(int width, int height, int raster, double zoom_in,
                                       int page_num, IntPtr data)
        {
            Byte[] bitmap = null;

            bitmap = new byte[raster * height];
            Marshal.Copy(data, bitmap, 0, raster * height);
            DocPage doc_page = new DocPage();

            m_thumbnails.Add(doc_page);

            doc_page.Content = Page_Content_t.THUMBNAIL;
            doc_page.Width   = width;
            doc_page.Height  = height;
            doc_page.Zoom    = zoom_in;
            doc_page.PixBuf  = new Gdk.Pixbuf(bitmap,
                                              Gdk.Colorspace.Rgb, false, 8, width,
                                              height, raster);
            m_GtkimageStoreThumb.AppendValues(doc_page.PixBuf);

            ThumbAssignMain(page_num, width, height, 1.0);
            m_GtkimageStoreMain.AppendValues(m_docPages[page_num - 1].PixBuf);

            m_GtkProgressBar.Fraction = ((double)page_num / ((double)page_num + 1));
            return;
        }
Пример #2
0
        /* Assign current pages to blown up thumbnail images */
        private void ThumbAssignMain(int page_num, int width, int height, double zoom_in)
        {
            DocPage doc_page = new DocPage();

            doc_page.Content = Page_Content_t.THUMBNAIL;
            doc_page.Zoom    = zoom_in;
            doc_page.Width   = (int)(width / (Constants.SCALE_THUMB));
            doc_page.Height  = (int)(height / (Constants.SCALE_THUMB));
            doc_page.PixBuf  = m_thumbnails[page_num - 1].PixBuf.ScaleSimple(doc_page.Width, doc_page.Height, Gdk.InterpType.Nearest);
            doc_page.PageNum = page_num;
            m_docPages.Add(doc_page);

            if (page_num == 1)
            {
                m_page_scroll_pos.Add(height);
            }
            else
            {
                m_page_scroll_pos.Add(height + m_page_scroll_pos[page_num - 2]);
            }
        }
Пример #3
0
        /* Callback from ghostscript with the rendered image. */
        private void MainPageCallback(int width, int height, int raster, double zoom_in,
                                      int page_num, IntPtr data)
        {
            Byte[] bitmap = null;

            bitmap = new byte[raster * height];
            Marshal.Copy(data, bitmap, 0, raster * height);
            DocPage doc_page = m_docPages[m_current_page];

            if (doc_page.Content != Page_Content_t.FULL_RESOLUTION ||
                m_aa_change)
            {
                doc_page.Width   = width;
                doc_page.Height  = height;
                doc_page.Content = Page_Content_t.FULL_RESOLUTION;

                doc_page.Zoom   = m_doczoom;
                doc_page.PixBuf = new Gdk.Pixbuf(bitmap,
                                                 Gdk.Colorspace.Rgb, false, 8, width,
                                                 height, raster);

                m_GtkimageStoreMain.SetValue(m_tree_iter, 0, doc_page.PixBuf);
            }

            if (page_num == 1)
            {
                m_page_scroll_pos[0] = height;
            }
            else
            {
                m_page_scroll_pos[page_num - 1] = height + m_page_scroll_pos[page_num - 2];
            }

            m_GtkimageStoreMain.IterNext(ref m_tree_iter);
            m_current_page           += 1;
            m_GtkProgressBar.Fraction = ((double)page_num / ((double)page_num + 1));
            return;
        }