File: layer.h

package info (click to toggle)
gimp 1.0.2-3
  • links: PTS
  • area: main
  • in suites: slink
  • size: 17,116 kB
  • ctags: 16,070
  • sloc: ansic: 226,067; lisp: 8,497; sh: 4,965; makefile: 4,543
file content (145 lines) | stat: -rw-r--r-- 4,998 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/* The GIMP -- an image manipulation program
 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
 *
 * 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 2 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, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
#ifndef __LAYER_H__
#define __LAYER_H__

#include "drawable.h"

#include "boundary.h"
#include "channel.h"
#include "temp_buf.h"
#include "tile_manager.h"

#define APPLY   0
#define DISCARD 1

typedef enum
{
  WhiteMask,
  BlackMask,
  AlphaMask
} AddMaskType;


/* structure declarations */

#define GIMP_LAYER(obj)        GTK_CHECK_CAST (obj, gimp_layer_get_type (), GimpLayer)
#define GIMP_LAYER_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gimp_layer_get_type(), GimpLayerClass)
#define GIMP_IS_LAYER(obj)     GTK_CHECK_TYPE (obj, gimp_layer_get_type())

#define GIMP_LAYER_MASK(obj)         GTK_CHECK_CAST (obj, gimp_layer_mask_get_type (), GimpLayerMask)
#define GIMP_LAYER_MASK_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gimp_layer_mask_get_type(), GimpLayerMaskClass)
#define GIMP_IS_LAYER_MASK(obj)      GTK_CHECK_TYPE (obj, gimp_layer_mask_get_type())

typedef struct _GimpLayer      GimpLayer;
typedef struct _GimpLayerClass GimpLayerClass;
typedef struct _GimpLayerMask      GimpLayerMask;
typedef struct _GimpLayerMaskClass GimpLayerMaskClass;

typedef GimpLayer Layer;		/* convenience */
typedef GimpLayerMask LayerMask;	/* convenience */

guint gimp_layer_get_type (void);
guint gimp_layer_mask_get_type (void);

/*  Special undo types  */

typedef struct _layer_undo LayerUndo;

struct _layer_undo
{
  Layer * layer;     /*  the actual layer         */
  int prev_position; /*  former position in list  */
  Layer * prev_layer;    /*  previous active layer    */
  int undo_type;     /*  is this a new layer undo */
                     /*  or a remove layer undo?  */
};

typedef struct _layer_mask_undo LayerMaskUndo;

struct _layer_mask_undo
{
  Layer * layer;     /*  the layer                */
  int apply_mask;    /*  apply mask?              */
  int edit_mask;     /*  edit mask or layer?      */
  int show_mask;     /*  show the mask?           */
  LayerMask *mask;   /*  the layer mask           */
  int mode;          /*  the application mode     */
  int undo_type;     /*  is this a new layer mask */
                     /*  or a remove layer mask   */
};

typedef struct _fs_to_layer_undo FStoLayerUndo;

struct _fs_to_layer_undo
{
  Layer * layer;     /*  the layer                */
  GimpDrawable * drawable;      /*  drawable of floating sel */
};

/* function declarations */

Layer *         layer_new (int, int, int, int, char *, int, int);
Layer *         layer_copy (Layer *, int);
Layer *		layer_ref (Layer *);
void   		layer_unref (Layer *);

Layer *         layer_from_tiles (void *, GimpDrawable *, TileManager *, char *, int, int);
LayerMask *     layer_add_mask (Layer *, LayerMask *);
LayerMask *     layer_create_mask (Layer *, AddMaskType);
Layer *         layer_get_ID (int);
void            layer_delete (Layer *);
void            layer_apply_mask (Layer *, int);
void            layer_translate (Layer *, int, int);
void            layer_add_alpha (Layer *);
void            layer_scale (Layer *, int, int, int);
void            layer_resize (Layer *, int, int, int, int);
BoundSeg *      layer_boundary (Layer *, int *);
void            layer_invalidate_boundary (Layer *);
int             layer_pick_correlate (Layer *, int, int);

LayerMask *     layer_mask_new	(int, int, int, char *, 
				 int, unsigned char *);
LayerMask *	layer_mask_copy	(LayerMask *);
void		layer_mask_delete	(LayerMask *);
LayerMask *	layer_mask_get_ID    (int);
LayerMask *	layer_mask_ref (LayerMask *);
void   		layer_mask_unref (LayerMask *);

/* access functions */

unsigned char * layer_data (Layer *);
LayerMask *     layer_mask (Layer *);
int             layer_has_alpha (Layer *);
int             layer_is_floating_sel (Layer *);
int		layer_linked (Layer *);
TempBuf *       layer_preview (Layer *, int, int);
TempBuf *       layer_mask_preview (Layer *, int, int);

void            layer_invalidate_previews  (int);


/* from drawable.c */
Layer *          drawable_layer              (GimpDrawable *);
LayerMask *      drawable_layer_mask         (GimpDrawable *);

/* from channel.c */
void            channel_layer_alpha     (Channel *, Layer *);
void            channel_layer_mask      (Channel *, Layer *);

#endif /* __LAYER_H__ */