aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/gfx/operations.h
diff options
context:
space:
mode:
authorFilippos Karapetis2010-01-05 00:54:53 +0000
committerFilippos Karapetis2010-01-05 00:54:53 +0000
commitf66d5a7f534ad2869aecfcacc90bf337cc33571e (patch)
tree9a163a79eca70af6f7cf9cbe0f6f53fac692f93b /engines/sci/gfx/operations.h
parent86cad51d0798ddad02fadc2380f39a8db2aa30fa (diff)
downloadscummvm-rg350-f66d5a7f534ad2869aecfcacc90bf337cc33571e.tar.gz
scummvm-rg350-f66d5a7f534ad2869aecfcacc90bf337cc33571e.tar.bz2
scummvm-rg350-f66d5a7f534ad2869aecfcacc90bf337cc33571e.zip
SCI: Removed the old graphics code
svn-id: r47005
Diffstat (limited to 'engines/sci/gfx/operations.h')
-rw-r--r--engines/sci/gfx/operations.h530
1 files changed, 0 insertions, 530 deletions
diff --git a/engines/sci/gfx/operations.h b/engines/sci/gfx/operations.h
deleted file mode 100644
index bc8b27b846..0000000000
--- a/engines/sci/gfx/operations.h
+++ /dev/null
@@ -1,530 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-/* Graphical operations, called from the widget state manager */
-
-#ifndef SCI_GFX_GFX_OPERATIONS_H
-#define SCI_GFX_GFX_OPERATIONS_H
-
-#include "sci/sci.h" // for INCLUDE_OLDGFX
-#ifdef INCLUDE_OLDGFX
-#include "sci/gfx/gfx_resmgr.h"
-#include "sci/gfx/gfx_tools.h"
-#include "sci/gfx/gfx_system.h"
-#endif
-
-#include "common/list.h"
-
-namespace Sci {
-
-#ifdef INCLUDE_OLDGFX
-
-struct TextFragment;
-
-/* Threshold in color index mode to differentiate between visible and non-visible stuff.
-** GFXOP_ALPHA_THRESHOLD itself should be treated as non-visible.
-*/
-#define GFXOP_ALPHA_THRESHOLD 0xff
-
-struct TextHandle {
- Common::String _text; /**< Copy of the actual text */
-
- int line_height;
- Common::Array<TextFragment> lines; /**< Text offsets */
- gfx_bitmap_font_t *font;
- Common::Array<gfx_pixmap_t *> text_pixmaps;
-
- int width, height;
-
- int priority, control;
- gfx_alignment_t halign, valign;
-
- TextHandle();
- ~TextHandle();
-};
-
-/* Unless individually stated otherwise, the following applies:
-** All operations herein apply to the standard 320x200 coordinate system.
-** All operations perform clipping relative to state->clip_zone.
-*/
-
-enum gfx_box_shade_t {
- GFX_BOX_SHADE_FLAT,
- GFX_BOX_SHADE_RIGHT,
- GFX_BOX_SHADE_LEFT,
- GFX_BOX_SHADE_DOWN,
- GFX_BOX_SHADE_UP
-#if 0
- /* possible with alphaing, but there is no way to check for
- ** alpha capability of gfx_driver->draw_filled_rect() yet
- */
- , GFX_BOX_SHADE_RIGHT_DOWN,
- GFX_BOX_SHADE_LEFT_DOWN,
- GFX_BOX_SHADE_RIGHT_UP,
- GFX_BOX_SHADE_LEFT_UP
-#endif
-};
-
-
-typedef Common::List<rect_t> DirtyRectList;
-
-#endif // INCLUDE_OLDGFX
-
-struct GfxState {
-#ifdef INCLUDE_OLDGFX
- rect_t clip_zone_unscaled; /**< The current UNSCALED clipping zone */
- rect_t clip_zone; /**< The current SCALED clipping zone; a cached scaled version of clip_zone_unscaled */
-
- GfxDriver *driver;
-
- int visible_map;
-
- GfxResManager *gfxResMan;
-
- gfx_pixmap_t *priority_map; /**< back buffer priority map (unscaled) */
- gfx_pixmap_t *static_priority_map; /**< static buffer priority map (unscaled) */
- gfx_pixmap_t *control_map; /**< back buffer control map (only exists unscaled in the first place) */
-
-
- int tag_mode; /**< Set to 1 after a new pic is drawn and the resource manager has tagged all resources. Reset after the next front buffer update is done, when all resources that are still tagged are flushed. */
-
- int disable_dirty; /**< Set to 1 to disable dirty rect accounting */
-
- int pic_nr; /**< Number of the current pic */
- int palette_nr; /**< Palette number of the current pic */
-
- gfxr_pic_t *pic, *pic_unscaled; /**< The background picture and its unscaled equivalent */
- rect_t pic_port_bounds; /**< Picture port bounds */
-
- DirtyRectList _dirtyRects; /**< Dirty rectangles */
-#endif
-};
-
-
-#ifdef INCLUDE_OLDGFX
-
-
-/** @name Fundamental operations */
-/** @{ */
-
-/**
- * Initializes a graphics mode.
- *
- * @param[in] state The state to initialize
- * @param[in] scaleFactor Scale factor
- * @param[in] mode Graphics mode to use
- * @param[in] resMan Resource manager to use
- */
-void gfxop_init(GfxState *state, ResourceManager *resMan,
- SciGuiScreen *screen, SciGuiPalette *palette, int scaleFactor = 1);
-
-/**
- * Deinitializes a currently active driver.
- *
- * @param[in] state The state encapsulating the driver in question
- */
-void gfxop_exit(GfxState *state);
-
-/**
- * Calculates a bit mask calculated from some pixels on the specified
- * map.
- *
- * @param[in] state The state containing the pixels to scan
- * @param[in] area The area to check
- * @param[in] map The GFX_MASKed map(s) to test
- * @return An integer value where, for each 0 <= i <= 15, bit i is set
- * iff there exists a map for which the corresponding bit was
- * set in the 'map' parameter and for which there exists a
- * pixel within the specified area so that the pixel's lower 4
- * bits, interpreted as an integer value, equal i. (Short
- * version: This is an implementation of "on_control()").
- */
-int gfxop_scan_bitmask(GfxState *state, rect_t area, gfx_map_mask_t map);
-
-/**
- * Sets a new clipping zone.
- *
- * @param[in] state The affected state
- * @param[in] zone The new clipping zone
- */
-void gfxop_set_clip_zone(GfxState *state, rect_t zone);
-/** @} */
-
-
-/** @name Generic drawing operations */
-/** @{ */
-
-/**
- * Renders a clipped line to the back buffer.
- *
- * @param[in] state The state affected
- * @param[in] start Starting point of the line
- * @param[in] end End point of the line
- * @param[in] color The color to use for drawing
- * @param[in] line_mode Any valid line mode to use
- * @param[in] line_style The line style to use
- */
-void gfxop_draw_line(GfxState *state,
- Common::Point start, Common::Point end, gfx_color_t color,
- gfx_line_mode_t line_mode, gfx_line_style_t line_style);
-
-/**
- * Draws a non-filled rectangular box to the back buffer.
- *
- * Boxes drawn in thin lines will surround the minimal area described by rect.
- *
- * @param[in] state The affected state
- * @param[in] rect The rectangular area the box is drawn to
- * @param[in] color The color the box is to be drawn in
- * @param[in] line_mode The line mode to use
- * @param[in] line_style The line style to use for the box
- */
-void gfxop_draw_rectangle(GfxState *state, rect_t rect, gfx_color_t color,
- gfx_line_mode_t line_mode, gfx_line_style_t line_style);
-
-/**
- * Draws a filled box to the back buffer.
- *
- * The draw mask, control, and priority values are derived from color1.
- *
- * @param[in] state The affected state
- * @param[in] box The area to draw to
- * @param[in] color1 The primary color to use for drawing
- * @param[in] color2 The secondary color to draw in
- * @param[in] shade_type The shading system to use (e.g. GFX_BOX_SHADE_FLAT)
- */
-void gfxop_draw_box(GfxState *state, rect_t box, gfx_color_t color1,
- gfx_color_t color2, gfx_box_shade_t shade_type);
-
-/**
- * Fills a box in the back buffer with a specific color.
- *
- * This is a simple wrapper function for gfxop_draw_box
- *
- * @param[in] state The state to draw to
- * @param[in] box The box to fill
- * @param[in] color The color to use for filling
- */
-void gfxop_fill_box(GfxState *state, rect_t box, gfx_color_t color);
-
-/**
- * Copies a box from the static buffer to the back buffer.
- *
- * @param[in] state The affected state
- * @param[in] box The box to propagate from the static buffer
- */
-void gfxop_clear_box(GfxState *state, rect_t box);
-
-
-/**
- * Updates all dirty rectangles.
- *
- * In order to track dirty rectangles, they must be enabled in the options. This
- * function instructs the resource manager to free all tagged data on certain
- * occasions (see gfxop_new_pic).
- *
- * @param[in] state The relevant state
- */
-void gfxop_update(GfxState *state);
-
-
-/**
- * Propagates a box from the back buffer to the front (visible) buffer.
- *
- * This function instructs the resource manager to free all tagged data on
- * certain occasions (see gfxop_new_pic). When called with dirty rectangle
- * management enabled, it will automatically propagate all dirty rectangles as
- * well, UNLESS dirty frame accounting has been disabled explicitly.
- *
- * @param[in] state The affected state
- * @param[in] box The box to propagate to the front buffer
- */
-void gfxop_update_box(GfxState *state, rect_t box);
-
-/**
- * Enables dirty frame accounting.
- *
- * Dirty frame accounting is enabled by default.
- *
- * @param[in] state The state dirty frame accounting is to be enabled in
- */
-void gfxop_enable_dirty_frames(GfxState *state);
-
-/**
- * Disables dirty frame accounting.
- *
- * @param[in] state The state dirty frame accounting is to be disabled in
- */
-void gfxop_disable_dirty_frames(GfxState *state);
-/** @} */
-
-
-/** @name Color operations */
-/** @{ */
-
-/**
- * Maps an r/g/b value to a color and sets a gfx_color_t structure.
- *
- * In palette mode, this may allocate a new color. If any of the r/g/b values
- * are less than zero, the resulting color will not affect the visual map when
- * used for drawing
- *
- * @param[in] state The current state
- * @param[in] color Pointer to the structure to write to
- * @param[in] r The red color intensity values of the result color
- * @param[in] g The green color intensity values of the result color
- * @param[in] b The blue color intensity values of the result color
- * @param[in] a The alpha (transparency) value, with 0x00 meaning
- * absolutely opaque and 0xff meaning fully transparent.
- * Alpha blending support is optional for drivers, so these
- * are the only two values that are guaranteed to work as
- * intended. Any value in between them must guarantee the
- * following opaqueness: opaqueness(x-1) >= opaqueness(x)
- * >= opaqueness (x+1) (i.e. ([0,255],
- * less-transparent-than) must define a partial order)
- * @param[in] priority The priority to use for drawing, or -1 for none
- * @param[in] control The control to use for drawing, or -1 to disable drawing
- * to the control map
- */
-void gfxop_set_color(GfxState *state, gfx_color_t *color, int r, int g, int b,
- int a, int priority, int control);
-
-/** @} */
-
-/** @name View operations */
-/** @{ */
-
-/**
- * Retrieves the width and height of a cel.
- *
- * @param[in] state The state to use
- * @param[in] nr Number of the view
- * @param[in] loop Loop number to examine
- * @param[in] cel The cel (inside the loop) to look up
- * @param[in] width The variable the width will be stored in
- * @param[in] height The variable the height will be stored in
- * @param[in] offset The variable the cel's x/y offset will be stored in
- */
-void gfxop_get_cel_parameters(GfxState *state, int nr, int loop, int cel,
- int *width, int *height, Common::Point *offset);
-
-/**
- * Draws (part of) a cel to the back buffer.
- *
- * @param[in] state The state encapsulating the driver to draw with
- * @param[in] nr Number of the view to draw
- * @param[in] loop Loop of the cel to draw
- * @param[in] cel The cel number of the cel to draw
- * @param[in] pos The positino the cel is to be drawn to
- * @param[in] color The priority and control values to use for drawing
- * @param[in] palette The palette to use
- */
-void gfxop_draw_cel(GfxState *state, int nr, int loop, int cel,
- Common::Point pos, gfx_color_t color, int palette);
-
-
-/**
- * Draws a cel to the static buffer; no clipping is performed.
- *
- * No clipping (except for the display borders) is performed.
- *
- * @param[in] state The state encapsulating the driver to draw with
- * @param[in] nr Number of the view to draw
- * @param[in] loop Loop of the cel to draw
- * @param[in] cel The cel number of the cel to draw
- * @param[in] pos The positino the cel is to be drawn to
- * @param[in] color The priority and control values to use for drawing
- * @param[in] palette The palette to use
- */
-void gfxop_draw_cel_static(GfxState *state, int nr, int loop, int cel,
- Common::Point pos, gfx_color_t color, int palette);
-
-
-/**
- * Draws (part of) a clipped cel to the static buffer.
- *
- * This function does clip.
- *
- * @param[in] state The state encapsulating the driver to draw with
- * @param[in] nr Number of the view to draw
- * @param[in] loop Loop of the cel to draw
- * @param[in] cel The cel number of the cel to draw
- * @param[in] pos The positino the cel is to be drawn to
- * @param[in] color The priority and control values to use for drawing
- * @param[in] palette The palette to use
- */
-void gfxop_draw_cel_static_clipped(GfxState *state, int nr, int loop, int cel,
- Common::Point pos, gfx_color_t color, int palette);
-/** @} */
-
-
-/** @name Pic operations
- * These operations are exempt from clipping */
-/** @{ */
-
-/**
- * Draws a pic and writes it over the static buffer.
- *
- * This function instructs the resource manager to tag all data as "unused".
- * See the resource manager tag functions for a full description.
- *
- * @param[in] state The state affected
- * @param[in] nr Number of the pic to draw
- * @param[in] flags Interpreter-dependant flags to use for drawing
- * @param[in] default_palette The default palette for drawing
- */
-void gfxop_new_pic(GfxState *state, int nr, int flags, int default_palette);
-
-/**
- * Adds a pic to the static buffer.
- *
- * @param[in] state The state affected
- * @param[in] nr Number of the pic to add
- * @param[in] flags Interpreter-dependant flags to use for drawing
- * @param[in] default_palette The default palette for drawing
- */
-void gfxop_add_to_pic(GfxState *state, int nr, int flags, int default_palette);
-/** @} */
-
-
-/** @name Text operations */
-
-/**
- * Calculates the width and height of a specified text in a specified
- * font.
- *
- * @param[in] state The state to use
- * @param[in] font_nr Font number to use for the calculation
- * @param[in] text The text to examine
- * @param[in] flags ORred GFXR_FONT_FLAGs
- * @param[in] maxwidth The maximum pixel width to allow for the text
- * @param[out] width The resulting width
- * @param[out] height The resulting height
- * @param[out] lines_nr Number of lines used in the text
- * @param[out] lineheight Pixel height (SCI scale) of each text line
- * @param[out] lastline_width Pixel offset (SCI scale) of the space after
- * the last character in the last line
- */
-void gfxop_get_text_params(GfxState *state, int font_nr, const char *text,
- int maxwidth, int *width, int *height, int flags,
- int *lines_nr, int *lineheight, int *lastline_width);
-
-/**
- * Generates a new text handle that can be used to draw any text.
- *
- * The control and priority values for the text will be extracted from color1.
- * Note that the colors must have been allocated properly, or the text may
- * display in incorrect colors.
- *
- * @param[in] state The state to use
- * @param[in] font_nr Font number to use for the calculation
- * @param[in] text The text to examine
- * @param[in] maxwidth: The maximum pixel width to allow for the text
- * @param[in] halign The horizontal text alignment
- * @param[in] valign The vertical text alignment
- * @param[in] color1 The text's foreground colors (the function will dither
- * between color1 and 2)
- * @param[in] color2 The text's foreground colors (the function will dither
- * between color1 and 2)
- * @param[in] bg_color The background color
- * @param[in] flags ORred GFXR_FONT_FLAGs
- * @return A newly allocated TextHandle, or NULL if font_nr was
- * invalid
- */
-TextHandle *gfxop_new_text(GfxState *state, int font_nr,
- const Common::String &text, int maxwidth, gfx_alignment_t halign,
- gfx_alignment_t valign, gfx_color_t color1, gfx_color_t color2,
- gfx_color_t bg_color, int flags);
-
-/**
- * Draws text stored in a text handle.
- *
- * @param[in] state The target state
- * @param[in] handle The text handle to use for drawing
- * @param[in] zone The rectangular box to draw to. In combination with
- * halign and valign, this defines where the text is drawn
- * to.
- */
-void gfxop_draw_text(GfxState *state, TextHandle *handle, rect_t zone);
-/** @} */
-
-
-/** @name Manual pixmap operations */
-/** @{ */
-
-/**
- * Grabs a screen section from the back buffer and stores it in a pixmap.
- *
- * Obviously, this only affects the visual map
- *
- * @param[in] state The affected state
- * @param[in] area The area to grab
- * Returns A result pixmap, or NULL on error
- */
-gfx_pixmap_t *gfxop_grab_pixmap(GfxState *state, rect_t area);
-
-/**
- * Draws part of a pixmap to the screen.
- *
- * @param[in] state The affected state
- * @param[in] pxm The pixmap to draw
- * @param[in] zone The segment of the pixmap to draw
- * @param[in] pos The position the pixmap should be drawn to
- */
-void gfxop_draw_pixmap(GfxState *state, gfx_pixmap_t *pxm, rect_t zone,
- Common::Point pos);
-
-/** @} */
-
-
-/** @name Dirty rectangle operations */
-/** @{ */
-
-/**
- * Adds a dirty rectangle to 'base' according to a strategy.
- *
- * @param[in] list the list to add to
- * @param[in] box the dirty frame to addable
- */
-void gfxdr_add_dirty(DirtyRectList &list, rect_t box);
-
-/**
- * Clips a rectangle against another one.
- *
- * @param[in] rect The rectangle to clip
- * @param[in] clipzone The outer bounds rect must be in
- * @return 1 if rect is empty now, 0 otherwise
- */
-int _gfxop_clip(rect_t *rect, rect_t clipzone);
-/** @} */
-
-#endif // INCLUDE_OLDGFX
-
-/** @name Pointer and IO ops */
-/** @{ */
-
-} // End of namespace Sci
-
-#endif // SCI_GFX_GFX_OPERATIONS_H