source: titan/titan/screensaver.h @ 15288

Last change on this file since 15288 was 14751, checked in by nit, 12 years ago

[titan] add flag to createfilelist

File size: 6.0 KB
Line 
1#ifndef SCREENSAVER_H
2#define SCREENSAVER_H
3
4void screensaversetfontcol(bgcol)
5{
6        if(screensaver == NULL) return;
7
8        if(screensaver->type == 0)
9        {
10                if(bgcol == 0x0)
11                        screensaver->screennode->fontcol = 0xffffff;
12                else if(bgcol == 0x00ff00)
13                        screensaver->screennode->fontcol = 0xffffff;
14                else if(bgcol == 0x0000ff)
15                        screensaver->screennode->fontcol = 0xffffff;
16                else
17                        screensaver->screennode->fontcol = 0;
18        }
19}
20
21//flag 0: textsaver jump
22//flag 1: picsaver jump
23//flag 2: picsaver scroll
24int showscreensaver()
25{
26        int mixedcol[] = {0, 0x020202, 0xBEBEBE, 0xffffff, 0xffff00, 0xff0000, 0xFFD39B, 0x00ff00, 0x0000ff};
27        int overscanx = 60, overscany = 60;
28        if(screensaver->type == 3)
29                drawscreen(skin, 0);
30        if(screensaver == NULL) return 1;
31
32        if(screensaver->type != 3)
33        {
34                srand(time(NULL));
35                if(screensaver->type == 0)
36                        changetext(screensaver->screennode, screensaver->value);
37
38                if(screensaver->newposx == screensaver->screennode->posx && screensaver->newposy == screensaver->screennode->posy)
39                {
40                        screensaver->newposx = rand() % (skinfb->width - screensaver->screennode->width - (overscanx * 2));
41                        screensaver->newposy = rand() % (skinfb->height - screensaver->screennode->height - (overscany * 2));
42                        screensaver->newposx += overscanx;
43                        screensaver->newposy += overscany;
44                }
45
46                if(screensaver->type == 0 || screensaver->type == 1)
47                {
48                        screensaver->screennode->posx = screensaver->newposx;
49                        screensaver->screennode->posy = screensaver->newposy;
50                }
51
52                if(screensaver->type == 2)
53                {
54                        if(screensaver->newposx > screensaver->screennode->posx) screensaver->screennode->posx += 1;
55                        if(screensaver->newposx < screensaver->screennode->posx) screensaver->screennode->posx -= 1;
56                        if(screensaver->newposy > screensaver->screennode->posy) screensaver->screennode->posy += 1;
57                        if(screensaver->newposy < screensaver->screennode->posy) screensaver->screennode->posy -= 1;
58                }
59
60                if(ostrcmp(getconfig("screensaver_background_color", NULL), "mixed") == 0)
61                {
62                        int maxcol = sizeof(mixedcol) / sizeof(int);
63                        screensaver->screen->bgcol = mixedcol[rand() % maxcol];
64                        screensaversetfontcol(screensaver->screen->bgcol);
65                }
66                else
67                {
68                        screensaver->screen->bgcol = getconfigint("screensaver_background_color", NULL);
69                        screensaversetfontcol(screensaver->screen->bgcol);
70                }
71                drawscreen(screensaver->screen, 0);
72        }
73
74        if(screensaver->type == 3)
75        {
76                if(file_exist(screensaver->path))
77                {
78                        char* path = NULL;
79               
80                        if(screensaver->aktnode == NULL)
81                                screensaver->aktnode = screensaver->filelist;
82                        while(screensaver->aktnode != NULL)
83                        {
84                                if(screensaver->aktnode->del == FILELISTDELMARK && screensaver->aktnode->text != NULL && screensaver->aktnode->input == 0)
85                                {
86                                        path = ostrcat(path, screensaver->path, 1, 0);
87                                        path = ostrcat(path, "/", 1, 0);
88                                        path = ostrcat(path, screensaver->aktnode->text, 1, 0);
89                                        debug(90, "singlepicstart %s", path);
90                                        if(screensaver->flag == 0)
91                                                singlepicstart(path, 0);
92                                        else if(screensaver->flag == 1)
93                                                singlepicstart(path, 1);
94                                        free(path); path = NULL;
95                                        screensaver->aktnode = screensaver->aktnode->next;
96                                        break;
97                                }
98                                screensaver->aktnode = screensaver->aktnode->next;
99                        }
100                }
101        }
102       
103        return 0;
104}
105
106int deinitscreensaver()
107{
108        if(screensaver != NULL)
109        {
110                changetext(screensaver->screennode, NULL);
111                changepicmem(screensaver->screennode, NULL, 0);
112                if((screensaver->type == 1 || screensaver->type == 2) && screensaver->pic != NULL)
113                        delpic(screensaver->pic->name);
114                if(screensaver->type == 3)
115                {
116                        delmarkedscreennodes(screensaver->screen, FILELISTDELMARK);
117                }
118                free(screensaver);
119                screensaver = NULL;
120        }
121
122        return 0;
123}
124
125int initscreensaver()
126{
127        screensaver = (struct screensaver*)malloc(sizeof(struct screensaver));
128        if(screensaver == NULL)
129        {
130                err("no mem");
131                return 1;
132        }
133        memset(screensaver, 0, sizeof(struct screensaver));
134
135        if(ostrcmp(getconfig("screensaver_type", NULL), "0000000000") == 0)
136        {
137                screensaver->type = 0;
138                screensaver->speed = getconfigint("screensaver_interval", NULL) * 1000;
139                screensaver->screen = getscreen("screensaver");
140                screensaver->screennode = getscreennode(screensaver->screen, "textsaver");
141        }
142        else if(ostrcmp(getconfig("screensaver_type", NULL), "1111111111") == 0)
143        {
144                screensaver->type = 1;
145                screensaver->speed = getconfigint("screensaver_interval", NULL) * 1000;
146                screensaver->screen = getscreen("screensaver");
147                screensaver->screennode = getscreennode(screensaver->screen, "picsaver");
148
149                changepicmem(screensaver->screennode, getconfig("screensaver_pic", NULL), 0);
150                screensaver->pic = getpic(getconfig("screensaver_pic", NULL));
151                if(screensaver->pic != NULL)
152                {
153                        screensaver->screennode->width = screensaver->pic->width;
154                        screensaver->screennode->height = screensaver->pic->height;
155                }
156                else
157                {
158                        screensaver->screennode->width = 200;
159                        screensaver->screennode->height = 200;
160                }
161        }
162        else if(ostrcmp(getconfig("screensaver_type", NULL), "2222222222") == 0)
163        {
164                screensaver->type = 2;
165                screensaver->speed = getconfigint("screensaver_interval", NULL);
166                screensaver->screen = getscreen("screensaver");
167                screensaver->screennode = getscreennode(screensaver->screen, "picsaver");
168
169                changepicmem(screensaver->screennode, getconfig("screensaver_pic", NULL), 0);
170                screensaver->pic = getpic(getconfig("screensaver_pic", NULL));
171                if(screensaver->pic != NULL)
172                {
173                        screensaver->screennode->width = screensaver->pic->width;
174                        screensaver->screennode->height = screensaver->pic->height;
175                }
176                else
177                {
178                        screensaver->screennode->width = 200;
179                        screensaver->screennode->height = 200;
180                }
181        }
182        else
183        {
184                screensaver->type = 3;
185                screensaver->speed = getconfigint("screensaver_interval", NULL) * 1000;
186                screensaver->path = getconfig("screensaver_type", NULL);
187                screensaver->screen = getscreen("screensaveradjust");
188                screensaver->filelist = getscreennode(screensaver->screen, "filelist");
189                delmarkedscreennodes(screensaver->screen, FILELISTDELMARK);
190                changemask(screensaver->filelist, "*.mvi");
191                changeinput(screensaver->filelist, screensaver->path);
192                createfilelist(screensaver->screen, screensaver->filelist, 0);
193               
194        }
195
196        return 0;
197}
198
199#endif
Note: See TracBrowser for help on using the repository browser.