AbiWord has UT_Dimension, but also fp_PageSize::Unit.  This is
unnecessary.  The attached patch kills fp_PageSize::Unit.  It compiles,
but I haven't tested it yet.  It only works in Unix.  Can someone look it
over?  I'll also look it over more before committing it.

pat

? Untitled1.CRASHED
? buflist
? bug.1360.diffs
? debugTrace
? foo.abw
? no-more-pagesize-units
? pagesize_uses
? test.abw
? src/wp/impexp/unix
Index: src/af/util/xp/ut_units.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/util/xp/ut_units.cpp,v
retrieving revision 1.40
diff -u -r1.40 ut_units.cpp
--- src/af/util/xp/ut_units.cpp 2001/10/03 07:42:57     1.40
+++ src/af/util/xp/ut_units.cpp 2002/01/01 21:35:54
@@ -132,6 +132,12 @@
        return valueScaled;
 }
 
+double UT_convertDimensions(double f, UT_Dimension from, UT_Dimension to)
+{
+       double valueScaled = UT_convertDimToInches(f, from);
+       return UT_convertInchesToDimension(valueScaled, to);
+}
+
 const char * UT_convertInchesToDimensionString(UT_Dimension dim, double 
valueInInches, const char * szPrecision)
 {
        // return pointer to static buffer -- use it quickly.
Index: src/af/util/xp/ut_units.h
===================================================================
RCS file: /cvsroot/abi/src/af/util/xp/ut_units.h,v
retrieving revision 1.28
diff -u -r1.28 ut_units.h
--- src/af/util/xp/ut_units.h   2001/10/03 07:42:57     1.28
+++ src/af/util/xp/ut_units.h   2002/01/01 21:35:55
@@ -44,6 +44,7 @@
 
 double UT_convertToInches(const char* s);
 double UT_convertDimToInches (double f, UT_Dimension dim);
+double UT_convertDimensions(double f, UT_Dimension from, UT_Dimension to);
 double UT_convertToPoints(const char* s);
 double UT_convertToDimension(const char* s, UT_Dimension dim);
 UT_sint32 UT_convertToLayoutUnits(const char* s);
Index: src/text/fmt/xp/fp_Page.cpp
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fp_Page.cpp,v
retrieving revision 1.77
diff -u -r1.77 fp_Page.cpp
--- src/text/fmt/xp/fp_Page.cpp 2001/12/30 18:36:06     1.77
+++ src/text/fmt/xp/fp_Page.cpp 2002/01/01 21:36:15
@@ -77,22 +77,22 @@
 
 UT_sint32 fp_Page::getWidth(void) const
 {
-       return (UT_sint32)(m_iResolution * m_pageSize.Width(fp_PageSize::inch));
+       return (UT_sint32)(m_iResolution * m_pageSize.Width(DIM_IN));
 }
 
 UT_sint32 fp_Page::getWidthInLayoutUnits(void) const
 {
-       return (UT_sint32)m_pageSize.Width(fp_PageSize::LayoutUnit);
+       return (UT_sint32)UT_convertSizeToLayoutUnits(m_pageSize.Width(DIM_IN), 
+DIM_IN);
 }
 
 UT_sint32 fp_Page::getHeight(void) const
 {
-       return (UT_sint32)(m_iResolution * m_pageSize.Height(fp_PageSize::inch));
+       return (UT_sint32)(m_iResolution * m_pageSize.Height(DIM_IN));
 }
 
 UT_sint32 fp_Page::getHeightInLayoutUnits(void) const
 {
-       return (UT_sint32)m_pageSize.Height(fp_PageSize::LayoutUnit);
+       return (UT_sint32)UT_convertSizeToLayoutUnits(m_pageSize.Height(DIM_IN), 
+DIM_IN);
 }
 
 /*!
Index: src/text/fmt/xp/fp_PageSize.cpp
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fp_PageSize.cpp,v
retrieving revision 1.23
diff -u -r1.23 fp_PageSize.cpp
--- src/text/fmt/xp/fp_PageSize.cpp     2001/12/30 18:36:06     1.23
+++ src/text/fmt/xp/fp_PageSize.cpp     2002/01/01 21:36:17
@@ -19,7 +19,7 @@
        double w; // width
        double h; // height
 
-       fp_PageSize::Unit u; // unit for all these values
+       UT_Dimension u; // unit for all these values
        char name[cMaxSymbolicLength]; // symbolic name
 
        double l; // left margin
@@ -37,110 +37,101 @@
 pagesizes[fp_PageSize::_last_predefined_pagesize_dont_use_] =
 {
        // the A sizes
-       {1682.0, 2378.0, fp_PageSize::mm,       "4A", 
+       {1682.0, 2378.0, DIM_MM,        "4A", 
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {1189.0, 1682.0, fp_PageSize::mm,       "2A", 
+       {1189.0, 1682.0, DIM_MM,        "2A", 
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 841.0, 1189.0, fp_PageSize::mm,       "A0", 
+       { 841.0, 1189.0, DIM_MM,        "A0", 
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 594.0,  841.0, fp_PageSize::mm,       "A1",
+       { 594.0,  841.0, DIM_MM,        "A1",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 420.0,  594.0, fp_PageSize::mm,       "A2",
+       { 420.0,  594.0, DIM_MM,        "A2",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 297.0,  420.0, fp_PageSize::mm,       "A3", 28.0, 28.0, 28.0, 28.0 },
-       { 210.0,  297.0, fp_PageSize::mm,       "A4", 28.0, 28.0, 28.0, 28.0 },
-       { 148.0,  210.0, fp_PageSize::mm,       "A5", 28.0, 28.0, 28.0, 28.0 },
-       { 105.0,  148.0, fp_PageSize::mm,       "A6",
+       { 297.0,  420.0, DIM_MM,        "A3", 28.0, 28.0, 28.0, 28.0 },
+       { 210.0,  297.0, DIM_MM,        "A4", 28.0, 28.0, 28.0, 28.0 },
+       { 148.0,  210.0, DIM_MM,        "A5", 28.0, 28.0, 28.0, 28.0 },
+       { 105.0,  148.0, DIM_MM,        "A6",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  74.0,  105.0, fp_PageSize::mm,       "A7",
+       {  74.0,  105.0, DIM_MM,        "A7",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  52.0,  74.0, fp_PageSize::mm,        "A8",
+       {  52.0,  74.0, DIM_MM, "A8",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  37.0,  52.0, fp_PageSize::mm,        "A9",
+       {  37.0,  52.0, DIM_MM, "A9",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  26.0,  37.0, fp_PageSize::mm,        "A10",
+       {  26.0,  37.0, DIM_MM, "A10",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
 
        // the B sizes
-       {2000.0, 2828.0, fp_PageSize::mm,       "4B",
+       {2000.0, 2828.0, DIM_MM,        "4B",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {1414.0, 2000.0, fp_PageSize::mm,       "2B",
+       {1414.0, 2000.0, DIM_MM,        "2B",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {1000.0, 1414.0, fp_PageSize::mm,       "B0",
+       {1000.0, 1414.0, DIM_MM,        "B0",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 707.0, 1000.0, fp_PageSize::mm,       "B1",
+       { 707.0, 1000.0, DIM_MM,        "B1",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 500.0,  707.0, fp_PageSize::mm,       "B2",
+       { 500.0,  707.0, DIM_MM,        "B2",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 353.0,  500.0, fp_PageSize::mm,       "B3",
+       { 353.0,  500.0, DIM_MM,        "B3",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 250.0,  353.0, fp_PageSize::mm,       "B4", 21.0, 21.0, 21.0, 21.0 },
-       { 176.0,  250.0, fp_PageSize::mm,       "B5", 28.0, 28.0, 28.0, 28.0 },
-       { 125.0,  176.0, fp_PageSize::mm,       "B6",
+       { 250.0,  353.0, DIM_MM,        "B4", 21.0, 21.0, 21.0, 21.0 },
+       { 176.0,  250.0, DIM_MM,        "B5", 28.0, 28.0, 28.0, 28.0 },
+       { 125.0,  176.0, DIM_MM,        "B6",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  88.0,  125.0, fp_PageSize::mm,       "B7",
+       {  88.0,  125.0, DIM_MM,        "B7",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  62.0,   88.0, fp_PageSize::mm,       "B8",
+       {  62.0,   88.0, DIM_MM,        "B8",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  44.0,   62.0, fp_PageSize::mm,       "B9",
+       {  44.0,   62.0, DIM_MM,        "B9",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  31.0,   44.0, fp_PageSize::mm,       "B10",
+       {  31.0,   44.0, DIM_MM,        "B10",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
 
        // the C sizes
-       { 917.0, 1297.0, fp_PageSize::mm,       "C0",
+       { 917.0, 1297.0, DIM_MM,        "C0",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 648.0,  917.0, fp_PageSize::mm,       "C1",
+       { 648.0,  917.0, DIM_MM,        "C1",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 458.0,  648.0, fp_PageSize::mm,       "C2",
+       { 458.0,  648.0, DIM_MM,        "C2",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 324.0,  458.0, fp_PageSize::mm,       "C3",
+       { 324.0,  458.0, DIM_MM,        "C3",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       { 229.0,  324.0, fp_PageSize::mm,       "C4",
+       { 229.0,  324.0, DIM_MM,        "C4",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
        // FIXME: C5 is dealt with below, under envelopes
        // FIXME: should prolly have C6/C5 here too, for completeness
-       { 114.0,  162.0, fp_PageSize::mm,       "C6",
+       { 114.0,  162.0, DIM_MM,        "C6",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  81.0,  114.0, fp_PageSize::mm,       "C7",
+       {  81.0,  114.0, DIM_MM,        "C7",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  57.0,   81.0, fp_PageSize::mm,       "C8",
+       {  57.0,   81.0, DIM_MM,        "C8",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  40.0,   57.0, fp_PageSize::mm,       "C9",
+       {  40.0,   57.0, DIM_MM,        "C9",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
-       {  28.0,   40.0, fp_PageSize::mm,       "C10",
+       {  28.0,   40.0, DIM_MM,        "C10",
          MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN, MARGIN_UNKNOWN },
        
        // Japanese B sizes
        // FIXME: should prolly have the other Japanese sizes
-       { 182.0,  258.0, fp_PageSize::mm,   "B5-Japan", 28.0, 28.0, 28.0, 28.0},
+       { 182.0,  258.0, DIM_MM,   "B5-Japan", 28.0, 28.0, 28.0, 28.0},
 
        // the rest
-       {   8.5,   14.0, fp_PageSize::inch,     "Legal", 1.0, 1.0, 1.0, 1.0     },
-       {   8.5,   13.0, fp_PageSize::inch,     "Folio", 1.0, 1.0, 1.0, 1.0     },
-       {   8.5,   11.0, fp_PageSize::inch,     "Letter", 1.0, 1.0, 1.0, 1.0 },
-       {   8.5,    5.5, fp_PageSize::inch, "Half-Letter", 1.0, 1.0, 1.0, 1.0 },
-       {   7.5,   10.0, fp_PageSize::inch, "Executive", 1.0, 1.0, 1.0, 1.0 },
-       { 280.1,  267.0, fp_PageSize::mm,   "Tabloid/Ledger", 25.4, 25.4, 25.4, 25.4},
-       {  99.0,  191.0, fp_PageSize::mm,   "Monarch", 3.5, 3.5, 3.5, 3.5},
-       { 297.0,  433.0, fp_PageSize::mm,   "SuperB", 28.2, 28.2, 28.2, 28.2},
-       { 105.0,  242.0, fp_PageSize::mm,   "Envelope-Commercial", 1.8, 1.8, 1.8, 
1.8},
-       {  99.0,  191.0, fp_PageSize::mm,   "Envelope-Monarch", 1.8, 1.8, 1.8, 1.8},
-       { 110.0,  220.0, fp_PageSize::mm,   "Envelope-DL", 1.8, 1.8, 1.8, 1.8},
-       { 162.0,  229.0, fp_PageSize::mm,   "Envelope-C5", 1.8, 1.8, 1.8, 1.8},
-       { 105.0,  148.0, fp_PageSize::mm,   "EuroPostcard", 1.8, 1.8, 1.8, 1.8},
-       {   0.0,    0.0, fp_PageSize::mm,       "Custom", 0.0, 0.0, 0.0, 0.0}
+       {   8.5,   14.0, DIM_IN,        "Legal", 1.0, 1.0, 1.0, 1.0     },
+       {   8.5,   13.0, DIM_IN,        "Folio", 1.0, 1.0, 1.0, 1.0     },
+       {   8.5,   11.0, DIM_IN,        "Letter", 1.0, 1.0, 1.0, 1.0 },
+       {   8.5,    5.5, DIM_IN, "Half-Letter", 1.0, 1.0, 1.0, 1.0 },
+       {   7.5,   10.0, DIM_IN, "Executive", 1.0, 1.0, 1.0, 1.0 },
+       { 280.1,  267.0, DIM_MM,   "Tabloid/Ledger", 25.4, 25.4, 25.4, 25.4},
+       {  99.0,  191.0, DIM_MM,   "Monarch", 3.5, 3.5, 3.5, 3.5},
+       { 297.0,  433.0, DIM_MM,   "SuperB", 28.2, 28.2, 28.2, 28.2},
+       { 105.0,  242.0, DIM_MM,   "Envelope-Commercial", 1.8, 1.8, 1.8, 1.8},
+       {  99.0,  191.0, DIM_MM,   "Envelope-Monarch", 1.8, 1.8, 1.8, 1.8},
+       { 110.0,  220.0, DIM_MM,   "Envelope-DL", 1.8, 1.8, 1.8, 1.8},
+       { 162.0,  229.0, DIM_MM,   "Envelope-C5", 1.8, 1.8, 1.8, 1.8},
+       { 105.0,  148.0, DIM_MM,   "EuroPostcard", 1.8, 1.8, 1.8, 1.8},
+       {   0.0,    0.0, DIM_MM,        "Custom", 0.0, 0.0, 0.0, 0.0}
 };
 
-const double ScaleFactors[fp_PageSize::_last_predefined_unit_dont_use_] =
-{
-       { 1.0                                                           },             
 // mm
-       { 10.0                                                          },             
 // cm
-       { 25.4                                                          },             
 // inch
-       { 25.4 / UT_PAPER_UNITS_PER_INCH        },              // PaperUnit
-       { 25.4 / UT_LAYOUT_UNITS                        }               // LayoutUnit
-};
-
 fp_PageSize::fp_PageSize(Predefined preDef)
 {
        m_bisPortrait = true;
@@ -155,36 +146,35 @@
        Set(name);
 }
 
-fp_PageSize::fp_PageSize(double w, double h, Unit u)
+fp_PageSize::fp_PageSize(double w, double h, UT_Dimension u)
 {
-       UT_ASSERT(u >= _first_predefined_unit_ && u < 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
+
        m_bisPortrait = true;
        m_scale = 1.0;
        Set(w, h, u);
 }
 
 // all Set() calls ultimately go through this function
-void fp_PageSize::Set(Predefined preDef, Unit u)
+void fp_PageSize::Set(Predefined preDef, UT_Dimension u)
 {
        UT_ASSERT(preDef >= _first_predefined_pagesize_ && preDef < 
_last_predefined_pagesize_dont_use_);
-       UT_ASSERT(u >= _first_predefined_unit_ && u <= 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
 
        const private_pagesize_sizes& size = pagesizes[preDef];
 
-       if (u != _last_predefined_unit_dont_use_)
+       if (u != DIM_none)
                m_unit = u;
        else
                m_unit = size.u;
 
-       double sf = ScaleFactors[size.u];
-
        // Always scale to mm's, which we store.
-       m_iWidth        = size.w * sf;
-       m_iHeight       = size.h * sf;
-       m_iMarginTop    = size.t * sf;
-       m_iMarginBottom = size.b * sf;
-       m_iMarginLeft   = size.l * sf;
-       m_iMarginRight  = size.r * sf;
+       m_iWidth        = UT_convertDimensions(size.w, u, FUND);
+       m_iHeight       = UT_convertDimensions(size.h, u, FUND);
+       m_iMarginTop    = UT_convertDimensions(size.t, u, FUND);
+       m_iMarginBottom = UT_convertDimensions(size.b, u, FUND);
+       m_iMarginLeft   = UT_convertDimensions(size.l, u, FUND);
+       m_iMarginRight  = UT_convertDimensions(size.r, u, FUND);
 
        m_predefined = (char *)pagesizes [preDef].name;
 }
@@ -192,12 +182,12 @@
 /*!
   Set the pagesize to given width and height, assumed to be in given unit.
  */
-void fp_PageSize::Set(double w, double h, Unit u)
+void fp_PageSize::Set(double w, double h, UT_Dimension u)
 {
        int i;
        double converted_w, converted_h;
 
-       UT_ASSERT(u >= _first_predefined_unit_ && u < 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
 
        // calculate which predefined this represents
 
@@ -206,14 +196,10 @@
        {
                if (pagesizes[i].u != u )  // Convert to local defined units and round 
off
                {
-                       converted_w = w * 
ScaleFactors[u]/ScaleFactors[pagesizes[i].u];
-                       int w_int = (int) (converted_w*10.0);
-                       if ( converted_w*10 - w_int >= 0.5 ) w_int++;
-                       converted_w = (double) w_int/10.0;
-                       converted_h = h * 
ScaleFactors[u]/ScaleFactors[pagesizes[i].u];
-                       int h_int = (int) (converted_h*10.0);
-                       if ( converted_h*10 - h_int >= 0.5 ) h_int++;
-                       converted_h = (double) h_int/10.0;                      
+                       converted_w = UT_convertDimensions(w, pagesizes[i].u, u);
+                       converted_w = ((int)(converted_w*10.0+0.5))/(double)10.0;
+                       converted_h = UT_convertDimensions(h, pagesizes[i].u, u);
+                       converted_w = ((int)(converted_h*10.0+0.5))/(double)10.0;
                }
                else
                {
@@ -240,15 +226,13 @@
        if ( i == (int)_last_predefined_pagesize_dont_use_ )
        {
                Set (static_cast<Predefined>(i-1), u);
-               m_iWidth  = w * ScaleFactors[u];
-               m_iHeight = h * ScaleFactors[u];
+               m_iWidth  = UT_convertDimensions(w, u, FUND);
+               m_iHeight = UT_convertDimensions(h, u, FUND);
        }
 }
 
-void fp_PageSize::Set(const char *name, Unit u)
+void fp_PageSize::Set(const char *name, UT_Dimension u)
 {
-       UT_ASSERT(u >= _first_predefined_unit_ && u <= 
_last_predefined_unit_dont_use_);
-
        Set(NameToPredefined(name), u);
 }
 
@@ -262,58 +246,64 @@
        m_bisPortrait = false;
 }
 
-double fp_PageSize::Width(Unit u) const
+double fp_PageSize::Width(UT_Dimension u) const
 {
-       UT_ASSERT(u >= _first_predefined_unit_ && u < 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
+
        if(m_bisPortrait == true)
-               return m_scale * m_iWidth / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iWidth, FUND, u);
        else
-               return m_scale * m_iHeight / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iHeight, FUND, u);
 }
 
-double fp_PageSize::Height(Unit u) const
+double fp_PageSize::Height(UT_Dimension u) const
 {
-       UT_ASSERT(u >= _first_predefined_unit_ && u < 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
+
        if(m_bisPortrait == true)
-               return m_scale * m_iHeight / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iHeight, FUND, u);
        else
-               return m_scale * m_iWidth / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iWidth, FUND, u);
 }
 
-double fp_PageSize::MarginTop(Unit u) const
+double fp_PageSize::MarginTop(UT_Dimension u) const
 {
-       UT_ASSERT(u >= _first_predefined_unit_ && u < 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
+
        if(m_bisPortrait == true)
-               return m_scale * m_iMarginTop / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iMarginTop, FUND, u);
        else
-               return m_scale * m_iMarginRight / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iMarginRight, FUND, u);
 }
 
