This patch, against 070700 nightly sources, does three things.

================================================================

The patch adds an XAP_App* m_pApp member to the GR_Graphics class.
Complications come in, and the patch is so big, because the
constructor for GR_Graphics is never called directly.  Instead,
constructors are called for application-specific graphics classes
derived from it:

        GR_BeOSGraphics
        MacGraphics
        GR_QNXGraphics
        GR_UnixGraphics
        GR_Win32Graphics
        PS_Graphics

So, signatures for the constructors for those classes were changed to
also take an XAP_App* argument.  I have tested the XP and Linux
versions.  Code changes have been made for all platforms, but I can't
build them here.  So, CAUTION, THE BUILD MIGHT BREAK ON THOSE
PLATFORMS.  Hopefully, if it breaks it will be due to trivial typos or 
forgotten-to-#include headers.

================================================================

The patch adds a tick counter to XAP_PrefsScheme objects.  The tick is
incremented every time any preference value is changed in that scheme.
This is useful if an object needs to cache a preference value for
performance reasons or whatever.  If the scheme pointer is the same
and the tick count is the same, the preferences haven't changed and
the cached value is legit.  Otherwise, the cached value is stale and
should be refreshed.  (Yeah, yeah, performance things shouldn't matter
enough to create a need for this caching, but glyph remapping will in
the worst case check 2-3 preference values at least twice for each
glyph being rendered.  Hash table or not, that's a lot of lookups.)

================================================================

The patch adds but does not use (except for some UT_DEBUG()) four
preference values which will soon be used for glyph remapping:

        RemapGlyphsDefault="°"
        RemapGlyphsMasterSwitch="1"
        RemapGlyphsNoMatterWhat="0"
        RemapGlyphsTable="‘`’'“"”""

================================================================

The first two changes are needed to accommodate upcoming use of the
third items for remapped glyphs / smart quotes.
-- 
[EMAIL PROTECTED] (WJCarpenter)    PGP 0x91865119
38 95 1B 69 C9 C6 3D 25    73 46 32 04 69 D6 ED F3

diff -ru abi-070700-ORIG/src/af/gr/beos/gr_BeOSGraphics.cpp 
abi-070700/src/af/gr/beos/gr_BeOSGraphics.cpp
--- abi-070700-ORIG/src/af/gr/beos/gr_BeOSGraphics.cpp  Thu Jul  6 13:20:37 2000
+++ abi-070700/src/af/gr/beos/gr_BeOSGraphics.cpp       Fri Jul  7 12:59:21 2000
@@ -54,7 +54,8 @@
                                        }
 #endif
 
