src/fade.c
author Tampax86
Thu, 17 Jul 2025 22:03:19 -0400
changeset 0 b2e3aa63e96c
permissions -rw-r--r--
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     1
/*
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     2
Copyright (c) 2023 MCL Software
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     3
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     4
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”),
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     5
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     6
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     7
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     8
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
     9
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    10
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    11
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    12
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    13
*/
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    14
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    15
#include "common.h"
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    16
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    17
Uint8 alpha;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    18
bool fadeInProgress = 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    19
SDL_TimerID fadeTimer = 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    20
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    21
Uint32 fadeIn(Uint32 interval)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    22
{
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    23
    alpha -= 1;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    24
    SDL_SetRenderDrawColor(renderer, 0, 0, 0, alpha);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    25
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    26
    if(alpha == 0)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    27
    {
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    28
        SDL_RemoveTimer(fadeTimer);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    29
        return 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    30
    }
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    31
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    32
    return interval;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    33
}
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    34
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    35
Uint32 fadeOut(Uint32 interval)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    36
{
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    37
    alpha += 1;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    38
    SDL_SetRenderDrawColor(renderer, 0, 0, 0, alpha);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    39
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    40
    if(alpha == 255)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    41
    {
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    42
        SDL_RemoveTimer(fadeTimer);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    43
        return 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    44
    }
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    45
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    46
    return interval;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    47
}
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    48
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    49
bool ISOL_FadeIn(int interval)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    50
{
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    51
    if(fadeInProgress && alpha > 0)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    52
    {
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    53
        SDL_RenderFillRect(renderer, &(SDL_Rect){0, 0, SCREEN_WIDTH, SCREEN_HEIGHT});
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    54
        //SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    55
        return 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    56
    }
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    57
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    58
    else if(fadeInProgress)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    59
    {
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    60
        fadeInProgress = 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    61
        return 1;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    62
    }
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    63
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    64
    else
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    65
    {
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    66
        fadeInProgress = 1;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    67
        alpha = 255;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    68
        fadeTimer = SDL_AddTimer(interval, fadeIn, 0);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    69
        return 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    70
    }
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    71
}
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    72
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    73
bool ISOL_FadeOut(int interval)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    74
{
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    75
    if(fadeInProgress && alpha < 255)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    76
    {
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    77
        SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    78
        SDL_RenderFillRect(renderer, &(SDL_Rect){0, 0, SCREEN_WIDTH, SCREEN_HEIGHT});
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    79
        return 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    80
    }
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    81
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    82
    else if(fadeInProgress)
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    83
    {
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    84
        fadeInProgress = 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    85
        return 1;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    86
    }
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    87
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    88
    else
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    89
    {
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    90
        fadeInProgress = 1;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    91
        alpha = 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    92
        fadeTimer = SDL_AddTimer(interval, fadeOut, 0);
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    93
        return 0;
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    94
    }
b2e3aa63e96c First commit
Tampax86
parents:
diff changeset
    95
}