-double fp_PageSize::MarginBottom(Unit u) const
+double fp_PageSize::MarginBottom(UT_Dimension u) const
 {
-       UT_ASSERT(u >= _first_predefined_unit_ && u < 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
+
        if(m_bisPortrait == true)
-               return m_scale * m_iMarginBottom / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iMarginBottom, FUND, u);
        else
-               return m_scale * m_iMarginLeft / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iMarginLeft, FUND, u);
 }
 
-double fp_PageSize::MarginLeft(Unit u) const
+double fp_PageSize::MarginLeft(UT_Dimension u) const
 {
-       UT_ASSERT(u >= _first_predefined_unit_ && u < 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
+
        if(m_bisPortrait == true)
-               return m_scale * m_iMarginLeft / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iMarginLeft, FUND, u);
        else
-               return m_scale * m_iMarginTop / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iMarginTop, FUND, u);
 }
 
-double fp_PageSize::MarginRight(Unit u) const
+double fp_PageSize::MarginRight(UT_Dimension u) const
 {
-       UT_ASSERT(u >= _first_predefined_unit_ && u < 
_last_predefined_unit_dont_use_);
+       UT_ASSERT(u >= DIM_IN && u <= DIM_none);
+
        if(m_bisPortrait == true)
-               return m_scale * m_iMarginRight / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iMarginRight, FUND, u);
        else
