xref: /haiku/src/add-ons/screen_savers/slideshowsaver/SlideShowSaver.h (revision 560ff4478d5c85455ea3e5ed5e392ef93132d545)
1 /*****************************************************************************/
2 // SlideShowSaver
3 // Written by Michael Wilber
4 // Slide show code derived from ShowImage code, written by Michael Pfeiffer
5 //
6 // SlideShowSaver.h
7 //
8 //
9 // Copyright (C) Haiku
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining a
12 // copy of this software and associated documentation files (the "Software"),
13 // to deal in the Software without restriction, including without limitation
14 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
15 // and/or sell copies of the Software, and to permit persons to whom the
16 // Software is furnished to do so, subject to the following conditions:
17 //
18 // The above copyright notice and this permission notice shall be included
19 // in all copies or substantial portions of the Software.
20 //
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27 // DEALINGS IN THE SOFTWARE.
28 /*****************************************************************************/
29 
30 
31 #ifndef SLIDE_SHOW_SAVER_H
32 #define SLIDE_SHOW_SAVER_H
33 
34 #include <Locker.h>
35 #include <ScreenSaver.h>
36 #include <Bitmap.h>
37 #include <String.h>
38 #include <Entry.h>
39 #include "LiveSettings.h"
40 
41 class SlideShowSaver :
42 	public BScreenSaver,
43 	public LiveSettingsObserver {
44 public:
45 	SlideShowSaver(BMessage *archive, image_id image);
46 	virtual ~SlideShowSaver(void);
47 
48 	virtual void SettingChanged(uint32 setting);
49 
50 	virtual void StartConfig(BView *view);
51 	virtual status_t StartSaver(BView *view, bool preview);
52 	virtual void Draw(BView *view, int32 frame);
53 
54 protected:
55 	// reload ticksize setting and apply it
56 	status_t UpdateTickSize();
57 
58 	status_t UpdateShowCaption();
59 	status_t UpdateShowBorder();
60 	// reload directory setting and apply it
61 	status_t UpdateDirectory();
62 
63 	// Function taken from Haiku ShowImage,
64 	// function originally written by Michael Pfeiffer
65 	status_t SetImage(const entry_ref *pref);
66 
67 	// Function originally from Haiku ShowImage
68 	bool ShowNextImage(bool next, bool rewind);
69 
70 	// Function taken from Haiku ShowImage,
71 	// function originally written by Michael Pfeiffer
72 	bool IsImage(const entry_ref *pref);
73 
74 	// Function taken from Haiku ShowImage,
75 	// function originally written by Michael Pfeiffer
76 	bool FindNextImage(entry_ref *in_current, entry_ref *out_image, bool next, bool rewind);
77 
78 	// Function taken from Haiku ShowImage,
79 	// function originally written by Michael Pfeiffer
80 	void FreeEntries(BList *entries);
81 
82 	void LayoutCaption(BView *view, BFont &font, BPoint &pos, BRect &rect);
83 	void DrawCaption(BView *view);
84 	// void UpdateCaption(BView *view);
85 
86 private:
87 	BLocker fLock;
88 	bool fNewDirectory;
89 	LiveSettings *fSettings;
90 	BBitmap *fBitmap;
91 	BString fCaption;
92 	entry_ref fCurrentRef;
93 	bool fShowCaption;
94 	bool fShowBorder;
95 };
96 
97 #endif // #ifndef SLIDE_SHOW_SAVER_H
98 
99