File indexing completed on 2024-05-12 04:51:10

0001 /*
0002     SPDX-FileCopyrightText: 2003-2004 Christian Kvasny <chris@k3b.org>
0003     SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef K3B_VCD_OPTIONS_H
0009 #define K3B_VCD_OPTIONS_H
0010 
0011 #include "k3b_export.h"
0012 #include <KConfigGroup>
0013 #include <QString>
0014 
0015 namespace K3b {
0016     class LIBK3B_EXPORT VcdOptions
0017     {
0018     public:
0019         VcdOptions();
0020 
0021         enum MPEGVersion {
0022             VCD11 = 0,
0023             VCD20 = 1,
0024             SVCD10 = 2,
0025             HQVCD10 = 3
0026         };
0027 
0028         QString volumeId() const
0029         {
0030             return m_volumeID;
0031         }
0032         QString albumId() const
0033         {
0034             return m_albumID;
0035         }
0036         QString volumeSetId() const
0037         {
0038             return m_volumeSetId;
0039         }
0040         QString preparer() const
0041         {
0042             return m_preparer;
0043         }
0044         QString publisher() const
0045         {
0046             return m_publisher;
0047         }
0048 
0049         QString applicationId() const
0050         {
0051             return m_applicationId;
0052         }
0053         QString systemId() const
0054         {
0055             return m_systemId;
0056         }
0057 
0058         QString vcdClass() const
0059         {
0060             return m_vcdclass;
0061         }
0062         QString vcdVersion() const
0063         {
0064             return m_vcdversion;
0065         }
0066 
0067         int PreGapLeadout()
0068         {
0069             return m_pregapleadout;
0070         }
0071         int PreGapTrack()
0072         {
0073             return m_pregaptrack;
0074         }
0075         int FrontMarginTrack()
0076         {
0077             return m_frontmargintrack;
0078         }
0079         int RearMarginTrack()
0080         {
0081             return m_rearmargintrack;
0082         }
0083         int FrontMarginTrackSVCD()
0084         {
0085             return m_frontmargintrackSVCD;
0086         }
0087         int RearMarginTrackSVCD()
0088         {
0089             return m_rearmargintrackSVCD;
0090         }
0091 
0092         MPEGVersion mpegVersion() const
0093         {
0094             return m_mpegversion;
0095         }
0096 
0097         int volumeCount() const
0098         {
0099             return m_volumeCount;
0100         }
0101         int volumeNumber() const
0102         {
0103             return m_volumeNumber;
0104         }
0105 
0106         bool AutoDetect() const
0107         {
0108             return m_autodetect;
0109         }
0110         bool CdiSupport() const
0111         {
0112             return m_cdisupport;
0113         }
0114         bool NonCompliantMode() const
0115         {
0116             return m_brokensvcdmode;
0117         }
0118         bool VCD30interpretation() const
0119         {
0120             return m_VCD30interpretation;
0121         }
0122         bool Sector2336() const
0123         {
0124             return m_sector2336;
0125         }
0126         bool UpdateScanOffsets() const
0127         {
0128             return m_updatescanoffsets;
0129         }
0130         bool RelaxedAps() const
0131         {
0132             return m_relaxedaps;
0133         }
0134         bool UseGaps() const
0135         {
0136             return m_usegaps;
0137         }
0138         unsigned long long CDIsize() const
0139         {
0140             return m_cdisize;
0141         }
0142 
0143         void setAlbumId( const QString& s )
0144         {
0145             m_albumID = s;
0146         }
0147         void setVolumeId( const QString& s )
0148         {
0149             m_volumeID = s;
0150         }
0151         void setVolumeSetId( const QString& s )
0152         {
0153             m_volumeSetId = s;
0154         }
0155         void setPreparer( const QString& s )
0156         {
0157             m_preparer = s;
0158         }
0159         void setPublisher( const QString& s )
0160         {
0161             m_publisher = s;
0162         }
0163 
0164         void setVcdClass( const QString& s )
0165         {
0166             m_vcdclass = s;
0167         }
0168         void setVcdVersion( const QString& s )
0169         {
0170             m_vcdversion = s;
0171         }
0172 
0173         void setPreGapLeadout( int i )
0174         {
0175             m_pregapleadout = i;
0176         }
0177         void setPreGapTrack( int i )
0178         {
0179             m_pregaptrack = i;
0180         }
0181         void setFrontMarginTrack( int i )
0182         {
0183             m_frontmargintrack = i;
0184         }
0185         void setRearMarginTrack( int i )
0186         {
0187             m_rearmargintrack = i;
0188         }
0189         void setFrontMarginTrackSVCD( int i )
0190         {
0191             m_frontmargintrackSVCD = i;
0192         }
0193         void setRearMarginTrackSVCD( int i )
0194         {
0195             m_rearmargintrackSVCD = i;
0196         }
0197 
0198         void setMpegVersion( MPEGVersion v )
0199         {
0200             m_mpegversion = v;
0201         }
0202         void setVolumeCount( int c )
0203         {
0204             m_volumeCount = c;
0205         }
0206         void setVolumeNumber( int n )
0207         {
0208             m_volumeNumber = n;
0209         }
0210 
0211         void setAutoDetect( bool b )
0212         {
0213             m_autodetect = b;
0214         }
0215         void setCdiSupport( bool b )
0216         {
0217             m_cdisupport = b;
0218         }
0219         void setNonCompliantMode( bool b )
0220         {
0221             m_brokensvcdmode = b;
0222         }
0223         void setVCD30interpretation( bool b )
0224         {
0225             m_VCD30interpretation = b;
0226         }
0227         void setSector2336( bool b )
0228         {
0229             m_sector2336 = b;
0230         }
0231         void setUpdateScanOffsets( bool b )
0232         {
0233             m_updatescanoffsets = b;
0234         }
0235         void setRelaxedAps( bool b )
0236         {
0237             m_relaxedaps = b;
0238         }
0239         void setUseGaps( bool b )
0240         {
0241             m_usegaps = b;
0242         }
0243 
0244         bool checkCdiFiles();
0245         void save( KConfigGroup c );
0246 
0247         static VcdOptions load( const KConfigGroup& c );
0248         static VcdOptions defaults();
0249 
0250         void setPbcEnabled( bool b )
0251         {
0252             m_pbcenabled = b;
0253         }
0254         bool PbcEnabled() const
0255         {
0256             return m_pbcenabled;
0257         };
0258         void setPbcNumkeysEnabled( bool b )
0259         {
0260             m_pbcnumkeysenabled = b;
0261         }
0262         bool PbcNumkeysEnabled() const
0263         {
0264             return m_pbcnumkeysenabled;
0265         };
0266 
0267         void setPbcPlayTime( int i )
0268         {
0269             m_def_pbcplaytime = i;
0270         }
0271         int PbcPlayTime( )
0272         {
0273             return m_def_pbcplaytime;
0274         }
0275 
0276         void setPbcWaitTime( int i )
0277         {
0278             m_def_pbcwaittime = i;
0279         }
0280         int PbcWaitTime( )
0281         {
0282             return m_def_pbcwaittime;
0283         }
0284 
0285         void setSegmentFolder( bool b )
0286         {
0287             m_segmentfolder = b;
0288         }
0289         bool SegmentFolder() const
0290         {
0291             return m_segmentfolder;
0292         };
0293 
0294         void setRestriction( int i )
0295         {
0296             m_restriction = i;
0297         }
0298         int Restriction() const
0299         {
0300             return m_restriction;
0301         };
0302         void increaseSegments( )
0303         {
0304             m_segment += 1;
0305         }
0306         void decreaseSegments( )
0307         {
0308             m_segment -= 1;
0309         }
0310         bool haveSegments() const
0311         {
0312             return m_segment > 0;
0313         };
0314         void increaseSequence( )
0315         {
0316             m_sequence += 1;
0317         }
0318         void decreaseSequence( )
0319         {
0320             m_sequence -= 1;
0321         }
0322 
0323         bool haveSequence() const
0324         {
0325             return m_sequence > 0;
0326         }
0327 
0328     private:
0329         int m_restriction;
0330         int m_segment;
0331         int m_sequence;
0332 
0333         // pbc
0334         bool m_pbcenabled;
0335         bool m_pbcnumkeysenabled;
0336 
0337         // volume descriptor
0338         QString m_volumeID;
0339         QString m_albumID;
0340         QString m_volumeSetId;
0341 
0342         QString m_preparer;
0343         QString m_publisher;
0344 
0345         QString m_applicationId;
0346         QString m_systemId;
0347 
0348         QString m_vcdclass;
0349         QString m_vcdversion;
0350 
0351         int m_pregapleadout;
0352         int m_pregaptrack;
0353         int m_frontmargintrack;
0354         int m_rearmargintrack;
0355         int m_frontmargintrackSVCD;
0356         int m_rearmargintrackSVCD;
0357 
0358         MPEGVersion m_mpegversion;
0359         int m_volumeCount;
0360         int m_volumeNumber;
0361 
0362         bool m_autodetect;
0363         bool m_cdisupport;
0364         bool m_brokensvcdmode;
0365         bool m_VCD30interpretation;
0366         bool m_sector2336;
0367         bool m_updatescanoffsets;
0368         bool m_relaxedaps;
0369         bool m_segmentfolder;
0370         bool m_usegaps;
0371 
0372         int m_def_pbcplaytime;
0373         int m_def_pbcwaittime;
0374         unsigned long long m_cdisize;
0375     };
0376 }
0377 
0378 #endif