Remove the GimpSymmetry::get_operation() virtual function, and instead implement gimp_symmetry_get_operation() by returning an appropriate gegl:transform node based on the matrix returned by gimp_symmetry_get_matrix(). The returned node is owned by the caller; since we no longer use the node's identity for caching trnasformed brushes, we no longer cache the transformation nodes. Remove the function's paint_width and paint_height parameters, and instead return a transformation that should be applied at the center of the brush. This simplifies the application of the transformation in the Clone and Heal tools, as per the next commit. Remove the implementation of GimpSymmetry::get_operation() from all its subclasses, which should now only implement GimpSymmetry::get_transform().
62 lines
2 KiB
C
62 lines
2 KiB
C
/* GIMP - The GNU Image Manipulation Program
|
|
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
*
|
|
* gimpsymmetry-mirror.h
|
|
* Copyright (C) 2015 Jehan <jehan@gimp.org>
|
|
*
|
|
* 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 <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __GIMP_MIRROR_H__
|
|
#define __GIMP_MIRROR_H__
|
|
|
|
|
|
#include "gimpsymmetry.h"
|
|
|
|
|
|
#define GIMP_TYPE_MIRROR (gimp_mirror_get_type ())
|
|
#define GIMP_MIRROR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_MIRROR, GimpMirror))
|
|
#define GIMP_MIRROR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_MIRROR, GimpMirrorClass))
|
|
#define GIMP_IS_MIRROR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_MIRROR))
|
|
#define GIMP_IS_MIRROR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_MIRROR))
|
|
#define GIMP_MIRROR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_MIRROR, GimpMirrorClass))
|
|
|
|
|
|
typedef struct _GimpMirrorClass GimpMirrorClass;
|
|
|
|
struct _GimpMirror
|
|
{
|
|
GimpSymmetry parent_instance;
|
|
|
|
gboolean horizontal_mirror;
|
|
gboolean vertical_mirror;
|
|
gboolean point_symmetry;
|
|
gboolean disable_transformation;
|
|
|
|
gdouble mirror_position_y;
|
|
gdouble mirror_position_x;
|
|
GimpGuide *horizontal_guide;
|
|
GimpGuide *vertical_guide;
|
|
};
|
|
|
|
struct _GimpMirrorClass
|
|
{
|
|
GimpSymmetryClass parent_class;
|
|
};
|
|
|
|
|
|
GType gimp_mirror_get_type (void) G_GNUC_CONST;
|
|
|
|
|
|
#endif /* __GIMP_MIRROR_H__ */
|