[cairo-commit] cairo/doc/tutorial/src Makefile, 1.3, 1.4 README, NONE, 1.1 cairo-tutorial-gtk.h, 1.2, NONE cairo-tutorial-pdf.h, 1.2, NONE cairo-tutorial-png.h, 1.2, NONE cairo-tutorial-xlib.h, 1.2, NONE cairo-tutorial.h, 1.1, NONE circle.c, 1.2, 1.3 expander.c, 1.2, NONE lca.c, NONE, 1.1

Carl Worth commit at pdx.freedesktop.org
Wed Jan 25 10:22:36 PST 2006


Committed by: cworth

Update of /cvs/cairo/cairo/doc/tutorial/src
In directory gabe:/tmp/cvs-serv29409/doc/tutorial/src

Modified Files:
	Makefile circle.c 
Added Files:
	README lca.c 
Removed Files:
	cairo-tutorial-gtk.h cairo-tutorial-pdf.h cairo-tutorial-png.h 
	cairo-tutorial-xlib.h cairo-tutorial.h expander.c 
Log Message:

2006-01-26  Carl Worth  <cworth at cworth.org>

        * doc/tutorial/src/cairo-tutorial.h:
        * doc/tutorial/src/cairo-tutorial-gtk.h:
        * doc/tutorial/src/cairo-tutorial-pdf.h:
        * doc/tutorial/src/cairo-tutorial-png.h:
        * doc/tutorial/src/cairo-tutorial-xlib.h:
        * doc/tutorial/src/include/cairo-tutorial.h:
        * doc/tutorial/src/include/cairo-tutorial-gtk.h:
        * doc/tutorial/src/include/cairo-tutorial-pdf.h:
        * doc/tutorial/src/include/cairo-tutorial-png.h:
        * doc/tutorial/src/include/cairo-tutorial-xlib.h:
        Move the magic header files to be down in an include directory and
        more out of the way.

        * doc/tutorial/src/Makefile: Look for the headers in -I./include.

        * doc/tutorial/src/circle.c: (draw): Make the circle track the
        width and height of the window dynamically.

        * doc/tutorial/src/expander.c: Remove boring expander example.

        * doc/tutorial/src/lca.c: (draw): Add more interesting LCA
        exmaple.

        * doc/tutorial/src/README: Add some notes about how to use this
        stuff.


Index: Makefile
===================================================================
RCS file: /cvs/cairo/cairo/doc/tutorial/src/Makefile,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Makefile	25 Jan 2006 15:33:56 -0000	1.3
+++ Makefile	25 Jan 2006 18:22:32 -0000	1.4
@@ -1,4 +1,4 @@
-MYCFLAGS=$(shell pkg-config --cflags --libs cairo gtk+-2.0) -Wall -g -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -fno-strict-aliasing
+MYCFLAGS=-I./include $(shell pkg-config --cflags --libs cairo gtk+-2.0) -Wall -g -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -fno-strict-aliasing
 
 # If you don't want to/can't compile all of these targets, then trim
 # this list.
@@ -7,25 +7,25 @@
 
 GTK_EXAMPLES=$(patsubst %.c,%-gtk,$(wildcard *.c))
 gtk: $(GTK_EXAMPLES)
-%-gtk:%.c cairo-tutorial-gtk.h
+%-gtk:%.c ./include/cairo-tutorial-gtk.h
 	$(CC) -DCAIRO_TUTORIAL_GTK $(CFLAGS) $(MYCFLAGS) -o $@ $<
 
 XLIB_EXAMPLES=$(patsubst %.c,%-xlib,$(wildcard *.c))
 xlib: $(XLIB_EXAMPLES)
-%-xlib:%.c cairo-tutorial-xlib.h
+%-xlib:%.c ./include/cairo-tutorial-xlib.h
 	$(CC) -DCAIRO_TUTORIAL_XLIB $(CFLAGS) $(MYCFLAGS) -o $@ $<
 
 PDF_EXAMPLES=$(patsubst %.c,%-pdf,$(wildcard *.c))
 pdf: $(PDF_EXAMPLES)
-%-pdf:%.c cairo-tutorial-pdf.h
+%-pdf:%.c ./include/cairo-tutorial-pdf.h
 	$(CC) -DCAIRO_TUTORIAL_PDF $(CFLAGS) $(MYCFLAGS) -o $@ $<
 
 PNG_EXAMPLES=$(patsubst %.c,%-png,$(wildcard *.c))
 png: $(PNG_EXAMPLES)
-%-png:%.c cairo-tutorial-png.h
+%-png:%.c ./include/cairo-tutorial-png.h
 	$(CC) -DCAIRO_TUTORIAL_PNG $(CFLAGS) $(MYCFLAGS) -o $@ $<
 
 clean:
