File: gap_onion_main.h

package info (click to toggle)
gimp-gap 2.6.0%2Bdfsg-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 19,656 kB
  • ctags: 7,358
  • sloc: ansic: 119,801; sh: 3,890; makefile: 932; lisp: 97; pascal: 55
file content (155 lines) | stat: -rw-r--r-- 5,072 bytes parent folder | download | duplicates (6)
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
146
147
148
149
150
151
152
153
154
155
/* gap_onion_main.h
 * 2001.12.10 hof (Wolfgang Hofer)
 *
 * GAP ... Gimp Animation Plugins
 *
 * This Module handles ONION Skin Layers in the GIMP Video Menu.
 * Onion Layer(s) usually do show previous (or next) frame(s)
 * of the video in the current frame.
 *
 *   Video/OnionSkin/Configuration        ... GUI to configure, create abd delete onionskin Layer(s) for framerange
 *   Video/OnionSkin/Create or Replace    ... create or replace onionskin Layer(s) and set visible.
 *   Video/OnionSkin/Delete               ... delete onionskin Layer(s)
 *   Video/OnionSkin/Toggle Visibility    ... show/hide onionskin layer(s)
 *
 */
/* 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.
 */


/* revision history:
 * 1.3.16c; 2003/07/09   hof: splitted off gap_onion_base.h
 * 1.3.14a; 2003/05/22   hof: integration into gimp-gap-1.3.14
 * 1.3.12a; 2003/05/03   hof: started port to gimp-1.3  /gtk+2.2
 * version 1.2.2a;  2001.12.10   hof: created
 */

#ifndef _GAP_ONION_MAIN_H
#define _GAP_ONION_MAIN_H
 
#include "config.h"

/* SYTEM (UNIX) includes */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>

/* #include <locale.h> */
#include <gap-intl.h>

#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>

#include <gap_match.h>
#include <gap_lib.h>
#include <gap_lock.h>
#include <gap_layer_copy.h>

#include <gap_onion_base.h>
#include <gap_vin.h>


#define GAP_PLUGIN_NAME_ONION_CFG   "plug_in_gap_onionskin_configuration"
#define GAP_HELP_ID_ONION_CFG       "plug-in-gap-onionskin-configuration"
#define GAP_PLUGIN_NAME_ONION_APPLY "plug_in_onionskin_create_or_replace"
#define GAP_PLUGIN_NAME_ONION_DEL   "plug_in_onionskin_del"
#define GAP_PLUGIN_NAME_ONION_VISI  "plug_in_onionskin_toggle_visibility"

#define GAP_ONION_RUN_CANCEL  0
#define GAP_ONION_RUN_SET     1
#define GAP_ONION_RUN_APPLY   2
#define GAP_ONION_RUN_DELETE  3

/* how many frames are kept in cache for range processing */
#define GAP_ONION_CACHE_SIZE  12


/* note: plugin mames starting with plug_in_gap_
 * cannot be used as filter in other gap functions (Video->Frames Modify)
 * that is the reason why MAKE and DEL names do not contain "gap"
 */

typedef struct GapOnionMainAinfo {
   long         first_frame_nr;
   long         last_frame_nr;
   long         curr_frame_nr;
   long         frame_cnt;
   char         basename[1024];    /* may include path */
   char         extension[50];
   gdouble      framerate;
} GapOnionMainAinfo;

typedef struct GapOnionMainImageCache {
   gint32       count;
   gint32       framenr[GAP_ONION_CACHE_SIZE];
   gint32       image_id[GAP_ONION_CACHE_SIZE];
   gint32       layer_id[GAP_ONION_CACHE_SIZE];
} GapOnionMainImageCache;



typedef struct {
  GapVinVideoInfo  vin;
  gint    run;

  GapOnionMainAinfo     ainfo;
  GapOnionMainImageCache cache;
  gint32  range_from;
  gint32  range_to;
  gint32  image_ID;        /* -1 if there is no valid current image */
  gint32  layer_ID;        /* -1 if there is no valid current image */
  GimpRunMode run_mode;
  GtkWidget *main_dialog;

  GtkWidget  *oni__entry_select_string;
  GtkWidget  *oni__combo_ref_mode;
  GtkWidget  *oni__combo_select_mode;
  GtkWidget  *oni__spinbutton_ignore_botlayers;
  GtkWidget  *oni__spinbutton_num_olayers;
  GtkWidget  *oni__spinbutton_opacity;
  GtkWidget  *oni__spinbutton_opacity_delta;
  GtkWidget  *oni__spinbutton_range_from;
  GtkWidget  *oni__spinbutton_range_to;
  GtkWidget  *oni__spinbutton_ref_delta;
  GtkWidget  *oni__spinbutton_stack_pos;
  GtkWidget  *oni__checkbutton_ref_cycle;
  GtkWidget  *oni__checkbutton_select_case;
  GtkWidget  *oni__checkbutton_select_invert;
  GtkWidget  *oni__checkbutton_stack_top;
  GtkWidget  *oni__checkbutton_asc_opacity;
  GtkWidget  *oni__checkbutton_auto_replace;
  GtkWidget  *oni__checkbutton_auto_delete;

  GtkObject  *oni__spinbutton_ignore_botlayers_adj;
  GtkObject  *oni__spinbutton_num_olayers_adj;
  GtkObject  *oni__spinbutton_opacity_adj;
  GtkObject  *oni__spinbutton_opacity_delta_adj;
  GtkObject  *oni__spinbutton_range_from_adj;
  GtkObject  *oni__spinbutton_range_to_adj;
  GtkObject  *oni__spinbutton_ref_delta_adj;
  GtkObject  *oni__spinbutton_stack_pos_adj;
} GapOnionMainGlobalParams;

extern GapOnionMainGlobalParams global_params;


#endif