-               return m_scale * m_iMarginBottom / ScaleFactors[u];
+               return m_scale * UT_convertDimensions(m_iMarginBottom, FUND, u);
 }
 
 bool fp_PageSize::IsPredefinedName(const char* szPageSizeName)
@@ -362,34 +352,4 @@
        UT_ASSERT((preDef >= _first_predefined_pagesize_) && (preDef < 
_last_predefined_pagesize_dont_use_));
 
        return pagesizes[preDef].name;
-}
-
-UT_Dimension UT_pageSizeUnitToDimension(fp_PageSize::Unit u)
-{
-       switch (u)
-       {
-       case fp_PageSize::mm:
-               return DIM_MM;
-       case fp_PageSize::cm:
-               return DIM_CM;
-       case fp_PageSize::inch:
-               return DIM_IN;
-       }
-       UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
-       return DIM_MM;
-}
-
-fp_PageSize::Unit UT_dimensionToPageSizeUnit(UT_Dimension u)
-{
-       switch(u)
-       {
-       case DIM_MM:
-               return fp_PageSize::mm;
-       case DIM_CM:
-               return fp_PageSize::cm;
-       case DIM_IN:
-               return fp_PageSize::inch;
-       }
-       UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
-       return fp_PageSize::mm;
 }
Index: src/text/fmt/xp/fp_PageSize.h
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fp_PageSize.h,v
retrieving revision 1.18
diff -u -r1.18 fp_PageSize.h
--- src/text/fmt/xp/fp_PageSize.h       2001/12/30 18:36:06     1.18
+++ src/text/fmt/xp/fp_PageSize.h       2002/01/01 21:36:18
@@ -27,17 +27,6 @@
 {
 public:
 
-       enum Unit
-       {
-               _first_predefined_unit_ = 0,
-               mm = 0,
-               cm,
-               inch,
-               PaperUnit,              //  100 per inch
-               LayoutUnit,             // 1440 per inch
-               _last_predefined_unit_dont_use_
-       };
-
        enum Predefined
        {
                _first_predefined_pagesize_ = 0,
@@ -65,29 +54,29 @@
 
        fp_PageSize(Predefined preDef);
        fp_PageSize(const char *name);
-       fp_PageSize(double w, double h, Unit u);
+       fp_PageSize(double w, double h, UT_Dimension u);
 
-       void Set(Predefined preDef, Unit u = 
fp_PageSize::_last_predefined_unit_dont_use_);
-       void Set(const char *name, Unit u = 
fp_PageSize::_last_predefined_unit_dont_use_);
-       void Set(double w, double h, Unit u);
-       void Set(Unit u) {m_unit = u;}
-       inline void setScale( double scale) {m_scale = scale;}
+       void Set(Predefined preDef, UT_Dimension u = DIM_none);
+       void Set(const char *name, UT_Dimension u = DIM_none);
+       void Set(double w, double h, UT_Dimension u = DIM_none);
+       void Set(UT_Dimension u) { m_unit = u; }
+       inline void setScale( double scale) { m_scale = scale; }
        void setPortrait(void);
        void setLandscape(void);
        bool isPortrait(void) const { return m_bisPortrait; }
-       double Width(Unit u) const;
-       double Height(Unit u) const;
+       double Width(UT_Dimension u) const;
+       double Height(UT_Dimension u) const;
 
        /* These accessor methods should be used with the 
         * predefined page sizes to set proper initial margins. */
        /* I don't think this is done at present. */
-       double MarginLeft(Unit u) const;
-       double MarginRight(Unit u) const;
-       double MarginTop(Unit u) const;
-       double MarginBottom(Unit u) const;
+       double MarginLeft(UT_Dimension u) const;
+       double MarginRight(UT_Dimension u) const;
+       double MarginTop(UT_Dimension u) const;
+       double MarginBottom(UT_Dimension u) const;
 
-       double getScale(void) {return m_scale;}
-       Unit getUnit(void) { return m_unit;}
+       double getScale(void) { return m_scale; }
+       UT_Dimension getDims(void) { return m_unit; }
        inline char * getPredefinedName (void) const { return m_predefined; }
 
        static bool     IsPredefinedName(const char* szPageSizeName);
@@ -95,6 +84,8 @@
        static const char * PredefinedToName(Predefined preDef);
 
 private:
+       static const UT_Dimension FUND = DIM_MM;
+
        char * m_predefined;
 
        double m_iWidth;
@@ -107,10 +98,7 @@
 
        bool m_bisPortrait;
        double m_scale;
-       Unit m_unit;
+       UT_Dimension m_unit;
 };
-
-UT_Dimension UT_pageSizeUnitToDimension(fp_PageSize::Unit u);
-fp_PageSize::Unit UT_dimensionToPageSizeUnit(UT_Dimension u);
 
 #endif // FP_PAGESIZE_H
Index: src/text/fmt/xp/fv_View.cpp
===================================================================
RCS file: /cvsroot/abi/src/text/fmt/xp/fv_View.cpp,v
retrieving revision 1.560
diff -u -r1.560 fv_View.cpp
--- src/text/fmt/xp/fv_View.cpp 2001/12/29 19:36:08     1.560
+++ src/text/fmt/xp/fv_View.cpp 2002/01/01 21:37:08
@@ -8073,7 +8073,7 @@
 
                static char buf[20];
                setlocale(LC_NUMERIC,"C");
-               snprintf(buf, sizeof(buf), "%.4fin", 
m_pDoc->m_docPageSize.Width(fp_PageSize::inch));
+               snprintf(buf, sizeof(buf), "%.4fin", 
+m_pDoc->m_docPageSize.Width(DIM_IN));
                setlocale(LC_NUMERIC,""); // restore original locale
 
                pInfo->m_xPaperSize = m_pG->convertDimension(buf);
@@ -11084,7 +11084,7 @@
 {
 
        const fp_PageSize pageSize = getPageSize();
-       double pageWidth = pageSize.Width(fp_PageSize::inch);
+       double pageWidth = pageSize.Width(DIM_IN);
        
        // Set graphics zoom to 100 so we can get the display resolution.
        GR_Graphics *pG = getGraphics();
@@ -11106,7 +11106,7 @@
 {
 
        const fp_PageSize pageSize = getPageSize();
-       double pageHeight = pageSize.Height(fp_PageSize::inch);
+       double pageHeight = pageSize.Height(DIM_IN);
        
        // Set graphics zoom to 100 so we can get the display resolution.
        GR_Graphics *pG = getGraphics();
Index: src/text/ptbl/xp/pd_Document.cpp
===================================================================
RCS file: /cvsroot/abi/src/text/ptbl/xp/pd_Document.cpp,v
retrieving revision 1.158
diff -u -r1.158 pd_Document.cpp
--- src/text/ptbl/xp/pd_Document.cpp    2001/12/28 17:32:25     1.158
+++ src/text/ptbl/xp/pd_Document.cpp    2002/01/01 21:37:23
@@ -2326,7 +2326,7 @@
        double width=0.0;
        double height=0.0;
        double scale =1.0;
-       fp_PageSize::Unit u = fp_PageSize::inch;
+       UT_Dimension u = DIM_IN;
        
        for (const XML_Char ** a = attributes; (*a); a++)
        {
@@ -2367,11 +2367,11 @@
                height = UT_convertDimensionless(szHeight);
                scale =  UT_convertDimensionless(szPageScale);
                if(UT_XML_stricmp(szUnits,"cm") == 0)
-                       u = fp_PageSize::cm;
+                       u = DIM_CM;
                else if(UT_XML_stricmp(szUnits,"mm") == 0)
-                       u = fp_PageSize::mm;
+                       u = DIM_MM;
                else if(UT_XML_stricmp(szUnits,"inch") == 0)
-                       u = fp_PageSize::inch;
+                       u = DIM_IN;
                if(UT_XML_stricmp(szPageSize,"Custom") == 0)
                {
                        m_docPageSize.Set(width,height,u);
Index: src/wp/ap/unix/ap_UnixDialog_PageSetup.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/unix/ap_UnixDialog_PageSetup.cpp,v
retrieving revision 1.21
diff -u -r1.21 ap_UnixDialog_PageSetup.cpp
--- src/wp/ap/unix/ap_UnixDialog_PageSetup.cpp  2001/12/27 19:20:41     1.21
+++ src/wp/ap/unix/ap_UnixDialog_PageSetup.cpp  2002/01/01 21:37:38
@@ -83,32 +83,6 @@
        return bufResult;
 }
 
-static UT_Dimension 
-fp_2_dim (fp_PageSize::Unit u)
-{
-  switch (u)
-    {
-    case fp_PageSize::cm   : return DIM_CM;
-    case fp_PageSize::mm   : return DIM_MM;
-    case fp_PageSize::inch :
-    default :
-      return DIM_IN;
-    }
-}
-
-static int
-fp_2_pos (fp_PageSize::Unit u)
-{
-   switch (u)
-    {
-    case fp_PageSize::cm   : return 1;
-    case fp_PageSize::mm   : return 2;
-    case fp_PageSize::inch :
-    default :
-      return 0;
-    } 
-}
-
 #define FMT_STRING "%0.2f"
 static GtkWidget *
 create_spinentry (float v)
@@ -126,9 +100,22 @@
   return e;
 }
 
+static int
+fp_2_pos (UT_Dimension u)
+{
+   switch (u)
+    {
+    case DIM_CM : return 1;
+    case DIM_MM : return 2;
+    case DIM_IN :
+    default :
+      return 0;
+    } 
+}
+
 /*********************************************************************************/
 
-static fp_PageSize::Unit last_margin_unit = fp_PageSize::inch; 
+static UT_Dimension last_margin_unit = DIM_IN; 
 
 /*********************************************************************************/
 
@@ -153,8 +140,6 @@
                 (gpointer)this);                                                      
 \
         } while (0)
 
-#define CONVERT_DIMENSIONS(v, d1, d2) v = UT_convertInchesToDimension 
(UT_convertDimToInches (v, fp_2_dim (d1)), fp_2_dim (d2))
-
 /*********************************************************************************/
 
 // static event callbacks
@@ -294,7 +279,7 @@
 {
        fp_PageSize fp = m_PageSize;
 
-       if(fp.Width(fp_PageSize::inch) < 1.0 || fp.Height(fp_PageSize::inch) < 1.0)    
 
+       if(fp.Width(DIM_IN) < 1.0 || fp.Height(DIM_IN) < 1.0)   
        {
                // "The margins selected are too large to fit on the page."
                // Not quite the right message, but it's pretty close, 
@@ -308,7 +293,7 @@
        }
        
        setMarginUnits (last_margin_unit);
-       setPageUnits (fp.getUnit());
+       setPageUnits (fp.getDims());
        setPageSize (fp);
        setPageOrientation (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON 
(m_radioPagePortrait)) ? PORTRAIT : LANDSCAPE);
        setPageScale (gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON 
(m_spinPageScale)));
@@ -348,7 +333,7 @@
 
 void AP_UnixDialog_PageSetup::event_PageUnitsChanged (void)
 {
-  fp_PageSize::Unit pu = (fp_PageSize::Unit) GPOINTER_TO_INT (gtk_object_get_data 
(GTK_OBJECT (m_optionPageUnits), 
+  UT_Dimension pu = (UT_Dimension) GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT 
+(m_optionPageUnits), 
                                                                                   
WIDGET_MENU_VALUE_TAG));
 
   double width, height;
@@ -379,19 +364,16 @@
   fp_PageSize ps(pd);
   // hmm, we should free the old pagesize.
   m_PageSize = ps;
-  setPageUnits(ps.getUnit());
+  setPageUnits(ps.getDims());
 
   // change the units in the dialog, too.
-  fp_PageSize::Unit new_units = ps.getUnit();
+  UT_Dimension new_units = ps.getDims();
   gtk_option_menu_set_history (GTK_OPTION_MENU (m_optionPageUnits), fp_2_pos 
(new_units));
 
   float w, h;
-
-  w = ps.Width (fp_PageSize::inch);
-  h = ps.Height (fp_PageSize::inch);
 
-  CONVERT_DIMENSIONS (w, fp_PageSize::inch, new_units);
-  CONVERT_DIMENSIONS (h, fp_PageSize::inch, new_units);
+  w = ps.Width (new_units);
+  h = ps.Height (new_units);
 
   if (fp_PageSize::Custom != pd)
   {
@@ -412,7 +394,7 @@
   {
          ps.Set(atof(gtk_entry_get_text(GTK_ENTRY(m_entryPageWidth))),
                         atof(gtk_entry_get_text(GTK_ENTRY(m_entryPageHeight))),
-                        (fp_PageSize::Unit) GPOINTER_TO_INT (gtk_object_get_data 
+                        (UT_Dimension) GPOINTER_TO_INT (gtk_object_get_data 
                                                                                       
           (GTK_OBJECT (m_optionPageUnits), 
                                                   WIDGET_MENU_VALUE_TAG)));
   }
@@ -420,7 +402,7 @@
 
 void AP_UnixDialog_PageSetup::event_MarginUnitsChanged (void)
 {
-  fp_PageSize::Unit mu = (fp_PageSize::Unit) GPOINTER_TO_INT (gtk_object_get_data 
(GTK_OBJECT (m_optionMarginUnits),
+  UT_Dimension mu = (UT_Dimension) GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT 
+(m_optionMarginUnits),
                                                                                   
WIDGET_MENU_VALUE_TAG));
 
   float top, bottom, left, right, header, footer;
@@ -432,12 +414,12 @@
   header = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (m_spinMarginHeader));
   footer = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (m_spinMarginFooter));
 
-  CONVERT_DIMENSIONS (top,    last_margin_unit, mu);
-  CONVERT_DIMENSIONS (bottom, last_margin_unit, mu);
-  CONVERT_DIMENSIONS (left,   last_margin_unit, mu);
-  CONVERT_DIMENSIONS (right,  last_margin_unit, mu);
-  CONVERT_DIMENSIONS (header, last_margin_unit, mu);
-  CONVERT_DIMENSIONS (footer, last_margin_unit, mu);
+  top = UT_convertDimensions (top,    last_margin_unit, mu);
+  bottom = UT_convertDimensions (bottom, last_margin_unit, mu);
+  left = UT_convertDimensions (left,   last_margin_unit, mu);
+  right = UT_convertDimensions (right,  last_margin_unit, mu);
+  header = UT_convertDimensions (header, last_margin_unit, mu);
+  footer = UT_convertDimensions (footer, last_margin_unit, mu);
 
   last_margin_unit = mu;
 
@@ -719,17 +701,17 @@
   optionPageUnits_menu = gtk_menu_new ();
 
   glade_menuitem = gtk_menu_item_new_with_label (_(XAP, DLG_Unit_inch));
-  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionPageUnits, 
fp_PageSize::inch, s_page_units_changed);
+  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionPageUnits, DIM_IN, 
+s_page_units_changed);
   gtk_widget_show (glade_menuitem);
   gtk_menu_append (GTK_MENU (optionPageUnits_menu), glade_menuitem);
 
   glade_menuitem = gtk_menu_item_new_with_label (_(XAP, DLG_Unit_cm));