-GR_BeOSGraphics::GR_BeOSGraphics(BView *docview) {
+GR_BeOSGraphics::GR_BeOSGraphics(BView *docview, XAP_App * app) {
+       m_pApp = app;
        m_pShadowView = NULL;
        m_pShadowBitmap = NULL;
        m_pBeOSFont = NULL;
diff -ru abi-070700-ORIG/src/af/gr/beos/gr_BeOSGraphics.h 
abi-070700/src/af/gr/beos/gr_BeOSGraphics.h
--- abi-070700-ORIG/src/af/gr/beos/gr_BeOSGraphics.h    Fri Jun 30 21:48:47 2000
+++ abi-070700/src/af/gr/beos/gr_BeOSGraphics.h Fri Jul  7 13:00:06 2000
@@ -36,7 +36,7 @@
 class GR_BeOSGraphics : public GR_Graphics
 {
 public:
-  GR_BeOSGraphics(BView *front);
+  GR_BeOSGraphics(BView *front, XAP_App *app);
   ~GR_BeOSGraphics();
 
   virtual void drawChars(const UT_UCSChar* pChars, int iCharOffset,
diff -ru abi-070700-ORIG/src/af/gr/mac/gr_MacGraphics.h 
abi-070700/src/af/gr/mac/gr_MacGraphics.h
--- abi-070700-ORIG/src/af/gr/mac/gr_MacGraphics.h      Fri Jun 30 21:48:47 2000
+++ abi-070700/src/af/gr/mac/gr_MacGraphics.h   Fri Jul  7 12:57:29 2000
@@ -39,7 +39,7 @@
 class MacGraphics : public GR_Graphics
 {
 public:
-       MacGraphics();                                  /* for screen */
+       MacGraphics(XAP_App * app);                                     /* for screen 
+*/
        ~MacGraphics();
 
        virtual void drawChars(const UT_UCSChar* pChars, 
diff -ru abi-070700-ORIG/src/af/gr/qnx/gr_QNXGraphics.cpp 
abi-070700/src/af/gr/qnx/gr_QNXGraphics.cpp
--- abi-070700-ORIG/src/af/gr/qnx/gr_QNXGraphics.cpp    Fri Jun 30 21:48:47 2000
+++ abi-070700/src/af/gr/qnx/gr_QNXGraphics.cpp Fri Jul  7 13:40:17 2000
@@ -108,8 +108,9 @@
        return 0;
 }
 
-GR_QNXGraphics::GR_QNXGraphics(PtWidget_t * win, PtWidget_t * draw)
+GR_QNXGraphics::GR_QNXGraphics(PtWidget_t * win, PtWidget_t * draw, XAP_App *app)
 {
+       m_pApp = app;
        m_pWin = win;
        m_pDraw = draw;
        m_pFont = NULL;
diff -ru abi-070700-ORIG/src/af/gr/qnx/gr_QNXGraphics.h 
abi-070700/src/af/gr/qnx/gr_QNXGraphics.h
--- abi-070700-ORIG/src/af/gr/qnx/gr_QNXGraphics.h      Fri Jun 30 21:48:47 2000
+++ abi-070700/src/af/gr/qnx/gr_QNXGraphics.h   Fri Jul  7 13:40:41 2000
@@ -50,7 +50,7 @@
 class GR_QNXGraphics : public GR_Graphics
 {
  public:
-       GR_QNXGraphics(PtWidget_t * win, PtWidget_t * draw);
+       GR_QNXGraphics(PtWidget_t * win, PtWidget_t * draw, XAP_App * app);
        ~GR_QNXGraphics();
 
        virtual void drawChar(UT_UCSChar Char, UT_sint32 xoff, UT_sint32 yoff);
diff -ru abi-070700-ORIG/src/af/gr/unix/gr_UnixGraphics.cpp 
abi-070700/src/af/gr/unix/gr_UnixGraphics.cpp
--- abi-070700-ORIG/src/af/gr/unix/gr_UnixGraphics.cpp  Fri Jun 30 14:35:25 2000
+++ abi-070700/src/af/gr/unix/gr_UnixGraphics.cpp       Fri Jul  7 09:45:13 2000
@@ -35,8 +35,9 @@
 #include "ut_string.h"
 #include "ut_dialogHelper.h"
 
-GR_UnixGraphics::GR_UnixGraphics(GdkWindow * win, XAP_UnixFontManager * fontManager)
+GR_UnixGraphics::GR_UnixGraphics(GdkWindow * win, XAP_UnixFontManager * fontManager, 
+XAP_App * app)
 {
+       m_pApp = app;
        m_pWin = win;
        m_pFontManager = fontManager;
        m_pFont = NULL;
diff -ru abi-070700-ORIG/src/af/gr/unix/gr_UnixGraphics.h 
abi-070700/src/af/gr/unix/gr_UnixGraphics.h
--- abi-070700-ORIG/src/af/gr/unix/gr_UnixGraphics.h    Fri Jun 30 14:35:25 2000
+++ abi-070700/src/af/gr/unix/gr_UnixGraphics.h Fri Jul  7 09:45:56 2000
@@ -31,7 +31,7 @@
 class GR_UnixGraphics : public GR_Graphics
 {
  public:
-       GR_UnixGraphics(GdkWindow * win, XAP_UnixFontManager * fontManager);
+       GR_UnixGraphics(GdkWindow * win, XAP_UnixFontManager * fontManager, XAP_App 
+*app);
        ~GR_UnixGraphics();
 
     // HACK: I need more speed
diff -ru abi-070700-ORIG/src/af/gr/win/gr_Win32Graphics.cpp 
abi-070700/src/af/gr/win/gr_Win32Graphics.cpp
--- abi-070700-ORIG/src/af/gr/win/gr_Win32Graphics.cpp  Fri Jun 30 21:48:48 2000
+++ abi-070700/src/af/gr/win/gr_Win32Graphics.cpp       Fri Jul  7 13:53:56 2000
@@ -48,15 +48,17 @@
        setCursor(GR_CURSOR_DEFAULT);
 }
 
-GR_Win32Graphics::GR_Win32Graphics(HDC hdc, HWND hwnd)
+GR_Win32Graphics::GR_Win32Graphics(HDC hdc, HWND hwnd, XAP_App * app)
 {
        _constructorCommonCode(hdc);
+       m_App = app;
        m_hwnd = hwnd;
 }
 
-GR_Win32Graphics::GR_Win32Graphics(HDC hdc, const DOCINFO * pDocInfo)
+GR_Win32Graphics::GR_Win32Graphics(HDC hdc, const DOCINFO * pDocInfo, XAP_App * app)
 {
        _constructorCommonCode(hdc);
+       m_App = app;
        m_bPrint = UT_TRUE;
        m_pDocInfo = pDocInfo;
 }
diff -ru abi-070700-ORIG/src/af/gr/win/gr_Win32Graphics.h 
abi-070700/src/af/gr/win/gr_Win32Graphics.h
--- abi-070700-ORIG/src/af/gr/win/gr_Win32Graphics.h    Fri Jun 30 21:48:48 2000
+++ abi-070700/src/af/gr/win/gr_Win32Graphics.h Fri Jul  7 13:54:39 2000
@@ -59,8 +59,8 @@
 class GR_Win32Graphics : public GR_Graphics
 {
 public:
-       GR_Win32Graphics(HDC, HWND);                                    /* for screen 
*/
-       GR_Win32Graphics(HDC, const DOCINFO *);         /* for printing */
+       GR_Win32Graphics(HDC, HWND, XAP_App *);                                 /* for 
+screen */
+       GR_Win32Graphics(HDC, const DOCINFO *, XAP_App *);              /* for 
+printing */
        ~GR_Win32Graphics();
 
        virtual void                    drawChar(UT_UCSChar Char, UT_sint32 xoff, 
UT_sint32 yoff);
diff -ru abi-070700-ORIG/src/af/gr/xp/gr_Graphics.cpp 
abi-070700/src/af/gr/xp/gr_Graphics.cpp
--- abi-070700-ORIG/src/af/gr/xp/gr_Graphics.cpp        Fri Jun 30 14:35:26 2000
+++ abi-070700/src/af/gr/xp/gr_Graphics.cpp     Fri Jul  7 15:48:56 2000
@@ -21,6 +21,8 @@
 #include <math.h>
 #include <string.h>
 
+#include "xap_App.h"
+#include "xap_Prefs.h"
 #include "gr_Graphics.h"
 #include "ut_assert.h"
 #include "ut_string.h"
@@ -38,6 +40,7 @@
 
 GR_Graphics::GR_Graphics()
 {
+       m_pApp = 0;
        m_iZoomPercentage = 100;
        m_bLayoutResolutionModeEnabled = UT_FALSE;
 }
@@ -107,6 +110,11 @@
        // and visible.  This is most useful for the smart quote
        // characters, which are specially treated.  Other zero-width
        // characters are mapped to a generic filler character.
+       if (!m_pApp)
+       {
+               UT_DEBUGMSG(("m_pApp in GR_Graphics object is null, glyphs not 
+remapped\n"));
+               return actual;
+       }
        UT_UCSChar remap = actual;
        unsigned short w = 1;
        
@@ -122,7 +130,10 @@
                default:             remap = (w ? actual : 0xB0); break;
                }
        }
-       if (remap != actual) UT_DEBUGMSG(("remapGlyph  0x%04X -> 0x%04X   %d %d\n", 
actual, remap, noMatterWhat, w));
+       XAP_Prefs *p = m_pApp->getPrefs();
+       XAP_PrefsScheme *s = p->getCurrentScheme(UT_FALSE);
+       UT_uint32 t = s->getTickCount();
+       if (remap != actual) UT_DEBUGMSG(("remapGlyph  0x%04X -> 0x%04X   %d %d  tick: 
+%d [%d]\n", actual, remap, noMatterWhat, w, t, s));
        return remap;
 }
 
diff -ru abi-070700-ORIG/src/af/gr/xp/gr_Graphics.h 
abi-070700/src/af/gr/xp/gr_Graphics.h
--- abi-070700-ORIG/src/af/gr/xp/gr_Graphics.h  Fri Jun 30 14:35:26 2000
+++ abi-070700/src/af/gr/xp/gr_Graphics.h       Fri Jul  7 09:47:01 2000
@@ -26,6 +26,7 @@
 #include "gr_Image.h"
 
 class UT_RGBColor;
+class XAP_App;
 
 /*
        GR_Font is a reference to a font.  As it happens, everything about fonts
@@ -193,6 +194,7 @@
 protected:
        virtual UT_uint32 _getResolution(void) const = 0;
        
+       XAP_App *       m_pApp;
        UT_uint32       m_iZoomPercentage;
        UT_Bool         m_bLayoutResolutionModeEnabled;
        
diff -ru abi-070700-ORIG/src/af/xap/beos/xap_BeOSDlg_Zoom.cpp 
abi-070700/src/af/xap/beos/xap_BeOSDlg_Zoom.cpp
--- abi-070700-ORIG/src/af/xap/beos/xap_BeOSDlg_Zoom.cpp        Wed Dec  8 14:19:02 
1999
+++ abi-070700/src/af/xap/beos/xap_BeOSDlg_Zoom.cpp     Fri Jul  7 13:06:07 2000
@@ -147,7 +147,7 @@
        m_CustomText=(BTextControl *)FindView("custxt");
        Show();
        //Create our preview window graphics
-       m_BeOSGraphics=new GR_BeOSGraphics(preview);
+       m_BeOSGraphics=new GR_BeOSGraphics(preview, dlg->m_pApp);
        if (preview->Window()->Lock())
        {
                
dlg->_createPreviewFromGC(m_BeOSGraphics,preview->Frame().Width(),preview->Frame().Height());
diff -ru abi-070700-ORIG/src/af/xap/qnx/xap_QNXDlg_About.cpp 
abi-070700/src/af/xap/qnx/xap_QNXDlg_About.cpp
--- abi-070700-ORIG/src/af/xap/qnx/xap_QNXDlg_About.cpp Mon Jun 19 07:59:03 2000
+++ abi-070700/src/af/xap/qnx/xap_QNXDlg_About.cpp      Fri Jul  7 13:42:07 2000
@@ -154,7 +154,7 @@
        
 
        // attach a new graphics context
-       m_gc = new GR_QNXGraphics(mainWindow, m_drawingareaGraphic);
+       m_gc = new GR_QNXGraphics(mainWindow, m_drawingareaGraphic, pFrame->getApp());
 
        UT_QNXCenterWindow(/*parentWindow | */ NULL, mainWindow);
        UT_QNXBlockWidget(parentWindow, 1);
diff -ru abi-070700-ORIG/src/af/xap/qnx/xap_QNXDlg_Insert_Symbol.cpp 
abi-070700/src/af/xap/qnx/xap_QNXDlg_Insert_Symbol.cpp
--- abi-070700-ORIG/src/af/xap/qnx/xap_QNXDlg_Insert_Symbol.cpp Tue Jun 13 04:15:21 
2000
+++ abi-070700/src/af/xap/qnx/xap_QNXDlg_Insert_Symbol.cpp      Fri Jul  7 13:43:42 
+2000
@@ -224,7 +224,7 @@
 
        // make a new QNX GC
        DELETEP (m_qnxGraphics);
-       m_qnxGraphics = new GR_QNXGraphics(mainWindow, m_SymbolMap);
+       m_qnxGraphics = new GR_QNXGraphics(mainWindow, m_SymbolMap, m_pApp);
 
        // let the widget materialize TODO: get a real size!
        UT_QNXGetWidgetArea(m_SymbolMap, NULL, NULL, &w, &h);
@@ -232,7 +232,7 @@
 
        // make a new QNX GC
        DELETEP (m_qnxarea);
-       m_qnxarea = new GR_QNXGraphics(mainWindow, m_areaCurrentSym );
+       m_qnxarea = new GR_QNXGraphics(mainWindow, m_areaCurrentSym, m_pApp);
                
        // let the widget materialize
        UT_QNXGetWidgetArea(m_areaCurrentSym, NULL, NULL, &w, &h);
diff -ru abi-070700-ORIG/src/af/xap/qnx/xap_QNXDlg_Zoom.cpp 
abi-070700/src/af/xap/qnx/xap_QNXDlg_Zoom.cpp
--- abi-070700-ORIG/src/af/xap/qnx/xap_QNXDlg_Zoom.cpp  Sun May  7 10:42:40 2000
+++ abi-070700/src/af/xap/qnx/xap_QNXDlg_Zoom.cpp       Fri Jul  7 13:43:41 2000
@@ -194,7 +194,7 @@
        // Populate the window's data items
        _populateWindowData();
        
-       m_qnxGraphics = new GR_QNXGraphics(mainWindow, m_previewArea);
+       m_qnxGraphics = new GR_QNXGraphics(mainWindow, m_previewArea, 
+pFrame->getApp());
        unsigned short w, h;
        UT_QNXGetWidgetArea(m_previewArea, NULL, NULL, &w, &h);
        _createPreviewFromGC(m_qnxGraphics, w, h);
diff -ru abi-070700-ORIG/src/af/xap/unix/gnome/xap_UnixGnomeDlg_Zoom.cpp 
abi-070700/src/af/xap/unix/gnome/xap_UnixGnomeDlg_Zoom.cpp
--- abi-070700-ORIG/src/af/xap/unix/gnome/xap_UnixGnomeDlg_Zoom.cpp     Thu Dec  2 
17:26:14 1999
+++ abi-070700/src/af/xap/unix/gnome/xap_UnixGnomeDlg_Zoom.cpp  Fri Jul  7 12:50:39 
+2000
@@ -164,7 +164,7 @@
                UT_ASSERT(m_previewArea && m_previewArea->window);
 
                // make a new Unix GC
-               m_unixGraphics = new GR_UnixGraphics(m_previewArea->window, 
unixapp->getFontManager());
+               m_unixGraphics = new GR_UnixGraphics(m_previewArea->window, 
+unixapp->getFontManager(), m_pApp);
                
                // let the widget materialize
                _createPreviewFromGC(m_unixGraphics,
diff -ru abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_About.cpp 
abi-070700/src/af/xap/unix/xap_UnixDlg_About.cpp
--- abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_About.cpp       Sun Jun 18 18:53:53 
2000
+++ abi-070700/src/af/xap/unix/xap_UnixDlg_About.cpp    Fri Jul  7 09:48:45 2000
@@ -146,7 +146,8 @@
        gtk_grab_add(mainWindow);
 
        // attach a new graphics context
-       m_gc = new GR_UnixGraphics(m_drawingareaGraphic->window, NULL);
+       XAP_App *pApp = pUnixFrame->getApp();
+       m_gc = new GR_UnixGraphics(m_drawingareaGraphic->window, NULL, pApp);
        
        // Run into the GTK event loop for this window.
        gtk_main();
diff -ru abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_FontChooser.cpp 
abi-070700/src/af/xap/unix/xap_UnixDlg_FontChooser.cpp
--- abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_FontChooser.cpp Wed May 10 21:16:55 
2000
+++ abi-070700/src/af/xap/unix/xap_UnixDlg_FontChooser.cpp      Fri Jul  7 09:49:04 
+2000
@@ -820,7 +820,8 @@
        m_doneFirstFont = UT_FALSE;
        
        // attach a new graphics context
-       m_gc = new GR_UnixGraphics(m_preview->window, m_fontManager);
+       XAP_App *pApp = frame->getApp();
+       m_gc = new GR_UnixGraphics(m_preview->window, m_fontManager, pApp);
        gtk_object_set_user_data(GTK_OBJECT(m_preview), this);
        
        // unfreeze updates of the preview
diff -ru abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_Insert_Symbol.cpp 
abi-070700/src/af/xap/unix/xap_UnixDlg_Insert_Symbol.cpp
--- abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_Insert_Symbol.cpp       Sun Jun 18 
19:53:48 2000
+++ abi-070700/src/af/xap/unix/xap_UnixDlg_Insert_Symbol.cpp    Fri Jul  7 09:49:27 
+2000
@@ -202,7 +202,7 @@
 
        // make a new Unix GC
        DELETEP (m_unixGraphics);
-       m_unixGraphics = new GR_UnixGraphics(m_SymbolMap->window, 
unixapp->getFontManager());
+       m_unixGraphics = new GR_UnixGraphics(m_SymbolMap->window, 
+unixapp->getFontManager(), m_pApp);
 
        // let the widget materialize
        _createSymbolFromGC(m_unixGraphics,
@@ -214,7 +214,7 @@
 
        // make a new Unix GC
        DELETEP (m_unixarea);
-       m_unixarea = new GR_UnixGraphics(m_areaCurrentSym->window, 
unixapp->getFontManager());
+       m_unixarea = new GR_UnixGraphics(m_areaCurrentSym->window, 
+unixapp->getFontManager(), m_pApp);
                
        // let the widget materialize
        _createSymbolareaFromGC(m_unixarea,
diff -ru abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_Print.cpp 
abi-070700/src/af/xap/unix/xap_UnixDlg_Print.cpp
--- abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_Print.cpp       Fri Jun 23 18:06:17 
2000
+++ abi-070700/src/af/xap/unix/xap_UnixDlg_Print.cpp    Fri Jul  7 10:08:15 2000
@@ -572,14 +572,14 @@
                m_pPSGraphics = new PS_Graphics(m_szPrintToFilePathname, 
m_szDocumentTitle,
                                                                                
m_pUnixFrame->getApp()->getApplicationName(),
                                                                                
fontmgr,
-                                                                               
UT_TRUE);
+                                                                               
+UT_TRUE, app);
        }
        else
        {               
                m_pPSGraphics = new PS_Graphics(m_szPrintCommand, m_szDocumentTitle,
                                                                                
m_pUnixFrame->getApp()->getApplicationName(),
                                                                                
fontmgr,
-                                                                               
UT_FALSE);
+                                                                               
+UT_FALSE, app);
        }
 
        UT_ASSERT(m_pPSGraphics);
diff -ru abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_Zoom.cpp 
abi-070700/src/af/xap/unix/xap_UnixDlg_Zoom.cpp
--- abi-070700-ORIG/src/af/xap/unix/xap_UnixDlg_Zoom.cpp        Wed May 10 21:16:55 
2000
+++ abi-070700/src/af/xap/unix/xap_UnixDlg_Zoom.cpp     Fri Jul  7 10:08:36 2000
@@ -185,7 +185,7 @@
                UT_ASSERT(m_previewArea && m_previewArea->window);
 
                // make a new Unix GC
-               m_unixGraphics = new GR_UnixGraphics(m_previewArea->window, 
unixapp->getFontManager());
+               m_unixGraphics = new GR_UnixGraphics(m_previewArea->window, 
+unixapp->getFontManager(), m_pApp);
                
                // let the widget materialize
                _createPreviewFromGC(m_unixGraphics,
diff -ru abi-070700-ORIG/src/af/xap/unix/xap_UnixPSGraphics.cpp 
abi-070700/src/af/xap/unix/xap_UnixPSGraphics.cpp
--- abi-070700-ORIG/src/af/xap/unix/xap_UnixPSGraphics.cpp      Fri Jun 30 14:35:26 
2000
+++ abi-070700/src/af/xap/unix/xap_UnixPSGraphics.cpp   Fri Jul  7 10:08:51 2000
@@ -51,9 +51,11 @@
                                                 const char * szTitle,
                                                 const char * szSoftwareNameAndVersion,
                                                 XAP_UnixFontManager * fontManager,    
                                          
-                                                UT_Bool          bIsFile)
+                                                UT_Bool          bIsFile,
+                                                XAP_App *pApp)
 {
        UT_ASSERT(szFilename && *szFilename);
+       m_pApp = pApp;
        m_szFilename = szFilename;
        m_szTitle = szTitle;
        m_szSoftwareNameAndVersion = szSoftwareNameAndVersion;
diff -ru abi-070700-ORIG/src/af/xap/unix/xap_UnixPSGraphics.h 
abi-070700/src/af/xap/unix/xap_UnixPSGraphics.h
--- abi-070700-ORIG/src/af/xap/unix/xap_UnixPSGraphics.h        Fri Jun 30 14:35:26 
2000
+++ abi-070700/src/af/xap/unix/xap_UnixPSGraphics.h     Fri Jul  7 10:09:09 2000
@@ -43,7 +43,8 @@
                                const char * szTitle,
                                const char * szSoftwareNameAndVersion,
                                XAP_UnixFontManager * fontManager,
-                               UT_Bool          bIsFile);
+                               UT_Bool          bIsFile,
+                               XAP_App *pApp);
        virtual ~PS_Graphics();
 
        virtual void drawChars(const UT_UCSChar* pChars, 
diff -ru abi-070700-ORIG/src/af/xap/win/xap_Win32Dlg_Print.cpp 
abi-070700/src/af/xap/win/xap_Win32Dlg_Print.cpp
--- abi-070700-ORIG/src/af/xap/win/xap_Win32Dlg_Print.cpp       Sat May  1 01:45:47 
1999
+++ abi-070700/src/af/xap/win/xap_Win32Dlg_Print.cpp    Fri Jul  7 14:04:09 2000
@@ -68,7 +68,7 @@
        m_DocInfo.lpszDocName = m_szDocumentPathname;
        m_DocInfo.lpszOutput = ((m_bDoPrintToFile) ? m_szPrintToFilePathname : NULL);
        
-       GR_Win32Graphics * pGraphics = new 
GR_Win32Graphics(m_pPersistPrintDlg->hDC,&m_DocInfo);
+       GR_Win32Graphics * pGraphics = new 
+GR_Win32Graphics(m_pPersistPrintDlg->hDC,&m_DocInfo, m_pApp);
        return pGraphics;
 }
 
diff -ru abi-070700-ORIG/src/af/xap/win/xap_Win32PreviewWidget.cpp 
abi-070700/src/af/xap/win/xap_Win32PreviewWidget.cpp
--- abi-070700-ORIG/src/af/xap/win/xap_Win32PreviewWidget.cpp   Wed Apr 19 17:52:22 
2000
+++ abi-070700/src/af/xap/win/xap_Win32PreviewWidget.cpp        Fri Jul  7 14:09:43 
+2000
@@ -83,7 +83,7 @@
 
        // create a GR_Graphics for this window and HDC
        
-       m_pGraphics = new GR_Win32Graphics(GetDC(m_hwndPreview),m_hwndPreview);
+       m_pGraphics = new GR_Win32Graphics(GetDC(m_hwndPreview),m_hwndPreview, 
+pWin32App->getApp());
        UT_ASSERT(m_pGraphics);
 
        m_iInstanceCount++;
diff -ru abi-070700-ORIG/src/af/xap/xp/xap_Frame.cpp 
abi-070700/src/af/xap/xp/xap_Frame.cpp
--- abi-070700-ORIG/src/af/xap/xp/xap_Frame.cpp Thu May 25 11:52:58 2000
+++ abi-070700/src/af/xap/xp/xap_Frame.cpp      Fri Jul  7 10:09:42 2000
@@ -27,6 +27,7 @@
 #include "ut_debugmsg.h"
 #include "ut_vector.h"
 #include "ut_string.h"
+#include "ut_growbuf.h"
 #include "xap_App.h"
 #include "xap_Frame.h"
 #include "xap_Prefs.h"
@@ -188,6 +189,32 @@
        else
                szMenuLayoutName = szMenuLayoutDefaultValue;
        UT_cloneString((char *&)m_szMenuLayoutName,szMenuLayoutName);
+       
+       
+       {
+               UT_GrowBuf gb;
+               UT_UCSChar *buf;
+               const XML_Char *table = 0;
+               UT_DEBUGMSG(("==============================\n"));
+               pApp->getPrefsValue((const char *)"RemapGlyphsTable", &table);
+               UT_decodeUTF8string(table, UT_XML_strlen(table), &gb);
+               buf = gb.getPointer(0);
+               for (int i=0; i<gb.getLength(); ++i)
+               {
+                       UT_DEBUGMSG(("  table %2d:  0x%04X  %c\n", i, *(buf + i), 
+*(buf + i) < 256 ? *(buf + i) : '-'));
+               }
+               //UT_DEBUGMSG(("table |%s|, sizeof XML_Char %d\n", table, 
+sizeof(XML_Char)));
+               gb.truncate(0);
+               pApp->getPrefsValue((const char *)"RemapGlyphsDefault", &table);
+               UT_decodeUTF8string(table, UT_XML_strlen(table), &gb);
+               buf = gb.getPointer(0);
+               UT_DEBUGMSG(("default %2d:  0x%04X  %c\n", 99, *(buf), *(buf) < 256 ? 
+*(buf) : '-'));
+               for (int tdex=0; tdex<strlen(table); ++tdex)
+               {
+                       UT_DEBUGMSG(("utf8 default table[%d]:  %x\n", tdex, 
+table[tdex]));
+               }
+               UT_DEBUGMSG(("==============================\n"));
+       }
        
        //////////////////////////////////////////////////////////////////
        // select language for menu labels
diff -ru abi-070700-ORIG/src/af/xap/xp/xap_Prefs.cpp 
abi-070700/src/af/xap/xp/xap_Prefs.cpp
--- abi-070700-ORIG/src/af/xap/xp/xap_Prefs.cpp Wed Jul  5 20:05:18 2000
+++ abi-070700/src/af/xap/xp/xap_Prefs.cpp      Fri Jul  7 15:33:06 2000
@@ -33,6 +33,7 @@
        : m_hash(13)
 {
        m_pPrefs = pPrefs;
+       m_uTick = 0;
 
        if (szSchemeName && *szSchemeName)
                UT_XML_cloneString((XML_Char *&)m_szName,szSchemeName);
@@ -58,6 +59,7 @@
 
 UT_Bool XAP_PrefsScheme::setValue(const XML_Char * szKey, const XML_Char * szValue)
 {
+       ++m_uTick;
        UT_HashEntry * pEntry = m_hash.findEntry(szKey);
        if (pEntry)
        {
diff -ru abi-070700-ORIG/src/af/xap/xp/xap_Prefs.h abi-070700/src/af/xap/xp/xap_Prefs.h
--- abi-070700-ORIG/src/af/xap/xp/xap_Prefs.h   Thu Mar 30 02:53:49 2000
+++ abi-070700/src/af/xap/xp/xap_Prefs.h        Fri Jul  7 15:33:03 2000
@@ -49,6 +49,15 @@
 
        const XML_Char *        getSchemeName(void) const;
        UT_Bool                         setSchemeName(const XML_Char * 
szNewSchemeName);
+       // The idea of the tick is that some object can cache a preference
+       // value if it makes a performance difference.  It should also save
+       // a copy of the tick count and the scheme pointer.  If the scheme
+       // pointer and the tick count are the same, the cached preference
+       // value is current.  If either is changed, the object can refresh
+       // its cached value.  The scheme pointer can be different because
+       // the preference scheme has changed.  The tick count bumps up once
+       // every time any preference value in the scheme is changed.
+       inline UT_uint32                        getTickCount() {return m_uTick;}
        
        UT_Bool                         setValue(const XML_Char * szKey, const 
XML_Char * szValue);
        UT_Bool                         setValueBool(const XML_Char * szKey, UT_Bool 
bValue);
@@ -64,6 +73,7 @@
        XML_Char *                      m_szName;
        UT_AlphaHashTable       m_hash;
        XAP_Prefs *                     m_pPrefs;
+       UT_uint32                       m_uTick;   // ticks up every time setValue() 
+or setValueBool() is called
 };
 
 /*****************************************************************/
diff -ru abi-070700-ORIG/src/af/xap/xp/xap_Prefs_SchemeIds.h 
abi-070700/src/af/xap/xp/xap_Prefs_SchemeIds.h
--- abi-070700-ORIG/src/af/xap/xp/xap_Prefs_SchemeIds.h Wed Jul  5 20:05:18 2000
+++ abi-070700/src/af/xap/xp/xap_Prefs_SchemeIds.h      Fri Jul  7 10:11:51 2000
@@ -45,11 +45,34 @@
 #define XAP_PREF_KEY_UnixFontPath                      "UnixFontPath"
 #define XAP_PREF_DEFAULT_UnixFontPath          "fonts"                                
         /* if relative path, prepend "getAbiSuiteLibDir()" */
 
+#define XAP_PREF_KEY_RemapGlyphsMasterSwitch                   
+"RemapGlyphsMasterSwitch"
+ /* completely ignore glyph remapping if false */
+#define XAP_PREF_DEFAULT_RemapGlyphsMasterSwitch               "1"
+
+#define XAP_PREF_KEY_RemapGlyphsNoMatterWhat                   
+"RemapGlyphsNoMatterWhat"
+ /* if true, do remap even if originals aren't zero-width */
+#define XAP_PREF_DEFAULT_RemapGlyphsNoMatterWhat       "0"
+
+#define XAP_PREF_KEY_RemapGlyphsDefault                            
+"RemapGlyphsDefault"
+ /* default replacement glyph for originals not mentioned in the table */
+#define XAP_PREF_DEFAULT_RemapGlyphsDefault                    "&#x00B0;"
+/* degree symbol */
+
+#define XAP_PREF_KEY_RemapGlyphsTable                      "RemapGlyphsTable"
+/* pairwise table of originals and replacements, arbitrarily many pairs */
+#define XAP_PREF_DEFAULT_RemapGlyphsTable                      
+"&#x2018;`&#x2019;'&#x201c;&quot;&#x201d;&quot;"
+/* smart quotes */
+
 #else /* XAP_PREFS_SCHEMEID_H */
 #ifdef dcl
 
 dcl(ToolbarAppearance)
 dcl(UnixFontPath)
+
+dcl(RemapGlyphsMasterSwitch)
+dcl(RemapGlyphsNoMatterWhat)
+dcl(RemapGlyphsDefault)
+dcl(RemapGlyphsTable)
 
 #endif /* dcl */
 #endif /* XAP_PREFS_SCHEMEID_H */
diff -ru abi-070700-ORIG/src/hello/ap/unix/ap_UnixFrame.cpp 
abi-070700/src/hello/ap/unix/ap_UnixFrame.cpp
--- abi-070700-ORIG/src/hello/ap/unix/ap_UnixFrame.cpp  Wed Apr 19 18:52:54 2000
+++ abi-070700/src/hello/ap/unix/ap_UnixFrame.cpp       Fri Jul  7 12:51:54 2000
@@ -83,7 +83,7 @@
 {
        XAP_UnixFontManager * fontManager = ((XAP_UnixApp *) 
getApp())->getFontManager();
 
-       GR_UnixGraphics* pG = new GR_UnixGraphics(m_dArea->window, fontManager);
+       GR_UnixGraphics* pG = new GR_UnixGraphics(m_dArea->window, fontManager, 
+getApp());
        
        pG->setFont(pG->findFont("times", "normal", NULL, "bold", NULL, "72pt"));
                                
diff -ru abi-070700-ORIG/src/hello/ap/unix/ap_UnixStatusBar.cpp 
abi-070700/src/hello/ap/unix/ap_UnixStatusBar.cpp
--- abi-070700-ORIG/src/hello/ap/unix/ap_UnixStatusBar.cpp      Thu Apr  8 14:07:04 
1999
+++ abi-070700/src/hello/ap/unix/ap_UnixStatusBar.cpp   Fri Jul  7 12:52:36 2000
@@ -51,7 +51,7 @@
        DELETEP(m_pG);  
        XAP_UnixApp * app = static_cast<XAP_UnixApp *>(m_pFrame->getApp());
        XAP_UnixFontManager * fontManager = app->getFontManager();
-       GR_UnixGraphics * pG = new GR_UnixGraphics(m_wStatusBar->window, fontManager);
+       GR_UnixGraphics * pG = new GR_UnixGraphics(m_wStatusBar->window, fontManager, 
+getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
 
diff -ru abi-070700-ORIG/src/hello/ap/win/ap_Win32Frame.cpp 
abi-070700/src/hello/ap/win/ap_Win32Frame.cpp
--- abi-070700-ORIG/src/hello/ap/win/ap_Win32Frame.cpp  Mon Oct 11 18:43:24 1999
+++ abi-070700/src/hello/ap/win/ap_Win32Frame.cpp       Fri Jul  7 14:10:28 2000
@@ -305,7 +305,7 @@
 
 UT_Bool AP_Win32Frame::loadDocument(const char * szFilename, int ieft)
 {
-       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndDocument), 
m_hwndDocument);
+       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndDocument), 
+m_hwndDocument, getApp());
        pG->setFont(pG->findFont("Times New Roman", "normal", NULL, "bold", NULL, 
"72pt"));
        pG->setZoomPercentage(100);
 
diff -ru abi-070700-ORIG/src/hello/ap/win/ap_Win32StatusBar.cpp 
abi-070700/src/hello/ap/win/ap_Win32StatusBar.cpp
--- abi-070700-ORIG/src/hello/ap/win/ap_Win32StatusBar.cpp      Mon Oct 11 18:43:25 
1999
+++ abi-070700/src/hello/ap/win/ap_Win32StatusBar.cpp   Fri Jul  7 14:17:33 2000
@@ -53,7 +53,7 @@
 void AP_Win32StatusBar::setView(AV_View * pView)
 {
        DELETEP(m_pG);
-       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndStatusBar), 
m_hwndStatusBar);
+       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndStatusBar), 
+m_hwndStatusBar, pView->getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
 
diff -ru abi-070700-ORIG/src/wp/ap/beos/ap_BeOSFrame.cpp 
abi-070700/src/wp/ap/beos/ap_BeOSFrame.cpp
--- abi-070700-ORIG/src/wp/ap/beos/ap_BeOSFrame.cpp     Wed May 17 23:10:05 2000
+++ abi-070700/src/wp/ap/beos/ap_BeOSFrame.cpp  Fri Jul  7 13:15:33 2000
@@ -90,7 +90,7 @@
        UT_uint32 point = 0;
        
        //pG = new GR_BeOSGraphics(m_dArea->window, fontManager);
-       pG = new GR_BeOSGraphics(getBeDocView());
+       pG = new GR_BeOSGraphics(getBeDocView(), getApp());
        ENSUREP(pG);
        pG->setZoomPercentage(iZoom);
 
diff -ru abi-070700-ORIG/src/wp/ap/beos/ap_BeOSLeftRuler.cpp 
abi-070700/src/wp/ap/beos/ap_BeOSLeftRuler.cpp
--- abi-070700-ORIG/src/wp/ap/beos/ap_BeOSLeftRuler.cpp Fri Nov  5 04:11:14 1999
+++ abi-070700/src/wp/ap/beos/ap_BeOSLeftRuler.cpp      Fri Jul  7 13:31:47 2000
@@ -186,7 +186,7 @@
        // is not created until the frame's top-level window is
        // shown.
                DELETEP(m_pG);
-               m_pG = new GR_BeOSGraphics(m_wLeftRuler);
+               m_pG = new GR_BeOSGraphics(m_wLeftRuler, m_pFrame->getApp());
                UT_ASSERT(m_pG);
        }
 }
diff -ru abi-070700-ORIG/src/wp/ap/beos/ap_BeOSStatusBar.cpp 
abi-070700/src/wp/ap/beos/ap_BeOSStatusBar.cpp
--- abi-070700-ORIG/src/wp/ap/beos/ap_BeOSStatusBar.cpp Sun Sep 26 11:17:33 1999
+++ abi-070700/src/wp/ap/beos/ap_BeOSStatusBar.cpp      Fri Jul  7 13:36:23 2000
@@ -50,7 +50,7 @@
        DELETEP(m_pG);  
        XAP_BeOSApp * app = static_cast<XAP_BeOSApp *>(m_pFrame->getApp());
        XAP_BeOSFontManager * fontManager = app->getFontManager();
-       m_pG = new GR_BeOSGraphics(m_wStatusBar->window, fontManager);
+       m_pG = new GR_BeOSGraphics(m_wStatusBar->window, m_pFrame->getApp());
        UT_ASSERT(m_pG);
 
        GR_Font * pFont = m_pG->getGUIFont();
diff -ru abi-070700-ORIG/src/wp/ap/beos/ap_BeOSTopRuler.cpp 
abi-070700/src/wp/ap/beos/ap_BeOSTopRuler.cpp
--- abi-070700-ORIG/src/wp/ap/beos/ap_BeOSTopRuler.cpp  Fri Nov  5 04:11:14 1999
+++ abi-070700/src/wp/ap/beos/ap_BeOSTopRuler.cpp       Fri Jul  7 13:33:33 2000
@@ -182,7 +182,7 @@
        // shown.
 
                DELETEP(m_pG);  
-               m_pG = new GR_BeOSGraphics(m_wTopRuler);
+               m_pG = new GR_BeOSGraphics(m_wTopRuler, m_pFrame->getApp());
                UT_ASSERT(m_pG);
        }
 }
