summaryrefslogtreecommitdiffstats
path: root/xorg/X11R7.6/rdp/rdp.h
diff options
context:
space:
mode:
Diffstat (limited to 'xorg/X11R7.6/rdp/rdp.h')
-rw-r--r--xorg/X11R7.6/rdp/rdp.h96
1 files changed, 89 insertions, 7 deletions
diff --git a/xorg/X11R7.6/rdp/rdp.h b/xorg/X11R7.6/rdp/rdp.h
index 91f50c26..63c7436a 100644
--- a/xorg/X11R7.6/rdp/rdp.h
+++ b/xorg/X11R7.6/rdp/rdp.h
@@ -95,6 +95,23 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define PixelDPI 100
#define PixelToMM(_size) (((_size) * 254 + (PixelDPI) * 5) / ((PixelDPI) * 10))
+#define TAG_COMPOSITE 0
+#define TAG_COPYAREA 1
+#define TAG_POLYFILLRECT 2
+#define TAG_PUTIMAGE 3
+#define TAG_POLYRECTANGLE 4
+#define TAG_COPYPLANE 5
+#define TAG_POLYARC 6
+#define TAG_FILLPOLYGON 7
+#define TAG_POLYFILLARC 8
+#define TAG_IMAGETEXT8 9
+#define TAG_POLYTEXT8 10
+#define TAG_POLYTEXT16 11
+#define TAG_IMAGETEXT16 12
+#define TAG_IMAGEGLYPHBLT 13
+#define TAG_POLYGLYPHBLT 14
+#define TAG_PUSHPIXELS 15
+
struct image_data
{
int width;
@@ -118,7 +135,9 @@ struct _rdpScreenInfoRec
int height;
int depth;
int bitsPerPixel;
- int sizeInBytes;
+ int sizeInBytes; /* size of current used frame buffer */
+ int sizeInBytesAlloc; /* size of current alloc frame buffer,
+ always >= sizeInBytes */
char* pfbMemory;
Pixel blackPixel;
Pixel whitePixel;
@@ -146,6 +165,8 @@ struct _rdpScreenInfoRec
CopyWindowProcPtr CopyWindow;
ClearToBackgroundProcPtr ClearToBackground;
ScreenWakeupHandlerProcPtr WakeupHandler;
+ CreatePictureProcPtr CreatePicture;
+ DestroyPictureProcPtr DestroyPicture;
CompositeProcPtr Composite;
GlyphsProcPtr Glyphs;
/* Backing store procedures */
@@ -202,6 +223,7 @@ typedef rdpWindowRec* rdpWindowPtr;
#define RDI_IMGLY 3 /* lossy */
#define RDI_LINE 4
#define RDI_SCRBLT 5
+#define RDI_TEXT 6
struct urdp_draw_item_fill
{
@@ -238,17 +260,25 @@ struct urdp_draw_item_scrblt
int cy;
};
+struct urdp_draw_item_text
+{
+ int opcode;
+ int fg_color;
+ struct rdp_text* rtext; /* in rdpglyph.h */
+};
+
union urdp_draw_item
{
struct urdp_draw_item_fill fill;
struct urdp_draw_item_img img;
struct urdp_draw_item_line line;
struct urdp_draw_item_scrblt scrblt;
+ struct urdp_draw_item_text text;
};
struct rdp_draw_item
{
- int type;
+ int type; /* RDI_FILL, RDI_IMGLL, ... */
int flags;
struct rdp_draw_item* prev;
struct rdp_draw_item* next;
@@ -265,6 +295,11 @@ struct _rdpPixmapRec
int con_number;
int is_dirty;
int is_scratch;
+ int is_alpha_dirty_not;
+ /* number of times used in a remote operation
+ if this gets above XRDP_USE_COUNT_THRESHOLD
+ then we force remote the pixmap */
+ int use_count;
int kind_width;
/* number of times used in a remote operation
if this gets above XRDP_USE_COUNT_THRESHOLD
@@ -335,6 +370,8 @@ void
hexdump(unsigned char *p, unsigned int len);
void
RegionAroundSegs(RegionPtr reg, xSegment* segs, int nseg);
+int
+get_crc(char* data, int data_bytes);
/* rdpdraw.c */
Bool
@@ -363,6 +400,9 @@ int
draw_item_add_srcblt_region(rdpPixmapRec* priv, RegionPtr reg,
int srcx, int srcy, int dstx, int dsty,
int cx, int cy);
+int
+draw_item_add_text_region(rdpPixmapRec* priv, RegionPtr reg, int color,
+ int opcode, struct rdp_text* rtext);
PixmapPtr
rdpCreatePixmap(ScreenPtr pScreen, int width, int height, int depth,
@@ -421,15 +461,19 @@ rdpDisplayCursor(ScreenPtr pScreen, CursorPtr pCursor);
void
rdpRecolorCursor(ScreenPtr pScreen, CursorPtr pCursor,
Bool displayed);
+
+/* rdpglyph.c */
+/* look in rdpglyph.h */
+
+/* rdpComposite.c */
+int
+rdpCreatePicture(PicturePtr pPicture);
+void
+rdpDestroyPicture(PicturePtr pPicture);
void
rdpComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst,
INT16 yDst, CARD16 width, CARD16 height);
-void
-rdpGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
- PictFormatPtr maskFormat,
- INT16 xSrc, INT16 ySrc, int nlists, GlyphListPtr lists,
- GlyphPtr* glyphs);
/* rdpinput.c */
int
@@ -516,6 +560,8 @@ rdpup_set_cursor_ex(short x, short y, char *cur_data, char *cur_mask, int bpp);
int
rdpup_create_os_surface(int rdpindexd, int width, int height);
int
+rdpup_create_os_surface_bpp(int rdpindexd, int width, int height, int bpp);
+int
rdpup_switch_os_surface(int rdpindex);
int
rdpup_delete_os_surface(int rdpindex);
@@ -532,7 +578,29 @@ rdpup_delete_window(WindowPtr pWindow, rdpWindowRec* priv);
int
rdpup_check_dirty(PixmapPtr pDirtyPixmap, rdpPixmapRec* pDirtyPriv);
int
+rdpup_check_alpha_dirty(PixmapPtr pDirtyPixmap, rdpPixmapRec* pDirtyPriv);
+int
rdpup_check_dirty_screen(rdpPixmapRec* pDirtyPriv);
+int
+rdpup_add_char(int font, int charactor, short x, short y, int cx, int cy,
+ char* bmpdata, int bmpdata_bytes);
+int
+rdpup_add_char_alpha(int font, int charactor, short x, short y, int cx, int cy,
+ char* bmpdata, int bmpdata_bytes);
+int
+rdpup_draw_text(int font, int flags, int mixmode,
+ short clip_left, short clip_top,
+ short clip_right, short clip_bottom,
+ short box_left, short box_top,
+ short box_right, short box_bottom, short x, short y,
+ char* data, int data_bytes);
+int
+rdpup_composite(short srcidx, int srcformat, short srcwidth, CARD8 srcrepeat,
+ PictTransform* srctransform, CARD8 mskflags,
+ short mskidx, int mskformat, short mskwidth, CARD8 mskrepeat,
+ CARD8 op, short srcx, short srcy, short mskx, short msky,
+ short dstx, short dsty, short width, short height,
+ int dstformat);
void
rdpScheduleDeferredUpdate(void);
@@ -604,6 +672,13 @@ struct stream
#endif
/******************************************************************************/
+#define out_uint8(s, v) \
+{ \
+ *((s)->p) = (unsigned char)((v) >> 0); \
+ (s)->p++; \
+}
+
+/******************************************************************************/
#define init_stream(s, v) \
{ \
if ((v) > (s)->size) \
@@ -631,6 +706,13 @@ struct stream
}
/******************************************************************************/
+#define out_uint8s(s, n) do \
+{ \
+ memset((s)->p, 0, (n)); \
+ (s)->p += (n); \
+} while (0)
+
+/******************************************************************************/
#if defined(B_ENDIAN) || defined(NEED_ALIGN)
#define out_uint32_le(s, v) \
{ \