Make convenience routine SetPen globally available
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 3 Oct 2012 12:07:37 +0000 (14:07 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sun, 21 Oct 2012 09:28:09 +0000 (11:28 +0200)
The routine to set a pen as specified by  a color string that was used
in xevalgraph is moved to xboard.c, where there also is lots of demand
for it. The arrow drawing now uses it for setting the highlightSquareColor.

xboard.c
xevalgraph.c
xevalgraph.h

index 0fd1d3e..e3afe5d 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -61,6 +61,8 @@
 #include <sys/stat.h>
 #include <pwd.h>
 #include <math.h>
+#include <cairo/cairo.h>
+#include <cairo/cairo-xlib.h>
 
 #if !OMIT_SOCKETS
 # if HAVE_SYS_SOCKET_H
@@ -2452,9 +2454,6 @@ CutOutSquare (int x, int y, int *x0, int *y0, int  kind)
     return 1;
 }
 
-#include <cairo/cairo.h>
-#include <cairo/cairo-xlib.h>
-
 void
 DrawLogo (void *handle, void *logo)
 {
@@ -2798,6 +2797,25 @@ EventProc (Widget widget, caddr_t unused, XEvent *event)
 
 static cairo_surface_t *cs; // to keep out of back-end :-(
 
+float
+Color (char *col, int n)
+{
+  int c;
+  sscanf(col, "#%x", &c);
+  c = c >> 4*n & 255;
+  return c/255.;
+}
+
+void
+SetPen (cairo_t *cr, float w, char *col, int dash)
+{
+  static const double dotted[] = {4.0, 4.0};
+  static int len  = sizeof(dotted) / sizeof(dotted[0]);
+  cairo_set_line_width (cr, w);
+  cairo_set_source_rgba (cr, Color(col, 4), Color(col, 2), Color(col, 0), 1.0);
+  if(dash) cairo_set_dash (cr, dotted, len, 0.0);
+}
+
 void DrawSeekAxis( int x, int y, int xTo, int yTo )
 {
     cairo_t *cr;
@@ -2808,8 +2826,7 @@ void DrawSeekAxis( int x, int y, int xTo, int yTo )
     cairo_move_to (cr, x, y);
     cairo_line_to(cr, xTo, yTo );
 
-    cairo_set_line_width(cr, 2);
-    cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 1.0);
+    SetPen(cr, 2, "#000000", 0);
     cairo_stroke(cr);
 
     /* free memory */
@@ -2860,8 +2877,7 @@ void DrawSeekDot(int x, int y, int colorNr)
     else
        cairo_arc(cr, x, y, squareSize/8, 0.0, 2*M_PI);
 
-    cairo_set_line_width(cr, 2);
-    cairo_set_source_rgba(cr, 0, 0, 0,1.0);
+    SetPen(cr, 2, "#000000", 0);
     cairo_stroke_preserve(cr);
     switch (colorNr) {
       case 0: cairo_set_source_rgba(cr, 1.0, 0, 0,1.0);        break;
@@ -2900,10 +2916,7 @@ DrawGrid()
   cr = cairo_create (cs);
 
   cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
-  cairo_set_line_width (cr, lineGap);
-
-  /* TODO: use appdata colors */
-  cairo_set_source_rgba (cr, 0, 0, 0, 1.0);
+  SetPen(cr, lineGap, "#000000", 0);
 
   /* lines in X */
   for (i = 0; i < BOARD_WIDTH + BOARD_HEIGHT + 2; i++)
@@ -3917,12 +3930,10 @@ void DrawPolygon(Pnt arrow[], int nr)
     }
     if(appData.monoMode) { // should we always outline arrow?
         cairo_line_to(cr, arrow[0].x, arrow[0].y);
-        cairo_set_line_width(cr, 2);
-        cairo_set_source_rgba(cr, 0, 0, 0, 1.0);
+        SetPen(cr, 2, "#000000", 0);
         cairo_stroke_preserve(cr);
     }
-    cairo_set_line_width(cr, 2);
-    cairo_set_source_rgba(cr, 1, 1, 0, 1.0);
+    SetPen(cr, 2, appData.highlightSquareColor, 0);
     cairo_fill(cr);
 
     /* free memory */
index 4173d7d..40d0721 100644 (file)
@@ -77,6 +77,7 @@ extern char *getenv();
 #include "menus.h"
 #include "xboard.h"
 #include "evalgraph.h"
+#include "xevalgraph.h"
 #include "gettext.h"
 
 #ifdef ENABLE_NLS
@@ -113,24 +114,6 @@ static cairo_surface_t *cs;
 
 static Option *EvalCallback P((int button, int x, int y));
 
-static float
-Color (char *col, int n)
-{
-  int c;
-  sscanf(col, "#%x", &c);
-  c = c >> 4*n & 255;
-  return c/255.;
-}
-
-static void
-SetPen(cairo_t *cr, float w, char *col, int dash) {
-  static const double dotted[] = {4.0, 4.0};
-  static int len  = sizeof(dotted) / sizeof(dotted[0]);
-  cairo_set_line_width (cr, w);
-  cairo_set_source_rgba (cr, Color(col, 4), Color(col, 2), Color(col, 0), 1.0);
-  if(dash) cairo_set_dash (cr, dotted, len, 0.0);
-}
-
 static void
 ChoosePen(cairo_t *cr, int i)
 {
index e65f8f5..e1227c6 100644 (file)
@@ -25,5 +25,7 @@
 #define XB_XEVALGRAPH
 
 void EvalGraphSet P(( int first, int last, int current, ChessProgramStats_Move * pvInfo ));
+float Color P((char *col, int n));
+void SetPen P((cairo_t *cr, float w, char *col, int dash));
 
 #endif