diff -ru abi-070700-ORIG/src/wp/ap/qnx/ap_QNXApp.cpp 
abi-070700/src/wp/ap/qnx/ap_QNXApp.cpp
--- abi-070700-ORIG/src/wp/ap/qnx/ap_QNXApp.cpp Tue Mar 28 17:33:24 2000
+++ abi-070700/src/wp/ap/qnx/ap_QNXApp.cpp      Fri Jul  7 13:48:07 2000
@@ -715,7 +715,8 @@
                PtAddEventHandler(da, Ph_EV_BUT_RELEASE, s_hideSplash, NULL);
 
                // create image context
-               pQNXGraphics = new GR_QNXGraphics(spwin, da);
+               // TODO: find an XAP_App pointer for the following call:
+               pQNXGraphics = new GR_QNXGraphics(spwin, da, 0);
                pSplashImage = pQNXGraphics->createNewImage("splash", pBB, 
iSplashWidth, iSplashHeight);
 
                PtRealizeWidget(spwin);
diff -ru abi-070700-ORIG/src/wp/ap/qnx/ap_QNXDialog_Paragraph.cpp 
abi-070700/src/wp/ap/qnx/ap_QNXDialog_Paragraph.cpp
--- abi-070700-ORIG/src/wp/ap/qnx/ap_QNXDialog_Paragraph.cpp    Sun May  7 10:43:57 
2000
+++ abi-070700/src/wp/ap/qnx/ap_QNXDialog_Paragraph.cpp Fri Jul  7 13:49:22 2000
@@ -269,7 +269,7 @@
                UT_ASSERT(m_drawingareaPreview);
 
                // make a new QNX GC
