home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / isplitcv.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-22  |  5.5 KB  |  187 lines

  1. #ifndef _ISPLITCV_
  2.   #define _ISPLITCV_
  3. /*******************************************************************************
  4. * FILE NAME: isplitcv.hpp                                                      *
  5. *                                                                              *
  6. * DESCRIPTION:                                                                 *
  7. *   Declaration of the classes:                                                *
  8. *     ISplitCanvas                                                             *
  9. *                                                                              *
  10. * COPYRIGHT:                                                                   *
  11. *   IBM Open Class Library                                                     *
  12. *   (C) Copyright International Business Machines Corporation 1992, 1996       *
  13. *   Licensed Material - Program-Property of IBM - All Rights Reserved.         *
  14. *   US Government Users Restricted Rights - Use, duplication, or disclosure    *
  15. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  16. *                                                                              *
  17. *******************************************************************************/
  18. #include <icanvas.hpp>
  19. #include <icolor.hpp>
  20. #include <inotify.hpp>
  21. #include <ipoint.hpp>
  22. #include <irect.hpp>
  23.  
  24. class ISplitBarSet;
  25. class ISplitCanvasData;
  26. class ISplitCanvasHandler;
  27. class ISplitCanvasHandlerData;
  28. class ISplitPercentage;
  29. class ISplitPercentageSet;
  30.  
  31. #pragma pack(4)
  32.  
  33. class ISplitCanvas : public ICanvas {
  34. typedef ICanvas
  35.   Inherited;
  36. public:
  37. class Style;
  38.  
  39. /*------------------------------- Constructors -------------------------------*/
  40.   ISplitCanvas ( unsigned long     windowIdentifier,
  41.                  IWindow*          parent,
  42.                  IWindow*          owner,
  43.                  const IRectangle& initialSize = IRectangle(),
  44.                  const Style&      style = defaultStyle() );
  45.  
  46. virtual
  47.  ~ISplitCanvas ( );
  48.  
  49. /*---------------------------------- Styles ----------------------------------*/
  50. INESTEDBITFLAGCLASSDEF2(Style, ISplitCanvas, ICanvas, IWindow);
  51. static const Style
  52.   IC_IMPORTU horizontal,
  53.   IC_IMPORTU vertical,
  54.   IC_IMPORTU noSplitBars,
  55.   IC_IMPORTU classDefaultStyle;
  56. static Style
  57.   defaultStyle      ( );
  58. static void
  59.   setDefaultStyle   ( const Style&    style );
  60.  
  61. virtual unsigned long
  62.   convertToGUIStyle ( const IBitFlag& style,
  63.                       Boolean         extendedOnly = false ) const;
  64.  
  65. /*------------------------------- Orientation --------------------------------*/
  66. enum Orientation  {
  67.   horizontalSplit,
  68.   verticalSplit
  69.   };
  70.  
  71. Orientation
  72.   orientation     ( ) const;
  73.  
  74. virtual ISplitCanvas
  75.  &setOrientation  ( Orientation value );
  76.  
  77. /*--------------------------- Split Bar Thickness ----------------------------*/
  78. enum SplitBarArea {
  79.   splitBarEdge,
  80.   splitBarMiddle
  81.   };
  82.  
  83. virtual ISplitCanvas
  84.  &setSplitBarThickness ( SplitBarArea  area,
  85.                          unsigned long thickness );
  86.  
  87. unsigned long
  88.   splitBarThickness    ( SplitBarArea  area );
  89.  
  90. /*--------------------------- Child Window Sizing ----------------------------*/
  91. virtual ISplitCanvas
  92.  &setSplitWindowPercentage ( IWindow*      window,
  93.                              unsigned long percentage );
  94.  
  95. unsigned long
  96.   splitWindowPercentage    ( IWindow* window );
  97.  
  98. /*---------------------------------- Layout Support --------------------------*/
  99. virtual ISplitCanvas
  100.  &setLayoutDistorted ( unsigned long layoutAttributesOn,
  101.                        unsigned long layoutAttributesOff );
  102.  
  103. /*---------------------------- Notification Members --------------------------*/
  104. static INotificationId const
  105.   IC_IMPORTU orientationId;
  106.  
  107. /*---------------------------------- Colors ----------------------------------*/
  108. virtual IColor
  109.   splitBarEdgeColor        ( ) const;
  110. virtual IColor
  111.   splitBarMiddleColor      ( ) const;
  112.  
  113. virtual ISplitCanvas
  114.  &setSplitBarEdgeColor     ( const IColor &color );
  115. virtual ISplitCanvas
  116.  &setSplitBarMiddleColor   ( const IColor &color );
  117.  
  118. virtual ISplitCanvas
  119.  &resetSplitBarEdgeColor   ( ),
  120.  &resetSplitBarMiddleColor ( );
  121.  
  122. protected:
  123. /*---------------------------------- Layout Support --------------------------*/
  124. virtual ISplitCanvas
  125.  &layout ( );
  126.  
  127. private:
  128. /*--------------------------------- Private ----------------------------------*/
  129.  
  130. /*----------------------------- Hidden Members -------------------------------*/
  131.   ISplitCanvas ( const ISplitCanvas& canvas );
  132. ISplitCanvas
  133.  &operator=    ( const ISplitCanvas& canvas );
  134.  
  135. static Style
  136.   currentDefaultStyle;
  137.  
  138. void
  139.   resolveRatios ( );
  140. ISplitCanvas
  141.  &setResolvedPercentage ( IWindow*      window,
  142.                           unsigned long percentage );
  143. unsigned long
  144.   resolvedPercentage    ( IWindow* window );
  145.  
  146. Boolean
  147.   bClRatiosNotResolved;
  148.  
  149. unsigned long
  150.   ulClMiddleThickness,
  151.   ulClEdgeThickness,
  152.   ulClChildCount;
  153.  
  154. IColor
  155.   clrClMiddleColor,
  156.   clrClEdgeColor;
  157.  
  158. ISize
  159.   sizClCanvasSize;
  160.  
  161. ISplitPercentageSet
  162.  *pClSplitPercentageSet;
  163.  
  164. ISplitCanvasHandler
  165.  *pClSplitCanvasHandler;
  166.  
  167. ISplitBarSet
  168.  *pClSplitBarSet;
  169.  
  170. ISplitCanvasData
  171.  *fSplitCanvasData;
  172.  
  173. friend class ISplitCanvasHandler;
  174.  
  175. friend Boolean
  176.   ISplitPercentageDeleter ( ISplitPercentage* const& splitPercentageObj,
  177.                             void*                    anything );
  178. }; // ISplitCanvas
  179.  
  180. INESTEDBITFLAGCLASSFUNCS(Style, ISplitCanvas);
  181.  
  182. #pragma pack()
  183.  
  184.   #include <isplitcv.inl>
  185.  
  186. #endif /* _ISPLITCV_ */
  187.