look OK ?

Index: lyxgluelength.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxgluelength.C,v
retrieving revision 1.4
diff -u -r1.4 lyxgluelength.C
--- lyxgluelength.C     21 Mar 2002 17:25:14 -0000      1.4
+++ lyxgluelength.C     8 Aug 2002 20:09:19 -0000
@@ -41,52 +41,48 @@
 {
        ostringstream buffer;
 
-       if (!plus_.zero())
-               if (!minus_.zero())
-                       if (len_.unit() == plus_.unit() && len_.unit() == 
minus_.unit())
-                               if (plus_.value() == minus_.value())
-                                       buffer << len_.value() << "+-"
-                                              << plus_.value() << 
unit_name[len_.unit()];
-                               else
-                                       buffer << len_.value()
-                                              << '+' << plus_.value()
-                                              << '-' << minus_.value()
-                                              << unit_name[len_.unit()];
-                       else
-                               if (plus_.unit() == minus_.unit()
-                                   && plus_.value() == minus_.value())
-                                       buffer << len_.value() << 
unit_name[len_.unit()]
-                                              << "+-" << plus_.value()
-                                              << unit_name[plus_.unit()];
-
-                               else
-                                       buffer << len_.value() << 
unit_name[len_.unit()]
-                                              << '+' << plus_.value()
-                                              << unit_name[plus_.unit()]
-                                              << '-' << minus_.value()
-                                              << unit_name[minus_.unit()];
-               else
-                       if (len_.unit() == plus_.unit())
-                               buffer << len_.value() << '+' << plus_.value()
-                                      << unit_name[len_.unit()];
-                       else
-                               buffer << len_.value() << unit_name[len_.unit()]
-                                      << '+' << plus_.value()
-                                      << unit_name[plus_.unit()];
-
-       else
-               if (!minus_.zero())
-                       if (len_.unit() == minus_.unit())
-                               buffer << len_.value() << '-' << minus_.value()
-                                      << unit_name[len_.unit()];
-
-                       else
-                               buffer << len_.value() << unit_name[len_.unit()]
-                                      << '-' << minus_.value()
-                                      << unit_name[minus_.unit()];
-               else
-                       buffer << len_.value() << unit_name[len_.unit()];
+       buffer << len_.value();
 
+       if (plus_.zero() && minus_.zero()) {
+               buffer << unit_name[len_.unit()];
+               return buffer.str().c_str();
+       }
+ 
+       // just len and plus
+       if (minus_.zero()) {
+               if (len_.unit() == plus_.unit())
+                       buffer << unit_name[len_.unit()];
+               buffer << "+" << plus_.value();
+               buffer << unit_name[plus_.unit()];
+               return buffer.str().c_str();
+       }
+ 
+       // just len and minus
+       if (plus_.zero()) {
+               if (len_.unit() == minus_.unit())
+                       buffer << unit_name[len_.unit()];
+               buffer << "-" << minus_.value();
+               buffer << unit_name[minus_.unit()];
+               return buffer.str().c_str();
+       }
+
+       // ok, len, plus AND minus
+ 
+       // len+-
+       if (minus_ == plus_) {
+               if (len_.unit() != minus_.unit())
+                       buffer << unit_name[len_.unit()];
+               buffer << "+-" << minus_.value();
+               buffer << unit_name[minus_.unit()];
+               return buffer.str().c_str();
+       }
+ 
+       // this is so rare a case, why bother minimising units ?
+
+       buffer << unit_name[len_.unit()];
+       buffer << "+" << plus_.value() << unit_name[plus_.unit()];
+       buffer << "-" << minus_.value() << unit_name[minus_.unit()];
+ 
        return buffer.str().c_str();
 }
 
@@ -95,25 +91,12 @@
 {
        ostringstream buffer;
 
+       buffer << len_.value() << unit_name[len_.unit()];
+ 
        if (!plus_.zero())
-               if (!minus_.zero())
-                       buffer << len_.value() << unit_name[len_.unit()]
-                              << " plus "
-                              << plus_.value() << unit_name[plus_.unit()]
-                              << " minus "
-                              << minus_.value() << unit_name[minus_.unit()];
-               else
-                       buffer << len_.value() << unit_name[len_.unit()]
-                              << " plus "
-                              << plus_.value() << unit_name[plus_.unit()];
-       else
-               if (!minus_.zero())
-                       buffer << len_.value() << unit_name[len_.unit()]
-                              << " minus "
-                              << minus_.value() << unit_name[minus_.unit()];
-               else
-                       buffer << len_.value() << unit_name[len_.unit()];
-
+               buffer << " plus " << plus_.value() << unit_name[plus_.unit()];
+       if (!minus_.zero())
+               buffer << " minus " << minus_.value() << unit_name[minus_.unit()];
        return buffer.str().c_str();
 }
 

Reply via email to