-  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionPageUnits, 
fp_PageSize::cm, s_page_units_changed);
+  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionPageUnits, DIM_CM, 
+s_page_units_changed);
   gtk_widget_show (glade_menuitem);
   gtk_menu_append (GTK_MENU (optionPageUnits_menu), glade_menuitem);
 
   glade_menuitem = gtk_menu_item_new_with_label (_(XAP, DLG_Unit_mm));
-  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionPageUnits, 
fp_PageSize::mm, s_page_units_changed);
+  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionPageUnits, DIM_MM, 
+s_page_units_changed);
   gtk_widget_show (glade_menuitem);
   gtk_menu_append (GTK_MENU (optionPageUnits_menu), glade_menuitem);
 
@@ -929,17 +911,17 @@
   optionMarginUnits_menu = gtk_menu_new ();
 
   glade_menuitem = gtk_menu_item_new_with_label (_(XAP, DLG_Unit_inch));
-  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionMarginUnits, 
fp_PageSize::inch, s_margin_units_changed);
+  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionMarginUnits, DIM_IN, 
+s_margin_units_changed);
   gtk_widget_show (glade_menuitem);
   gtk_menu_append (GTK_MENU (optionMarginUnits_menu), glade_menuitem);
 
   glade_menuitem = gtk_menu_item_new_with_label (_(XAP, DLG_Unit_cm));
