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 |
|
|
|