Zooming fixes. Has to be redone sometime soon.

svn path=/trunk/kdegraphics/kdvi/; revision=49582
remotes/origin/kdvi-2.0
Matthias Hoelzer-Kluepfel 26 years ago
parent 69d95e734d
commit 7b117e354c
  1. 17
      dviwin.cpp
  2. 10
      dviwin.h
  3. 17
      kdvi_multipage.cpp

@ -98,7 +98,7 @@ extern void qt_processEvents(void)
//------ now comes the dviWindow class implementation ----------
dviWindow::dviWindow( int bdpi, int zoom, const char *mfm, const char *ppr, int mkpk, QWidget *parent, const char *name )
dviWindow::dviWindow( int bdpi, double zoom, const char *mfm, const char *ppr, int mkpk, QWidget *parent, const char *name )
: QWidget( parent, name )
{
setBackgroundMode(NoBackground);
@ -126,8 +126,9 @@ dviWindow::dviWindow( int bdpi, int zoom, const char *mfm, const char *ppr, int
pixmap = NULL;
double xres = ((double)(DisplayWidth(DISP,(int)DefaultScreen(DISP)) *25.4)/DisplayWidthMM(DISP,(int)DefaultScreen(DISP)) ); //@@@
double s = (basedpi * 100)/(xres*(double)zoom);
double s = basedpi/(xres*zoom);
mane.shrinkfactor = currwin.shrinkfactor = s;
_zoom = zoom;
resize(0,0);
}
@ -381,6 +382,8 @@ void dviWindow::changePageSize()
resize( page_w, page_h );
currwin.win = mane.win = pixmap->handle();
drawPage();
kdDebug() << "New Pixmap size = " << page_w << "x" << page_h << endl;
}
//------ setup the dvi interpreter (should do more here ?) ----------
@ -418,14 +421,16 @@ int dviWindow::totalPages()
}
void dviWindow::setZoom(int zoom)
void dviWindow::setZoom(double zoom)
{
if ((zoom < 5) || (zoom > 500))
zoom = 100;
// if ((zoom < 0.05) || (zoom > 5.0))
// zoom = 1.0;
double xres = ((double)(DisplayWidth(DISP,(int)DefaultScreen(DISP)) *25.4)/DisplayWidthMM(DISP,(int)DefaultScreen(DISP)) ); //@@@
double s = (basedpi * 100)/(xres*(double)zoom);
double s = basedpi/(xres*zoom);
mane.shrinkfactor = currwin.shrinkfactor = s;
_zoom = zoom;
init_page();
reset_fonts();
changePageSize();

@ -19,7 +19,7 @@ class dviWindow : public QWidget
Q_OBJECT
public:
dviWindow( int basedpi, int zoom, const char *mfmode, const char *paper, int makepk,
dviWindow( int basedpi, double zoom, const char *mfmode, const char *paper, int makepk,
QWidget *parent=0, const char *name=0 );
~dviWindow();
@ -45,7 +45,11 @@ public:
public slots:
void setFile(const char *fname);
void gotoPage(int page);
void setZoom(int zoom);
// void setZoom(int zoom);
void setZoom(double zoom);
double zoom() { return _zoom; };
void drawPage();
protected:
@ -63,6 +67,8 @@ private:
QString FontPath;
QString paper_type;
int ChangesPossible;
double _zoom;
};
#endif

@ -15,7 +15,6 @@ extern "C"
{
void *init_libkdvi()
{
kdDebug() << "DVI Widget created!" << endl;
return new KDVIMultiPageFactory;
}
};
@ -59,7 +58,7 @@ KDVIMultiPage::KDVIMultiPage(QWidget *parent, const char *name)
{
setInstance(KDVIMultiPageFactory::instance());
window = new dviWindow(300, 100, "cx", "a4", 1, scrollView());
window = new dviWindow(300, 1.0, "cx", "a4", 0, scrollView());
scrollView()->addChild(window);
}
@ -76,6 +75,8 @@ bool KDVIMultiPage::openFile()
emit numberOfPages(window->totalPages());
scrollView()->resizeContents(window->width(), window->height());
return true;
}
@ -90,27 +91,27 @@ QStringList KDVIMultiPage::fileFormats()
bool KDVIMultiPage::gotoPage(int page)
{
kdDebug() << "New Page number: " << page << endl;
window->gotoPage(page);
return true;
}
void KDVIMultiPage::setZoom(double zoom)
{
kdDebug() << "New Zoom Factor: " << zoom << endl;
window->setZoom(zoom*100);
window->setZoom(zoom);
scrollView()->resizeContents(window->width(), window->height());
}
extern unsigned int page_w, page_h;
double KDVIMultiPage::zoomForHeight(int height)
{
return height/200.0;
return (window->zoom() * (double)height)/(double)page_h;
}
double KDVIMultiPage::zoomForWidth(int width)
{
return width/300.0;
return (window->zoom() * (double)width)/(double)page_w;
}

Loading…
Cancel
Save