summaryrefslogtreecommitdiffstats
path: root/xup
diff options
context:
space:
mode:
authorJim Grandy <jgrandy@authentic8.com>2013-07-03 15:57:00 -0700
committerJim Grandy <jgrandy@authentic8.com>2013-07-26 12:25:01 -0700
commit86ee28fe9a206703711c7d100131caa1a81b624b (patch)
treeb6ff1c553ec37c5111f4342dced7df8b836ea0a7 /xup
parentcac958fc3747979f68330a79ca88f0a0d47d27fd (diff)
downloadxrdp-proprietary-86ee28fe9a206703711c7d100131caa1a81b624b.tar.gz
xrdp-proprietary-86ee28fe9a206703711c7d100131caa1a81b624b.zip
Hand-apply patches (glyph cache) from Authentic8 branch: 653869c 30f23d4 74b015d 4e51e6d 2829087
Diffstat (limited to 'xup')
-rw-r--r--xup/xup.c54
-rw-r--r--xup/xup.h5
2 files changed, 58 insertions, 1 deletions
diff --git a/xup/xup.c b/xup/xup.c
index 9fdfef71..19d77155 100644
--- a/xup/xup.c
+++ b/xup/xup.c
@@ -555,6 +555,18 @@ lib_mod_process_orders(struct mod *mod, int type, struct stream *s)
int fgcolor;
int bgcolor;
int opcode;
+ int charactor;
+ int font;
+ int flags;
+ int mixmode;
+ int clip_left;
+ int clip_top;
+ int clip_right;
+ int clip_bottom;
+ int box_left;
+ int box_top;
+ int box_right;
+ int box_bottom;
char *bmpdata;
char cur_data[32 * (32 * 3)];
char cur_mask[32 * (32 / 8)];
@@ -680,6 +692,48 @@ lib_mod_process_orders(struct mod *mod, int type, struct stream *s)
case 27: /* server_window_new_update - show */
rv = process_server_window_show(mod, s);
break;
+ case 28: /* server_add_char */
+ in_uint16_le(s, font);
+ in_uint16_le(s, charactor);
+ in_sint16_le(s, x);
+ in_sint16_le(s, y);
+ in_uint16_le(s, cx);
+ in_uint16_le(s, cy);
+ in_uint16_le(s, len_bmpdata);
+ in_uint8p(s, bmpdata, len_bmpdata);
+ rv = mod->server_add_char(mod, font, charactor, x, y, cx, cy, bmpdata);
+ break;
+ case 29: /* server_add_char_alpha */
+ in_uint16_le(s, font);
+ in_uint16_le(s, charactor);
+ in_sint16_le(s, x);
+ in_sint16_le(s, y);
+ in_uint16_le(s, cx);
+ in_uint16_le(s, cy);
+ in_uint16_le(s, len_bmpdata);
+ in_uint8p(s, bmpdata, len_bmpdata);
+ rv = mod->server_add_char_alpha(mod, font, charactor, x, y, cx, cy, bmpdata);
+ break;
+ case 30: /* server_draw_text */
+ in_uint16_le(s, font);
+ in_uint16_le(s, flags);
+ in_uint16_le(s, mixmode);
+ in_sint16_le(s, clip_left);
+ in_sint16_le(s, clip_top);
+ in_sint16_le(s, clip_right);
+ in_sint16_le(s, clip_bottom);
+ in_sint16_le(s, box_left);
+ in_sint16_le(s, box_top);
+ in_sint16_le(s, box_right);
+ in_sint16_le(s, box_bottom);
+ in_sint16_le(s, x);
+ in_sint16_le(s, y);
+ in_uint16_le(s, len_bmpdata);
+ in_uint8p(s, bmpdata, len_bmpdata);
+ rv = mod->server_draw_text(mod, font, flags, mixmode, clip_left, clip_top,
+ clip_right, clip_bottom, box_left, box_top,
+ box_right, box_bottom, x, y, bmpdata, len_bmpdata);
+ break;
case 51: /* server_set_pointer_ex */
rv = process_server_set_pointer_ex(mod, s);
break;
diff --git a/xup/xup.h b/xup/xup.h
index a7956915..93465695 100644
--- a/xup/xup.h
+++ b/xup/xup.h
@@ -119,8 +119,11 @@ struct mod
int flags);
int (*server_set_cursor_ex)(struct mod* v, int x, int y, char* data,
char* mask, int bpp);
+ int (*server_add_char_alpha)(struct mod* v, int font, int charactor,
+ int offset, int baseline,
+ int width, int height, char* data);
- tbus server_dumby[100 - 38]; /* align, 100 minus the number of server
+ tbus server_dumby[100 - 39]; /* align, 100 minus the number of server
functions above */
/* common */
tbus handle; /* pointer to self as long */