1 /*
2     SPDX-FileCopyrightText: 2003-2004 Christian Kvasny <chris@k3b.org>
3     SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
4 
5     SPDX-License-Identifier: GPL-2.0-or-later
6 */
7 
8 #ifndef K3B_VCD_OPTIONS_H
9 #define K3B_VCD_OPTIONS_H
10 
11 #include "k3b_export.h"
12 #include <KConfigGroup>
13 #include <QString>
14 
15 namespace K3b {
16     class LIBK3B_EXPORT VcdOptions
17     {
18     public:
19         VcdOptions();
20 
21         enum MPEGVersion {
22             VCD11 = 0,
23             VCD20 = 1,
24             SVCD10 = 2,
25             HQVCD10 = 3
26         };
27 
volumeId()28         QString volumeId() const
29         {
30             return m_volumeID;
31         }
albumId()32         QString albumId() const
33         {
34             return m_albumID;
35         }
volumeSetId()36         QString volumeSetId() const
37         {
38             return m_volumeSetId;
39         }
preparer()40         QString preparer() const
41         {
42             return m_preparer;
43         }
publisher()44         QString publisher() const
45         {
46             return m_publisher;
47         }
48 
applicationId()49         QString applicationId() const
50         {
51             return m_applicationId;
52         }
systemId()53         QString systemId() const
54         {
55             return m_systemId;
56         }
57 
vcdClass()58         QString vcdClass() const
59         {
60             return m_vcdclass;
61         }
vcdVersion()62         QString vcdVersion() const
63         {
64             return m_vcdversion;
65         }
66 
PreGapLeadout()67         int PreGapLeadout()
68         {
69             return m_pregapleadout;
70         }
PreGapTrack()71         int PreGapTrack()
72         {
73             return m_pregaptrack;
74         }
FrontMarginTrack()75         int FrontMarginTrack()
76         {
77             return m_frontmargintrack;
78         }
RearMarginTrack()79         int RearMarginTrack()
80         {
81             return m_rearmargintrack;
82         }
FrontMarginTrackSVCD()83         int FrontMarginTrackSVCD()
84         {
85             return m_frontmargintrackSVCD;
86         }
RearMarginTrackSVCD()87         int RearMarginTrackSVCD()
88         {
89             return m_rearmargintrackSVCD;
90         }
91 
mpegVersion()92         MPEGVersion mpegVersion() const
93         {
94             return m_mpegversion;
95         }
96 
volumeCount()97         int volumeCount() const
98         {
99             return m_volumeCount;
100         }
volumeNumber()101         int volumeNumber() const
102         {
103             return m_volumeNumber;
104         }
105 
AutoDetect()106         bool AutoDetect() const
107         {
108             return m_autodetect;
109         }
CdiSupport()110         bool CdiSupport() const
111         {
112             return m_cdisupport;
113         }
NonCompliantMode()114         bool NonCompliantMode() const
115         {
116             return m_brokensvcdmode;
117         }
VCD30interpretation()118         bool VCD30interpretation() const
119         {
120             return m_VCD30interpretation;
121         }
Sector2336()122         bool Sector2336() const
123         {
124             return m_sector2336;
125         }
UpdateScanOffsets()126         bool UpdateScanOffsets() const
127         {
128             return m_updatescanoffsets;
129         }
RelaxedAps()130         bool RelaxedAps() const
131         {
132             return m_relaxedaps;
133         }
UseGaps()134         bool UseGaps() const
135         {
136             return m_usegaps;
137         }
CDIsize()138         unsigned long long CDIsize() const
139         {
140             return m_cdisize;
141         }
142 
setAlbumId(const QString & s)143         void setAlbumId( const QString& s )
144         {
145             m_albumID = s;
146         }
setVolumeId(const QString & s)147         void setVolumeId( const QString& s )
148         {
149             m_volumeID = s;
150         }
setVolumeSetId(const QString & s)151         void setVolumeSetId( const QString& s )
152         {
153             m_volumeSetId = s;
154         }
setPreparer(const QString & s)155         void setPreparer( const QString& s )
156         {
157             m_preparer = s;
158         }
setPublisher(const QString & s)159         void setPublisher( const QString& s )
160         {
161             m_publisher = s;
162         }
163 
setVcdClass(const QString & s)164         void setVcdClass( const QString& s )
165         {
166             m_vcdclass = s;
167         }
setVcdVersion(const QString & s)168         void setVcdVersion( const QString& s )
169         {
170             m_vcdversion = s;
171         }
172 
setPreGapLeadout(int i)173         void setPreGapLeadout( int i )
174         {
175             m_pregapleadout = i;
176         }
setPreGapTrack(int i)177         void setPreGapTrack( int i )
178         {
179             m_pregaptrack = i;
180         }
setFrontMarginTrack(int i)181         void setFrontMarginTrack( int i )
182         {
183             m_frontmargintrack = i;
184         }
setRearMarginTrack(int i)185         void setRearMarginTrack( int i )
186         {
187             m_rearmargintrack = i;
188         }
setFrontMarginTrackSVCD(int i)189         void setFrontMarginTrackSVCD( int i )
190         {
191             m_frontmargintrackSVCD = i;
192         }
setRearMarginTrackSVCD(int i)193         void setRearMarginTrackSVCD( int i )
194         {
195             m_rearmargintrackSVCD = i;
196         }
197 
setMpegVersion(MPEGVersion v)198         void setMpegVersion( MPEGVersion v )
199         {
200             m_mpegversion = v;
201         }
setVolumeCount(int c)202         void setVolumeCount( int c )
203         {
204             m_volumeCount = c;
205         }
setVolumeNumber(int n)206         void setVolumeNumber( int n )
207         {
208             m_volumeNumber = n;
209         }
210 
setAutoDetect(bool b)211         void setAutoDetect( bool b )
212         {
213             m_autodetect = b;
214         }
setCdiSupport(bool b)215         void setCdiSupport( bool b )
216         {
217             m_cdisupport = b;
218         }
setNonCompliantMode(bool b)219         void setNonCompliantMode( bool b )
220         {
221             m_brokensvcdmode = b;
222         }
setVCD30interpretation(bool b)223         void setVCD30interpretation( bool b )
224         {
225             m_VCD30interpretation = b;
226         }
setSector2336(bool b)227         void setSector2336( bool b )
228         {
229             m_sector2336 = b;
230         }
setUpdateScanOffsets(bool b)231         void setUpdateScanOffsets( bool b )
232         {
233             m_updatescanoffsets = b;
234         }
setRelaxedAps(bool b)235         void setRelaxedAps( bool b )
236         {
237             m_relaxedaps = b;
238         }
setUseGaps(bool b)239         void setUseGaps( bool b )
240         {
241             m_usegaps = b;
242         }
243 
244         bool checkCdiFiles();
245         void save( KConfigGroup c );
246 
247         static VcdOptions load( const KConfigGroup& c );
248         static VcdOptions defaults();
249 
setPbcEnabled(bool b)250         void setPbcEnabled( bool b )
251         {
252             m_pbcenabled = b;
253         }
PbcEnabled()254         bool PbcEnabled() const
255         {
256             return m_pbcenabled;
257         };
setPbcNumkeysEnabled(bool b)258         void setPbcNumkeysEnabled( bool b )
259         {
260             m_pbcnumkeysenabled = b;
261         }
PbcNumkeysEnabled()262         bool PbcNumkeysEnabled() const
263         {
264             return m_pbcnumkeysenabled;
265         };
266 
setPbcPlayTime(int i)267         void setPbcPlayTime( int i )
268         {
269             m_def_pbcplaytime = i;
270         }
PbcPlayTime()271         int PbcPlayTime( )
272         {
273             return m_def_pbcplaytime;
274         }
275 
setPbcWaitTime(int i)276         void setPbcWaitTime( int i )
277         {
278             m_def_pbcwaittime = i;
279         }
PbcWaitTime()280         int PbcWaitTime( )
281         {
282             return m_def_pbcwaittime;
283         }
284 
setSegmentFolder(bool b)285         void setSegmentFolder( bool b )
286         {
287             m_segmentfolder = b;
288         }
SegmentFolder()289         bool SegmentFolder() const
290         {
291             return m_segmentfolder;
292         };
293 
setRestriction(int i)294         void setRestriction( int i )
295         {
296             m_restriction = i;
297         }
Restriction()298         int Restriction() const
299         {
300             return m_restriction;
301         };
increaseSegments()302         void increaseSegments( )
303         {
304             m_segment += 1;
305         }
decreaseSegments()306         void decreaseSegments( )
307         {
308             m_segment -= 1;
309         }
haveSegments()310         bool haveSegments() const
311         {
312             return m_segment > 0;
313         };
increaseSequence()314         void increaseSequence( )
315         {
316             m_sequence += 1;
317         }
decreaseSequence()318         void decreaseSequence( )
319         {
320             m_sequence -= 1;
321         }
322 
haveSequence()323         bool haveSequence() const
324         {
325             return m_sequence > 0;
326         }
327 
328     private:
329         int m_restriction;
330         int m_segment;
331         int m_sequence;
332 
333         // pbc
334         bool m_pbcenabled;
335         bool m_pbcnumkeysenabled;
336 
337         // volume descriptor
338         QString m_volumeID;
339         QString m_albumID;
340         QString m_volumeSetId;
341 
342         QString m_preparer;
343         QString m_publisher;
344 
345         QString m_applicationId;
346         QString m_systemId;
347 
348         QString m_vcdclass;
349         QString m_vcdversion;
350 
351         int m_pregapleadout;
352         int m_pregaptrack;
353         int m_frontmargintrack;
354         int m_rearmargintrack;
355         int m_frontmargintrackSVCD;
356         int m_rearmargintrackSVCD;
357 
358         MPEGVersion m_mpegversion;
359         int m_volumeCount;
360         int m_volumeNumber;
361 
362         bool m_autodetect;
363         bool m_cdisupport;
364         bool m_brokensvcdmode;
365         bool m_VCD30interpretation;
366         bool m_sector2336;
367         bool m_updatescanoffsets;
368         bool m_relaxedaps;
369         bool m_segmentfolder;
370         bool m_usegaps;
371 
372         int m_def_pbcplaytime;
373         int m_def_pbcwaittime;
374         unsigned long long m_cdisize;
375     };
376 }
377 
378 #endif
379