From: H.G. Muller Date: Wed, 3 Oct 2012 12:07:37 +0000 (+0200) Subject: Make convenience routine SetPen globally available X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=c3dccf9e44678d2c0330f28dccdb7ec8fca9e593;p=xboard.git Make convenience routine SetPen globally available 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. --- diff --git a/xboard.c b/xboard.c index 0fd1d3e..e3afe5d 100644 --- a/xboard.c +++ b/xboard.c @@ -61,6 +61,8 @@ #include #include #include +#include +#include #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 -#include - 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 */ diff --git a/xevalgraph.c b/xevalgraph.c index 4173d7d..40d0721 100644 --- a/xevalgraph.c +++ b/xevalgraph.c @@ -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) { diff --git a/xevalgraph.h b/xevalgraph.h index e65f8f5..e1227c6 100644 --- a/xevalgraph.h +++ b/xevalgraph.h @@ -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