GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: gx_system_pen_flick_test.c Lines: 19 19 100.0 %
Date: 2024-12-05 08:52:37 Branches: 10 10 100.0 %

Line Branch Exec Source
1
/***************************************************************************
2
 * Copyright (c) 2024 Microsoft Corporation
3
 *
4
 * This program and the accompanying materials are made available under the
5
 * terms of the MIT License which is available at
6
 * https://opensource.org/licenses/MIT.
7
 *
8
 * SPDX-License-Identifier: MIT
9
 **************************************************************************/
10
11
12
/**************************************************************************/
13
/**************************************************************************/
14
/**                                                                       */
15
/** GUIX Component                                                        */
16
/**                                                                       */
17
/**   System Management (System)                                          */
18
/**                                                                       */
19
/**************************************************************************/
20
21
#define GX_SOURCE_CODE
22
23
24
/* Include necessary system files.  */
25
26
#include "gx_api.h"
27
#include "gx_system.h"
28
29
/**************************************************************************/
30
/*                                                                        */
31
/*  FUNCTION                                               RELEASE        */
32
/*                                                                        */
33
/*    _gx_system_pen_flick_test                           PORTABLE C      */
34
/*                                                           6.1.11       */
35
/*  AUTHOR                                                                */
36
/*                                                                        */
37
/*    Kenneth Maxwell, Microsoft Corporation                              */
38
/*                                                                        */
39
/*  DESCRIPTION                                                           */
40
/*                                                                        */
41
/*    This service tests for pen flick event.                             */
42
/*                                                                        */
43
/*  INPUT                                                                 */
44
/*                                                                        */
45
/*    event                                 Pointer to event              */
46
/*                                                                        */
47
/*  OUTPUT                                                                */
48
/*                                                                        */
49
/*    status                                Completion status             */
50
/*                                                                        */
51
/*  CALLS                                                                 */
52
/*                                                                        */
53
/*    tx_time_get                           Get current timer tick        */
54
/*    GX_ABS                                Compute the absolute value    */
55
/*    tx_queue_send                         Send message through ThreadX  */
56
/*                                            queue                       */
57
/*                                                                        */
58
/*  CALLED BY                                                             */
59
/*                                                                        */
60
/*    _gx_system_event_send                 Send GUIX event               */
61
/*                                                                        */
62
/*  RELEASE HISTORY                                                       */
63
/*                                                                        */
64
/*    DATE              NAME                      DESCRIPTION             */
65
/*                                                                        */
66
/*  05-19-2020     Kenneth Maxwell          Initial Version 6.0           */
67
/*  09-30-2020     Kenneth Maxwell          Modified comment(s),          */
68
/*                                            resulting in version 6.1    */
69
/*  04-25-2022     Ting Zhu                 Modified comment(s),          */
70
/*                                            added a new parameter,      */
71
/*                                            resulting in version 6.1.11 */
72
/*                                                                        */
73
/**************************************************************************/
74
9300
VOID _gx_system_pen_flick_test(GX_WIDGET *target)
75
{
76
GX_EVENT flick_event;
77
INT      abs_speed_x;
78
INT      abs_speed_y;
79
ULONG    current_clock;
80
81
9300
    flick_event.gx_event_type = 0;
82
83
#ifdef GX_THREADX_BINDING
84
9300
    current_clock = tx_time_get();
85
#else
86
    current_clock = GX_SYSTEM_TIME_GET;
87
#endif
88
89
9300
    _gx_system_clock_delta = (LONG)(current_clock - _gx_system_last_clock);
90
91
9300
    if (_gx_system_clock_delta < (LONG)_gx_system_pen_configuration.gx_pen_configuration_max_pen_speed_ticks)
92
    {
93
8979
        abs_speed_x = GX_ABS(_gx_system_pen_speed_x);
94
8979
        abs_speed_y = GX_ABS(_gx_system_pen_speed_y);
95
96
8979
        if (abs_speed_y > abs_speed_x)
97
        {
98
24
            if (abs_speed_y > (INT)_gx_system_pen_configuration.gx_pen_configuration_min_drag_dist)
99
            {
100
23
                flick_event.gx_event_type = GX_EVENT_VERTICAL_FLICK;
101
23
                flick_event.gx_event_payload.gx_event_intdata[0] = _gx_system_pen_speed_y;
102
            }
103
        }
104
        else
105
        {
106
8955
            if (abs_speed_x > (INT)_gx_system_pen_configuration.gx_pen_configuration_min_drag_dist)
107
            {
108
66
                flick_event.gx_event_type = GX_EVENT_HORIZONTAL_FLICK;
109
66
                flick_event.gx_event_payload.gx_event_intdata[0] = _gx_system_pen_speed_x;
110
            }
111
        }
112
    }
113
9300
    if (flick_event.gx_event_type)
114
    {
115
89
        flick_event.gx_event_target = target;
116
89
        flick_event.gx_event_sender = 0;
117
118
#ifdef GX_THREADX_BINDING
119
89
        tx_queue_send(&_gx_system_event_queue, &flick_event, TX_NO_WAIT);
120
#else
121
        GX_EVENT_PUSH(&flick_event);
122
#endif
123
    }
124
9300
}
125