 : cairo_rotate ( cairo_t angle -- )
     "void" "cairo" "cairo_rotate" [ "cairo_t*" "double" ] alien-invoke ;
 
+: cairo_transform ( cairo_t cairo_matrix_t -- )
+  	"void" "cairo" "cairo_transform" [ "cairo_t*" "cairo_matrix_t*" ] alien-invoke ;
+
+: cairo_set_matrix ( cairo_t cairo_matrix_t -- )
+  	"void" "cairo" "cairo_set_matrix" [ "cairo_t*" "cairo_matrix_t*" ] alien-invoke ;
+
+: cairo_identity_matrix ( cairo_t -- )
+  	"void" "cairo" "cairo_identity_matrix" [ "cairo_t*" ] alien-invoke ;
 
 ! cairo path creating functions
 

    CAIRO_STATUS_INVALID_POP_GROUP
    CAIRO_STATUS_NO_CURRENT_POINT
    CAIRO_STATUS_INVALID_MATRIX
    CAIRO_STATUS_NO_TARGET_SURFACE
    CAIRO_STATUS_NULL_POINTER
    CAIRO_STATUS_INVALID_STRING
;

! cairo_operator_t
C-ENUM:
    CAIRO_OPERATOR_CLEAR
    CAIRO_OPERATOR_SRC
    CAIRO_OPERATOR_DST
    CAIRO_OPERATOR_OVER
    CAIRO_OPERATOR_OVER_REVERSE
    CAIRO_OPERATOR_IN
    CAIRO_OPERATOR_IN_REVERSE
    CAIRO_OPERATOR_OUT
    CAIRO_OPERATOR_OUT_REVERSE
    CAIRO_OPERATOR_ATOP
    CAIRO_OPERATOR_ATOP_REVERSE
    CAIRO_OPERATOR_XOR
    CAIRO_OPERATOR_ADD
    CAIRO_OPERATOR_SATURATE

: cairo_set_font_size ( cairo_t scale -- )
    "void" "cairo" "cairo_set_font_size" [ "cairo_t*" "double" ] alien-invoke ;

: cairo_set_font_matrix ( cairo_t cairo_matrix_t -- )
  	"void" "cairo" "cairo_set_font_matrix" [ "cairo_t*" "cairo_matrix_t*" ] alien-invoke ;

: cairo_get_font_matrix ( cairo_t cairo_matrix_t -- )
  	"void" "cairo" "cairo_get_font_matrix" [ "cairo_t*" "cairo_matrix_t*" ] alien-invoke ;



! Cairo pdf

: cairo_pdf_surface_create ( filename width height -- surface )
  "void*" "cairo" "cairo_pdf_surface_create" [ "char*" "double" "double" ] alien-invoke ;

! Missing:

! cairo_public cairo_surface_t *
! cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func,
!                                      void              *closure,
!                                      double             width_in_points,
!                                      double             height_in_points);

: cairo_pdf_surface_set_size ( surface width height -- )
  "void" "cairo" "cairo_pdf_surface_set_size" [ "void*" "double" "double" ] alien-invoke ;
