diff options
Diffstat (limited to 'engines/sci/gfx/gfx_widgets.h')
-rw-r--r-- | engines/sci/gfx/gfx_widgets.h | 477 |
1 files changed, 0 insertions, 477 deletions
diff --git a/engines/sci/gfx/gfx_widgets.h b/engines/sci/gfx/gfx_widgets.h deleted file mode 100644 index d30af8ce4e..0000000000 --- a/engines/sci/gfx/gfx_widgets.h +++ /dev/null @@ -1,477 +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$ - * - */ - -#include "sci/sci.h" // for INCLUDE_OLDGFX -#ifdef INCLUDE_OLDGFX - -#ifndef SCI_GFX_GFX_WIDGETS_H -#define SCI_GFX_GFX_WIDGETS_H - -#include "common/rect.h" - -#include "sci/engine/vm.h" -#include "sci/gfx/gfx_system.h" -#include "sci/gfx/operations.h" - -namespace Sci { -/** @name Widget Graphical State Management */ -/** @{ */ - -struct GfxState; -struct GfxBox; -struct GfxDynView; -struct GfxContainer; -struct GfxList; -struct GfxPort; -struct GfxPrimitive; -struct gfxw_snapshot_t; -struct GfxText; -struct GfxView; -struct GfxVisual; -struct GfxWidget; - - -/* Enable the next line to keep a list of pointers to all widgets, with up to the specified amount -** of members (/SLOW/) */ -//#define GFXW_DEBUG_WIDGETS 2048 - -/* Terminology -** -** Two special terms are used in here: /equivalent/ and /clear/. Their meanings -** in this context are as follows: -** -** /clear/: Clearing a widget means overwriting the space it occupies in the back -** buffer with data from the static buffer. This affects both the visual and the -** priority buffer, the static buffer (and any effect the widget may have had on -** it) is not touched. -** -** /equivalent/: Two Widgets A and B are equivalent if and only if either of the -** following conditions is met: -** a) Both A and B are text widgets, and they occupy the same bounding rectangle. -** b) Both A and B are dynview widgets, and they have the same unique ID -** Note that /equivalent/ is not really an equivalence relation- while it is ob- -** viously transitive and symmetrical, it is not reflexive (e.g. a box widget -** is not /equivalent/ to itself), although this might be a nice addition for the -** future. -*/ - - -/*********************************/ -/* Fundamental widget operations */ -/*********************************/ - - -/* gfxw_point_zero is declared in gfx/widgets.cpp */ -extern Common::Point gfxw_point_zero; - -/*********************/ -/* Widget operations */ -/*********************/ - -/* These are for documentation purposes only. The actual declarations are in -** gfx_state_internal.h. -** -** -** ************************** -** ** Container operations ** -** ************************** -** -** -** -- free_tagged(GfxContainer *self) -** Frees all tagged resources in the container -** Parameters: (GfxContainer *) self: self reference -** Returns : (int) 0 -** The container itself is never freed in this way. -** -** -** -- free_contents(GfxContainer *self) -** Frees all resources contained in the container -** Parameters: (GfxContainer *) self: self reference -** Returns : (int) 0 -** -** -** -- add_dirty_abs(GfxContainer *self, rect_t dirty, int propagate) -** Adds a dirty rectangle to the container's list of dirty rects -** Parameters: (GfxContainer *) self: self reference -** (rect_t) dirty: The rectangular screen area that is to be flagged -** as dirty, absolute to the screen -** (int) propagate: Whether the dirty rect should be propagated to the -** widget's parents -** Returns : (int) 0 -** Transparent containers will usually pass this value to their next ancestor, -** because areas below them might have to be redrawn. -** -** -** -- add_dirty_rel(GfxContainer *self, rect_t dirty, int propagate) -** Adds a dirty rectangle to the container's list of dirty rects -** Parameters: (GfxContainer *) self: self reference -** (rect_t) dirty: The rectangular screen area that is to be flagged -** as dirty, relative to the widget -** (int) propagate: Whether the dirty rect should be propagated to the -** widget's parents -** Returns : (int) 0 -** Transparent containers will usually pass this value to their next ancestor, -** because areas below them might have to be redrawn. -** -** -** -- add(GfxContainer *self, GfxWidget *widget) -** Adds a widget to the list of contained widgets -** Parameters: (GfxContainer *) self: self reference -** (GfxWidget *) widget: The widget to add -** Returns : (int) 0 -** Sorted lists sort their content into the list rather than adding it to the -** end. -*/ - - -/***************************/ -/* Basic widget generation */ -/***************************/ - -/*-- Primitive types --*/ - -/** - * Creates a new box - * - * The graphics state, if non-NULL, is used here for some optimizations. - * - * @param[in] state The (optional) state - * @param[in] area The box's dimensions, relative to its container - * widget - * @param[in] color1 The primary color - * @param[in] color2 The secondary color (ignored if shading is disabled) - * @param[in] shade_type The shade type for the box - * @return The resulting box widget - */ -GfxBox *gfxw_new_box(GfxState *state, rect_t area, gfx_color_t color1, gfx_color_t color2, gfx_box_shade_t shade_type); - -/** - * Creates a new rectangle - * - * @param[in] rect The rectangle area - * @param[in] color The rectangle's color - * @param[in] line_mode The line mode for the lines that make up the - * rectangle - * @param[in] line_style The rectangle's lines' style - * @return The newly allocated rectangle widget (a Primitive) - */ -GfxPrimitive *gfxw_new_rect(rect_t rect, gfx_color_t color, - gfx_line_mode_t line_mode, gfx_line_style_t line_style); - -/** - * Creates a new line - * - * @param[in] start The line's origin - * @param[in] end The line's end point - * @param[in] color The line's color - * @param[in] line_mode The line mode to use for drawing - * @param[in] line_style The line style - * @return The newly allocated line widget (a Primitive) - */ -GfxPrimitive *gfxw_new_line(Common::Point start, Common::Point end, - gfx_color_t color, gfx_line_mode_t line_mode, gfx_line_style_t line_style); - -/** View flags */ -enum { - GFXW_VIEW_FLAG_STATIC = (1 << 0), /**< Whether the view should be static */ - GFXW_VIEW_FLAG_DONT_MODIFY_OFFSET = (1 << 1) /**< Whether the view should _not_ apply its x/y offset modifyers */ -}; - -/** - * Creates a new view (a cel, actually) - * - * @param[in] state The graphics state - * @param[in] pos The position to place the view at - * @param[in] view The global cel ID - * @param[in] loop The global cel ID - * @param[in] cel The global cel ID - * @param[in] palette The palette to use - * @param[in] priority The priority to use for drawing, or -1 for none - * @param[in] control The value to write to the control map, or -1 for none - * @param[in] halign Horizontal cel alignment - * @param[in] valign Vertical cel alignment - * @param[in] flags Any combination of GFXW_VIEW_FLAGs - * @return A newly allocated cel according to the specs - */ -GfxView *gfxw_new_view(GfxState *state, Common::Point pos, int view, int loop, - int cel, int palette, int priority, int control, gfx_alignment_t halign, - gfx_alignment_t valign, int flags); - - -/** - * Creates a new dyn view - * - * Dynamic views are non-pic views with a unique global identifyer. This allows for drawing optimizations when they move or change shape. - * - * @param[in] state The graphics state - * @param[in] pos The position to place the dynamic view at - * @param[in] z The z coordinate - * @param[in] view The global cel ID - * @param[in] loop The global cel ID - * @param[in] cel The global cel ID - * @param[in] palette The palette to use - * @param[in] priority The priority to use for drawing, or -1 for none - * @param[in] control The value to write to the control map, or -1 for none - * @param[in] halign Horizontal cel alignment - * @param[in] valign Vertical cel alignment - * @param[in] sequence Sequence number: When sorting dynviews, this number is - * considered last for sorting (ascending order) - * @return A newly allocated cel according to the specs - */ -GfxDynView *gfxw_new_dyn_view(GfxState *state, Common::Point pos, int z, - int view, int loop, int cel, int palette, int priority, int control, - gfx_alignment_t halign, gfx_alignment_t valign, int sequence); - -/** - * Creates a new text widget - * - * @param[in] state The state the text is to be calculated from - * @param[in] area The area the text is to be confined to (the yl value is - * only relevant for text aligment, though) - * @param[in] font The number of the font to use - * @param[in] text String to put in text widget - * @param[in] halign Horizontal text alignment - * @param[in] valign Vertical text alignment - * @param[in] color1 Text foreground colors (if not equal, the foreground is - * dithered between them) - * @param[in] color2 Text foreground colors (if not equal, the foreground is - * dithered between them) - * @param[in] bgcolor Text background color - * @param[in] flags GFXR_FONT_FLAGs, orred together (see gfx_resource.h) - * @return The resulting text widget - */ -GfxText *gfxw_new_text(GfxState *state, rect_t area, int font, const char *text, - gfx_alignment_t halign, gfx_alignment_t valign, gfx_color_t color1, - gfx_color_t color2, gfx_color_t bgcolor, int flags); - -/** - * Determines text widget meta-information - * - * @param[in] state The state to operate on - * @param[in] text The widget to query - * @param[out] lines_nr Number of lines used in the text - * @param[out] lineheight Pixel height (SCI scale) of each text line - * @param[out] offset Pixel offset (SCI scale) of the space after the last - * character in the last line - */ -void gfxw_text_info(GfxState *state, GfxText *text, int *lines_nr, - int *lineheight, int *offset); - -/** - * Sets a widget's ID - * - * A widget ID is unique within the container it is stored in, if and only if it - * was added to that container with gfxw_add(). This function handles widget == - * NULL gracefully (by doing nothing and returning NULL). - * - * @param[in] widget The widget whose ID should be set - * @param[in] ID The ID to set - * @param[in] subID The ID to set - * @return The widget - */ -GfxWidget *gfxw_set_id(GfxWidget *widget, int ID, int subID); - -/** - * Finds a widget with a specific ID in a container and removes it from there - * - * Search is non-recursive; widgets with IDs hidden in subcontainers will not - * be found. - * - * @param[in] container The container to search in - * @param[in] ID The ID to look for - * @param[in] subID The subID to look for, or GFXW_NO_ID for any - * @return The resulting widget or NULL if no match was found - */ -GfxWidget *gfxw_remove_id(GfxContainer *container, int ID, int subID); - -/** - * Initializes a dyn view's interpreter attributes - * - * @param[in] widget The widget affected - * @param[in] under_bits Interpreter-dependant data - * @param[in] under_bitsp Interpreter-dependant data - * @param[in] signal Interpreter-dependant data - * @param[in] signalp Interpreter-dependant data - * @return The widget - */ -GfxDynView *gfxw_dyn_view_set_params(GfxDynView *widget, int under_bits, - const ObjVarRef& under_bitsp, int signal, const ObjVarRef& signalp); - -/** - * Makes a widget invisible without removing it from the list of widgets - * - * Has no effect on invisible widgets - * - * @param[in] widget The widget to invisibilize - * @return The widget - */ -GfxWidget *gfxw_hide_widget(GfxWidget *widget); - -/** - * Makes an invisible widget reappear - * - * Does not affect visible widgets - * - * @param[in] widget The widget to show again - * @return The widget - */ -GfxWidget *gfxw_show_widget(GfxWidget *widget); - -/** - * Marks a widget as "abandoned" - * - * @param[in] widget The widget to abandon - * @return The widget - */ -GfxWidget *gfxw_abandon_widget(GfxWidget *widget); - -/** Container types */ -enum { - GFXW_LIST_UNSORTED = 0, - GFXW_LIST_SORTED = 1 -}; - -/** - * Creates a new list widget - * - * List widgets are also referred to as Display Lists. - * - * @param[in] area The area covered by the list (absolute position) - * @param[in] sorted Whether the list should be a sorted list - * @return A newly allocated list widget - */ -GfxList *gfxw_new_list(rect_t area, int sorted); - -/** - * Retrieves the default port from a visual - * - * The 'default port' is the last port to be instantiated; usually the topmost - * or highest-ranking port. - * - * @param[in] visual The visual the port should be retrieved from - * @return The default port, or NULL if no port is present - */ -GfxPort *gfxw_find_default_port(GfxVisual *visual); - -/** - * Sets rectangle to be restored upon port removal - * - * @param[in] visual The visual to operate on - * @param[in] window The affected window - * @param[in] auto_rect The area to restore - */ -void gfxw_port_set_auto_restore(GfxVisual *visual, GfxPort *window, rect_t auto_rect); - -/** - * Removes a port from a visual - * - * @param[in] visual The visual the port should be removed from - * @param[in] port The port to remove - * @return port's parent port, or NULL if it had none - */ -GfxPort *gfxw_remove_port(GfxVisual *visual, GfxPort *port); - -/** - * Removes the widget from the specified port - * - * @param[in] container The container it should be removed from - * @param[in] widget The widget to remove - */ -void gfxw_remove_widget_from_container(GfxContainer *container, GfxWidget *widget); - -/** - * Makes a "snapshot" of a visual - * - * It's not really a full qualified snaphot, though. See gfxw_restore_snapshot - * for a full discussion. This operation also increases the global serial number - * counter by one. - * - * @param[in] visual The visual a snapshot is to be taken of - * @param[in] area The area a snapshot should be taken of - * @return The resulting, newly allocated snapshot - */ -gfxw_snapshot_t *gfxw_make_snapshot(GfxVisual *visual, rect_t area); - -/** - * Predicate to test whether a widget would be destroyed by applying a snapshot - * - * @param[in] snapshot The snapshot to test against - * @param[in] widget The widget to test - * @return An appropriate boolean value - */ -int gfxw_widget_matches_snapshot(gfxw_snapshot_t *snapshot, GfxWidget *widget); - -/** - * Restores a snapshot to a visual - * - * The snapshot is not really restored; only more recent widgets touching - * the snapshotted area are destroyed. - * - * @param[in] visual The visual to operate on - * @param[in] snapshot The snapshot to restore - * @return The snapshot (still needs to be freed) - */ -gfxw_snapshot_t *gfxw_restore_snapshot(GfxVisual *visual, gfxw_snapshot_t *snapshot); - -/** - * As widget->widfree(widget), but destroys all overlapping widgets - * - * This operation calls widget->widfree(widget), but it also destroys all - * widgets with a higher or equal priority drawn after this widget. - * - * @param[in] widget The widget to use - */ -void gfxw_annihilate(GfxWidget *widget); - -/** - * Turns a dynview into a picview - * - * The only changes are in function and type variables, actually. - * - * @param[in] dynview The victim - * @return The victim, after his transformation - */ -GfxDynView *gfxw_picviewize_dynview(GfxDynView *dynview); - -/** - * Tags a window widget as automatically restoring the visual background - * upon removal. - * - * Also records the specified background rectangle, for later recovery. - * - * @param[in] visual The base visual - * @param[in] window The window to tag - * @param[in] auto_rect The background to remember - - */ -void gfxw_port_auto_restore_background(GfxVisual *visual, GfxPort *window, - rect_t auto_rect); - -/** @} */ -} // End of namespace Sci - -#endif // SCI_GFX_GFX_WIDGETS_H - -#endif |