]> www.fi.muni.cz Git - evince.git/commitdiff
Completely synched with Xpdf 0.90
authorMartin Kretzschmar <mkretzschmar@src.gnome.org>
Wed, 18 Sep 2002 18:58:15 +0000 (18:58 +0000)
committerMartin Kretzschmar <mkretzschmar@src.gnome.org>
Wed, 18 Sep 2002 18:58:15 +0000 (18:58 +0000)
doc changes (version numbers), typo fixes

12 files changed:
pdf/goo/GString.cc
pdf/goo/GString.h
pdf/goo/gfile.cc
pdf/goo/gfile.h
pdf/goo/gmem.c
pdf/xpdf/CMapInfo.h
pdf/xpdf/FontFile.h
pdf/xpdf/Object.h
pdf/xpdf/PSOutputDev.cc
pdf/xpdf/XOutputFontInfo.h
pdf/xpdf/xpdf-ltk.h
pdf/xpdf/xpdf.cc

index e0890912d5b495a1ecb6a7c84d1f0023ddde094b..6225932c7895120e248172e2c3f110128d86e680 100644 (file)
@@ -44,7 +44,7 @@ GString::GString() {
   s[0] = '\0';
 }
 
-GString::GString(char *s1) {
+GString::GString(const char *s1) {
   int n = strlen(s1);
 
   s = NULL;
@@ -52,7 +52,7 @@ GString::GString(char *s1) {
   memcpy(s, s1, n + 1);
 }
 
-GString::GString(char *s1, int length1) {
+GString::GString(const char *s1, int length1) {
   s = NULL;
   resize(length = length1);
   memcpy(s, s1, length * sizeof(char));
index 904f425a445978488dc8405890acf11504718dbe..6fa24a6295e5b92feeae7fdce20cb315fd73ea4f 100644 (file)
@@ -24,11 +24,11 @@ public:
   GString();
 
   // Create a string from a C string.
-  GString(char *s1);
+  GString(const char *s1);
 
   // Create a string from <length1> chars at <s1>.  This string
   // can contain null characters.
-  GString (char *s1, int length1);
+  GString (const char *s1, int length1);
 
   // Copy a string.
   GString(GString *str);
index f6aac95f33887970c3b93756d97d5d8ac12f4661..b57d9c8ba5f6b3bfe647441ed45dd20cc84455b3 100644 (file)
@@ -8,22 +8,27 @@
 //
 //========================================================================
 
-#ifdef WIN32
 extern "C" {
-#include <sys/stat.h>
-#include <kpathsea/win32lib.h>
-}
+#ifdef WIN32
+#  include <sys/stat.h>
+#  ifndef _MSC_VER
+#    include <kpathsea/win32lib.h>
+#  endif
 #else // !WIN32
-#include <sys/stat.h>
-#include <limits.h>
-#include <string.h>
-#ifndef VMS
-#include <pwd.h>
-#endif
+#  ifndef ACORN
+#    include <sys/types.h>
+#    include <sys/stat.h>
+#  endif
+#  include <limits.h>
+#  include <string.h>
+#  if !defined(VMS) && !defined(ACORN)
+#    include <pwd.h>
+#  endif
+#  if defined(VMS) && (__DECCXX_VER < 50200000)
+#    include <unixlib.h>
+#  endif
 #endif // WIN32
-#if defined(VMS) && (__DECCXX_VER < 50200000)
-#include <unixlib.h>
-#endif
+}
 #include "GString.h"
 #include "gfile.h"
 
@@ -51,6 +56,10 @@ GString *getHomeDir() {
     ret = new GString(".");
   return ret;
 
+#elif defined(ACORN)
+  //---------- RISCOS ----------
+  return new GString("@");
+
 #else
   //---------- Unix ----------
   char *s;
@@ -77,14 +86,16 @@ GString *getCurrentDir() {
   char buf[PATH_MAX+1];
 
 #if defined(__EMX__)
-  if (!_getcwd2(buf, sizeof(buf)))
+  if (_getcwd2(buf, sizeof(buf)))
 #elif defined(WIN32)
-  if (!GetCurrentDirectory(sizeof(buf), buf))
+  if (GetCurrentDirectory(sizeof(buf), buf))
+#elif defined(ACORN)
+  if (strcpy(buf, "@"))
 #else
-  if (!getcwd(buf, sizeof(buf)))
+  if (getcwd(buf, sizeof(buf)))
 #endif
-    return new GString();
-  return new GString(buf);
+    return new GString(buf);
+  return new GString();
 }
 
 GString *appendToPath(GString *path, char *fileName) {
@@ -143,8 +154,25 @@ GString *appendToPath(GString *path, char *fileName) {
   path->append(buf);
   return path;
 
-#else
-  //---------- Unix and OS/2+EMX ----------
+#elif defined(ACORN)
+  //---------- RISCOS ----------
+  char *p;
+  int i;
+
+  path->append(".");
+  i = path->getLength();
+  path->append(fileName);
+  for (p = path->getCString() + i; *p; ++p) {
+    if (*p == '/') {
+      *p = '.';
+    } else if (*p == '.') {
+      *p = '/';
+    }
+  }
+  return path;
+
+#elif defined(__EMX__)
+  //---------- OS/2+EMX ----------
   int i;
 
   // appending "." does nothing
@@ -154,51 +182,65 @@ GString *appendToPath(GString *path, char *fileName) {
   // appending ".." goes up one directory
   if (!strcmp(fileName, "..")) {
     for (i = path->getLength() - 2; i >= 0; --i) {
-#ifdef __EMX__
       if (path->getChar(i) == '/' || path->getChar(i) == '\\' ||
          path->getChar(i) == ':')
-#else
-      if (path->getChar(i) == '/')
-#endif
        break;
     }
     if (i <= 0) {
-#ifdef __EMX__
-      if (path->getChar[0] == '/' || path->getChar[0] == '\\') {
+      if (path->getChar(0) == '/' || path->getChar(0) == '\\') {
        path->del(1, path->getLength() - 1);
-      } else if (path->getLength() >= 2 && path->getChar[1] == ':') {
+      } else if (path->getLength() >= 2 && path->getChar(1) == ':') {
        path->del(2, path->getLength() - 2);
       } else {
        path->clear();
        path->append("..");
       }
+    } else {
+      if (path->getChar(i-1) == ':')
+       ++i;
+      path->del(i, path->getLength() - i);
+    }
+    return path;
+  }
+
+  // otherwise, append "/" and new path component
+  if (path->getLength() > 0 &&
+      path->getChar(path->getLength() - 1) != '/' &&
+      path->getChar(path->getLength() - 1) != '\\')
+    path->append('/');
+  path->append(fileName);
+  return path;
+
 #else
+  //---------- Unix ----------
+  int i;
+
+  // appending "." does nothing
+  if (!strcmp(fileName, "."))
+    return path;
+
+  // appending ".." goes up one directory
+  if (!strcmp(fileName, "..")) {
+    for (i = path->getLength() - 2; i >= 0; --i) {
+      if (path->getChar(i) == '/')
+       break;
+    }
+    if (i <= 0) {
       if (path->getChar(0) == '/') {
        path->del(1, path->getLength() - 1);
       } else {
        path->clear();
        path->append("..");
       }
-#endif
     } else {
-#ifdef __EMX__
-      if (path->getChar(i) == ':')
-       ++i;
-#endif
       path->del(i, path->getLength() - i);
     }
     return path;
   }
 
   // otherwise, append "/" and new path component
-#ifdef __EMX__
-  if (path->getLength() > 0 &&
-      path->getChar(path->getLength() - 1) != '/' &&
-      path->getChar(path->getLength() - 1) != '\\')
-#else
   if (path->getLength() > 0 &&
       path->getChar(path->getLength() - 1) != '/')
-#endif
     path->append('/');
   path->append(fileName);
   return path;
@@ -228,6 +270,14 @@ GString *grabPath(char *fileName) {
     return new GString(fileName, p + 1 - fileName);
   return new GString();
 
+#elif defined(ACORN)
+  //---------- RISCOS ----------
+  char *p;
+
+  if ((p = strrchr(fileName, '.')))
+    return new GString(fileName, p - fileName);
+  return new GString();
+
 #else
   //---------- Unix ----------
   char *p;
@@ -248,6 +298,10 @@ GBool isAbsolutePath(char *path) {
   //---------- OS/2+EMX and Win32 ----------
   return path[0] == '/' || path[0] == '\\' || path[1] == ':';
 
+#elif defined(ACORN)
+  //---------- RISCOS ----------
+  return path[0] == '$';
+
 #else
   //---------- Unix ----------
   return path[0] == '/';
@@ -274,7 +328,7 @@ GString *makePathAbsolute(GString *path) {
   }
   return path;
 
-#elif WIN32
+#elif defined(WIN32)
   //---------- Win32 ----------
   char buf[_MAX_PATH];
   char *fp;
@@ -288,6 +342,11 @@ GString *makePathAbsolute(GString *path) {
   path->append(buf);
   return path;
 
+#elif defined(ACORN)
+  //---------- RISCOS ----------
+  path->insert(0, '@');
+  return path;
+
 #else
   //---------- Unix and OS/2+EMX ----------
   struct passwd *pw;
@@ -324,7 +383,9 @@ GString *makePathAbsolute(GString *path) {
     }
   } else if (!isAbsolutePath(path->getCString())) {
     if (getcwd(buf, sizeof(buf))) {
+#ifndef __EMX__
       path->insert(0, '/');
+#endif
       path->insert(0, buf);
     }
   }
@@ -339,9 +400,10 @@ GString *makePathAbsolute(GString *path) {
 GDirEntry::GDirEntry(char *dirPath, char *name1, GBool doStat) {
 #ifdef VMS
   char *p;
-#elif WIN32
+#elif defined(WIN32)
   int fa;
   GString *s;
+#elif defined(ACORN)
 #else
   struct stat st;
   GString *s;
@@ -354,6 +416,7 @@ GDirEntry::GDirEntry(char *dirPath, char *name1, GBool doStat) {
     if (!strcmp(name1, "-") ||
        ((p = strrchr(name1, '.')) && !strncmp(p, ".DIR;", 5)))
       dir = gTrue;
+#elif defined(ACORN)
 #else
     s = new GString(dirPath);
     appendToPath(s, name1);
@@ -376,28 +439,30 @@ GDirEntry::~GDirEntry() {
 GDir::GDir(char *name, GBool doStat1) {
   path = new GString(name);
   doStat = doStat1;
-#ifdef WIN32
+#if defined(WIN32)
   GString *tmp;
 
   tmp = path->copy();
   tmp->append("/*.*");
   hnd = FindFirstFile(tmp->getCString(), &ffd);
   delete tmp;
+#elif defined(ACORN)
 #else
   dir = opendir(name);
-#endif
 #ifdef VMS
   needParent = strchr(name, '[') != NULL;
 #endif
+#endif
 }
 
 GDir::~GDir() {
   delete path;
-#ifdef WIN32
+#if defined(WIN32)
   if (hnd) {
     FindClose(hnd);
     hnd = NULL;
   }
+#elif defined(ACORN)
 #else
   if (dir)
     closedir(dir);
@@ -409,12 +474,13 @@ GDirEntry *GDir::getNextEntry() {
   GDirEntry *e;
 
   e = NULL;
-#ifdef WIN32
+#if defined(WIN32)
   e = new GDirEntry(path->getCString(), ffd.cFileName, doStat);
   if (hnd  && !FindNextFile(hnd, &ffd)) {
     FindClose(hnd);
     hnd = NULL;
   }
+#elif defined(ACORN)
 #else
   if (dir) {
 #ifdef VMS
@@ -445,11 +511,12 @@ void GDir::rewind() {
   tmp = path->copy();
   tmp->append("/*.*");
   hnd = FindFirstFile(tmp->getCString(), &ffd);
+#elif defined(ACORN)
 #else
   if (dir)
     rewinddir(dir);
-#endif
 #ifdef VMS
   needParent = strchr(path->getCString(), '[') != NULL;
 #endif
+#endif
 }
index f1923cde537f17128e22c70c7f6fbec39515dfd5..bb4dbe095464cb4c2ddcc7b3a8759335e2aa41a3 100644 (file)
 #ifndef GFILE_H
 #define GFILE_H
 
+extern "C" {
 #include <stdlib.h>
 #include <stddef.h>
-#ifdef WIN32
-#  include <kpathsea/win32lib.h>
+#if defined(WIN32)
+#  ifdef _MSC_VER
+#    include <windows.h>
+#  else
+#    include <kpathsea/win32lib.h>
+#  endif
+#elif defined(ACORN)
 #else
 #  include <unistd.h>
 #  include <sys/types.h>
@@ -37,6 +43,7 @@
 #    endif
 #  endif
 #endif
+}
 #include "gtypes.h"
 
 class GString;
@@ -94,14 +101,15 @@ private:
 
   GString *path;               // directory path
   GBool doStat;                        // call stat() for each entry?
-#ifdef VMS
-  GBool needParent;            // need to return an entry for [-]
-#endif
-#ifdef WIN32
+#if defined(WIN32)
   WIN32_FIND_DATA ffd;
   HANDLE hnd;
+#elif defined(ACORN)
 #else
   DIR *dir;                    // the DIR structure from opendir()
+#ifdef VMS
+  GBool needParent;            // need to return an entry for [-]
+#endif
 #endif
 };
 
index 4ae54812367ae50c0a5e0acdcd47f6b4daf92900..cac386bc8aab161c555d87dfacd523efe6e7e92f 100644 (file)
@@ -13,6 +13,7 @@
 #include "gmem.h"
 
 #ifdef DEBUG_MEM
+
 typedef struct _GMemHdr {
   int size;
   int index;
@@ -26,24 +27,38 @@ typedef struct _GMemHdr {
 #define gMemDeadVal 0xdeadbeefdeadbeef
 #else
 #define gMemDeadVal 0xdeadbeef
+#endif
 
 /* round data size so trailer will be aligned */
 #define gMemDataSize(size) \
   ((((size) + gMemTrlSize - 1) / gMemTrlSize) * gMemTrlSize)
 
-#endif
+#define gMemNLists    64
+#define gMemListShift  4
+#define gMemListMask  (gMemNLists - 1)
+static GMemHdr *gMemList[gMemNLists] = {
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
+};
 
-static GMemHdr *gMemList = NULL;
 static int gMemIndex = 0;
 static int gMemAlloc = 0;
-#endif
+
+#endif /* DEBUG_MEM */
 
 void *gmalloc(int size) {
-#if DEBUG_MEM
+#ifdef DEBUG_MEM
   int size1;
   char *mem;
   GMemHdr *hdr;
   void *data;
+  int lst;
   long *trl, *p;
 
   if (size == 0)
@@ -58,8 +73,9 @@ void *gmalloc(int size) {
   trl = (long *)(mem + gMemHdrSize + size1);
   hdr->size = size;
   hdr->index = gMemIndex++;
-  hdr->next = gMemList;
-  gMemList = hdr;
+  lst = ((int)hdr >> gMemListShift) & gMemListMask;
+  hdr->next = gMemList[lst];
+  gMemList[lst] = hdr;
   ++gMemAlloc;
   for (p = (long *)data; p <= trl; ++p)
     *p = gMemDeadVal;
@@ -78,7 +94,7 @@ void *gmalloc(int size) {
 }
 
 void *grealloc(void *p, int size) {
-#if DEBUG_MEM
+#ifdef DEBUG_MEM
   GMemHdr *hdr;
   void *q;
   int oldSize;
@@ -123,11 +139,13 @@ void gfree(void *p) {
   int size;
   GMemHdr *hdr;
   GMemHdr *prevHdr, *q;
+  int lst;
   long *trl, *clr;
 
   if (p) {
     hdr = (GMemHdr *)((char *)p - gMemHdrSize);
-    for (prevHdr = NULL, q = gMemList; q; prevHdr = q, q = q->next) {
+    lst = ((int)hdr >> gMemListShift) & gMemListMask;
+    for (prevHdr = NULL, q = gMemList[lst]; q; prevHdr = q, q = q->next) {
       if (q == hdr)
        break;
     }
@@ -135,7 +153,7 @@ void gfree(void *p) {
       if (prevHdr)
        prevHdr->next = hdr->next;
       else
-       gMemList = hdr->next;
+       gMemList[lst] = hdr->next;
       --gMemAlloc;
       size = gMemDataSize(hdr->size);
       trl = (long *)((char *)hdr + gMemHdrSize + size);
@@ -159,14 +177,17 @@ void gfree(void *p) {
 #ifdef DEBUG_MEM
 void gMemReport(FILE *f) {
   GMemHdr *p;
+  int lst;
 
   fprintf(f, "%d memory allocations in all\n", gMemIndex);
   if (gMemAlloc > 0) {
     fprintf(f, "%d memory blocks left allocated:\n", gMemAlloc);
     fprintf(f, " index     size\n");
     fprintf(f, "-------- --------\n");
-    for (p = gMemList; p; p = p->next)
-      fprintf(f, "%8d %8d\n", p->index, p->size);
+    for (lst = 0; lst < gMemNLists; ++lst) {
+      for (p = gMemList[lst]; p; p = p->next)
+       fprintf(f, "%8d %8d\n", p->index, p->size);
+    }
   } else {
     fprintf(f, "No memory blocks left allocated\n");
   }
index 7a1d8e4a1e4beb89f9302500124d7101e8148d77..4842ee1096ecabe42f3843636a51d6c883c5a6e5 100644 (file)
@@ -1367,7 +1367,7 @@ static GfxFontEncoding16 japan1278EUCVEnc16 = {
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
-  { 0x0000, 0x0000, 0x0000( 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+  { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -2062,7 +2062,7 @@ static GfxFontEncoding16 japan1278HEnc16 = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000( 0x0000,
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
index 29f8ffb21092bb1dbf0da79f72ce2ddafc30c6e5..ec625ef28bd75a3e4222b7d0a300f103e92494a7 100644 (file)
@@ -18,7 +18,7 @@
 #include "GString.h"
 #include "FontEncoding.h"
 
-//-----------------------------------------------)------------------------
+//------------------------------------------------------------------------
 // FontFile
 //------------------------------------------------------------------------
 
index b36257592db021e67161d95060f713258b9e3f61..789cd5fac0a36b841f414ed33919751e4aa9662f 100644 (file)
@@ -22,7 +22,6 @@
 class Array;
 class Dict;
 class Stream;
-class XRef;
 
 //------------------------------------------------------------------------
 // Ref
@@ -293,6 +292,4 @@ inline void Object::streamSetPos(int pos)
 inline Dict *Object::streamGetDict()
   { return stream->getDict(); }
 
-#include "XRef.h"
-
 #endif
index fa7c13eaea85e1e20e74e1049964af49f153e615..edff5cddfa323089bdd7e3353a10735f6e86621c 100644 (file)
@@ -481,12 +481,12 @@ void PSOutputDev::setupFont(GfxFont *font) {
   writePS("/F%d_%d /%s %g\n",
          font->getID().num, font->getID().gen, psName, scale);
   for (i = 0; i < 256; i += 8) {
-    writePS((i == 0) ? (char *)"[ " : (char *)"  ");
+    writePS((i == 0) ? "[ " : "  ");
     for (j = 0; j < 8; ++j) {
       charName = font->getCharName(i+j);
-      writePS("/%s", charName ? charName : (char *)".notdef");
+      writePS("/%s", charName ? charName : ".notdef");
     }
-    writePS((i == 256-8) ? (char *)"]\n" : (char *)"\n");
+    writePS((i == 256-8) ? "]\n" : "\n");
   }
   writePS("pdfMakeFont\n");
 }
index c33453a0e60aa39c9e2edd6b8848ac4575f95369..864cb7b688b852a8261afcbe13e485593e2a5a71 100644 (file)
@@ -511,7 +511,7 @@ static char *isoLatin2EncodingNames[isoLatin2EncodingSize] = {
   "zacute",
   "hungarumlaut",
   "zcaron",
-  "zdotaccenp",
+  "zdotaccent",
   "Racute",
   "Aacute",
   "Acircumflex",
index bc06ee891dd6502a6e817d1591d7275f1d7a43dc..3c2f053fc94110eb4abe2d0731f02e392381590b 100644 (file)
@@ -17,7 +17,10 @@ LTKWindow *makeWindow(LTKApp *a) {
           new LTKEmpty()
         )
       ),
-      new LTKBox(NULL, 14, 1, 0, 0, 0, 0, ltkBorderNone, 1, 0,
+      new LTKBox(NULL, 15, 1, 0, 0, 0, 0, ltkBorderNone, 1, 0,
+        new LTKBox(NULL, 1, 1, 2, 2, 2, 2, ltkBorderNone, 0, 0,
+          new LTKButton(NULL, 0, backArrow_bits, backArrow_width, backArrow_height, ltkButtonClick, &backCbk)
+        ),
         new LTKBox(NULL, 1, 1, 2, 2, 2, 2, ltkBorderNone, 0, 0,
           new LTKButton(NULL, 0, dblLeftArrow_bits, dblLeftArrow_width, dblLeftArrow_height, ltkButtonClick, &prevTenPageCbk)
         ),
index dd31b941538af58be53e33e292242f2141799fbc..4e5a2a8cc807d920a9f7a15adb09c10e5833e512 100644 (file)
@@ -779,7 +779,7 @@ static void displayPage(int page1, int zoom1, int rotate1, GBool addToHist) {
   } else {
     dpi = zoomDPI[zoom - minZoom];
   }
-  doc->displayPage(out, page, (double)dpi, rotate, gTrue);
+  doc->displayPage(out, page, dpi, rotate, gTrue);
   updateScrollbars();
 
   // update page number display