Overview
Comment: | Add a few functions into picture.c for dealing with multibyte encodings and font sizes other than 8x8; however, this feature is not implemented yet, and only one of these functions is implemented so far. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
07386d0511b8f0ff735241b77f3c783e |
User & Date: | user on 2022-07-29 00:09:51 |
Other Links: | manifest | tags |
Context
2022-08-02
| ||
17:46 | Implement /mod and ,/mod commands check-in: defb041af6 user: user tags: trunk | |
2022-07-29
| ||
00:09 | Add a few functions into picture.c for dealing with multibyte encodings and font sizes other than 8x8; however, this feature is not implemented yet, and only one of these functions is implemented so far. check-in: 07386d0511 user: user tags: trunk | |
2022-07-28
| ||
03:23 | Fix the version_change logic in edit.c to work with the new user state format. (It no longer works with the old format, although it will automatically be upgraded in game.c anyways, so it is unlikely to need to work with the old format.) check-in: 846874b02f user: user tags: trunk | |
Changes
Modified picture.c from [e6928b82be] to [292dc50f72].
︙ | ︙ | |||
25 26 27 28 29 30 31 32 33 34 35 36 37 38 | Uint16 picture_size; int left_margin; Uint32 codepage; static SDL_Surface*picts; static Uint8*curpic; static const unsigned char*fontdata; static const char default_palette[]= "C020FF " "000000 222222 333333 444444 555555 666666 777777 888888 999999 AAAAAA BBBBBB CCCCCC DDDDDD EEEEEE FFFFFF " "281400 412300 5F3200 842100 A05000 C35F14 E1731E FF8232 FF9141 FFA050 FFAF5F FFBE73 FFD282 FFE191 FFF0A0 " "321E1E 412220 5F2830 823040 A03A4C BE4658 E15464 FF6670 FF7F7B FF8E7F FF9F7F FFAF7F FFBF7F FFCF7F FFDF7F " "280D0D 401515 602020 802A2A A03535 C04040 E04A4A FF5555 FF6764 FF6F64 FF7584 FF849D FF94B7 FF9FD1 FFAEEA " | > | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | Uint16 picture_size; int left_margin; Uint32 codepage; static SDL_Surface*picts; static Uint8*curpic; static const unsigned char*fontdata; static const Uint8 bytewidth[32]; static const char default_palette[]= "C020FF " "000000 222222 333333 444444 555555 666666 777777 888888 999999 AAAAAA BBBBBB CCCCCC DDDDDD EEEEEE FFFFFF " "281400 412300 5F3200 842100 A05000 C35F14 E1731E FF8232 FF9141 FFA050 FFAF5F FFBE73 FFD282 FFE191 FFF0A0 " "321E1E 412220 5F2830 823040 A03A4C BE4658 E15464 FF6670 FF7F7B FF8E7F FF9F7F FFAF7F FFBF7F FFCF7F FFDF7F " "280D0D 401515 602020 802A2A A03535 C04040 E04A4A FF5555 FF6764 FF6F64 FF7584 FF849D FF94B7 FF9FD1 FFAEEA " |
︙ | ︙ | |||
151 152 153 154 155 156 157 158 159 160 161 162 163 164 | ++f; } t++; if(!--len) return; pix+=8; } } int draw_text_line(int x,int y,unsigned char*t,int cur,Uint8**cp) { // To be called only when screen is locked! int len=strlen(t); const unsigned char*s=t; Uint8*pix=screen->pixels; Uint8*p; | > > > > > > > > > > > > > > > > > > | 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | ++f; } t++; if(!--len) return; pix+=8; } } void draw_text_v(int x,int y,const unsigned char*t,int bg,int fg) { // Draw text using sizes other than 8x8 and possible multibyte encodings. // To be called only when screen is locked! //TODO } int measure_text_v(const unsigned char*t,int len) { // Returns number of character cells of text (t). // If len is positive then it is the maximum number of bytes to measure. int r=0; int c; while((len<0 || len--) && (c=*t++)) { r++; if(c&0x80) r-=(bytewidth[(c&0x7C)>>2]>>((c&3)<<1))&3; } return r>0?r:0; } int draw_text_line(int x,int y,unsigned char*t,int cur,Uint8**cp) { // To be called only when screen is locked! int len=strlen(t); const unsigned char*s=t; Uint8*pix=screen->pixels; Uint8*p; |
︙ | ︙ | |||
199 200 201 202 203 204 205 206 207 208 209 210 211 212 | } if(*t=='\\') isimg=0; if(!--len || e) return t-s; t++; pix+=8; } } void draw_key(int x,int y,int k,int bg,int fg) { // To be called only when screen is locked! Uint8*p=screen->pixels; Uint16 pitch=screen->pitch; int xx,yy; const unsigned char*f; | > > > > > > > > | 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | } if(*t=='\\') isimg=0; if(!--len || e) return t-s; t++; pix+=8; } } int draw_text_line_v(int x,int y,unsigned char*t,int cur,Uint8**cp) { //TODO } int measure_text_line_v(unsigned char*t,int len,Uint8**cp) { //TODO } void draw_key(int x,int y,int k,int bg,int fg) { // To be called only when screen is locked! Uint8*p=screen->pixels; Uint16 pitch=screen->pitch; int xx,yy; const unsigned char*f; |
︙ | ︙ |