GCC Code Coverage Report


Directory: src/gate/
File: src/gate/encode/texticons.c
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 0 17 0.0%
Functions: 0 2 0.0%
Branches: 0 8 0.0%

Line Branch Exec Source
1 /* GATE PROJECT LICENSE:
2 +----------------------------------------------------------------------------+
3 | Copyright(c) 2018-2025, Stefan Meislinger <sm@opengate.at> |
4 | All rights reserved. |
5 | |
6 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met:|
8 | |
9 | 1. Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. |
11 | 2. Redistributions in binary form must reproduce the above copyright |
12 | notice, this list of conditions and the following disclaimer in the |
13 | documentation and/or other materials provided with the distribution. |
14 | |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"|
16 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
17 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
18 | ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
19 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
20 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
21 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
22 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
23 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
24 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
25 | THE POSSIBILITY OF SUCH DAMAGE. |
26 +----------------------------------------------------------------------------+
27 */
28
29 #include "gate/encode/texticons.h"
30 #include "gate/results.h"
31
32 typedef struct gate_encode_unicode_icon
33 {
34 gate_char32_t unicode;
35 char const* shortcode;
36 char const* emoticon;
37 } gate_encode_unicode_icon_t;
38
39
40
41
42 #define GATE_ENCODE_TEXTICON_NONE 0x0
43
44 static gate_encode_unicode_icon_t global_unicode_icons[] =
45 {
46 { GATE_ENCODE_TEXTICON_SMILE, "smile", "" },
47 { GATE_ENCODE_TEXTICON_GRIN, "grin", "" },
48 { GATE_ENCODE_TEXTICON_SAD, "sad", "" },
49 { GATE_ENCODE_TEXTICON_FROWN, "frown", "" },
50 { GATE_ENCODE_TEXTICON_TONGUE, "tongue", "" },
51 { GATE_ENCODE_TEXTICON_WINK, "wink", "" },
52 { GATE_ENCODE_TEXTICON_GLASSES, "glasses", "" },
53 { GATE_ENCODE_TEXTICON_ANGRY, "angry", "" },
54 { GATE_ENCODE_TEXTICON_GRUMPY, "grumpy", "" },
55 { GATE_ENCODE_TEXTICON_CRY, "cry", "" },
56 { GATE_ENCODE_TEXTICON_DEVIL, "devil", "" },
57 { GATE_ENCODE_TEXTICON_ANGEL, "angel", "" },
58 { GATE_ENCODE_TEXTICON_KISS, "kiss", "" },
59 { GATE_ENCODE_TEXTICON_HEART, "heart", "" },
60 { GATE_ENCODE_TEXTICON_CONFUSED, "confused", "" },
61 { GATE_ENCODE_TEXTICON_LIKE, "like", "" },
62 { GATE_ENCODE_TEXTICON_DISLIKE, "dislike", "" },
63
64 { GATE_ENCODE_TEXTICON_SUN, "sun", "" },
65 { GATE_ENCODE_TEXTICON_CLOUD, "cloud", "" },
66 { GATE_ENCODE_TEXTICON_CUP, "cup", "" },
67 { GATE_ENCODE_TEXTICON_SKULL, "skull", "" },
68 { GATE_ENCODE_TEXTICON_RECYCLE, "recycle", "" },
69 { GATE_ENCODE_TEXTICON_ANCHOR, "anchor", "" },
70 { GATE_ENCODE_TEXTICON_WARNING, "warning", "" },
71 { GATE_ENCODE_TEXTICON_FLASH, "flash", "" },
72 { GATE_ENCODE_TEXTICON_STAR, "star", "" },
73 { GATE_ENCODE_TEXTICON_STOP, "stop", "" },
74 { GATE_ENCODE_TEXTICON_HAMMER, "hammer", "" },
75 { GATE_ENCODE_TEXTICON_GEAR, "gear", "" },
76 { GATE_ENCODE_TEXTICON_HOURGLASS, "hourglass", "" },
77 { GATE_ENCODE_TEXTICON_ACCEPT, "accept", "" },
78 { GATE_ENCODE_TEXTICON_DELETE, "delete", "" },
79 { GATE_ENCODE_TEXTICON_PENCIL, "pencil", "" },
80 { GATE_ENCODE_TEXTICON_SCISSORS, "scissors", "" },
81 { GATE_ENCODE_TEXTICON_ENVELOPE, "envelope", "" },
82 { GATE_ENCODE_TEXTICON_GLOBE, "globe", "" },
83 { GATE_ENCODE_TEXTICON_TEMPERATURE, "temperature", "" },
84 { GATE_ENCODE_TEXTICON_MOON, "moon", "" },
85 { GATE_ENCODE_TEXTICON_SLIDER, "slider", "" },
86 { GATE_ENCODE_TEXTICON_MOVIE, "movie", "" },
87 { GATE_ENCODE_TEXTICON_PALETTE, "palette", "" },
88 { GATE_ENCODE_TEXTICON_MICROPHONE, "microphone", "" },
89 { GATE_ENCODE_TEXTICON_HEADSET, "headset", "" },
90 { GATE_ENCODE_TEXTICON_GAMEPAD, "gamepad", "" },
91 { GATE_ENCODE_TEXTICON_MUSIC, "music", "" },
92 { GATE_ENCODE_TEXTICON_RUNNER, "runner", "" },
93 { GATE_ENCODE_TEXTICON_HOUSE, "house", "" },
94 { GATE_ENCODE_TEXTICON_FLAG, "flag", "" },
95 { GATE_ENCODE_TEXTICON_LABELTAG, "label", "" },
96 { GATE_ENCODE_TEXTICON_EYE, "eye", "" },
97 { GATE_ENCODE_TEXTICON_BOY, "boy", "" },
98 { GATE_ENCODE_TEXTICON_GIRL, "girl", "" },
99 { GATE_ENCODE_TEXTICON_BULB, "bulb", "" },
100 { GATE_ENCODE_TEXTICON_BOMB, "bomb", "" },
101 { GATE_ENCODE_TEXTICON_SPEECHBALLOON, "speechballoon","" },
102 { GATE_ENCODE_TEXTICON_COMPUTER, "computer", "" },
103 { GATE_ENCODE_TEXTICON_FLOPPY, "floppy", "" },
104 { GATE_ENCODE_TEXTICON_CDROM, "cdrom", "" },
105 { GATE_ENCODE_TEXTICON_BOOK, "book", "" },
106 { GATE_ENCODE_TEXTICON_PHONE, "phone", "" },
107 { GATE_ENCODE_TEXTICON_SATRECEIVER, "satreceiver", "" },
108 { GATE_ENCODE_TEXTICON_PACKET, "packet", "" },
109 { GATE_ENCODE_TEXTICON_MAILBOX, "mailbox", "" },
110 { GATE_ENCODE_TEXTICON_SMARTPHONE, "smartphone", "" },
111 { GATE_ENCODE_TEXTICON_SIGNALQUALITY, "signalquality","" },
112 { GATE_ENCODE_TEXTICON_CAMERA, "camera", "" },
113 { GATE_ENCODE_TEXTICON_VIDEOCAMERA, "videocamera", "" },
114 { GATE_ENCODE_TEXTICON_TELEVISION, "television", "" },
115 { GATE_ENCODE_TEXTICON_VOLUME_MIN, "volumemin", "" },
116 { GATE_ENCODE_TEXTICON_VOLUME_MAX, "volumemax", "" },
117 { GATE_ENCODE_TEXTICON_PLUG, "plug", "" },
118 { GATE_ENCODE_TEXTICON_SEARCH, "search", "" },
119 { GATE_ENCODE_TEXTICON_KEY, "key", "" },
120 { GATE_ENCODE_TEXTICON_LOCKED, "locked", "" },
121 { GATE_ENCODE_TEXTICON_UNLOCKED, "unlocked", "" },
122 { GATE_ENCODE_TEXTICON_WRENCH, "wrench", "" },
123 { GATE_ENCODE_TEXTICON_FIRE, "fire", "" },
124 { GATE_ENCODE_TEXTICON_FLASHLIGHT, "flashlight", "" },
125 { GATE_ENCODE_TEXTICON_TRASHCAN, "trashcan", "" },
126 { GATE_ENCODE_TEXTICON_CALENDAR, "calendar", "" },
127 { GATE_ENCODE_TEXTICON_PRINTER, "printer", "" },
128 { GATE_ENCODE_TEXTICON_MAP, "worldmap", "" },
129 { GATE_ENCODE_TEXTICON_BATTERY, "battery", "" },
130 { GATE_ENCODE_TEXTICON_JOYSTICK, "joystick", "" },
131 { GATE_ENCODE_TEXTICON_KEYBOARD, "keyboard", "" },
132 { GATE_ENCODE_TEXTICON_COMPUTERMOUSE, "computermouse","" },
133 { GATE_ENCODE_TEXTICON_NETWORK, "network", "" },
134 { GATE_ENCODE_TEXTICON_IMAGE, "image", "" },
135 { GATE_ENCODE_TEXTICON_TRAFFICLIGHT, "trafficlight", "" },
136 { GATE_ENCODE_TEXTICON_SHOPPINGCART, "shoppingcart", "" },
137 { GATE_ENCODE_TEXTICON_COMPRESSION, "compression", "" },
138 { GATE_ENCODE_TEXTICON_LINK, "link", "" },
139 { GATE_ENCODE_TEXTICON_SCREEN, "screen", "" },
140 { GATE_ENCODE_TEXTICON_TEXTDOCUMENT, "textdocument", "" },
141 { GATE_ENCODE_TEXTICON_IMAGEDOCUMENT, "imagedocument","" },
142 { GATE_ENCODE_TEXTICON_EDIT, "edit", "" },
143 { GATE_ENCODE_TEXTICON_PUSHPIN, "pushpin", "" },
144 { GATE_ENCODE_TEXTICON_RULER, "ruler", "" },
145 { GATE_ENCODE_TEXTICON_CHART, "chart", "" },
146 { GATE_ENCODE_TEXTICON_FOLDER, "folder", "" },
147 { GATE_ENCODE_TEXTICON_FOLDEROPEN, "folderopen", "" },
148 { GATE_ENCODE_TEXTICON_NEWSPAPER, "newspaper", "" },
149 { GATE_ENCODE_TEXTICON_APPMENU, "appmenu", "" },
150 { GATE_ENCODE_TEXTICON_TABSTOP, "tabstop", "" },
151 { GATE_ENCODE_TEXTICON_ENTER, "enter", "" },
152 { GATE_ENCODE_TEXTICON_UP, "up", "" },
153 { GATE_ENCODE_TEXTICON_DOWN, "down", "" },
154 { GATE_ENCODE_TEXTICON_LEFT, "left", "" },
155 { GATE_ENCODE_TEXTICON_RIGHT, "right", "" },
156 { GATE_ENCODE_TEXTICON_PLAYERSTART, "playerstart", "" },
157 { GATE_ENCODE_TEXTICON_PLAYERPAUSE, "playerpause", "" },
158 { GATE_ENCODE_TEXTICON_PLAYERSTOP, "playerstop", "" },
159 { GATE_ENCODE_TEXTICON_PLAYERNEXT, "playernext", "" },
160 { GATE_ENCODE_TEXTICON_PLAYERPREV, "playerprev", "" },
161 { GATE_ENCODE_TEXTICON_PLAYEREJECT, "playereject", "" },
162 { GATE_ENCODE_TEXTICON_PLAYERRECORD, "playerrecord", "" },
163 { GATE_ENCODE_TEXTICON_INFO, "info", "" },
164 { GATE_ENCODE_TEXTICON_ROCKET, "rocket", "" },
165 { GATE_ENCODE_TEXTICON_TRUCK, "truck", "" },
166 { GATE_ENCODE_TEXTICON_CAR, "car", "" },
167 { GATE_ENCODE_TEXTICON_TRAIN, "train", "" },
168 { GATE_ENCODE_TEXTICON_SHIP, "ship", "" },
169 { GATE_ENCODE_TEXTICON_BUS, "bus", "" },
170 { GATE_ENCODE_TEXTICON_PLANE, "plane", "" },
171 { GATE_ENCODE_TEXTICON_MONEY, "money", "" },
172 { GATE_ENCODE_TEXTICON_CLOCK, "clock", "" },
173 { GATE_ENCODE_TEXTICON_COMPASS, "compass", "" },
174 { GATE_ENCODE_TEXTICON_MEAL, "meal", "" },
175 { GATE_ENCODE_TEXTICON_TARGET, "target", "" },
176
177 { 0, "", "" }
178 };
179
180 gate_result_t gate_texticon_enum(gate_texticon_enum_callback_t callback, void* user_param)
181 {
182 gate_size_t count = sizeof(global_unicode_icons) / sizeof(global_unicode_icons[0]) - 1;
183 gate_encode_unicode_icon_t const* ptr = &global_unicode_icons[0];
184 while (count-- != 0)
185 {
186 if (!callback(ptr->unicode, user_param, ptr->shortcode))
187 {
188 return GATE_RESULT_CANCELED;
189 }
190 ++ptr;
191 }
192 return GATE_RESULT_OK;
193 }
194 gate_result_t gate_texticon_description(gate_uint32_t icon_char, char const** ptr_descr)
195 {
196 gate_size_t count = sizeof(global_unicode_icons) / sizeof(global_unicode_icons[0]);
197 gate_encode_unicode_icon_t const* ptr = &global_unicode_icons[0];
198 while (count-- != 0)
199 {
200 if (ptr->unicode == icon_char)
201 {
202 *ptr_descr = ptr->shortcode;
203 return GATE_RESULT_OK;
204 }
205 ++ptr;
206 }
207 return GATE_RESULT_NOMATCH;
208 }
209
210
211