unable to get the dotted and continuous lines

Lokesh Chakka <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CACh--sg9YCphUpPaZdhN+TvM8EyYy57fnauohE3UW8BjsipJTw@mail.gmail.com>
Hello,

I newly started using Cairo. I am facing one problem with the Cairo
function calls. I want to first draw Cartesian grids using hyphens with
gray color and after that I want to plot a normal line in blue color.

I referred the program pen dashes at  Basic drawing in Cairo
<http://zetcode.com/gfx/cairo/basicdrawing/>

But I am seeing only the blue color line. but not the Cartesian grids. Can
some one help me by telling what mistake I am doing.


#include <cairo.h>
#include <gtk/gtk.h>
#include <math.h>
#include <inttypes.h>


uint16_t drawing_width = 300, drawing_height = 200;

uint16_t evaluate_y_coordinate( uint16_t y )
{
    return drawing_height - y;
}

static void draw_graphlines( cairo_t *cr )
{
    const uint16_t stepx = drawing_width/10, stepy = drawing_height/5;
    const double dashes[] = { 5, 10 };
    uint32_t i;

    cairo_set_source_rgb( cr, 0.8, 0.8, 0.8 );
    cairo_set_line_width( cr, 0.5 );
    cairo_set_dash ( cr, dashes, 2, 0 );
    for( i=0; i<drawing_width; i+=stepx )
    {//vertical lines
        cairo_move_to( cr, i, evaluate_y_coordinate( 0 ) );
        cairo_line_to( cr, i, evaluate_y_coordinate( drawing_height ) );
    }
    for( i=0; i<drawing_height; i+=stepy )
    {// horizontal lines
        cairo_move_to( cr, 0, evaluate_y_coordinate( i ) );
        cairo_line_to( cr, drawing_width, evaluate_y_coordinate( i ) );
    }
    cairo_stroke(cr);
    cairo_set_dash ( cr, dashes, 0, 0 );
}


static void do_drawing( GtkWidget *widget, cairo_t *cr, char *data )
{
    GdkRGBA rgba;

    draw_graphlines( cr );
    cairo_set_source_rgb( cr, 0, 0, 1 );
    cairo_set_line_width( cr, 2.0 );
    cairo_move_to( cr, 10, 10 );
    cairo_line_to( cr, 100, 100 );
    cairo_stroke(cr);
}


int main (int argc, char *argv[])
{
  GtkWidget *window;
  GtkWidget *darea;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_
TOPLEVEL);

  darea = gtk_drawing_area_new();
  gtk_container_add(GTK_CONTAINER(window), darea);

  g_signal_connect(G_OBJECT(darea), "draw", G_CALLBACK(do_drawing), NULL);
  g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit),
NULL);

  gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  gtk_window_set_default_size(GTK_WINDOW(window), drawing_width,
drawing_height );
  gtk_window_set_title(GTK_WINDOW(window), "Fill & stroke");

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}


Thanks & Regards
--
Lokesh

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.