source: titan/titan/screensaver.h @ 26495

Last change on this file since 26495 was 24011, checked in by nit, 10 years ago

[titan] fix screensaver path

File size: 6.1 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, 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                        char* tmp = getconfig("screensaver_background_color", NULL);
69                        if(tmp != NULL)
70                        {
71                                screensaver->screen->bgcol = strtol(tmp, NULL, 16);
72                        }
73                        else
74                                screensaver->screen->bgcol = 0;
75
76                        screensaversetfontcol(screensaver->screen->bgcol);
77                }
78                drawscreen(screensaver->screen, 0, 0);
79        }
80
81        if(screensaver->type == 3)
82        {
83                if(file_exist(screensaver->path))
84                {
85                        char* path = NULL;
86               
87                        if(screensaver->aktnode == NULL)
88                                screensaver->aktnode = screensaver->filelist;
89                        while(screensaver->aktnode != NULL)
90                        {
91                                if(screensaver->aktnode->del == FILELISTDELMARK && screensaver->aktnode->text != NULL && screensaver->aktnode->input == 0)
92                                {
93                                        path = ostrcat(path, screensaver->path, 1, 0);
94                                        path = ostrcat(path, "/", 1, 0);
95                                        path = ostrcat(path, screensaver->aktnode->text, 1, 0);
96                                        debug(90, "singlepicstart %s", path);
97                                        if(screensaver->flag == 0)
98                                                singlepicstart(path, 0);
99                                        else if(screensaver->flag == 1)
100                                                singlepicstart(path, 1);
101                                        free(path); path = NULL;
102                                        screensaver->aktnode = screensaver->aktnode->next;
103                                        break;
104                                }
105                                screensaver->aktnode = screensaver->aktnode->next;
106                        }
107                }
108        }
109       
110        return 0;
111}
112
113int deinitscreensaver()
114{
115        if(screensaver != NULL)
116        {
117                changetext(screensaver->screennode, NULL);
118                changepicmem(screensaver->screennode, NULL, 0, 0);
119                if((screensaver->type == 1 || screensaver->type == 2) && screensaver->pic != NULL)
120                        delpic(screensaver->pic->name);
121                if(screensaver->type == 3)
122                {
123                        delmarkedscreennodes(screensaver->screen, FILELISTDELMARK);
124                }
125                free(screensaver);
126                screensaver = NULL;
127        }
128
129        return 0;
130}
131
132int initscreensaver()
133{
134        screensaver = (struct screensaver*)malloc(sizeof(struct screensaver));
135        if(screensaver == NULL)
136        {
137                err("no mem");
138                return 1;
139        }
140        memset(screensaver, 0, sizeof(struct screensaver));
141
142        if(ostrcmp(getconfig("screensaver_type", NULL), "0000000000") == 0)
143        {
144                screensaver->type = 0;
145                screensaver->speed = getconfigint("screensaver_interval", NULL) * 1000;
146                screensaver->screen = getscreen("screensaver");
147                screensaver->screennode = getscreennode(screensaver->screen, "textsaver");
148        }
149        else if(ostrcmp(getconfig("screensaver_type", NULL), "1111111111") == 0)
150        {
151                screensaver->type = 1;
152                screensaver->speed = getconfigint("screensaver_interval", NULL) * 1000;
153                screensaver->screen = getscreen("screensaver");
154                screensaver->screennode = getscreennode(screensaver->screen, "picsaver");
155
156                changepicmem(screensaver->screennode, getconfig("screensaver_pic", NULL), 0, 0);
157                screensaver->pic = getpic(getconfig("screensaver_pic", NULL));
158                if(screensaver->pic != NULL)
159                {
160                        screensaver->screennode->width = screensaver->pic->width;
161                        screensaver->screennode->height = screensaver->pic->height;
162                }
163                else
164                {
165                        screensaver->screennode->width = 200;
166                        screensaver->screennode->height = 200;
167                }
168        }
169        else if(ostrcmp(getconfig("screensaver_type", NULL), "2222222222") == 0)
170        {
171                screensaver->type = 2;
172                screensaver->speed = getconfigint("screensaver_interval", NULL);
173                screensaver->screen = getscreen("screensaver");
174                screensaver->screennode = getscreennode(screensaver->screen, "picsaver");
175
176                changepicmem(screensaver->screennode, getconfig("screensaver_pic", NULL), 0, 0);
177                screensaver->pic = getpic(getconfig("screensaver_pic", NULL));
178                if(screensaver->pic != NULL)
179                {
180                        screensaver->screennode->width = screensaver->pic->width;
181                        screensaver->screennode->height = screensaver->pic->height;
182                }
183                else
184                {
185                        screensaver->screennode->width = 200;
186                        screensaver->screennode->height = 200;
187                }
188        }
189        else
190        {
191                screensaver->type = 3;
192                screensaver->speed = getconfigint("screensaver_interval", NULL) * 1000;
193                screensaver->path = getconfig("screensaver_type", NULL);
194                screensaver->screen = getscreen("screensaveradjust");
195                screensaver->filelist = getscreennode(screensaver->screen, "filelist");
196                delmarkedscreennodes(screensaver->screen, FILELISTDELMARK);
197                changemask(screensaver->filelist, "*.mvi");
198                changeinput(screensaver->filelist, screensaver->path);
199                createfilelist(screensaver->screen, screensaver->filelist, 0);
200        }
201
202        return 0;
203}
204
205#endif
Note: See TracBrowser for help on using the repository browser.