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

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

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

Loading…
Cancel
Save