libsax 7.2

desktop.h

00001 /**************
00002 FILE          : desktop.h
00003 ***************
00004 PROJECT       : SaX2 - library interface [header]
00005               :
00006 AUTHOR        : Marcus Schäfer <ms@suse.de>
00007               :
00008 BELONGS TO    : SaX2 - SuSE advanced X11 configuration 
00009               : 
00010               :
00011 DESCRIPTION   : native C++ class library to access SaX2
00012               : functionality. Easy to use interface for
00013               : //.../
00014               : - importing/exporting X11 configurations
00015               : - modifying/creating X11 configurations 
00016               : ---
00017               :
00018               :
00019 STATUS        : Status: Development
00020 **************/
00021 #ifndef SAX_DESKTOP_H
00022 #define SAX_DESKTOP_H 1
00023 
00024 //====================================
00025 // Includes...
00026 //------------------------------------
00027 #include <math.h>
00028 #include "import.h"
00029 #include "card.h"
00030 #include "path.h"
00031 #include "file.h"
00032 
00033 namespace SaX {
00034 //====================================
00035 // Defines...
00036 //------------------------------------
00037 #define XMODE             "/usr/sbin/xmode"
00038 #define XQUERY            "/usr/sbin/xquery"
00039 #define SAX_PROFILE_CHECK "/usr/share/sax/libsax/createCHK.sh"
00040 #define SAX_GRUB_UPDATE   "/usr/share/sax/libsax/createGRB.pl"
00041 #define SAX_KMS_STATUS    "/usr/share/sax/libsax/KMSStatus.sh"
00042 #define PROFILE_DIR       "/usr/share/sax/profile/"
00043 #define MAP_DIR           "/usr/share/sax/sysp/maps/"
00044 #define SYSP_VENDOR       "/usr/share/sax/sysp/script/vendor.pl"
00045 
00046 //====================================
00047 // Interface class for dlopen ability
00048 //------------------------------------
00056 class SaXManipulateDesktopIF : public SaXException {
00057         public:
00058         virtual void calculateModelines ( bool ) = 0;
00059         virtual void setExtraModelineString ( const QString& ) = 0;
00060         virtual void setExtraModeline ( int,int,int,int ) = 0;
00061         virtual void addExtraModeline ( int,int,int,int ) = 0;
00062         virtual void removeExtraModeline ( int,int ) = 0;
00063         virtual void setResolution ( int,int,int ) = 0;
00064         virtual void addResolution ( int,int,int ) = 0;
00065         virtual void removeResolution ( int,int,int ) = 0;
00066         virtual void setVirtualResolution ( int,int,int ) = 0;
00067         virtual void removeVirtualResolution ( int ) = 0;
00068         virtual void setColorDepth ( int ) = 0;
00069         virtual bool enable3D  ( void ) = 0;
00070         virtual bool disable3D ( void ) = 0;
00071         virtual void setDisplaySize ( int,int ) = 0;
00072         virtual void setDisplayRatioAndTraversal ( double ,int, int ) = 0;
00073         virtual void setHsyncRange ( double,double ) = 0;
00074         virtual void setVsyncRange ( double,double ) = 0;
00075         virtual void setPreferredMode ( const QString& ) = 0;
00076         virtual void enableDPMS  ( void ) = 0;
00077         virtual void disableDPMS ( void ) = 0;
00078         virtual void setMonitorVendor ( const QString& ) = 0;
00079         virtual void setMonitorName   ( const QString& ) = 0;
00080         virtual void setCDBMonitor ( const QString& ) = 0;
00081         virtual QList<QString> getCDBMonitorVendorList ( void ) = 0;
00082         virtual QList<QString> getCDBMonitorModelList  ( const QString& ) = 0;
00083         virtual Q3Dict<QString> getCDBMonitorData (
00084                 const QString&,const QString&
00085         ) = 0;
00086         virtual Q3Dict<QString> getCDBMonitorIDData (
00087                 const QString&
00088         ) = 0;
00089         virtual void setCDBMonitorData (
00090                 const QString&, const QString&,
00091                 const QString&, const QString&
00092         ) = 0;
00093 
00094         public:
00095         virtual QList<QString> getResolutions ( int  ) = 0;
00096         virtual QList<QString> getResolutionsFromFrameBuffer (void) = 0;
00097         virtual QList<QString> getResolutionFromServer ( void ) = 0;
00098         virtual QList<QString> getResolutionsFromDDC1  ( void ) = 0;
00099         virtual QList<QString> getResolutionsFromDDC2  ( void ) = 0;
00100         virtual QList<QString> getDisplaySize ( void ) = 0;
00101         virtual QList<QString> getDisplayRatio( void ) = 0;
00102         virtual QString getDisplayTraversal   ( void ) = 0;
00103         virtual QList<QString> getHsyncRange  ( void ) = 0;
00104         virtual QList<QString> getVsyncRange  ( void ) = 0;
00105         virtual bool is3DEnabled    ( void ) = 0;
00106         virtual bool is3DCard       ( void ) = 0;
00107         virtual bool isDualHeadCard ( void ) = 0;
00108         virtual bool isXineramaMode ( void ) = 0;
00109         virtual bool DPMSEnabled    ( void ) = 0;
00110         virtual int getFBKernelMode ( const QString&,int ) = 0;
00111         virtual int setFBKernelMode ( int ) = 0;
00112         virtual bool getKMSStatus ( void ) = 0;
00113         virtual int getColorDepthFromServer ( void ) = 0;
00114         virtual QString getMonitorVendor ( void ) = 0;
00115         virtual QString getMonitorName   ( void ) = 0;
00116         virtual QString getColorDepth    ( void ) = 0;
00117         virtual QString getVirtualResolution ( int  ) = 0;
00118         virtual QString getDualHeadProfile   ( void ) = 0;
00119         virtual QString getModelineAlgorithm ( void ) = 0;
00120         virtual bool willCalculateModelines  ( void ) = 0;
00121 
00122         public:
00123         virtual bool selectDesktop (int) = 0;
00124 
00125         public:
00126         virtual ~SaXManipulateDesktopIF ( void ) { }
00127 };
00128 //====================================
00129 // Class SaXManipulateDesktop...
00130 //------------------------------------
00185 class SaXManipulateDesktop : public SaXManipulateDesktopIF {
00186         private:
00187         SaXImport*     mDesktop;
00188         SaXImport*     mCard;
00189         SaXImport*     mPath;
00190         SaXImportSysp* mSyspDesktop;
00191         SaXProcess*    mCDBMonitors;
00192         QList<QString> mCDBMonitorList;
00193         Q3Dict<QString> mCDBMonitorData;
00194         int            mDesktopID;
00195 
00196         private:
00197         QString getVendorForDriver ( const QString& );
00198         QString calculateModeline  ( int,int,int,int );
00199         QString getDriverOptionsDualHeadProfile ( const QString& );
00200         Q3Dict<QString> getMetaData ( void );
00201         QList<QString> getResolutionsFromDDC ( const QString& );
00202 
00203         public:
00204         void calculateModelines ( bool );
00205         void setExtraModelineString ( const QString& );
00206         void setExtraModeline ( int,int,int,int );
00207     void addExtraModeline ( int,int,int,int );
00208     void removeExtraModeline ( int,int );
00209         void setResolution ( int,int,int );
00210         void addResolution ( int,int,int );
00211         void removeResolution ( int,int,int );
00212         void setVirtualResolution ( int,int,int );
00213         void removeVirtualResolution ( int );
00214         void setColorDepth ( int );
00215         bool enable3D  ( void );
00216         bool disable3D ( void );
00217         void setDisplaySize ( int,int );
00218         void setDisplayRatioAndTraversal ( double ,int, int );
00219         void setHsyncRange ( double,double );
00220         void setVsyncRange ( double,double );
00221         void setPreferredMode ( const QString& );
00222         void enableDPMS  ( void );
00223         void disableDPMS ( void );
00224         void setMonitorVendor ( const QString& );
00225         void setMonitorName   ( const QString& );
00226         void setCDBMonitor ( const QString& );
00227         QList<QString> getCDBMonitorVendorList ( void );
00228         QList<QString> getCDBMonitorModelList  ( const QString& );
00229         Q3Dict<QString> getCDBMonitorData ( const QString&, const QString& );
00230         Q3Dict<QString> getCDBMonitorIDData ( const QString& );
00231         void setCDBMonitorData (
00232                 const QString&, const QString&,
00233                 const QString&, const QString&
00234         );
00235 
00236         public:
00237         QList<QString> getResolutions ( int  );
00238         QList<QString> getResolutionsFromFrameBuffer (void);
00239         QList<QString> getResolutionFromServer ( void );
00240         QList<QString> getResolutionsFromDDC1 ( void );
00241         QList<QString> getResolutionsFromDDC2 ( void );
00242         QList<QString> getDisplaySize ( void );
00243         QList<QString> getDisplayRatio( void );
00244         QString getDisplayTraversal   ( void );
00245         QList<QString> getHsyncRange  ( void );
00246         QList<QString> getVsyncRange  ( void );
00247         bool is3DEnabled    ( void );
00248         bool is3DCard       ( void );
00249         bool isDualHeadCard ( void );
00250         bool isXineramaMode ( void );
00251         bool DPMSEnabled    ( void );
00252         int getFBKernelMode ( const QString&,int );
00253         int setFBKernelMode ( int );
00254         bool getKMSStatus ( void );
00255         int getColorDepthFromServer ( void );
00256         QString getMonitorVendor ( void );
00257         QString getMonitorName   ( void );
00258         QString getColorDepth    ( void );
00259         QString getVirtualResolution ( int  );
00260         QString getDualHeadProfile   ( void );
00261         QString getModelineAlgorithm ( void );
00262         bool willCalculateModelines  ( void );
00263 
00264         public:
00265         bool selectDesktop (int);
00266 
00267         public:
00268         SaXManipulateDesktop (
00269                 SaXImport*, SaXImport*, SaXImport*, int = 0
00270         );
00271 };
00272 } // end namespace
00273 #endif