-               m_qnxGraphics = new GR_QNXGraphics(mainWindow, m_drawingareaPreview);
+               m_qnxGraphics = new GR_QNXGraphics(mainWindow, m_drawingareaPreview, 
+pFrame->getApp());
                unsigned short w, h;
 
                // let the widget materialize
diff -ru abi-070700-ORIG/src/wp/ap/qnx/ap_QNXFrame.cpp 
abi-070700/src/wp/ap/qnx/ap_QNXFrame.cpp
--- abi-070700-ORIG/src/wp/ap/qnx/ap_QNXFrame.cpp       Wed May 17 23:10:06 2000
+++ abi-070700/src/wp/ap/qnx/ap_QNXFrame.cpp    Fri Jul  7 13:50:42 2000
@@ -97,7 +97,7 @@
        UT_uint32 nrToolbars;
        UT_uint32 point = 0;
 
-       pG = new GR_QNXGraphics(m_wTopLevelWindow, m_dArea);
+       pG = new GR_QNXGraphics(m_wTopLevelWindow, m_dArea, getApp());
        ENSUREP(pG);
        pG->setZoomPercentage(iZoom);
        
diff -ru abi-070700-ORIG/src/wp/ap/qnx/ap_QNXLeftRuler.cpp 
abi-070700/src/wp/ap/qnx/ap_QNXLeftRuler.cpp
--- abi-070700-ORIG/src/wp/ap/qnx/ap_QNXLeftRuler.cpp   Fri Feb 18 12:55:44 2000
+++ abi-070700/src/wp/ap/qnx/ap_QNXLeftRuler.cpp        Fri Jul  7 13:51:25 2000
@@ -114,7 +114,7 @@
        // shown.
        DELETEP(m_pG);
        GR_QNXGraphics * pG = new GR_QNXGraphics(((XAP_QNXFrame 
*)m_pFrame)->getTopLevelWindow(),
-                                           m_wLeftRuler);
+                                           m_wLeftRuler, m_pFrame->getApp());
        m_pG = pG;
        pG->init3dColors();
 }
