1 #ifndef BACKGROUND_H_INCLUDED
2 #define BACKGROUND_H_INCLUDED
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #define 	BGFLAG_FILE	(1<<1)	/* if not FILE then MyStyle or CMD */
9 #define 	BGFLAG_MYSTYLE	(1<<2)
10 #define   	BGFLAG_CUT	(1<<3)
11 #define   	BGFLAG_TINT	(1<<4)
12 #define   	BGFLAG_SCALE	(1<<5)
13 #define   	BGFLAG_ALIGN	(1<<6)
14 #define 	BGFLAG_ALIGN_CENTER  (1<<7)
15 #define 	BGFLAG_ALIGN_RIGHT   (1<<8)
16 #define 	BGFLAG_ALIGN_BOTTOM  (1<<9)
17 #define   	BGFLAG_PAD	(1<<10)
18 #define 	BGFLAG_PAD_VERT (1<<11)
19 #define 	BGFLAG_PAD_HOR	(1<<12)
20 #define 	BGFLAG_BAD	(1<<14)
21 #define 	BGFLAG_COMPLETE	(1<<15)
22 
23 typedef union
24   {
25 	Atom atom;
26 	Pixmap pixmap;
27   }
28 StoredBackData;
29 
30 typedef struct ASDeskBack
31   {
32 	unsigned long desk;
33 	Atom data_type;		/* XA_PIXMAP if Pixmap 0 if InternAtom */
34 	StoredBackData data;
35 	Atom MyStyle;		/* we should watch for MyStyles's updates
36 				   if this is not NULL */
37   }
38 ASDeskBack;
39 
40 typedef struct
41   {
42 	ASDeskBack *desks;
43 	unsigned long desks_num;
44   }
45 ASDeskBackArray;
46 
47 ASDeskBack *FindDeskBack (ASDeskBackArray * backs, long desk);
48 int IsPurePixmap (ASDeskBack * back);
49 void SetRootPixmapPropertyID (Atom id);
50 void BackgroundSetForDesk (ASDeskBackArray * backs, long desk);
51 void FreeDeskBackArray (ASDeskBackArray * backs, int free_pixmaps);
52 ASDeskBackArray *UpdateDeskBackArray (ASDeskBackArray * old_info, ASDeskBackArray * new_info);
53 
54 #define AS_BACKGROUND_ATOM_DEF   {None,"_AS_BACKGROUND", XA_INTEGER}
55 #define XROOTPMAP_ID_ATOM_DEF    {None,"_XROOTPMAP_ID", XA_PIXMAP}
56 
57 void SetBackgroundsProperty (ASDeskBackArray * backs, Atom property);
58 void GetBackgroundsProperty (ASDeskBackArray * backs, Atom property);
59 
60 #ifdef DEBUG_BACKGROUNDS
61 void PrintDeskBackArray (ASDeskBackArray * backs);
62 #else
63 #define PrintDeskBackArray(x)
64 #endif
65 
66 #ifdef __cplusplus
67 }
68 #endif
69 
70 
71 #endif
72