ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/background.h
Revision: 1.7
Committed: Wed Nov 14 22:25:41 2007 UTC (16 years, 6 months ago) by sasha
Content type: text/plain
Branch: MAIN
Changes since 1.6: +1 -0 lines
Log Message:
added destructor to bgPixmap, to cleanup after itself. That was probably the cause of the huge pixmap leak in rxvtd

File Contents

# User Rev Content
1 sasha 1.1 /*
2     * background.h
3     */
4    
5     #ifndef BACKGROUND_H_
6     #define BACKGROUND_H_
7    
8     #ifdef HAVE_AFTERIMAGE
9 sasha 1.4 # include <afterimage.h>
10     # undef min
11     # undef max
12 sasha 1.1 #endif
13    
14 sasha 1.2 #if defined(BG_IMAGE_FROM_FILE) || defined(ENABLE_TRANSPARENCY)
15 sasha 1.1 # define HAVE_BG_PIXMAP 1/* to simplify further usage */
16     struct bgPixmap_t {
17    
18 sasha 1.2 bgPixmap_t();
19 sasha 1.7 ~bgPixmap_t();
20 sasha 1.2
21 sasha 1.1 enum {
22     geometrySet = (1UL<<0),
23     propScale = (1UL<<1),
24     geometryFlags = (geometrySet|propScale),
25    
26     tintSet = (1UL<<8),
27     tintNeeded = (1UL<<9),
28     tintWholesome = (1UL<<10),
29     tintServerSide = (1UL<<11),
30     tintFlags = (tintSet|tintServerSide|tintNeeded|tintWholesome),
31     blurNeeded = (1UL<<12),
32     blurServerSide = (1UL<<13), /* this don't work yet */
33    
34     isTransparent = (1UL<<16),
35     isInvalid = (1UL<<17),
36 sasha 1.3 isVtOrigin = (1UL<<18), /* if set pixmap has origin at corner of
37 sasha 1.1 vt window instead of parent[0]! */
38 sasha 1.3 hasChanged = (1UL<<19)
39 sasha 1.1 };
40    
41     unsigned long flags;
42    
43     enum {
44     transpPmapTiled = (1UL<<0),
45     transpPmapTinted = tintNeeded,
46     transpPmapBlured = blurNeeded,
47     transpTransformations = (tintNeeded|blurNeeded)
48     }; /* this flags are returned by make_transparency_pixmap if called */
49    
50 sasha 1.3 bool check_clearChanged () { bool r = flags & hasChanged; flags &= ~hasChanged; return r; };
51 ayin 1.5
52 sasha 1.2 # ifdef BG_IMAGE_FROM_FILE
53 sasha 1.1 # ifdef HAVE_AFTERIMAGE
54     ASImage *original_asim;
55     bool render_asim (ASImage *background, ARGB32 background_tint);
56     # endif
57    
58     enum { defaultScale = 100, defaultAlign = 50 };
59    
60     unsigned int h_scale, v_scale;/* percents of the window size */
61     int h_align, v_align; /* percents of the window size:
62     0 - left align, 50 - center, 100 - right */
63     void unset_geometry () { flags = flags & ~geometryFlags; };
64     bool set_geometry (const char *geom);
65     void set_defaultGeometry ()
66     {
67     h_scale = v_scale = defaultScale;
68     h_align = v_align = defaultAlign;
69     flags |= geometrySet;
70     };
71    
72     bool set_file (const char *file);
73 sasha 1.2 # endif /* BG_IMAGE_FROM_FILE */
74 sasha 1.1
75     rxvt_term *target;
76     bool set_target (rxvt_term *new_target);
77    
78     # ifdef ENABLE_TRANSPARENCY
79     int root_depth; /* obtained when target is set */
80     Pixmap root_pixmap; /* current root pixmap set */
81     rxvt_color tint;
82     int shade;
83     int h_blurRadius, v_blurRadius;
84    
85     bool set_transparent ();
86     bool set_blur_radius (const char *geom);
87     bool set_tint (rxvt_color &new_tint);
88     bool unset_tint ();
89     bool set_shade (const char *shade_str);
90     bool set_root_pixmap ();
91    
92     unsigned long make_transparency_pixmap ();/* returns combination of the transpTransformations flags */
93     # endif
94     double invalid_since;
95    
96     Pixmap pixmap;
97     unsigned int pmap_width, pmap_height;
98     unsigned int pmap_depth;
99    
100     bool window_size_sensitive ();
101     bool window_position_sensitive () {
102     return (flags & isTransparent);
103     };
104    
105     bool is_parentOrigin () {
106     return !(flags & isVtOrigin);
107     };
108    
109     bool need_client_side_rendering ();
110     void apply ();
111     bool render ();
112     void invalidate () {
113     if (!(flags & isInvalid))
114 ayin 1.5 {
115     flags |= isInvalid;
116 root 1.6 invalid_since = ev::now ();
117 sasha 1.1 }
118     };
119     };
120     #else
121     # undef HAVE_BG_PIXMAP
122     #endif
123    
124    
125    
126     #endif /* _BACKGROUND_H_ */