diff options
Diffstat (limited to 'engines/sci/include/gfx_res_options.h')
-rw-r--r-- | engines/sci/include/gfx_res_options.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/engines/sci/include/gfx_res_options.h b/engines/sci/include/gfx_res_options.h new file mode 100644 index 0000000000..54138a8813 --- /dev/null +++ b/engines/sci/include/gfx_res_options.h @@ -0,0 +1,134 @@ +/*************************************************************************** + gfx_res_options.h Copyright (C) 2002 Christoph Reichenbach + + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public Licence as + published by the Free Software Foundaton; either version 2 of the + Licence, or (at your option) any later version. + + It is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + merchantibility or fitness for a particular purpose. See the + GNU General Public Licence for more details. + + You should have received a copy of the GNU General Public Licence + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + + Please contact the maintainer for any program-related bug reports or + inquiries. + + Current Maintainer: + + Christoph Reichenbach (CR) <jameson@linuxgames.com> + +***************************************************************************/ + +/* Configuration options for per-resource customisations */ + +#ifndef _GFX_RES_OPTIONS_H_ +#define _GFX_RES_OPTIONS_H_ + +#include <gfx_resource.h> +#include <gfx_resmgr.h> + +#define GFX_RES_PATTERN_MIN 0 +#define GFX_RES_PATTERN_MAX 65535 + +typedef struct _gfx_res_pattern { + int min, max; +} gfx_res_pattern_t; + +typedef struct _gfx_res_pattern_list { + gfx_res_pattern_t pattern; + struct _gfx_res_pattern_list *next; +} gfx_res_pattern_list_t; + + +/* GFX resource assignments */ + +#define GFX_RES_ASSIGN_TYPE_PALETTE 0 /* Assign a palette */ + +typedef struct { + short type; /* GFX_RES_ASSIGN_TYPE_* */ + + union { + struct { + int colors_nr; + gfx_pixmap_color_t *colors; + } palette; + } assign; +} gfx_res_assign_t; + + +/* GFX resource modifications */ + +#define GFX_RES_MULTIPLY_FIXED 0 /* Linear palette update */ + +typedef struct { + short type; /* GFX_RES_ASSIGN_TYPE_* */ + + union { + byte factor[3]; /* divide by 16 to retreive factor */ + } mod; +} gfx_res_mod_t; + + +typedef struct _gfx_res_conf { + int type; /* Resource type-- only one allowed */ + + /* If any of the following is 0, it means that there is no restriction. + ** Otherwise, one of the patterns associated with them must match. */ + int patterns_nr; /* Number of patterns (only 'view' patterns for views) */ + int loops_nr, cels_nr; /* Number of loop/cel patterns, for views only. + ** For pics, loops_nr identifies the palette. */ + + gfx_res_pattern_t *patterns; + + union { + gfx_res_assign_t assign; + gfx_res_mod_t mod; + } conf; /* The actual configuration */ + + struct _gfx_res_conf *next; +} gfx_res_conf_t; + + +typedef gfx_res_conf_t *gfx_res_conf_p_t; + +typedef struct { + gfx_res_conf_p_t assign[GFX_RESOURCE_TYPES_NR]; + gfx_res_conf_p_t mod[GFX_RESOURCE_TYPES_NR]; +} gfx_res_fullconf_t; + + +struct _gfx_options; + +int +gfx_update_conf(struct _gfx_options *options, + char *line); +/* Updates the configuration +** Parameters: (gfx_options_t *) options: The options list to update +** (char *) line: The text line to parse +** Modifies : (gfx_options_t *) options +** Returns : (int) 0 on success, 1 if an error occured +** The line passed to it should begin with the resource type and be +** terminated by a semicolon. +*/ + +int +gfx_get_res_config(struct _gfx_options *options, + gfx_pixmap_t *pxm); +/* Configures a graphical pixmap according to config options +** Parameters: (gfx_options_t *) options: The options according to which +** configuration should be performed +** (gfx_resource_type_t) pxm: The pixmap to configure +** Returns : (int) 0 on success, non-zero otherwise +** Modifies pxm as considered appropriate by configuration options. Does +** not do anything in colour index mode. +*/ + +#endif /* !_GFX_RES_OPTIONS_H_ */ |