-  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionMarginUnits, 
fp_PageSize::cm, s_margin_units_changed);
+  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionMarginUnits, DIM_CM, 
+s_margin_units_changed);
   gtk_widget_show (glade_menuitem);
   gtk_menu_append (GTK_MENU (optionMarginUnits_menu), glade_menuitem);
 
   glade_menuitem = gtk_menu_item_new_with_label (_(XAP, DLG_Unit_mm));
-  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionMarginUnits, 
fp_PageSize::mm, s_margin_units_changed);
+  CONNECT_MENU_ITEM_SIGNAL_ACTIVATE (glade_menuitem, optionMarginUnits, DIM_MM, 
+s_margin_units_changed);
   gtk_widget_show (glade_menuitem);
   gtk_menu_append (GTK_MENU (optionMarginUnits_menu), glade_menuitem);
 
Index: src/wp/ap/xp/ap_Dialog_Columns.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Dialog_Columns.cpp,v
retrieving revision 1.10
diff -u -r1.10 ap_Dialog_Columns.cpp
--- src/wp/ap/xp/ap_Dialog_Columns.cpp  2001/10/17 02:21:34     1.10
+++ src/wp/ap/xp/ap_Dialog_Columns.cpp  2002/01/01 21:37:48
@@ -205,7 +205,7 @@
        double width = 1.0;
        if(m_pDoc)
        {
-               width =  m_pDoc->m_docPageSize.Width(fp_PageSize::inch) - 
m_dMarginLeft - m_dMarginRight;
+               width =  m_pDoc->m_docPageSize.Width(DIM_IN) - m_dMarginLeft - 
+m_dMarginRight;
        }
        return width;
 }