diff -ru abi-070700-ORIG/src/wp/ap/qnx/ap_QNXStatusBar.cpp 
abi-070700/src/wp/ap/qnx/ap_QNXStatusBar.cpp
--- abi-070700-ORIG/src/wp/ap/qnx/ap_QNXStatusBar.cpp   Tue Mar 28 17:33:24 2000
+++ abi-070700/src/wp/ap/qnx/ap_QNXStatusBar.cpp        Fri Jul  7 13:51:46 2000
@@ -50,7 +50,7 @@
        XAP_QNXApp * app = (XAP_QNXApp *)m_pFrame->getApp();
        XAP_QNXFrame *frame = (XAP_QNXFrame *) m_pFrame;
 
-       m_pG = new GR_QNXGraphics(frame->getTopLevelWindow(), m_wStatusBar);
+       m_pG = new GR_QNXGraphics(frame->getTopLevelWindow(), m_wStatusBar, 
+m_pFrame->getApp());
        UT_ASSERT(m_pG);
 
        GR_Font * pFont = m_pG->getGUIFont();
diff -ru abi-070700-ORIG/src/wp/ap/qnx/ap_QNXTopRuler.cpp 
abi-070700/src/wp/ap/qnx/ap_QNXTopRuler.cpp
--- abi-070700-ORIG/src/wp/ap/qnx/ap_QNXTopRuler.cpp    Tue Mar  7 04:36:41 2000
+++ abi-070700/src/wp/ap/qnx/ap_QNXTopRuler.cpp Fri Jul  7 13:52:14 2000
@@ -136,7 +136,7 @@
 
        DELETEP(m_pG);  
        GR_QNXGraphics * pG = new GR_QNXGraphics(((XAP_QNXFrame 
*)m_pFrame)->getTopLevelWindow(), 
-                                                                                      
  m_wTopRuler);