-	rm -f $(GTK_EXAMPLES) $(XLIB_EXAMPLES) $(PDF_EXAMPLES) $(PNG_EXAMPLES)
+	rm -f $(GTK_EXAMPLES) $(XLIB_EXAMPLES) $(PDF_EXAMPLES) $(PNG_EXAMPLES) *.png
 
 .PHONY: all gtk xlib pdf png clean

--- NEW FILE: README ---
Welcome to the cairo tutorial:

+--------------------------------+
| How to Recognize Ugly Graphics |
|(and what you can do about them)|
+--------------------------------+

This directory is your personal playground for following along with
the examples. In order for you to make use of these files you will
need to have cairo and its header files installed. You can find
instructions for doing this at:

	http://cairographics.org/tutorial

Notice that there are a few .c files in this directory.

You should start out by just typing "make" which will turn each .c
file into several different programs. Go ahead and run each of the
programs and see what they do. Some of them will open up new X windows
while others will simply write their output to files (such .png or
.pdf).

After you play with those a bit, go ahead and take a look at the
contents of the .c files. You'll see that each file contains a draw()
function that does all of the drawing.

You might be surprised to notice that there is no main() function in
any of the files. Instead, main is hidden away by means of
cairo-tutorial.h. This rather non-conventional style is used to allow
you to focus on the actual drawing code involved in using cairo, while
not having to worry about the setup semantics. We don't recommend that
you follow this style for real projects.

As you follow along during the tutorial and get some ideas for things
to draw, you'll want to start making your own .c files. You can copy
an existing file or make your own by following this simple minimal
template:

	#include "cairo-tutorial.h"

	static void
	draw (cairo_t *cr, int width, int height)
	{
	    /* Put your drawing code here. */
	}

Any new file you create will automatically get picked up by the
Makefile so that "make" will compile your file into several different
programs, just like the existing examples.

If you'd like to control the initial size of the output, you may
define WIDTH and HEIGHT before including cairo-tutorial.h like so:

	#define WIDTH  100
	#define HEIGHT 100

	#include "cairo-tutorial.h"

If you would like to change the set of cairo-backend target programs
that are compiled, you may edit the "all" target in the Makefile.

Have fun!


	


--- cairo-tutorial-gtk.h DELETED ---

--- cairo-tutorial-pdf.h DELETED ---

--- cairo-tutorial-png.h DELETED ---

--- cairo-tutorial-xlib.h DELETED ---

--- cairo-tutorial.h DELETED ---

Index: circle.c
===================================================================
RCS file: /cvs/cairo/cairo/doc/tutorial/src/circle.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- circle.c	25 Jan 2006 10:10:23 -0000	1.2
+++ circle.c	25 Jan 2006 18:22:33 -0000	1.3
@@ -3,17 +3,20 @@
 static void
 draw (cairo_t *cr, int width, int height)
 {
-    cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
-    cairo_paint (cr);
+    int radius;
 
-    cairo_move_to (cr, 47.5, 25);
-    cairo_arc (cr, 25, 25, 22.5,
+    if (width < height)
+	radius = width/2 - 4;
+    else
+	radius = height/2 - 4;
+
+    cairo_move_to (cr, width/2 + radius, height/2);
+    cairo_arc (cr, width/2, height/2, radius,
 	       0.0, 2 * M_PI);
 
     cairo_set_source_rgb (cr, 0.6, 0.8, 1.0);
     cairo_fill_preserve (cr);
 
     cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
-    cairo_set_line_width (cr, 1.0);
     cairo_stroke (cr);
 }

--- expander.c DELETED ---

--- NEW FILE: lca.c ---
#define WIDTH 750
#define HEIGHT 360

#include "cairo-tutorial.h"

static void
draw (cairo_t *cr, int width, int height)
{
    cairo_save (cr);

    cairo_translate (cr, 60, 60);
    cairo_scale (cr, 3, 3);

    cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
    cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);
    cairo_set_line_width (cr, 20);

    /* L */
    cairo_move_to (cr, 0, 0);
    cairo_line_to (cr, 0, 80);
    cairo_line_to (cr, 50, 80);
	
    /* C */
    cairo_move_to (cr, 110 + 40 * cos (M_PI / 3), 40 + 40 * sin(M_PI / 3));
    cairo_arc (cr, 110, 40, 40, M_PI / 3, -M_PI / 3);
	
    /* A */
    cairo_move_to (cr, 160, 80);
    cairo_curve_to (cr, 160, -30, 210, -30, 210, 80);
	
    cairo_stroke (cr);
}



More information about the cairo-commit mailing list