home *** CD-ROM | disk | FTP | other *** search
/ PC Direkt 1995 March / PCD_395.iso / starview / winmsci / german / so.hx_ / SO.HXX
Encoding:
Text File  |  1994-10-07  |  8.8 KB  |  260 lines

  1. /*************************************************************************
  2. * SO.HXX
  3. * Fri Oct  7 10:26:30 1994
  4. * (c) 1992-1994 STAR DIVISION
  5. *************************************************************************/
  6. #ifndef _SV_HXX
  7. #include "sv.hxx"
  8. #endif
  9.  
  10. #ifndef _MEMBLOCK_HXX
  11. #define _MEMBLOCK_HXX
  12.  
  13. #ifndef _SV_HXX
  14. #endif
  15.  
  16. #ifdef W30
  17. #define HUGE _huge
  18. #else
  19. #define HUGE
  20. #endif
  21.  
  22. class ImpSOClient;
  23. class ImpSOServer;
  24. class ImpSOClientData;
  25. class ImpSOServerData;
  26. class IPCImpServer;
  27. class IPCImpClient;
  28.  
  29. class MemoryBlock
  30. {
  31. private:
  32.     friend class ImpSOClient;
  33.     friend class ImpSOServer;
  34.     friend class ImpSOClientData;
  35.     friend class ImpSOServerData;
  36.     friend class IPCImpServer;
  37.     friend class IPCImpClient;
  38.  
  39.     BOOL                bErr;                   
  40.     long                nHandle;                
  41.     char HUGE *         pBlk;                   
  42.     char HUGE *         pGet;                   
  43.     char HUGE *         pPut;                   
  44.     long                nGet;                   
  45.     long                nPut;                   
  46.     long                nLen;                   
  47.     BOOL                bErase;                 
  48.  
  49.     BOOL                Resize( long nSize );
  50.     long                GetHandle();
  51.  
  52.                         MemoryBlock( long nHandle, BOOL );
  53.                         MemoryBlock( long nHandle, long nSize, BOOL );
  54.  
  55. public:
  56.                         MemoryBlock();
  57.                         MemoryBlock( const MemoryBlock& rBlock );
  58.                         ~MemoryBlock();
  59.  
  60.     long                Len() const         { return nLen; }
  61.     BOOL                Error() const       { return bErr; }
  62.  
  63.     int                 good() const        { return !bErr; }
  64.     int                 bad() const         { return bErr;  }
  65.     int                 operator ! () const { return bErr;  }
  66.  
  67.     long                Put( const void* pAddr, long nSize );
  68.     long                Get( void* pAddr, long nSize );
  69.  
  70.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, char& rValue );
  71.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, BYTE& rValue );
  72.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, short& rValue );
  73.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, USHORT& rValue );
  74.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, long& rValue );
  75.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, ULONG& rValue );
  76.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, Point& rValue );
  77.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, Size& rValue );
  78.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, Range& rValue );
  79.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, Selection& rValue );
  80.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, Rectangle& rValue );
  81.     friend MemoryBlock& operator >> ( MemoryBlock& rBlock, String& rValue );
  82.  
  83.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const char& rValue );
  84.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const BYTE& rValue );
  85.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const short& rValue );
  86.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const USHORT& rValue );
  87.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const long& rValue );
  88.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const ULONG& rValue );
  89.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const Point& rValue );
  90.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const Size& rValue );
  91.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const Range& rValue );
  92.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const Selection& rValue );
  93.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const Rectangle& rValue );
  94.     friend MemoryBlock& operator << ( MemoryBlock& rBlock, const String& rValue );
  95.  
  96.     friend ostream&     operator << ( ostream& rStream, MemoryBlock& rBlock );
  97.     friend istream&     operator >> ( istream& rStream, MemoryBlock& rBlock );
  98.  
  99.     MemoryBlock&        operator= ( const MemoryBlock& rBlock );
  100. };
  101.  
  102. #endif 
  103.  
  104. #ifndef _SO_HXX
  105. #define _SO_HXX
  106.  
  107. #ifndef _SV_HXX
  108. #endif
  109. #ifndef _MEMBLOCK_HXX
  110. #endif
  111.  
  112. class istream;
  113. class ostream;
  114.  
  115. class ImpSOClient;
  116. class ImpSOServer;
  117. class MemoryBlock;
  118.  
  119. enum StarObjectError
  120. {
  121.     SOERR_OK = 0,               
  122.     SOERR_ACTIVE,               
  123.     SOERR_CREATED,              
  124.     SOERR_NO_SERVER,            
  125.     SOERR_START_SERVER,         
  126.     SOERR_CREATE,               
  127.     SOERR_ACTION,               
  128.     SOERR_LAYER,                
  129.     SOERR_DLGABORT              
  130. };
  131.  
  132. enum StarObjectType
  133. {
  134.     SOTYPE_EMBEDDED,            
  135.     SOTYPE_LINK,                
  136.     SOTYPE_AUTOLINK,            
  137.     SOTYPE_DISPLAY_EMBEDDED,    
  138.     SOTYPE_DISPLAY_LINKED        
  139. };
  140.  
  141. class StarObject
  142. {
  143. private:
  144.     friend class ImpSOClient;
  145.     friend class ImpSOClientData;
  146.  
  147.     static BOOL     bSavePortable;          
  148.     static char     cClient[ 64 ];          
  149.     ImpSOClient*    pImp;                   
  150.     String          aServer;                
  151.     String          aName;                  
  152.     Link            aNotifyHdl;             
  153.  
  154. protected:
  155.     virtual void    Notify();
  156.  
  157. public:
  158.                     StarObject();
  159.                     StarObject( const String& );
  160.                     StarObject( const StarObject& );
  161.                     StarObject( const String&, const MemoryBlock&,
  162.                                 const GDIMetaFile& );
  163.                     ~StarObject();
  164.     void            Copy( const StarObject & rObj );
  165.  
  166.     StarObject&        operator=( const StarObject& );
  167.  
  168.     StarObjectType  GetType() const;
  169.  
  170.     static String   ChangeAppName( const String& rAppName );
  171.     static String   GetAppName();
  172.  
  173.     static BOOL     GetSavePortable() { return bSavePortable; }
  174.     static void     SetSavePortable( BOOL b ) { bSavePortable = b; }
  175.  
  176.     String          ChangeServerName( const String& rServerName );
  177.     String          GetServerName() const { return aServer; }
  178.     String          ChangeName( const String& rName );
  179.     String          GetName() const { return aName; }
  180.     String            ChangeLinkName( const String& );
  181.     String            GetLinkName() const;
  182.  
  183.     Size            ChangeSize( const Size& rSize );
  184.     Size            GetSize() const;
  185.  
  186.     void            Clear();
  187.     void            Create( const String& rDlgTitle );
  188.     void            Update();
  189.     void            Action( USHORT nAction = 0 );
  190.  
  191.     USHORT          GetActionCount() const;
  192.     String          GetActionText( USHORT nAction = 0 ) const;
  193.  
  194.     BOOL            IsActive() const;
  195.     BOOL            IsChanged();
  196.  
  197.     void            Draw( OutputDevice& rOutDev, const Point& rPos );
  198.     void            Draw( OutputDevice& rOutDev,
  199.                           const Point& rPos, const Size& rSize );
  200.     void            Draw( OutputDevice& rOutDev, const Rectangle& rRect );
  201.  
  202.     static BOOL     HasClipboardData();
  203.     static BOOL     HasClipboardLinkData();
  204.     static BOOL     CopyRequest();
  205.     BOOL            Copy();
  206.     BOOL            Paste( StarObjectType = SOTYPE_EMBEDDED );
  207.  
  208.     Link            ChangeNotifyHdl( const Link& rHdl );
  209.     Link            GetNotifyHdl() const { return aNotifyHdl; }
  210.  
  211.     MemoryBlock *   GetData() const;
  212.     StarObjectError GetError() const;
  213.  
  214.     friend istream& operator >> ( istream& rStream, StarObject& rObj );
  215.     friend ostream& operator << ( ostream& rStream, const StarObject& rObj );
  216. };
  217.  
  218. inline Link StarObject::ChangeNotifyHdl( const Link& rNewHdl )
  219. {
  220.     Link aOldLink = aNotifyHdl;
  221.     aNotifyHdl = rNewHdl;
  222.     return aOldLink;
  223. }
  224.  
  225. class StarObjectServer
  226. {
  227.     friend class ImpSOServer;
  228.  
  229.     BOOL                bServer;            
  230.     ImpSOServer*        pImp;               
  231.  
  232.                         StarObjectServer( const StarObjectServer& rObj );
  233.     StarObjectServer&   operator= ( const StarObjectServer& rObj );
  234.  
  235. public:
  236.                         StarObjectServer();
  237.                         StarObjectServer( const String& rName );
  238.                         ~StarObjectServer();
  239.  
  240.     BOOL                IsServer() const { return bServer; }
  241.  
  242.     String              GetServerName() const;
  243.     String              GetAppName() const;
  244.     String              GetObjectName() const;
  245.     Size                GetSize() const;
  246.  
  247.     void                Update();
  248.  
  249.     virtual BOOL        Create() = 0;
  250.     virtual void        Release();
  251.     virtual BOOL        Action( USHORT nAction ) = 0;
  252.     virtual void        NewNames( const String& rAppName,
  253.                                   const String& rObjName ) = 0;
  254.     virtual BOOL        ReceiveData( MemoryBlock& rMemBlock ) = 0;
  255.     virtual BOOL        TransmitData( MemoryBlock& rMemBlock ) = 0;
  256.     virtual BOOL        TransmitPicture( GDIMetaFile& rMtf ) = 0;
  257. };
  258.  
  259. #endif 
  260.