+                                                                                      
+  m_wTopRuler, m_pFrame->getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
        pG->init3dColors();
diff -ru abi-070700-ORIG/src/wp/ap/unix/ap_UnixApp.cpp 
abi-070700/src/wp/ap/unix/ap_UnixApp.cpp
--- abi-070700-ORIG/src/wp/ap/unix/ap_UnixApp.cpp       Mon Jun 12 05:36:01 2000
+++ abi-070700/src/wp/ap/unix/ap_UnixApp.cpp    Fri Jul  7 11:14:47 2000
@@ -763,7 +763,7 @@
                gtk_widget_show(wSplash);
                
                // create image context
-               pUnixGraphics = new GR_UnixGraphics(da->window, NULL);
+               pUnixGraphics = new GR_UnixGraphics(da->window, NULL, m_pApp);
                pSplashImage = pUnixGraphics->createNewImage("splash", pBB, 
iSplashWidth, iSplashHeight);
 
                // another for luck (to bring it up forward and paint)
diff -ru abi-070700-ORIG/src/wp/ap/unix/ap_UnixDialog_Paragraph.cpp 
abi-070700/src/wp/ap/unix/ap_UnixDialog_Paragraph.cpp
--- abi-070700-ORIG/src/wp/ap/unix/ap_UnixDialog_Paragraph.cpp  Tue May 16 09:22:45 
2000
+++ abi-070700/src/wp/ap/unix/ap_UnixDialog_Paragraph.cpp       Fri Jul  7 11:15:33 
+2000
@@ -172,7 +172,7 @@
                UT_ASSERT(m_drawingareaPreview && m_drawingareaPreview->window);
 
                // make a new Unix GC
