/* PIKA - Photo and Image Kooker Application * a rebranding of The GNU Image Manipulation Program (created with heckimp) * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio * * Original copyright, applying to most contents (license remains unchanged): * Copyright (C) 1995-1999 Spencer Kimball and Peter Mattis * * pikaink-blob.h: routines for manipulating scan converted convex polygons. * Copyright 1998, Owen Taylor * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #ifndef __PIKA_INK_BLOB_H__ #define __PIKA_INK_BLOB_H__ typedef struct _PikaBlobPoint PikaBlobPoint; typedef struct _PikaBlobSpan PikaBlobSpan; typedef struct _PikaBlob PikaBlob; typedef PikaBlob * (* PikaBlobFunc) (gdouble xc, gdouble yc, gdouble xp, gdouble yp, gdouble xq, gdouble yq); struct _PikaBlobPoint { gint x; gint y; }; struct _PikaBlobSpan { gint left; gint right; }; struct _PikaBlob { gint y; gint height; PikaBlobSpan data[1]; }; PikaBlob * pika_blob_polygon (PikaBlobPoint *points, gint n_points); PikaBlob * pika_blob_square (gdouble xc, gdouble yc, gdouble xp, gdouble yp, gdouble xq, gdouble yq); PikaBlob * pika_blob_diamond (gdouble xc, gdouble yc, gdouble xp, gdouble yp, gdouble xq, gdouble yq); PikaBlob * pika_blob_ellipse (gdouble xc, gdouble yc, gdouble xp, gdouble yp, gdouble xq, gdouble yq); void pika_blob_bounds (PikaBlob *b, gint *x, gint *y, gint *width, gint *height); PikaBlob * pika_blob_convex_union (PikaBlob *b1, PikaBlob *b2); PikaBlob * pika_blob_duplicate (PikaBlob *b); void pika_blob_move (PikaBlob *b, gint x, gint y); #endif /* __PIKA_INK_BLOB_H__ */