source: titan/titan/screensaver.h @ 38580

Last change on this file since 38580 was 37216, checked in by obi, 8 years ago

fix compiler warnings

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