LCOV - code coverage report
Current view: directory - gfx/cairo/cairo/src - cairo-gstate-private.h (source / functions) Found Hit Coverage
Test: app.info Lines: 8 3 37.5 %
Date: 2012-06-02 Functions: 2 1 50.0 %

       1                 : /* cairo - a vector graphics library with display and print output
       2                 :  *
       3                 :  * Copyright © 2005 Red Hat, Inc.
       4                 :  *
       5                 :  * This library is free software; you can redistribute it and/or
       6                 :  * modify it either under the terms of the GNU Lesser General Public
       7                 :  * License version 2.1 as published by the Free Software Foundation
       8                 :  * (the "LGPL") or, at your option, under the terms of the Mozilla
       9                 :  * Public License Version 1.1 (the "MPL"). If you do not alter this
      10                 :  * notice, a recipient may use your version of this file under either
      11                 :  * the MPL or the LGPL.
      12                 :  *
      13                 :  * You should have received a copy of the LGPL along with this library
      14                 :  * in the file COPYING-LGPL-2.1; if not, write to the Free Software
      15                 :  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
      16                 :  * You should have received a copy of the MPL along with this library
      17                 :  * in the file COPYING-MPL-1.1
      18                 :  *
      19                 :  * The contents of this file are subject to the Mozilla Public License
      20                 :  * Version 1.1 (the "License"); you may not use this file except in
      21                 :  * compliance with the License. You may obtain a copy of the License at
      22                 :  * http://www.mozilla.org/MPL/
      23                 :  *
      24                 :  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
      25                 :  * OF ANY KIND, either express or implied. See the LGPL or the MPL for
      26                 :  * the specific language governing rights and limitations.
      27                 :  *
      28                 :  * The Original Code is the cairo graphics library.
      29                 :  *
      30                 :  * The Initial Developer of the Original Code is Red Hat, Inc.
      31                 :  *
      32                 :  * Contributor(s):
      33                 :  *      Carl D. Worth <cworth@redhat.com>
      34                 :  */
      35                 : 
      36                 : #ifndef CAIRO_GSTATE_PRIVATE_H
      37                 : #define CAIRO_GSTATE_PRIVATE_H
      38                 : 
      39                 : #include "cairo-clip-private.h"
      40                 : 
      41                 : struct _cairo_gstate {
      42                 :     cairo_operator_t op;
      43                 : 
      44                 :     double tolerance;
      45                 :     cairo_antialias_t antialias;
      46                 : 
      47                 :     cairo_stroke_style_t stroke_style;
      48                 : 
      49                 :     cairo_fill_rule_t fill_rule;
      50                 : 
      51                 :     cairo_font_face_t *font_face;
      52                 :     cairo_scaled_font_t *scaled_font;   /* Specific to the current CTM */
      53                 :     cairo_scaled_font_t *previous_scaled_font;  /* holdover */
      54                 :     cairo_matrix_t font_matrix;
      55                 :     cairo_font_options_t font_options;
      56                 : 
      57                 :     cairo_clip_t clip;
      58                 : 
      59                 :     cairo_surface_t *target;            /* The target to which all rendering is directed */
      60                 :     cairo_surface_t *parent_target;     /* The previous target which was receiving rendering */
      61                 :     cairo_surface_t *original_target;   /* The original target the initial gstate was created with */
      62                 : 
      63                 :     /* the user is allowed to update the device after we have cached the matrices... */
      64                 :     cairo_observer_t device_transform_observer;
      65                 : 
      66                 :     cairo_matrix_t ctm;
      67                 :     cairo_matrix_t ctm_inverse;
      68                 :     cairo_matrix_t source_ctm_inverse; /* At the time ->source was set */
      69                 :     cairo_bool_t is_identity;
      70                 : 
      71                 :     cairo_pattern_t *source;
      72                 : 
      73                 :     struct _cairo_gstate *next;
      74                 : };
      75                 : 
      76                 : /* cairo-gstate.c */
      77                 : cairo_private cairo_status_t
      78                 : _cairo_gstate_init (cairo_gstate_t  *gstate,
      79                 :                     cairo_surface_t *target);
      80                 : 
      81                 : cairo_private void
      82                 : _cairo_gstate_fini (cairo_gstate_t *gstate);
      83                 : 
      84                 : cairo_private cairo_status_t
      85                 : _cairo_gstate_save (cairo_gstate_t **gstate, cairo_gstate_t **freelist);
      86                 : 
      87                 : cairo_private cairo_status_t
      88                 : _cairo_gstate_restore (cairo_gstate_t **gstate, cairo_gstate_t **freelist);
      89                 : 
      90                 : cairo_private cairo_bool_t
      91                 : _cairo_gstate_is_redirected (cairo_gstate_t *gstate);
      92                 : 
      93                 : cairo_private cairo_status_t
      94                 : _cairo_gstate_redirect_target (cairo_gstate_t *gstate, cairo_surface_t *child);
      95                 : 
      96                 : cairo_private cairo_surface_t *
      97                 : _cairo_gstate_get_target (cairo_gstate_t *gstate);
      98                 : 
      99                 : cairo_private cairo_surface_t *
     100                 : _cairo_gstate_get_parent_target (cairo_gstate_t *gstate);
     101                 : 
     102                 : cairo_private cairo_surface_t *
     103                 : _cairo_gstate_get_original_target (cairo_gstate_t *gstate);
     104                 : 
     105                 : cairo_private cairo_clip_t *
     106                 : _cairo_gstate_get_clip (cairo_gstate_t *gstate);
     107                 : 
     108                 : cairo_private cairo_status_t
     109                 : _cairo_gstate_set_source (cairo_gstate_t *gstate, cairo_pattern_t *source);
     110                 : 
     111                 : cairo_private cairo_pattern_t *
     112                 : _cairo_gstate_get_source (cairo_gstate_t *gstate);
     113                 : 
     114                 : cairo_private cairo_status_t
     115                 : _cairo_gstate_set_operator (cairo_gstate_t *gstate, cairo_operator_t op);
     116                 : 
     117                 : cairo_private cairo_operator_t
     118                 : _cairo_gstate_get_operator (cairo_gstate_t *gstate);
     119                 : 
     120                 : cairo_private cairo_status_t
     121                 : _cairo_gstate_set_tolerance (cairo_gstate_t *gstate, double tolerance);
     122                 : 
     123                 : cairo_private double
     124                 : _cairo_gstate_get_tolerance (cairo_gstate_t *gstate);
     125                 : 
     126                 : cairo_private cairo_status_t
     127                 : _cairo_gstate_set_fill_rule (cairo_gstate_t *gstate, cairo_fill_rule_t fill_rule);
     128                 : 
     129                 : cairo_private cairo_fill_rule_t
     130                 : _cairo_gstate_get_fill_rule (cairo_gstate_t *gstate);
     131                 : 
     132                 : cairo_private cairo_status_t
     133                 : _cairo_gstate_set_line_width (cairo_gstate_t *gstate, double width);
     134                 : 
     135                 : cairo_private double
     136                 : _cairo_gstate_get_line_width (cairo_gstate_t *gstate);
     137                 : 
     138                 : cairo_private cairo_status_t
     139                 : _cairo_gstate_set_line_cap (cairo_gstate_t *gstate, cairo_line_cap_t line_cap);
     140                 : 
     141                 : cairo_private cairo_line_cap_t
     142                 : _cairo_gstate_get_line_cap (cairo_gstate_t *gstate);
     143                 : 
     144                 : cairo_private cairo_status_t
     145                 : _cairo_gstate_set_line_join (cairo_gstate_t *gstate, cairo_line_join_t line_join);
     146                 : 
     147                 : cairo_private cairo_line_join_t
     148                 : _cairo_gstate_get_line_join (cairo_gstate_t *gstate);
     149                 : 
     150                 : cairo_private cairo_status_t
     151                 : _cairo_gstate_set_dash (cairo_gstate_t *gstate, const double *dash, int num_dashes, double offset);
     152                 : 
     153                 : cairo_private void
     154                 : _cairo_gstate_get_dash (cairo_gstate_t *gstate, double *dash, int *num_dashes, double *offset);
     155                 : 
     156                 : cairo_private cairo_status_t
     157                 : _cairo_gstate_set_miter_limit (cairo_gstate_t *gstate, double limit);
     158                 : 
     159                 : cairo_private double
     160                 : _cairo_gstate_get_miter_limit (cairo_gstate_t *gstate);
     161                 : 
     162                 : cairo_private void
     163                 : _cairo_gstate_get_matrix (cairo_gstate_t *gstate, cairo_matrix_t *matrix);
     164                 : 
     165                 : cairo_private cairo_status_t
     166                 : _cairo_gstate_translate (cairo_gstate_t *gstate, double tx, double ty);
     167                 : 
     168                 : cairo_private cairo_status_t
     169                 : _cairo_gstate_scale (cairo_gstate_t *gstate, double sx, double sy);
     170                 : 
     171                 : cairo_private cairo_status_t
     172                 : _cairo_gstate_rotate (cairo_gstate_t *gstate, double angle);
     173                 : 
     174                 : cairo_private cairo_status_t
     175                 : _cairo_gstate_transform (cairo_gstate_t       *gstate,
     176                 :                          const cairo_matrix_t *matrix);
     177                 : 
     178                 : cairo_private cairo_status_t
     179                 : _cairo_gstate_set_matrix (cairo_gstate_t       *gstate,
     180                 :                           const cairo_matrix_t *matrix);
     181                 : 
     182                 : cairo_private void
     183                 : _cairo_gstate_identity_matrix (cairo_gstate_t *gstate);
     184                 : 
     185                 : cairo_private void
     186                 : _cairo_gstate_user_to_device (cairo_gstate_t *gstate, double *x, double *y);
     187                 : 
     188                 : cairo_private void
     189                 : _cairo_gstate_user_to_device_distance (cairo_gstate_t *gstate, double *dx, double *dy);
     190                 : 
     191                 : cairo_private void
     192                 : _cairo_gstate_device_to_user (cairo_gstate_t *gstate, double *x, double *y);
     193                 : 
     194                 : cairo_private void
     195                 : _cairo_gstate_device_to_user_distance (cairo_gstate_t *gstate, double *dx, double *dy);
     196                 : 
     197                 : cairo_private void
     198                 : _do_cairo_gstate_user_to_backend (cairo_gstate_t *gstate, double *x, double *y);
     199                 : 
     200                 : static inline void
     201              21 : _cairo_gstate_user_to_backend (cairo_gstate_t *gstate, double *x, double *y)
     202                 : {
     203              21 :     if (! gstate->is_identity)
     204               0 :         _do_cairo_gstate_user_to_backend (gstate, x, y);
     205              21 : }
     206                 : 
     207                 : cairo_private void
     208                 : _do_cairo_gstate_backend_to_user (cairo_gstate_t *gstate, double *x, double *y);
     209                 : 
     210                 : static inline void
     211               0 : _cairo_gstate_backend_to_user (cairo_gstate_t *gstate, double *x, double *y)
     212                 : {
     213               0 :     if (! gstate->is_identity)
     214               0 :         _do_cairo_gstate_backend_to_user (gstate, x, y);
     215               0 : }
     216                 : 
     217                 : cairo_private void
     218                 : _cairo_gstate_backend_to_user_rectangle (cairo_gstate_t *gstate,
     219                 :                                          double *x1, double *y1,
     220                 :                                          double *x2, double *y2,
     221                 :                                          cairo_bool_t *is_tight);
     222                 : 
     223                 : cairo_private void
     224                 : _cairo_gstate_path_extents (cairo_gstate_t     *gstate,
     225                 :                             cairo_path_fixed_t *path,
     226                 :                             double *x1, double *y1,
     227                 :                             double *x2, double *y2);
     228                 : 
     229                 : cairo_private cairo_status_t
     230                 : _cairo_gstate_paint (cairo_gstate_t *gstate);
     231                 : 
     232                 : cairo_private cairo_status_t
     233                 : _cairo_gstate_mask (cairo_gstate_t  *gstate,
     234                 :                     cairo_pattern_t *mask);
     235                 : 
     236                 : cairo_private cairo_status_t
     237                 : _cairo_gstate_stroke (cairo_gstate_t *gstate, cairo_path_fixed_t *path);
     238                 : 
     239                 : cairo_private cairo_status_t
     240                 : _cairo_gstate_fill (cairo_gstate_t *gstate, cairo_path_fixed_t *path);
     241                 : 
     242                 : cairo_private cairo_status_t
     243                 : _cairo_gstate_copy_page (cairo_gstate_t *gstate);
     244                 : 
     245                 : cairo_private cairo_status_t
     246                 : _cairo_gstate_show_page (cairo_gstate_t *gstate);
     247                 : 
     248                 : cairo_private cairo_status_t
     249                 : _cairo_gstate_stroke_extents (cairo_gstate_t     *gstate,
     250                 :                               cairo_path_fixed_t *path,
     251                 :                               double *x1, double *y1,
     252                 :                               double *x2, double *y2);
     253                 : 
     254                 : cairo_private cairo_status_t
     255                 : _cairo_gstate_fill_extents (cairo_gstate_t     *gstate,
     256                 :                             cairo_path_fixed_t *path,
     257                 :                             double *x1, double *y1,
     258                 :                             double *x2, double *y2);
     259                 : 
     260                 : cairo_private cairo_status_t
     261                 : _cairo_gstate_in_stroke (cairo_gstate_t     *gstate,
     262                 :                          cairo_path_fixed_t *path,
     263                 :                          double              x,
     264                 :                          double              y,
     265                 :                          cairo_bool_t       *inside_ret);
     266                 : 
     267                 : cairo_private cairo_bool_t
     268                 : _cairo_gstate_in_fill (cairo_gstate_t     *gstate,
     269                 :                        cairo_path_fixed_t *path,
     270                 :                        double              x,
     271                 :                        double              y);
     272                 : 
     273                 : cairo_private cairo_bool_t
     274                 : _cairo_gstate_in_clip (cairo_gstate_t     *gstate,
     275                 :                        double              x,
     276                 :                        double              y);
     277                 : 
     278                 : cairo_private cairo_status_t
     279                 : _cairo_gstate_clip (cairo_gstate_t *gstate, cairo_path_fixed_t *path);
     280                 : 
     281                 : cairo_private cairo_status_t
     282                 : _cairo_gstate_reset_clip (cairo_gstate_t *gstate);
     283                 : 
     284                 : cairo_private cairo_bool_t
     285                 : _cairo_gstate_clip_extents (cairo_gstate_t *gstate,
     286                 :                             double         *x1,
     287                 :                             double         *y1,
     288                 :                             double         *x2,
     289                 :                             double         *y2);
     290                 : 
     291                 : cairo_private cairo_rectangle_list_t*
     292                 : _cairo_gstate_copy_clip_rectangle_list (cairo_gstate_t *gstate);
     293                 : 
     294                 : cairo_private cairo_status_t
     295                 : _cairo_gstate_show_surface (cairo_gstate_t      *gstate,
     296                 :                             cairo_surface_t     *surface,
     297                 :                             double               x,
     298                 :                             double               y,
     299                 :                             double              width,
     300                 :                             double              height);
     301                 : 
     302                 : cairo_private cairo_status_t
     303                 : _cairo_gstate_select_font_face (cairo_gstate_t *gstate,
     304                 :                                 const char *family,
     305                 :                                 cairo_font_slant_t slant,
     306                 :                                 cairo_font_weight_t weight);
     307                 : 
     308                 : cairo_private cairo_status_t
     309                 : _cairo_gstate_set_font_size (cairo_gstate_t *gstate,
     310                 :                              double          size);
     311                 : 
     312                 : cairo_private void
     313                 : _cairo_gstate_get_font_matrix (cairo_gstate_t *gstate,
     314                 :                                cairo_matrix_t *matrix);
     315                 : 
     316                 : cairo_private cairo_status_t
     317                 : _cairo_gstate_set_font_matrix (cairo_gstate_t       *gstate,
     318                 :                                const cairo_matrix_t *matrix);
     319                 : 
     320                 : cairo_private void
     321                 : _cairo_gstate_get_font_options (cairo_gstate_t       *gstate,
     322                 :                                 cairo_font_options_t *options);
     323                 : 
     324                 : cairo_private void
     325                 : _cairo_gstate_set_font_options (cairo_gstate_t             *gstate,
     326                 :                                 const cairo_font_options_t *options);
     327                 : 
     328                 : cairo_private cairo_status_t
     329                 : _cairo_gstate_get_font_face (cairo_gstate_t     *gstate,
     330                 :                              cairo_font_face_t **font_face);
     331                 : 
     332                 : cairo_private cairo_status_t
     333                 : _cairo_gstate_get_scaled_font (cairo_gstate_t       *gstate,
     334                 :                                cairo_scaled_font_t **scaled_font);
     335                 : 
     336                 : cairo_private cairo_status_t
     337                 : _cairo_gstate_get_font_extents (cairo_gstate_t *gstate,
     338                 :                                 cairo_font_extents_t *extents);
     339                 : 
     340                 : cairo_private cairo_status_t
     341                 : _cairo_gstate_set_font_face (cairo_gstate_t    *gstate,
     342                 :                              cairo_font_face_t *font_face);
     343                 : 
     344                 : cairo_private cairo_status_t
     345                 : _cairo_gstate_text_to_glyphs (cairo_gstate_t             *gstate,
     346                 :                               double                      x,
     347                 :                               double                      y,
     348                 :                               const char                 *utf8,
     349                 :                               int                         utf8_len,
     350                 :                               cairo_glyph_t             **glyphs,
     351                 :                               int                        *num_glyphs,
     352                 :                               cairo_text_cluster_t      **clusters,
     353                 :                               int                        *num_clusters,
     354                 :                               cairo_text_cluster_flags_t *cluster_flags);
     355                 : 
     356                 : cairo_private cairo_status_t
     357                 : _cairo_gstate_glyph_extents (cairo_gstate_t *gstate,
     358                 :                              const cairo_glyph_t *glyphs,
     359                 :                              int num_glyphs,
     360                 :                              cairo_text_extents_t *extents);
     361                 : 
     362                 : cairo_private cairo_status_t
     363                 : _cairo_gstate_show_text_glyphs (cairo_gstate_t             *gstate,
     364                 :                                 const char                 *utf8,
     365                 :                                 int                         utf8_len,
     366                 :                                 const cairo_glyph_t        *glyphs,
     367                 :                                 int                         num_glyphs,
     368                 :                                 const cairo_text_cluster_t *clusters,
     369                 :                                 int                         num_clusters,
     370                 :                                 cairo_text_cluster_flags_t  cluster_flags);
     371                 : 
     372                 : cairo_private cairo_status_t
     373                 : _cairo_gstate_glyph_path (cairo_gstate_t      *gstate,
     374                 :                           const cairo_glyph_t *glyphs,
     375                 :                           int                  num_glyphs,
     376                 :                           cairo_path_fixed_t  *path);
     377                 : 
     378                 : cairo_private cairo_status_t
     379                 : _cairo_gstate_set_antialias (cairo_gstate_t *gstate,
     380                 :                              cairo_antialias_t antialias);
     381                 : 
     382                 : cairo_private cairo_antialias_t
     383                 : _cairo_gstate_get_antialias (cairo_gstate_t *gstate);
     384                 : 
     385                 : #endif /* CAIRO_GSTATE_PRIVATE_H */

Generated by: LCOV version 1.7