Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

gifsicle.h

Go to the documentation of this file.
00001 /* gifsicle.h - Function declarations for gifsicle.
00002    Copyright (C) 1997 Eddie Kohler, eddietwo@lcs.mit.edu
00003    This file is part of gifsicle.
00004 
00005    Gifsicle is free software. It is distributed under the GNU Public License,
00006    version 2 or later; you can copy, distribute, or alter it at will, as long
00007    as this notice is kept intact and this source code is made available. There
00008    is no warranty, express or implied. */
00009 
00010 #include "gif.h"
00011 #include "clp.h"
00012 #ifdef __GNUC__
00013 #define NORETURN __attribute__ ((noreturn))
00014 #else
00015 #define NORETURN
00016 #endif
00017 
00018 typedef struct Gt_Frameset Gt_Frameset;
00019 typedef struct Gt_Crop Gt_Crop;
00020 typedef struct Gt_ColorTransform Gt_ColorTransform;
00021 
00022 typedef struct Gt_Frame {
00023   
00024   Gif_Stream *stream;
00025   Gif_Image *image;
00026   int use;
00027   
00028   char *name;
00029   int no_name;
00030   Gif_Comment *comment;
00031   int no_comments;
00032   
00033   Gif_Color transparent;
00034   int interlacing;
00035   int left;
00036   int top;
00037   
00038   Gt_Crop *crop;
00039   
00040   int delay;
00041   int disposal;
00042   
00043   Gt_Frameset *nest;
00044   int explode_by_name;
00045   
00046   int no_extensions;
00047   Gif_Extension *extensions;
00048   
00049   unsigned flip_horizontal: 1;
00050   unsigned flip_vertical: 1;
00051   unsigned colormap_info: 1;
00052   unsigned extensions_info: 1;
00053   unsigned position_is_offset: 1;
00054   unsigned rotation;
00055   
00056   const char *input_filename;
00057   
00058 } Gt_Frame;
00059 
00060 
00061 struct Gt_Frameset {
00062   int count;
00063   int cap;
00064   Gt_Frame *f;
00065 };
00066 
00067 
00068 struct Gt_Crop {
00069   int ready;
00070   int whole_stream;
00071   int spec_x;
00072   int spec_y;
00073   int spec_w;
00074   int spec_h;
00075   int x;
00076   int y;
00077   int w;
00078   int h;
00079   int left_off;
00080   int right_off;
00081 };
00082 
00083 
00084 typedef void (*colormap_transform_func)(Gif_Colormap *, void *);
00085 
00086 struct Gt_ColorTransform {
00087   Gt_ColorTransform *prev;
00088   Gt_ColorTransform *next;
00089   colormap_transform_func func;
00090   void *data;
00091 };
00092 
00093 
00094 typedef struct {
00095   
00096   char *output_name;
00097   
00098   int screen_width;
00099   int screen_height;
00100   
00101   Gif_Color background;
00102   int loopcount;
00103   
00104   int colormap_size;
00105   Gif_Colormap *colormap_fixed;
00106   int colormap_algorithm;
00107   int colormap_dither;
00108   
00109   int optimizing;
00110 
00111   int scaling;
00112   int resize_width;
00113   int resize_height;
00114   double scale_x;
00115   double scale_y;
00116   
00117 } Gt_OutputData;
00118 
00119 
00120 /*****
00121  * error & verbose
00122  **/
00123 extern const char *program_name;
00124 extern int verbosing;
00125 extern int error_count;
00126 extern int no_warnings;
00127 extern int gif_read_flags;
00128 extern int gif_write_flags;
00129 
00130 void fatal_error(char *message, ...) NORETURN;
00131 void warning(char *message, ...);
00132 void warncontext(char *message, ...);
00133 void error(char *message, ...);
00134 void clp_error_handler(char *clp_message);
00135 void usage(void);
00136 void short_usage(void);
00137 
00138 void verbose_open(char, const char *);
00139 void verbose_close(char);
00140 void verbose_endline(void);
00141 
00142 #define EXIT_OK         0
00143 #define EXIT_ERR        1
00144 #define EXIT_USER_ERR   1
00145 
00146 /*****
00147  * info &c
00148  **/
00149 void stream_info(FILE *, Gif_Stream *, const char *,
00150                  int colormaps, int extensions);
00151 void image_info(FILE *, Gif_Stream *, Gif_Image *, int colormaps);
00152 
00153 char *explode_filename(char *filename, int number, char *name, int max_nimg);
00154 
00155 /*****
00156  * merging images
00157  **/
00158 #define COLORMAP_ENSURE_SLOT_255 1
00159 void    unmark_colors(Gif_Colormap *);
00160 void    unmark_colors_2(Gif_Colormap *);
00161 int     find_color_index(Gif_Color *c, int nc, Gif_Color *);
00162 int     merge_colormap_if_possible(Gif_Colormap *, Gif_Colormap *);
00163 
00164 extern int warn_local_colormaps;
00165 void    merge_stream(Gif_Stream *dest, Gif_Stream *src, int no_comments);
00166 void    merge_comments(Gif_Comment *destc, Gif_Comment *srcc);
00167 Gif_Image *merge_image(Gif_Stream *dest, Gif_Stream *src, Gif_Image *srci);
00168 
00169 void    optimize_fragments(Gif_Stream *, int optimizeness);
00170 
00171 /*****
00172  * image/colormap transformations
00173  **/
00174 Gif_Colormap *read_colormap_file(char *, FILE *);
00175 void    apply_color_transforms(Gt_ColorTransform *, Gif_Stream *);
00176 
00177 typedef void (*color_transform_func)(Gif_Colormap *, void *);
00178 Gt_ColorTransform *append_color_transform
00179         (Gt_ColorTransform *list, color_transform_func, void *);
00180 Gt_ColorTransform *delete_color_transforms
00181         (Gt_ColorTransform *list, color_transform_func);
00182 
00183 void    color_change_transformer(Gif_Colormap *, void *);
00184 Gt_ColorTransform *append_color_change
00185         (Gt_ColorTransform *list, Gif_Color, Gif_Color);
00186 
00187 void    pipe_color_transformer(Gif_Colormap *, void *);
00188 
00189 int     crop_image(Gif_Image *, Gt_Crop *);
00190 
00191 void    flip_image(Gif_Image *, int scr_width, int scr_height, int is_vert);
00192 void    rotate_image(Gif_Image *, int scr_width, int scr_height, int rotation);
00193 void    scale_image(Gif_Stream *, Gif_Image *, double xfactor, double yfactor);
00194 void    resize_stream(Gif_Stream *, int new_width, int new_height);
00195 
00196 /*****
00197  * quantization
00198  **/
00199 Gif_Color *histogram(Gif_Stream *, int *);
00200 
00201 #define COLORMAP_DIVERSITY              0
00202 #define COLORMAP_BLEND_DIVERSITY        1
00203 #define COLORMAP_MEDIAN_CUT             2
00204 Gif_Colormap *colormap_blend_diversity(Gif_Color *, int, int);
00205 Gif_Colormap *colormap_flat_diversity(Gif_Color *, int, int);
00206 Gif_Colormap *colormap_median_cut(Gif_Color *, int, int);
00207 
00208 typedef struct color_hash_item color_hash_item;
00209 typedef void (*colormap_image_func)
00210      (Gif_Image *, byte *, Gif_Colormap *, Gif_Colormap *,
00211       color_hash_item **, u_int32_t *);
00212 
00213 void    colormap_image_posterize
00214         (Gif_Image *, byte *, Gif_Colormap *, Gif_Colormap *,
00215          color_hash_item **, u_int32_t *);
00216 void    colormap_image_floyd_steinberg
00217         (Gif_Image *, byte *, Gif_Colormap *, Gif_Colormap *,
00218          color_hash_item **, u_int32_t *);
00219 void    colormap_stream(Gif_Stream *, Gif_Colormap *, colormap_image_func);
00220 
00221 /*****
00222  * parsing stuff
00223  **/
00224 extern int      frame_spec_1;
00225 extern int      frame_spec_2;
00226 extern char *   frame_spec_name;
00227 extern int      dimensions_x;
00228 extern int      dimensions_y;
00229 extern int      position_x;
00230 extern int      position_y;
00231 extern Gif_Color parsed_color;
00232 extern Gif_Color parsed_color2;
00233 extern double   parsed_scale_factor_x;
00234 extern double   parsed_scale_factor_y;
00235 
00236 int             parse_frame_spec(Clp_Parser *, const char *, int, void *);
00237 int             parse_dimensions(Clp_Parser *, const char *, int, void *);
00238 int             parse_position(Clp_Parser *, const char *, int, void *);
00239 int             parse_scale_factor(Clp_Parser *, const char *, int, void *);
00240 int             parse_color(Clp_Parser *, const char *, int, void *);
00241 int             parse_rectangle(Clp_Parser *, const char *, int, void *);
00242 int             parse_two_colors(Clp_Parser *, const char *, int, void *);
00243 
00244 extern Gif_Stream *input;
00245 extern char *input_name;
00246 
00247 void            input_stream(char *);
00248 void            input_done(void);
00249 void            output_frames(void);
00250 
00251 /*****
00252  * stuff with frames
00253  **/
00254 extern Gt_Frame def_frame;
00255 #define         FRAME(fs, i)    ((fs)->f[i])
00256 
00257 Gt_Frameset *   new_frameset(int initial_cap);
00258 Gt_Frame *      add_frame(Gt_Frameset *, int num, Gif_Stream *, Gif_Image *);
00259 void            clear_def_frame_once_options(void);
00260 
00261 Gif_Stream *    merge_frame_interval(Gt_Frameset *, int f1, int f2,
00262                                      Gt_OutputData *, int compress);
00263 void            clear_frameset(Gt_Frameset *, int from);
00264 void            blank_frameset(Gt_Frameset *, int from, int to, int delete_ob);
 

Powered by Plone

This site conforms to the following standards: