Package: xpdf
Version: 3.02-3
Severity: normal

Hi, Michael.

Here is a better patch for the choice of zoom levels.

Please note that almost everything here is done during compilation time
and only an allocation of a small vector (and its deallocation) is
performed during runtime.

Please, join me at <http://github.com/rbrito/xpdf-poppler>.


Regards, Rogério Brito.

-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.34 (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=en_US.utf-8, LC_CTYPE=pt_BR.utf-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages xpdf depends on:
ii  lesstif2                      1:0.95.2-1 OSF/Motif 2.1 implementation relea
ii  libc6                         2.11.1-2   Embedded GNU C Library: Shared lib
ii  libgcc1                       1:4.4.4-4  GCC support library
ii  libpoppler5                   0.12.4-1   PDF rendering library
ii  libstdc++6                    4.4.4-4    The GNU Standard C++ Library v3
ii  libx11-6                      2:1.3.3-3  X11 client-side library
ii  libxt6                        1:1.0.7-1  X11 toolkit intrinsics library

Versions of packages xpdf recommends:
ii  poppler-utils                 0.12.4-1   PDF utilitites (based on libpopple

xpdf suggests no packages.

-- no debconf information

-- 
Rogério Brito : rbr...@{ime.usp.br,gmail.com} : GPG key 1024D/7C2CAEB8
http://rb.doesntexist.org : Packages for LaTeX : algorithms.berlios.de
DebianQA: http://qa.debian.org/developer.php?login=rbrito%40ime.usp.br
diff --git a/XPDFViewer.cc b/XPDFViewer.cc
index 41cf80d..5485b3c 100644
--- a/XPDFViewer.cc
+++ b/XPDFViewer.cc
@@ -140,7 +140,11 @@ struct ZoomMenuInfo {
   double zoom;
 };
 
-static ZoomMenuInfo zoomMenuInfo[nZoomMenuItems] = {
+static ZoomMenuInfo zoomMenuInfo[] = {
+  { "1600%",    1600 },
+  { "1200%",    1200 },
+  { "800%",      800 },
+  { "600%",      600 },
   { "400%",      400 },
   { "200%",      200 },
   { "150%",      150 },
@@ -153,11 +157,13 @@ static ZoomMenuInfo zoomMenuInfo[nZoomMenuItems] = {
   { "fit width", zoomWidth }
 };
 
+#define nZoomMenuItems (sizeof(zoomMenuInfo)/sizeof(struct ZoomMenuInfo))
+
 #define maxZoomIdx   0
-#define defZoomIdx   3
-#define minZoomIdx   7
-#define zoomPageIdx  8
-#define zoomWidthIdx 9
+#define defZoomIdx   7
+#define minZoomIdx   nZoomMenuItems - 3
+#define zoomPageIdx  nZoomMenuItems - 2
+#define zoomWidthIdx nZoomMenuItems - 1
 
 //------------------------------------------------------------------------
 
@@ -361,6 +367,7 @@ XPDFViewer::XPDFViewer(XPDFApp *appA, PDFDoc *doc, int pageA,
 
 XPDFViewer::~XPDFViewer() {
   delete core;
+  delete zoomMenuBtns;
   XmFontListFree(aboutBigFont);
   XmFontListFree(aboutVersionFont);
   XmFontListFree(aboutFixedFont);
@@ -1731,6 +1738,7 @@ void XPDFViewer::initToolbar(Widget parent) {
 #else
   Widget menuPane;
   char buf[16];
+  zoomMenuBtns = new Widget[nZoomMenuItems];
   n = 0;
   menuPane = XmCreatePulldownMenu(toolBar, "zoomMenuPane", args, n);
   for (i = 0; i < nZoomMenuItems; ++i) {
diff --git a/XPDFViewer.h b/XPDFViewer.h
index d09adde..6132a70 100644
--- a/XPDFViewer.h
+++ b/XPDFViewer.h
@@ -40,11 +40,6 @@ class XPDFViewer;
 
 //------------------------------------------------------------------------
 
-// NB: this must match the defn of zoomMenuBtnInfo in XPDFViewer.cc
-#define nZoomMenuItems 10
-
-//------------------------------------------------------------------------
-
 struct XPDFViewerCmd {
   char *name;
   int nArgs;
@@ -54,6 +49,8 @@ struct XPDFViewerCmd {
 };
 
 //------------------------------------------------------------------------
+
+//------------------------------------------------------------------------
 // XPDFViewer
 //------------------------------------------------------------------------
 
@@ -327,7 +324,7 @@ private:
   Widget zoomComboBox;
 #else
   Widget zoomMenu;
-  Widget zoomMenuBtns[nZoomMenuItems];
+  Widget *zoomMenuBtns;
 #endif
   Widget zoomWidget;
   Widget findBtn;

Reply via email to