Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Gnome/gsk/   (Gnome Linux Desktop Version 4.23.2©)  Datei vom 30.5.2026 mit Größe 5 kB image not shown  

Quelle  gskpathprivate.h

  Sprache: C
 

/*
 * Copyright © 2020 Benjamin Otte
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 *
 * Authors: Benjamin Otte <otte@gnome.org>
 */



#pragma once

#include "gskpath.h"

#include "gskpathopprivate.h"

G_BEGIN_DECLS

typedef enum
{
  /* path has only lines */
  GSK_PATH_FLAT          = 1 << 0,
  /* all points of the path are identical */
  GSK_PATH_ZERO_LENGTH   = 1 << 1,
  /* all contours are closed */
  GSK_PATH_CLOSED        = 1 << 2,
} GskPathFlags;

typedef struct _GskContour GskContour;
typedef struct _GskRealPathPoint GskRealPathPoint;

/* Same as Skia, so looks like a good value. ¯\_(ツ)_/¯ */
#define GSK_PATH_TOLERANCE_DEFAULT (0.5)

GskPath *               gsk_path_new_from_contours              (const GSList           *contours);

gsize                   gsk_path_get_n_contours                 (const GskPath          *self);
const GskContour *      gsk_path_get_contour                    (const GskPath          *self,
                                                                 gsize                   i);

GskPathFlags            gsk_path_get_flags                      (const GskPath          *self);

gboolean                gsk_path_foreach_with_tolerance         (GskPath                *self,
                                                                 GskPathForeachFlags     flags,
                                                                 double                  tolerance,
                                                                 GskPathForeachFunc      func,
                                                                 gpointer                user_data);


void                    gsk_path_builder_add_contour            (GskPathBuilder         *builder,
                                                                 GskContour             *contour);

void                    gsk_path_builder_add_op                 (GskPathBuilder         *builder,
                                                                 GskPathOperation        op,
                                                                 const graphene_point_t *pts,
                                                                 gsize                   n_pts,
                                                                 float                   weight);


/* implemented in gskstrokenode.c */
void                    gsk_cairo_stroke_path                   (cairo_t                *cr,
                                                                 GskPath                *path,
                                                                 GskStroke              *stroke);

static inline void
gsk_cairo_set_fill_rule (cairo_t     *cr,
                         GskFillRule  fill_rule)
{
  switch (fill_rule)
    {
      case GSK_FILL_RULE_WINDING:
        cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING);
        break;
      case GSK_FILL_RULE_EVEN_ODD:
        cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
        break;
      default:
        g_assert_not_reached ();
        break;
    }
}

/* Callbacks for gsk_path_parse_full
 * add_rect, add_circle and add_rounded_rect
 * are optional - the parser will just emit
 * equivalent ops if they are not provided
 */

typedef struct
{
  gboolean (* add_op)        (GskPathOperation        op,
                              const graphene_point_t *pts,
                              size_t                  n_pts,
                              float                   weight,
                              gpointer                user_data);
  gboolean (* add_arc)       (float                   rx,
                              float                   ry,
                              float                   x_axis_rotation,
                              gboolean                large_arc,
                              gboolean                positive_sweep,
                              float                   x,
                              float                   y,
                              gpointer                user_data);
  gboolean (* add_rect)      (const graphene_rect_t  *rect,
                              gpointer                user_data);
  gboolean (* add_circle)    (const graphene_point_t *center,
                              float                   radius,
                              gpointer                user_data);
  gboolean (* add_rounded_rect)
                             (const GskRoundedRect   *rect,
                              gpointer                user_data);
} GskPathParser;

gboolean gsk_path_parse_full (const char    *string,
                              GskPathParser *callbacks,
                              gpointer       data);

G_END_DECLS

Messung V0.5 in Prozent
C=99 H=93 G=95

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet am  2026-07-03) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.