mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-09-25 07:58:04 +03:00
205 lines
6.5 KiB
C
205 lines
6.5 KiB
C
/*
|
|
* Copyright (C) 2021 <KichikuouChrome@gmail.com>
|
|
*
|
|
* 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
|
|
*
|
|
*/
|
|
|
|
#ifndef __EFFECT_H__
|
|
#define __EFFECT_H__
|
|
|
|
#include <SDL_surface.h>
|
|
#include "ags.h"
|
|
|
|
// Effect types of the CE/CD command.
|
|
enum nact_effect {
|
|
NACT_EFFECT_PAN_IN_DOWN = 1,
|
|
NACT_EFFECT_PAN_IN_UP = 2,
|
|
NACT_EFFECT_SKIP_LINE_UP_DOWN = 3,
|
|
NACT_EFFECT_SKIP_LINE_LR_RL = 4,
|
|
NACT_SP_EFFECT_RASTER_BLEND = 5, // CD 5
|
|
NACT_EFFECT_WIPE_IN = 7,
|
|
NACT_EFFECT_WIPE_OUT = 8,
|
|
NACT_EFFECT_ZOOM_IN = 10,
|
|
NACT_EFFECT_BLIND_DOWN = 11,
|
|
NACT_EFFECT_WIPE_LR = 12,
|
|
NACT_EFFECT_WIPE_RL = 13,
|
|
NACT_EFFECT_WIPE_DOWN = 14,
|
|
NACT_EFFECT_WIPE_UP = 15,
|
|
NACT_EFFECT_WIPE_OUT_V = 18,
|
|
NACT_EFFECT_WIPE_IN_V = 19,
|
|
NACT_EFFECT_WIPE_OUT_H = 20,
|
|
NACT_EFFECT_WIPE_IN_H = 21,
|
|
NACT_EFFECT_MOSAIC = 24,
|
|
NACT_EFFECT_CIRCLE_WIPE_OUT = 25,
|
|
NACT_EFFECT_CIRCLE_WIPE_IN = 26,
|
|
NACT_EFFECT_FADEIN = 27,
|
|
NACT_EFFECT_WHITEIN = 28,
|
|
NACT_EFFECT_FADEOUT = 29,
|
|
NACT_EFFECT_WHITEOUT = 30,
|
|
NACT_EFFECT_CROSSFADE = 31,
|
|
NACT_EFFECT_CROSSFADE_MOSAIC = 32,
|
|
NACT_EFFECT_BLIND_UP = 33,
|
|
NACT_EFFECT_BLIND_UP_DOWN = 34,
|
|
NACT_EFFECT_CROSSFADE_DOWN = 35,
|
|
NACT_EFFECT_CROSSFADE_UP = 36,
|
|
NACT_EFFECT_CROSSFADE_LR = 37,
|
|
NACT_EFFECT_CROSSFADE_RL = 38,
|
|
NACT_EFFECT_BLEND_UP_DOWN = 39,
|
|
NACT_EFFECT_BLEND_LR_RL = 40,
|
|
NACT_EFFECT_CROSSFADE_LR_RL = 41,
|
|
NACT_EFFECT_CROSSFADE_UP_DOWN = 42,
|
|
NACT_EFFECT_MAGNIFY = 43,
|
|
NACT_EFFECT_PENTAGRAM_IN_OUT = 44,
|
|
NACT_EFFECT_PENTAGRAM_OUT_IN = 45,
|
|
NACT_EFFECT_HEXAGRAM_IN_OUT = 46,
|
|
NACT_EFFECT_HEXAGRAM_OUT_IN = 47,
|
|
NACT_EFFECT_BLIND_LR = 48,
|
|
NACT_EFFECT_BLIND_RL = 49,
|
|
NACT_EFFECT_WINDMILL = 50,
|
|
NACT_EFFECT_WINDMILL_180 = 51,
|
|
NACT_EFFECT_WINDMILL_360 = 52,
|
|
NACT_EFFECT_LINEAR_BLUR = 53,
|
|
NACT_EFFECT_PALETTE_SHIFT = 1001, // CD command only
|
|
};
|
|
|
|
// Effect types of SCAT.DrawEffect and Gpx.EffectCopy.
|
|
enum sact_effect {
|
|
SACT_EFFECT_CROSSFADE = 1,
|
|
SACT_EFFECT_FADEOUT = 2,
|
|
SACT_EFFECT_FADEIN = 3,
|
|
SACT_EFFECT_WHITEOUT = 4,
|
|
SACT_EFFECT_WHITEIN = 5,
|
|
SACT_EFFECT_CROSSFADE_MOSAIC = 6,
|
|
SACT_EFFECT_BLIND_DOWN = 7,
|
|
SACT_EFFECT_BLIND_LR = 8,
|
|
SACT_EFFECT_BLIND_DOWN_LR = 9,
|
|
SACT_EFFECT_ZOOM_BLEND_BLUR = 10,
|
|
SACT_EFFECT_LINEAR_BLUR = 11,
|
|
SACT_EFFECT_CROSSFADE_DOWN = 12,
|
|
SACT_EFFECT_CROSSFADE_UP = 13,
|
|
SACT_EFFECT_PENTAGRAM_IN_OUT = 14,
|
|
SACT_EFFECT_PENTAGRAM_OUT_IN = 15,
|
|
SACT_EFFECT_HEXAGRAM_IN_OUT = 16,
|
|
SACT_EFFECT_HEXAGRAM_OUT_IN = 17,
|
|
SACT_EFFECT_AMAP_CROSSFADE = 18,
|
|
SACT_EFFECT_LINEAR_BLUR_VERT = 19,
|
|
SACT_EFFECT_ROTATE_OUT = 20,
|
|
SACT_EFFECT_ROTATE_IN = 21,
|
|
SACT_EFFECT_ROTATE_OUT_CW = 22,
|
|
SACT_EFFECT_ROTATE_IN_CW = 23,
|
|
SACT_EFFECT_BLOCK_DISSOLVE = 24,
|
|
SACT_EFFECT_POLYGON_ROTATE_Y = 25,
|
|
SACT_EFFECT_POLYGON_ROTATE_Y_CW = 26,
|
|
SACT_EFFECT_OSCILLATE = 27,
|
|
SACT_EFFECT_POLYGON_ROTATE_X = 28,
|
|
SACT_EFFECT_POLYGON_ROTATE_X_CW = 29,
|
|
SACT_EFFECT_ROTATE_ZOOM_BLEND_BLUR = 30,
|
|
SACT_EFFECT_ZIGZAG_CROSSFADE = 31,
|
|
SACT_EFFECT_TV_SWITCH_OFF = 32,
|
|
SACT_EFFECT_TV_SWITCH_ON = 33,
|
|
SACT_EFFECT_POLYGON_EXPLOSION = 34,
|
|
SACT_EFFECT_NOISE_CROSSFADE = 35,
|
|
SACT_EFFECT_TURN_PAGE = 36,
|
|
SACT_EFFECT_SEPIA_NOISE_CROSSFADE = 37,
|
|
SACT_EFFECT_CRUMPLED_PAPER_PULL = 38,
|
|
SACT_EFFECT_HORIZONTAL_ZIGZAG = 39,
|
|
};
|
|
|
|
// Internal effect numbers.
|
|
enum effect_type {
|
|
EFFECT_INVALID,
|
|
EFFECT_CROSSFADE,
|
|
EFFECT_FADEOUT,
|
|
EFFECT_FADEOUT_FROM_NEW,
|
|
EFFECT_FADEIN,
|
|
EFFECT_WHITEOUT,
|
|
EFFECT_WHITEOUT_FROM_NEW,
|
|
EFFECT_WHITEIN,
|
|
EFFECT_DITHERING_FADEOUT,
|
|
EFFECT_DITHERING_FADEIN,
|
|
EFFECT_DITHERING_WHITEOUT,
|
|
EFFECT_DITHERING_WHITEIN,
|
|
EFFECT_PAN_IN_DOWN,
|
|
EFFECT_PAN_IN_UP,
|
|
EFFECT_SKIP_LINE_UP_DOWN,
|
|
EFFECT_SKIP_LINE_LR_RL,
|
|
EFFECT_WIPE_IN,
|
|
EFFECT_WIPE_OUT,
|
|
EFFECT_WIPE_LR,
|
|
EFFECT_WIPE_RL,
|
|
EFFECT_WIPE_DOWN,
|
|
EFFECT_WIPE_UP,
|
|
EFFECT_WIPE_OUT_V,
|
|
EFFECT_WIPE_IN_V,
|
|
EFFECT_WIPE_OUT_H,
|
|
EFFECT_WIPE_IN_H,
|
|
EFFECT_CIRCLE_WIPE_OUT,
|
|
EFFECT_CIRCLE_WIPE_IN,
|
|
EFFECT_BLIND_DOWN,
|
|
EFFECT_BLIND_UP,
|
|
EFFECT_BLIND_LR,
|
|
EFFECT_BLIND_RL,
|
|
EFFECT_BLIND_UP_DOWN,
|
|
EFFECT_BLIND_DOWN_LR,
|
|
EFFECT_BLEND_UP_DOWN,
|
|
EFFECT_BLEND_LR_RL,
|
|
EFFECT_CROSSFADE_DOWN,
|
|
EFFECT_CROSSFADE_UP,
|
|
EFFECT_CROSSFADE_LR,
|
|
EFFECT_CROSSFADE_RL,
|
|
EFFECT_CROSSFADE_LR_RL,
|
|
EFFECT_CROSSFADE_UP_DOWN,
|
|
EFFECT_CROSSFADE_MOSAIC,
|
|
EFFECT_MOSAIC,
|
|
EFFECT_ZOOM_BLEND_BLUR,
|
|
EFFECT_LINEAR_BLUR,
|
|
EFFECT_LINEAR_BLUR_VERT,
|
|
EFFECT_PENTAGRAM_IN_OUT,
|
|
EFFECT_PENTAGRAM_OUT_IN,
|
|
EFFECT_HEXAGRAM_IN_OUT,
|
|
EFFECT_HEXAGRAM_OUT_IN,
|
|
EFFECT_WINDMILL,
|
|
EFFECT_WINDMILL_180,
|
|
EFFECT_WINDMILL_360,
|
|
EFFECT_ZOOM_IN,
|
|
EFFECT_ROTATE_OUT,
|
|
EFFECT_ROTATE_IN,
|
|
EFFECT_ROTATE_OUT_CW,
|
|
EFFECT_ROTATE_IN_CW,
|
|
EFFECT_POLYGON_ROTATE_Y,
|
|
EFFECT_POLYGON_ROTATE_Y_CW,
|
|
EFFECT_POLYGON_ROTATE_X,
|
|
EFFECT_POLYGON_ROTATE_X_CW,
|
|
EFFECT_ZIGZAG_CROSSFADE,
|
|
EFFECT_MAGNIFY,
|
|
EFFECT_RASTER_BLEND,
|
|
EFFECT_SACTAMASK,
|
|
};
|
|
|
|
enum effect_type from_nact_effect(enum nact_effect effect);
|
|
enum effect_type from_nact_sprite_effect(enum nact_effect effect);
|
|
enum effect_type from_sact_effect(enum sact_effect effect);
|
|
|
|
struct effect;
|
|
struct effect *effect_init(SDL_Rect *rect, surface_t *old, int ox, int oy, surface_t *new, int nx, int ny, enum effect_type effect);
|
|
struct effect *sprite_effect_init(SDL_Rect *rect, int dx, int dy, int sx, int sy, int col, enum effect_type type);
|
|
struct effect *effect_magnify_init(surface_t *surface, SDL_Rect *view_rect, SDL_Rect *target_rect);
|
|
struct effect *effect_sactamask_init(SDL_Surface *mask);
|
|
void effect_step(struct effect *eff, float progress);
|
|
void effect_finish(struct effect *eff);
|
|
|
|
#endif /* __EFFECT_H__ */
|