@@ -220,7 +220,7 @@
        double height = 1.0;
        if(m_pDoc)
        {
-               height =  m_pDoc->m_docPageSize.Height(fp_PageSize::inch) - 
m_dMarginTop - m_dMarginBottom;
+               height =  m_pDoc->m_docPageSize.Height(DIM_IN) - m_dMarginTop - 
+m_dMarginBottom;
        }
        return height;
 }
Index: src/wp/ap/xp/ap_Dialog_PageSetup.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Dialog_PageSetup.cpp,v
retrieving revision 1.6
diff -u -r1.6 ap_Dialog_PageSetup.cpp
--- src/wp/ap/xp/ap_Dialog_PageSetup.cpp        2001/12/30 18:36:06     1.6
+++ src/wp/ap/xp/ap_Dialog_PageSetup.cpp        2002/01/01 21:37:49
@@ -28,10 +28,10 @@
 :      XAP_Dialog_NonPersistent(pDlgFactory,id),
        m_answer(a_OK),
        m_PageSize(fp_PageSize::Letter), // isn't this leaked when setPageSize called?
-       m_PageUnits(fp_PageSize::inch),
+       m_PageUnits(DIM_IN),
        m_PageOrientation(PORTRAIT),
        m_PageScale(100),
-       m_MarginUnits(fp_PageSize::inch),
+       m_MarginUnits(DIM_IN),
        m_MarginTop(1.0f),
        m_MarginBottom(1.0f),
        m_MarginLeft(1.0f),
