Huw Davies : riched20: Add a helper to find a colour in the colour table.

Alexandre Julliard julliard at winehq.org
Wed Oct 12 16:06:15 CDT 2016


Module: wine
Branch: master
Commit: 3e9a31ed26c1dd82b5f2a25873ff94f023b1baea
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3e9a31ed26c1dd82b5f2a25873ff94f023b1baea

Author: Huw Davies <huw at codeweavers.com>
Date:   Wed Oct 12 12:58:51 2016 +0100

riched20: Add a helper to find a colour in the colour table.

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/riched20/writer.c | 62 ++++++++++++++++++++++++--------------------------
 1 file changed, 30 insertions(+), 32 deletions(-)

diff --git a/dlls/riched20/writer.c b/dlls/riched20/writer.c
index 838168e..e7d340a 100644
--- a/dlls/riched20/writer.c
+++ b/dlls/riched20/writer.c
@@ -277,6 +277,23 @@ static void add_color_to_colortbl( ME_OutStream *stream, COLORREF color )
     }
 }
 
+static BOOL find_color_in_colortbl( ME_OutStream *stream, COLORREF color, unsigned int *idx )
+{
+    int i;
+
+    *idx = 0;
+    for (i = 1; i < stream->nColorTblLen; i++)
+    {
+        if (stream->colortbl[i] == color)
+        {
+            *idx = i;
+            break;
+        }
+    }
+
+    return i < stream->nFontTblLen;
+}
+
 static BOOL
 ME_StreamOutRTFFontAndColorTbl(ME_OutStream *pStream, ME_DisplayItem *pFirstRun,
                                ME_DisplayItem *pLastRun)
@@ -391,17 +408,13 @@ ME_StreamOutRTFTableProps(ME_TextEditor *editor, ME_OutStream *pStream,
       {
         if (borders[i]->width)
         {
-          unsigned int j;
+          unsigned int idx;
           COLORREF crColor = borders[i]->colorRef;
           sprintf(props + strlen(props), "\\clbrdr%c", sideChar[i]);
           sprintf(props + strlen(props), "\\brdrs");
           sprintf(props + strlen(props), "\\brdrw%d", borders[i]->width);
-          for (j = 1; j < pStream->nColorTblLen; j++) {
-            if (pStream->colortbl[j] == crColor) {
-              sprintf(props + strlen(props), "\\brdrcf%u", j);
-              break;
-            }
-          }
+          if (find_color_in_colortbl( pStream, crColor, &idx ))
+            sprintf(props + strlen(props), "\\brdrcf%u", idx);
         }
       }
       sprintf(props + strlen(props), "\\cellx%d", cell->member.cell.nRightBoundary);
@@ -423,17 +436,13 @@ ME_StreamOutRTFTableProps(ME_TextEditor *editor, ME_OutStream *pStream,
     {
       if (borders[i]->width)
       {
-        unsigned int j;
+        unsigned int idx;
         COLORREF crColor = borders[i]->colorRef;
         sprintf(props + strlen(props), "\\trbrdr%c", sideChar[i]);
         sprintf(props + strlen(props), "\\brdrs");
         sprintf(props + strlen(props), "\\brdrw%d", borders[i]->width);
-        for (j = 1; j < pStream->nColorTblLen; j++) {
-          if (pStream->colortbl[j] == crColor) {
-            sprintf(props + strlen(props), "\\brdrcf%u", j);
-            break;
-          }
-        }
+        if (find_color_in_colortbl( pStream, crColor, &idx ))
+          sprintf(props + strlen(props), "\\brdrcf%u", idx);
       }
     }
     for (i = 0; i < pFmt->cTabCount; i++)
@@ -642,26 +651,15 @@ ME_StreamOutRTFCharProps(ME_OutStream *pStream, CHARFORMAT2W *fmt)
     strcat(props, "\\caps");
   if (fmt->dwMask & CFM_ANIMATION)
     sprintf(props + strlen(props), "\\animtext%u", fmt->bAnimation);
-  if (fmt->dwMask & CFM_BACKCOLOR) {
-    if (!(fmt->dwEffects & CFE_AUTOBACKCOLOR)) {
-      for (i = 1; i < pStream->nColorTblLen; i++)
-        if (pStream->colortbl[i] == fmt->crBackColor) {
-          sprintf(props + strlen(props), "\\cb%u", i);
-          break;
-        }
-    }
-  }
+  if ((fmt->dwMask & CFM_BACKCOLOR) && !(fmt->dwEffects & CFE_AUTOBACKCOLOR))
+    if (find_color_in_colortbl( pStream, fmt->crBackColor, &i ))
+      sprintf(props + strlen(props), "\\cb%u", i);
   if (fmt->dwMask & CFM_BOLD && fmt->dwEffects & CFE_BOLD)
     strcat(props, "\\b");
-  if (fmt->dwMask & CFM_COLOR) {
-    if (!(fmt->dwEffects & CFE_AUTOCOLOR)) {
-      for (i = 1; i < pStream->nColorTblLen; i++)
-        if (pStream->colortbl[i] == fmt->crTextColor) {
-          sprintf(props + strlen(props), "\\cf%u", i);
-          break;
-        }
-    }
-  }
+  if ((fmt->dwMask & CFM_COLOR) && !(fmt->dwEffects & CFE_AUTOCOLOR))
+    if (find_color_in_colortbl( pStream, fmt->crTextColor, &i ))
+      sprintf(props + strlen(props), "\\cf%u", i);
+
   /* TODO: CFM_DISABLED */
   if (fmt->dwMask & CFM_EMBOSS && fmt->dwEffects & CFE_EMBOSS)
     strcat(props, "\\embo");




More information about the wine-cvs mailing list