blob: efbd4e90b8936bcdbfdf37e650cb5058a04729dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/*
standard and shared mem X11 images
Copyright (C) 2000 Martin Vogt
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published by
the Free Software Foundation.
For more information look at the file COPYRIGHT in this package
*/
#ifndef __IMAGEDESKX11_H
#define __IMAGEDESKX11_H
#include <limits.h>
#include "xinit.h"
#include "../imageBase.h"
#define VIDEO_XI_NONE 0x00 /* No access defined */
#define VIDEO_XI_STANDARD 0x01 /* Use standard Xlib calls */
#define VIDEO_XI_SHMSTD 0X02 /* Use Xlib shared memory extension */
/**
Displays and renders X11 images in software with the help
of the ditherWrapper class.
*/
class ImageDeskX11 : public ImageBase {
#ifdef X11_SHARED_MEM
XShmSegmentInfo *shmseginfo;
#endif
unsigned char *virtualscreen;
int videoaccesstype;
XImage *ximage;
int lSupport;
int XShmMajor,XShmMinor;
Bool XShmPixmaps;
XWindow* xWindow;
int imageMode;
DitherWrapper* ditherWrapper;
int iOffsetX;
int iOffsetY;
int iWidth;
int iHeight;
#ifdef X11_XVIDMODE
XF86VidModeModeInfo **vm_modelines;
int iOldMode;
#endif
bool bZoom;
public:
ImageDeskX11();
~ImageDeskX11();
void init(XWindow* xWindow, YUVPicture* pic = NULL);
int support();
int openImage(int ditherSize);
int closeImage();
void ditherImage(YUVPicture* pic);
void putImage();
private:
int createImage(int createType,int size);
int destroyImage();
bool switchMode(int width, int height, bool zoom);
};
#endif
|