@@ -51,7 +51,7 @@
 {
        // Require at least 0.3in for headers and footers.
 
-       double fudge = UT_convertInchesToDimension(0.3, 
UT_pageSizeUnitToDimension(m_MarginUnits));
+       double fudge = UT_convertInchesToDimension(0.3, m_MarginUnits);
 
        if ( (m_MarginLeft + m_MarginRight >= m_PageSize.Width(m_PageUnits)) ||
                 (m_MarginTop + m_MarginBottom >= m_PageSize.Height(m_PageUnits)) ||
Index: src/wp/ap/xp/ap_Dialog_PageSetup.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Dialog_PageSetup.h,v
retrieving revision 1.4
diff -u -r1.4 ap_Dialog_PageSetup.h
--- src/wp/ap/xp/ap_Dialog_PageSetup.h  2001/12/03 05:14:34     1.4
+++ src/wp/ap/xp/ap_Dialog_PageSetup.h  2002/01/01 21:37:50
@@ -41,10 +41,10 @@
 #define SET_GATHER(a, u)  inline u get##a(void) const {return m_##a;} \
                          inline void set##a(u p##a) {m_##a = p##a;}
        SET_GATHER(PageSize,            fp_PageSize);
-       SET_GATHER(PageUnits,           fp_PageSize::Unit);
+       SET_GATHER(PageUnits,           UT_Dimension);
        SET_GATHER(PageOrientation,     Orientation);
        SET_GATHER(PageScale,           int);
-       SET_GATHER(MarginUnits,         fp_PageSize::Unit);
+       SET_GATHER(MarginUnits,         UT_Dimension);
        SET_GATHER(MarginTop,           float);
        SET_GATHER(MarginBottom,        float);
        SET_GATHER(MarginLeft,          float);
@@ -65,10 +65,10 @@
        AP_Dialog_PageSetup::tAnswer m_answer;
 
        fp_PageSize             m_PageSize;
-       fp_PageSize::Unit       m_PageUnits;
+       UT_Dimension            m_PageUnits;
        Orientation             m_PageOrientation;
        int                     m_PageScale;
-       fp_PageSize::Unit       m_MarginUnits;
+       UT_Dimension            m_MarginUnits;
        float                   m_MarginTop;
        float                   m_MarginBottom;
        float                   m_MarginLeft;
Index: src/wp/ap/xp/ap_EditMethods.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_EditMethods.cpp,v
retrieving revision 1.422
diff -u -r1.422 ap_EditMethods.cpp
--- src/wp/ap/xp/ap_EditMethods.cpp     2001/12/25 08:11:23     1.422
+++ src/wp/ap/xp/ap_EditMethods.cpp     2002/01/01 21:38:52
@@ -5375,19 +5375,6 @@
        return bOK;
 }
 
-static UT_Dimension
-fp_2_dim (fp_PageSize::Unit u)
-{
-  switch (u)
-       {
-       case fp_PageSize::cm   : return DIM_CM;
-       case fp_PageSize::mm   : return DIM_MM;
-       case fp_PageSize::inch :
-       default :
-         return DIM_IN;
-       }
-}
-
 static bool s_doPageSetupDlg (FV_View * pView)
 {
        XAP_Frame * pFrame = static_cast<XAP_Frame *> ( pView->getParentData());
@@ -5413,7 +5400,7 @@
        //
        fp_PageSize::Predefined orig_def,final_def;
        double orig_wid = -1, orig_ht = -1, final_wid = -1, final_ht = -1;
-       fp_PageSize::Unit orig_ut, final_ut;
+       UT_Dimension orig_ut, final_ut;
        fp_PageSize pSize(pDoc->m_docPageSize.getPredefinedName());
        orig_def = pSize.NameToPredefined(pSize.getPredefinedName());
        //
@@ -5421,7 +5408,7 @@
        //
        if (orig_def == fp_PageSize::Custom)
        {
-               orig_ut = pDoc->m_docPageSize.getUnit();
+               orig_ut = pDoc->m_docPageSize.getDims();
                orig_ht = pDoc->m_docPageSize.Width(orig_ut);
                orig_wid = pDoc->m_docPageSize.Height(orig_ut); 
                pSize.Set(orig_ht, orig_wid, orig_ut);
@@ -5432,9 +5419,9 @@
        if(pDoc->m_docPageSize.isPortrait() == false)
                orig_ori = AP_Dialog_PageSetup::LANDSCAPE;
        pDialog->setPageOrientation(orig_ori);
-       fp_PageSize::Unit orig_unit,final_unit,orig_margu,final_margu;
+       UT_Dimension orig_unit,final_unit,orig_margu,final_margu;
        double orig_scale,final_scale;
-       orig_unit = pDoc->m_docPageSize.getUnit();
+       orig_unit = pDoc->m_docPageSize.getDims();
        orig_scale = pDoc->m_docPageSize.getScale();
 
        pDialog->setPageUnits(orig_unit);
@@ -5503,7 +5490,7 @@
                        dHeaderMargin = UT_convertToInches(pszHeaderMargin);
        }
        FREEP(props_in);
-       orig_margu = fp_PageSize::inch;
+       orig_margu = DIM_IN;
        if(docMargUnits == DIM_MM)
        {
                dLeftMargin = dLeftMargin * 25.4;
@@ -5512,7 +5499,7 @@
                dBottomMargin = dBottomMargin * 25.4;
                dFooterMargin = dFooterMargin * 25.4;
                dHeaderMargin = dHeaderMargin * 25.4;
-               orig_margu = fp_PageSize::mm;
+               orig_margu = DIM_MM;
        }
        else if(docMargUnits == DIM_CM)
        {
@@ -5522,7 +5509,7 @@
                dBottomMargin = dBottomMargin * 2.54;
                dFooterMargin = dFooterMargin * 2.54;
                dHeaderMargin = dHeaderMargin * 2.54;
-               orig_margu = fp_PageSize::cm;
+               orig_margu = DIM_CM;
        }
 
        //
@@ -5551,7 +5538,7 @@
 
        if (final_def == fp_PageSize::Custom)
        {
-               final_ut = pDialog->getPageSize().getUnit();
+               final_ut = pDialog->getPageSize().getDims();
                final_wid = pDialog->getPageSize().Width(final_ut);
                final_ht = pDialog->getPageSize().Height(final_ut); 
        }
@@ -5622,7 +5609,7 @@
        UT_ASSERT(pPrefsScheme);
 
        pPrefsScheme->setValue((XML_Char*)AP_PREF_KEY_RulerUnits,
-                                                  
(XML_Char*)UT_dimensionName(fp_2_dim (final_unit)));
+                                                  
+(XML_Char*)UT_dimensionName(final_unit));
 
        //
        // Recover ppView
@@ -5648,7 +5635,7 @@
        dFooterMargin = (double) pDialog->getMarginFooter();
 
        docMargUnits = DIM_IN;
-       if(final_margu == fp_PageSize::cm)
+       if(final_margu == DIM_CM)
        {
                docMargUnits = DIM_CM;
                dLeftMargin = dLeftMargin / 2.54;
@@ -5658,7 +5645,7 @@
                dFooterMargin = dFooterMargin / 2.54;
                dHeaderMargin = dHeaderMargin / 2.54;
        }
-       else if (final_margu == fp_PageSize::mm)
+       else if (final_margu == DIM_MM)
        {
                docMargUnits = DIM_MM;
                dLeftMargin = dLeftMargin / 25.4;
@@ -6533,8 +6520,8 @@
          const fp_PageSize & page = pView->getPageSize ();
 
          // an approximate... TODO: make me more accurate
-         max_width  = page.Width (fp_PageSize::inch) * 72.0;
-         max_height = page.Height (fp_PageSize::inch) * 72.0;
+         max_width  = page.Width (DIM_IN) * 72.0;
+         max_height = page.Height (DIM_IN) * 72.0;
 
          pDialog->setWidth (width);
          pDialog->setHeight (height);
@@ -6946,7 +6933,7 @@
   ABIWORD_VIEW;
   bool ret;
   bool doLists = true;
-  double page_size = pView->getPageSize().Width (fp_PageSize::inch);
+  double page_size = pView->getPageSize().Width (DIM_IN);
   if(!pView->getCurrentBlock()->isListItem() || !pView->isSelectionEmpty() )
   {
         doLists = false;
@@ -6959,7 +6946,7 @@
 {
   ABIWORD_VIEW;
   bool ret;
-  double page_size = pView->getPageSize().Width (fp_PageSize::inch);
+  double page_size = pView->getPageSize().Width (DIM_IN);
   bool doLists = true;
   if(!pView->getCurrentBlock()->isListItem() || !pView->isSelectionEmpty() )
   {
Index: src/wp/ap/xp/ap_Preview_Abi.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Preview_Abi.cpp,v
retrieving revision 1.3
diff -u -r1.3 ap_Preview_Abi.cpp
--- src/wp/ap/xp/ap_Preview_Abi.cpp     2001/04/30 03:19:03     1.3
+++ src/wp/ap/xp/ap_Preview_Abi.cpp     2002/01/01 21:38:53
@@ -72,8 +72,8 @@
 //
 
 #ifndef ABI_OPT_WIDGET
-       double curWidth = static_cast<PD_Document 
*>(pFrame->getCurrentDoc())->m_docPageSize.Width(fp_PageSize::inch);
-       double curHeight = static_cast<PD_Document 
*>(pFrame->getCurrentDoc())->m_docPageSize.Height(fp_PageSize::inch);
+       double curWidth = static_cast<PD_Document 
+*>(pFrame->getCurrentDoc())->m_docPageSize.Width(DIM_IN);
+       double curHeight = static_cast<PD_Document 
+*>(pFrame->getCurrentDoc())->m_docPageSize.Height(DIM_IN);
 #else
        // DOM: evil hack
        double curWidth = 8.5;
@@ -97,7 +97,7 @@
 // For this we set the zoom to fit the page width inside the preview
 //
        case PREVIEW_ZOOMED:
-               m_pDocument->m_docPageSize.Set(curWidth,curHeight,fp_PageSize::inch);
+               m_pDocument->m_docPageSize.Set(curWidth,curHeight,DIM_IN);
                previewWidth = ((double) iWidth)/((double) gc->getResolution());
                tmp = 100.0 * previewWidth/curWidth;
                iZoom = (UT_uint32) tmp;
@@ -109,21 +109,21 @@
        case PREVIEW_ADJUSTED_PAGE:
                width = (double) iWidth/((double) gc->getResolution());
                height = (double) iHeight/((double) gc->getResolution()) ;
-               m_pDocument->m_docPageSize.Set(width,height,fp_PageSize::inch);
+               m_pDocument->m_docPageSize.Set(width,height,DIM_IN);
                break;
 //
 // In this case we set the page size to the current pagesize and just
 // clip the display inside the gc window
 //
        case PREVIEW_CLIPPED:
-               m_pDocument->m_docPageSize.Set(curWidth,curHeight,fp_PageSize::inch);
+               m_pDocument->m_docPageSize.Set(curWidth,curHeight,DIM_IN);
                break;
 //
 // For this we set the zoom to fit the page width inside the preview and add
 // a scrollbar
 //
        case PREVIEW_ZOOMED_SCROLL:
-               m_pDocument->m_docPageSize.Set(curWidth,curHeight,fp_PageSize::inch);
+               m_pDocument->m_docPageSize.Set(curWidth,curHeight,DIM_IN);
                previewWidth = (double) iWidth/((double) gc->getResolution());
                tmp = 100.0 * previewWidth/curWidth;
                iZoom = (UT_uint32) tmp;
@@ -137,14 +137,14 @@
        case PREVIEW_ADJUSTED_PAGE_SCROLL:
                width = (double) iWidth/((double) gc->getResolution());
                height = (double) iHeight/((double) gc->getResolution()) ;
-               m_pDocument->m_docPageSize.Set(width,height,fp_PageSize::inch);
+               m_pDocument->m_docPageSize.Set(width,height,DIM_IN);
                break;
 //
 // In this case we set the page size to the current pagesize and just
 // clip the display inside the gc window and add a scroll bar.
 //
        case PREVIEW_CLIPPED_SCROLL:
-               m_pDocument->m_docPageSize.Set(curWidth,curHeight,fp_PageSize::inch);
+               m_pDocument->m_docPageSize.Set(curWidth,curHeight,DIM_IN);
                break;
        default:
                UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
Index: src/wp/impexp/xp/ie_exp_AbiWord_1.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_exp_AbiWord_1.cpp,v
retrieving revision 1.90
diff -u -r1.90 ie_exp_AbiWord_1.cpp
--- src/wp/impexp/xp/ie_exp_AbiWord_1.cpp       2001/12/07 20:42:34     1.90
+++ src/wp/impexp/xp/ie_exp_AbiWord_1.cpp       2002/01/01 21:39:05
@@ -848,7 +848,7 @@
        else
                m_pie->write("landscape\"");
        m_pie->write( " width=\"");
-       fp_PageSize::Unit  docUnit = m_pDocument->m_docPageSize.getUnit(); 
+       UT_Dimension docUnit = m_pDocument->m_docPageSize.getDims();
        sprintf((char *) buf,"%f",m_pDocument->m_docPageSize.Width(docUnit));
        m_pie->write( (char *) buf);
        m_pie->write("\"");
@@ -857,14 +857,7 @@
        m_pie->write( (char *) buf);
        m_pie->write("\"");
        m_pie->write(" units=\"");
-       if(docUnit == fp_PageSize::cm)
-               m_pie->write("cm");
-       else if(docUnit == fp_PageSize::mm)
-               m_pie->write("mm");
-       else if(docUnit == fp_PageSize::inch)
-               m_pie->write("inch");
-       else
-               UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
+       m_pie->write(UT_dimensionName(docUnit));
        m_pie->write("\"");
        m_pie->write(" page-scale=\"");
        sprintf((char *) buf,"%f",m_pDocument->m_docPageSize.getScale());
Index: src/wp/impexp/xp/ie_exp_KWord_1.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_exp_KWord_1.cpp,v
retrieving revision 1.11
diff -u -r1.11 ie_exp_KWord_1.cpp
--- src/wp/impexp/xp/ie_exp_KWord_1.cpp 2001/12/25 01:08:21     1.11
+++ src/wp/impexp/xp/ie_exp_KWord_1.cpp 2002/01/01 21:39:13
@@ -109,8 +109,7 @@
 };
 
 // KWord version 1 width/height are in mm
-static const UT_Dimension kword_1_unit_ut = DIM_MM;
-static const fp_PageSize::Unit kword_1_unit_fp = fp_PageSize::mm;
+static const UT_Dimension kword_1_unit = DIM_MM;
 
 /*****************************************************************/
 /*****************************************************************/
@@ -445,22 +444,6 @@
 /*****************************************************************/
 
 static const char *
-preferedUnitString(fp_PageSize::Unit docUnit)
-{
-       if(docUnit == fp_PageSize::cm)
-               return "mm";
-       else if(docUnit == fp_PageSize::mm)
-               return "mm";
-       else if(docUnit == fp_PageSize::inch)
-               return "inch";
-       else
-       {
-               UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
-               return "";
-       }
-}
-
-static const char *
 justificationToNumber(const char * justification_name)
 {
        if (! strcmp(justification_name,"left"))
@@ -562,7 +545,7 @@
        sprintf(buf, "page-margin-%s", name);
        szValue = PP_evalProperty(buf, 
                                                          NULL, NULL, pAP, 
m_pDocument, true);
-       sprintf((char *) buf," %s=\"%f",name, UT_convertToDimension(szValue, 
kword_1_unit_ut));
+       sprintf((char *) buf," %s=\"%f",name, UT_convertToDimension(szValue, 
+kword_1_unit));
        m_pie->write((char *)buf);
        m_pie->write("\"");
 
@@ -601,12 +584,12 @@
        
        char buf[20]; 
        m_pie->write(" width=\"");
-       sprintf((char *) buf,"%f",m_pDocument->m_docPageSize.Width(kword_1_unit_fp));
+       sprintf((char *) buf,"%f",m_pDocument->m_docPageSize.Width(kword_1_unit));
        m_pie->write((char *)buf);
        m_pie->write("\"");
 
        m_pie->write(" height=\"");
-       sprintf((char *) buf,"%f",m_pDocument->m_docPageSize.Height(kword_1_unit_fp));
+       sprintf((char *) buf,"%f",m_pDocument->m_docPageSize.Height(kword_1_unit));
        m_pie->write((char *)buf);
        m_pie->write("\"");
        
@@ -636,7 +619,7 @@
        m_pie->write("<ATTRIBUTES");
        m_pie->write(" processing=\"0\"");
        m_pie->write(" unit=\"");
-       m_pie->write(preferedUnitString(m_pDocument->m_docPageSize.getUnit()));
+       m_pie->write(UT_dimensionName(m_pDocument->m_docPageSize.getDims()));
        m_pie->write("\"");
        m_pie->write("/>\n");
 
Index: src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp,v
retrieving revision 1.56
diff -u -r1.56 ie_exp_RTF_listenerWriteDoc.cpp
--- src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp    2001/12/20 23:05:27     1.56
+++ src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp    2002/01/01 21:39:21
@@ -527,8 +527,8 @@
 
        old_locale = setlocale (LC_NUMERIC, "C");
 
-       double width = m_pDocument->m_docPageSize.Width(fp_PageSize::inch);
-       double height = m_pDocument->m_docPageSize.Height(fp_PageSize::inch);
+       double width = m_pDocument->m_docPageSize.Width(DIM_IN);
+       double height = m_pDocument->m_docPageSize.Height(DIM_IN);
        bool landscape = !m_pDocument->m_docPageSize.isPortrait();
 
        XML_Char szPaperWidth[24];
Index: src/wp/impexp/xp/ie_exp_XSL-FO.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_exp_XSL-FO.cpp,v
retrieving revision 1.26
diff -u -r1.26 ie_exp_XSL-FO.cpp
--- src/wp/impexp/xp/ie_exp_XSL-FO.cpp  2001/11/29 03:50:47     1.26
+++ src/wp/impexp/xp/ie_exp_XSL-FO.cpp  2002/01/01 21:39:27
@@ -580,22 +580,6 @@
 /*****************************************************************/
 /*****************************************************************/
 
-static const char *
-docUnitToString(fp_PageSize::Unit docUnit)
-{
-       if(docUnit == fp_PageSize::cm)
-               return "cm";
-       else if(docUnit == fp_PageSize::mm)
-               return "mm";
-       else if(docUnit == fp_PageSize::inch)
-               return "in";
-       else
-       {
-               UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
-               return "";
-       }
-}
-
 static UT_String
 purgeSpaces(const char* st)
 {
@@ -657,19 +641,19 @@
                m_pie->write(szValue);
                m_pie->write("\"");
                
-               fp_PageSize::Unit  docUnit = m_pDocument->m_docPageSize.getUnit(); 
+               UT_Dimension docUnit = m_pDocument->m_docPageSize.getDims(); 
                char buf[20];
 
                m_pie->write( " page-width=\"");
                sprintf((char *) buf,"%f",m_pDocument->m_docPageSize.Width(docUnit));
                m_pie->write((char *)buf);
-               m_pie->write(docUnitToString(docUnit));
+               m_pie->write(UT_dimensionName(docUnit));
                m_pie->write("\"");
 
                m_pie->write(" page-height=\"");
                sprintf((char *) buf,"%f",m_pDocument->m_docPageSize.Height(docUnit));
                m_pie->write((char *)buf);
-               m_pie->write(docUnitToString(docUnit));
+               m_pie->write(UT_dimensionName(docUnit));
                m_pie->write("\"");
                
        }
Index: src/wp/impexp/xp/ie_imp_KWord_1.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_imp_KWord_1.cpp,v
retrieving revision 1.12
diff -u -r1.12 ie_imp_KWord_1.cpp
--- src/wp/impexp/xp/ie_imp_KWord_1.cpp 2001/10/24 16:23:47     1.12
+++ src/wp/impexp/xp/ie_imp_KWord_1.cpp 2002/01/01 21:39:37
@@ -560,7 +560,7 @@
          }
 
        if ( page_height != 0. && page_width != 0. )
-         getDoc()->m_docPageSize.Set(page_width, page_height, fp_PageSize::mm);
+         getDoc()->m_docPageSize.Set(page_width, page_height, DIM_MM);
        break;
       }
       
Index: src/wp/impexp/xp/ie_imp_MsWord_97.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_imp_MsWord_97.cpp,v
retrieving revision 1.135
diff -u -r1.135 ie_imp_MsWord_97.cpp
--- src/wp/impexp/xp/ie_imp_MsWord_97.cpp       2001/12/28 22:58:26     1.135
+++ src/wp/impexp/xp/ie_imp_MsWord_97.cpp       2002/01/01 21:39:51
@@ -1336,7 +1336,7 @@
                  }
 
                // always use the passed size
-               getDoc()->m_docPageSize.Set (page_width, page_height, 
fp_PageSize::inch);
+               getDoc()->m_docPageSize.Set (page_width, page_height, DIM_IN);
                getDoc()->m_docPageSize.setScale(page_scale);
        }
 

Reply via email to