-               m_unixGraphics = new GR_UnixGraphics(m_drawingareaPreview->window, 
unixapp->getFontManager());
+               m_unixGraphics = new GR_UnixGraphics(m_drawingareaPreview->window, 
+unixapp->getFontManager(), m_pApp);
                
                // let the widget materialize
                _createPreviewFromGC(m_unixGraphics,
diff -ru abi-070700-ORIG/src/wp/ap/unix/ap_UnixFrame.cpp 
abi-070700/src/wp/ap/unix/ap_UnixFrame.cpp
--- abi-070700-ORIG/src/wp/ap/unix/ap_UnixFrame.cpp     Mon Jun 12 05:36:02 2000
+++ abi-070700/src/wp/ap/unix/ap_UnixFrame.cpp  Fri Jul  7 11:16:02 2000
@@ -96,7 +96,7 @@
        gboolean bFocus;
        XAP_UnixFontManager * fontManager = ((XAP_UnixApp *) 
getApp())->getFontManager();
        
-       pG = new GR_UnixGraphics(m_dArea->window, fontManager);
+       pG = new GR_UnixGraphics(m_dArea->window, fontManager, getApp());
        ENSUREP(pG);
        pG->setZoomPercentage(iZoom);
        
diff -ru abi-070700-ORIG/src/wp/ap/unix/ap_UnixLeftRuler.cpp 
abi-070700/src/wp/ap/unix/ap_UnixLeftRuler.cpp
--- abi-070700-ORIG/src/wp/ap/unix/ap_UnixLeftRuler.cpp Mon Oct 11 18:43:27 1999
+++ abi-070700/src/wp/ap/unix/ap_UnixLeftRuler.cpp      Fri Jul  7 11:16:18 2000
@@ -94,7 +94,7 @@
        DELETEP(m_pG);
        XAP_UnixApp * app = static_cast<XAP_UnixApp *>(m_pFrame->getApp());
        XAP_UnixFontManager * fontManager = app->getFontManager();
-       GR_UnixGraphics * pG = new GR_UnixGraphics(m_wLeftRuler->window, fontManager);
+       GR_UnixGraphics * pG = new GR_UnixGraphics(m_wLeftRuler->window, fontManager, 
+m_pFrame->getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
 
diff -ru abi-070700-ORIG/src/wp/ap/unix/ap_UnixStatusBar.cpp 
abi-070700/src/wp/ap/unix/ap_UnixStatusBar.cpp
--- abi-070700-ORIG/src/wp/ap/unix/ap_UnixStatusBar.cpp Mon Apr  5 09:22:29 1999
+++ abi-070700/src/wp/ap/unix/ap_UnixStatusBar.cpp      Fri Jul  7 11:16:37 2000
@@ -51,7 +51,7 @@
        DELETEP(m_pG);  
        XAP_UnixApp * app = static_cast<XAP_UnixApp *>(m_pFrame->getApp());
        XAP_UnixFontManager * fontManager = app->getFontManager();
-       GR_UnixGraphics * pG = new GR_UnixGraphics(m_wStatusBar->window, fontManager);
+       GR_UnixGraphics * pG = new GR_UnixGraphics(m_wStatusBar->window, fontManager, 
+m_pFrame->getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
 
diff -ru abi-070700-ORIG/src/wp/ap/unix/ap_UnixTopRuler.cpp 
abi-070700/src/wp/ap/unix/ap_UnixTopRuler.cpp
--- abi-070700-ORIG/src/wp/ap/unix/ap_UnixTopRuler.cpp  Thu Dec  2 19:14:57 1999
+++ abi-070700/src/wp/ap/unix/ap_UnixTopRuler.cpp       Fri Jul  7 11:18:03 2000
@@ -130,7 +130,7 @@
        DELETEP(m_pG);  
        XAP_UnixApp * app = static_cast<XAP_UnixApp *>(m_pFrame->getApp());
        XAP_UnixFontManager * fontManager = app->getFontManager();
-       GR_UnixGraphics * pG = new GR_UnixGraphics(m_wTopRuler->window, fontManager);
+       GR_UnixGraphics * pG = new GR_UnixGraphics(m_wTopRuler->window, fontManager, 
+m_pFrame->getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
 
diff -ru abi-070700-ORIG/src/wp/ap/win/ap_Win32App.cpp 
abi-070700/src/wp/ap/win/ap_Win32App.cpp
--- abi-070700-ORIG/src/wp/ap/win/ap_Win32App.cpp       Mon Jul  3 12:58:03 2000
+++ abi-070700/src/wp/ap/win/ap_Win32App.cpp    Fri Jul  7 14:18:04 2000
@@ -507,7 +507,8 @@
     case WM_PAINT:
         hdc = BeginPaint(hWnd, &ps);
                {
-                       GR_Graphics * pG = new GR_Win32Graphics(hdc, hwndSplash);
+                       // TODO: find XAP_App pointer for this
+                       GR_Graphics * pG = new GR_Win32Graphics(hdc, hwndSplash, 0);
                        pG->drawImage(pSplash, 0, 0);
                        DELETEP(pG);
                }
@@ -641,7 +642,8 @@
                if (hwndSplash) 
                {
                        // create image first
-                       GR_Graphics * pG = new GR_Win32Graphics(GetDC(hwndSplash), 
hwndSplash);
+                       // TODO: find XAP_App pointer for this
+                       GR_Graphics * pG = new GR_Win32Graphics(GetDC(hwndSplash), 
+hwndSplash, 0);
                        pSplash = pG->createNewImage("splash", pBB, iSplashWidth, 
iSplashHeight);
                        DELETEP(pG);
 
diff -ru abi-070700-ORIG/src/wp/ap/win/ap_Win32Frame.cpp 
abi-070700/src/wp/ap/win/ap_Win32Frame.cpp
--- abi-070700-ORIG/src/wp/ap/win/ap_Win32Frame.cpp     Wed May 17 23:10:07 2000
+++ abi-070700/src/wp/ap/win/ap_Win32Frame.cpp  Fri Jul  7 14:18:42 2000
@@ -185,7 +185,7 @@
        UT_uint32                                       point                          
         = 0;
        HWND hwnd = m_hwndDocument;
 
-       pG = new GR_Win32Graphics(GetDC(hwnd), hwnd);
+       pG = new GR_Win32Graphics(GetDC(hwnd), hwnd, getApp());
        ENSUREP(pG);
        
        pG->setZoomPercentage(iZoom);
diff -ru abi-070700-ORIG/src/wp/ap/win/ap_Win32LeftRuler.cpp 
abi-070700/src/wp/ap/win/ap_Win32LeftRuler.cpp
--- abi-070700-ORIG/src/wp/ap/win/ap_Win32LeftRuler.cpp Mon Oct 11 18:43:28 1999
+++ abi-070700/src/wp/ap/win/ap_Win32LeftRuler.cpp      Fri Jul  7 14:19:11 2000
@@ -55,7 +55,7 @@
        AP_LeftRuler::setView(pView);
 
        DELETEP(m_pG);
-       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndLeftRuler), 
m_hwndLeftRuler);
+       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndLeftRuler), 
+m_hwndLeftRuler, pView->getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
 
diff -ru abi-070700-ORIG/src/wp/ap/win/ap_Win32StatusBar.cpp 
abi-070700/src/wp/ap/win/ap_Win32StatusBar.cpp
--- abi-070700-ORIG/src/wp/ap/win/ap_Win32StatusBar.cpp Wed May 10 05:56:23 2000
+++ abi-070700/src/wp/ap/win/ap_Win32StatusBar.cpp      Fri Jul  7 14:19:29 2000
@@ -53,7 +53,7 @@
 void AP_Win32StatusBar::setView(AV_View * pView)
 {
        DELETEP(m_pG);
-       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndStatusBar), 
m_hwndStatusBar);
+       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndStatusBar), 
+m_hwndStatusBar, pView->getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
 
diff -ru abi-070700-ORIG/src/wp/ap/win/ap_Win32TopRuler.cpp 
abi-070700/src/wp/ap/win/ap_Win32TopRuler.cpp
--- abi-070700-ORIG/src/wp/ap/win/ap_Win32TopRuler.cpp  Mon Oct 11 18:43:28 1999
+++ abi-070700/src/wp/ap/win/ap_Win32TopRuler.cpp       Fri Jul  7 14:19:48 2000
@@ -56,7 +56,7 @@
        AP_TopRuler::setView(pView);
 
        DELETEP(m_pG);
-       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndTopRuler), 
m_hwndTopRuler);
+       GR_Win32Graphics * pG = new GR_Win32Graphics(GetDC(m_hwndTopRuler), 
+m_hwndTopRuler, pView->getApp());
        m_pG = pG;
        UT_ASSERT(m_pG);
 

Reply via email to