OSDN Git Service

appModules.soffice: add support for color to Lotus Symphony documents.
authorMichael Curran <mick@kulgan.net>
Wed, 15 Sep 2010 06:33:27 +0000 (16:33 +1000)
committerMichael Curran <mick@kulgan.net>
Wed, 15 Sep 2010 06:33:27 +0000 (16:33 +1000)
source/appModules/soffice.py

index 7ea9284..a5498ac 100755 (executable)
@@ -9,6 +9,7 @@ import IAccessibleHandler
 import _default\r
 import controlTypes\r
 import textInfos\r
+import colors\r
 from compoundDocuments import CompoundDocument\r
 from NVDAObjects.JAB import JAB, JABTextInfo\r
 from NVDAObjects.IAccessible import IAccessible, IA2TextTextInfo\r
@@ -30,6 +31,10 @@ def gridCoordStringToNumbers(coordString):
                colNum+=((ord(ch.upper())-ord('A')+1)*(26**index))\r
        return rowNum,colNum\r
 \r
+def symphonyColorToRGB(symphonyColor):\r
+       h=symphonyColor[-6:]\r
+       return colors.RGB(int(h[0:2],16),int(h[2:4],16),int(h[4:6],16))\r
+\r
 class JAB_OOTable(JAB):\r
 \r
        def _get_rowCount(self):\r
@@ -129,6 +134,18 @@ class SymphonyTextInfo(IA2TextTextInfo):
                        formatField["bold"] = float(formatField["CharWeight"]) > 100\r
                except KeyError:\r
                        pass\r
+               try:\r
+                       color=formatField.pop('CharColor')\r
+               except KeyError:\r
+                       color=None\r
+               if color:\r
+                       formatField['color']=symphonyColorToRGB(color)\r
+               try:\r
+                       backgroundColor=formatField.pop('CharBackColor')\r
+               except KeyError:\r
+                       backgroundColor=None\r
+               if backgroundColor:\r
+                       formatField['background-color']=symphonyColorToRGB(backgroundColor)\r
 \r
                # optimisation: Assume a hyperlink occupies a full attribute run.\r
                try:\r