[cairo] unable to get the dotted and continuous lines
Lokesh Chakka
lvenkatakumarchakka at gmail.com
Thu Aug 7 21:45:13 PDT 2014
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20140808/82c3fb3d/attachment.html>
More information about the cairo
mailing list