home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / Draw / Sources / DrawCmds.h < prev    next >
Encoding:
Text File  |  1996-09-17  |  8.5 KB  |  301 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                DrawCmds.h
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Author:                Mary Boetcher
  7. //
  8. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  9. //
  10. //========================================================================================
  11.  
  12. #ifndef DRAWCMDS_H
  13. #define DRAWCMDS_H
  14.  
  15. // ----- FrameWork Includes -----
  16.  
  17. #ifndef FWCMD_H
  18. #include "FWCmd.h"
  19. #endif
  20.  
  21. // ----- OS Includes -----
  22.  
  23. #ifndef FWCOLOR_H
  24. #include "FWColor.h"
  25. #endif
  26.  
  27. #ifndef FWPAT_H
  28. #include "FWPat.h"
  29. #endif
  30.  
  31. #ifndef FWRECT_H
  32. #include "FWRect.h"
  33. #endif
  34.  
  35. #ifndef FWMENUS_K
  36. #include "FWMenus.k"
  37. #endif
  38.  
  39. //========================================================================================
  40. //    Forward Declarations
  41. //========================================================================================
  42.  
  43. class FW_CFrame;
  44. class CBaseShape;
  45. class CDrawPart;
  46. class CDrawFrame;
  47. class CDrawSelection;
  48. class CDrawContent;
  49.  
  50. //========================================================================================
  51. //     Constants - Command numbers
  52. //========================================================================================
  53.  
  54. const ODCommandID cDrawShapeCommand                = FW_kFirstUserCommandID + 3000;
  55. const ODCommandID cChangeFillColor                = FW_kFirstUserCommandID + 3001;
  56. const ODCommandID cChangeFillPattern            = FW_kFirstUserCommandID + 3002;
  57. const ODCommandID cChangeFrameColor                = FW_kFirstUserCommandID + 3003;
  58. const ODCommandID cChangeFramePattern            = FW_kFirstUserCommandID + 3004;
  59. const ODCommandID cChangeRenderVerb                = FW_kFirstUserCommandID + 3005;
  60. const ODCommandID cResizeCommand                = FW_kFirstUserCommandID + 3006;
  61. const ODCommandID cChangePenSize                = FW_kFirstUserCommandID + 3007;
  62.  
  63. //========================================================================================
  64. // class CDrawShapeCommand - Draw a new shape and add it to the document
  65. //========================================================================================
  66.  
  67. class CDrawShapeCommand : public FW_CCommand
  68. {
  69.   public:
  70.  
  71.     FW_DECLARE_AUTO(CDrawShapeCommand)
  72.  
  73.     CDrawShapeCommand(Environment* ev, 
  74.                     CDrawPart* part, 
  75.                     FW_CFrame* frame,
  76.                     CDrawSelection* selection,
  77.                     CBaseShape* newShape);
  78.  
  79.     virtual ~ CDrawShapeCommand();
  80.  
  81.     // --- Command overrides
  82.     virtual void DoIt(Environment* ev);            // Override
  83.     virtual void UndoIt(Environment* ev);            // Override
  84.     virtual void RedoIt(Environment* ev);            // Override
  85.     virtual void FreeRedoState(Environment* ev);    // Override
  86.  
  87.   protected:
  88.     CDrawContent*    fNewContent;
  89.     CDrawPart*        fDrawPart;
  90.     CDrawSelection*    fDrawSelection;
  91. };
  92.  
  93. //========================================================================================
  94. // class CResizeShapeCommand - Change size of selected shapes
  95. //========================================================================================
  96.  
  97. // $$$$$ [MH]  Consider making this a CChangeShapeCommand!
  98. class CResizeShapeCommand : public FW_CCommand
  99. {
  100.   public:
  101.  
  102.     FW_DECLARE_AUTO(CResizeShapeCommand)
  103.  
  104.     CResizeShapeCommand(Environment* ev, 
  105.                         CDrawPart* part,
  106.                         FW_CFrame* frame,
  107.                         CDrawSelection* selection,
  108.                         const FW_CRect& srcRect,
  109.                         const FW_CRect& dstRect);
  110.  
  111.     virtual ~ CResizeShapeCommand();
  112.  
  113.     // --- Command overrides
  114.     virtual void DoIt(Environment* ev);    
  115.     virtual void UndoIt(Environment* ev);
  116.     virtual void RedoIt(Environment* ev);
  117.     virtual FW_Boolean IsOKtoEdit(Environment* ev);
  118.     virtual void PropagateChanges(Environment* ev, ODUpdateID id = kODUnknownUpdate);
  119.  
  120.  
  121.   private:
  122.     void MapShapes(Environment* ev, const FW_CRect& srcRect, const FW_CRect& dstRect);
  123.     void Redraw(Environment* ev, ODDoneState doneState);
  124.  
  125.   protected:
  126.     CDrawPart*            fDrawPart;
  127.     CDrawSelection*        fDrawSelection;
  128.     FW_CRect            fSourceRect;
  129.     FW_CRect            fDestRect;
  130.     ODShape*            fUpdateShape;
  131.     CDrawContent*        fChangedContent;
  132. };
  133.  
  134. //========================================================================================
  135. // class CChangeShapeCommand - Change shape attributes: color, pattern, render verb
  136. //========================================================================================
  137.  
  138. class CChangeShapeCommand : public FW_CCommand
  139. {
  140.   public:
  141.  
  142.     FW_DECLARE_AUTO(CChangeShapeCommand)
  143.  
  144.     CChangeShapeCommand(Environment* ev, 
  145.                         ODCommandID id,
  146.                         CDrawPart* part, 
  147.                         FW_CFrame* frame,
  148.                         CDrawSelection* selection);
  149.  
  150.     virtual ~ CChangeShapeCommand();
  151.  
  152.     // --- Command overrides
  153.     virtual void DoIt(Environment* ev);
  154.     virtual void UndoIt(Environment* ev);
  155.     virtual void RedoIt(Environment* ev);
  156.     virtual FW_Boolean IsOKtoEdit(Environment* ev);
  157.     virtual void PropagateChanges(Environment* ev, ODUpdateID id = kODUnknownUpdate);
  158.  
  159.   protected:
  160.  
  161.     // --- Must be overridden
  162.     virtual void DoChange(Environment* ev) = 0;
  163.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index) = 0;
  164.  
  165.   private:
  166.     void UpdateDisplay(Environment* ev);
  167.  
  168.   protected:
  169.     CDrawPart*                fDrawPart;
  170.     CDrawSelection*            fDrawSelection;
  171.     CDrawContent*            fChangedContent;
  172. };
  173.  
  174. //========================================================================================
  175. // CChangeColorCommand
  176. //========================================================================================
  177.  
  178. class CChangeColorCommand : public CChangeShapeCommand
  179. {
  180.   public:
  181.  
  182.     FW_DECLARE_AUTO(CChangeColorCommand)
  183.  
  184.     CChangeColorCommand(Environment* ev, 
  185.                         ODCommandID commandID,
  186.                         CDrawPart* part, 
  187.                         FW_CFrame* frame,
  188.                         CDrawSelection* selection,
  189.                         const FW_CColor& newColor);
  190.  
  191.     virtual ~ CChangeColorCommand();
  192.  
  193.     // --- CChangeShapeCommand overrides
  194.   protected:
  195.     virtual void DoChange(Environment* ev);        // Override
  196.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  197.   public:
  198.     virtual void SaveUndoState(Environment* ev);    // Override
  199.  
  200.   protected:
  201.     FW_CColor*            fOldColors;        // array of FW_CColor
  202.     FW_CColor            fNewColor;
  203.     FW_Boolean            fIsFill;
  204. };
  205.  
  206. //========================================================================================
  207. // CChangePatternCommand
  208. //========================================================================================
  209.  
  210. class CChangePatternCommand : public CChangeShapeCommand
  211. {
  212.   public:
  213.  
  214.     FW_DECLARE_AUTO(CChangePatternCommand)
  215.  
  216.     CChangePatternCommand(Environment* ev, 
  217.                         ODCommandID commandID,
  218.                         CDrawPart* part, 
  219.                         FW_CFrame* frame,
  220.                         CDrawSelection* selection,
  221.                         const FW_CPattern& newPattern);
  222.  
  223.     virtual ~ CChangePatternCommand();
  224.  
  225.     // --- CChangeShapeCommand overrides
  226.   protected:
  227.     virtual void DoChange(Environment* ev);        // Override
  228.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  229.  
  230.   public:
  231.     virtual void SaveUndoState(Environment* ev);    // Override
  232.  
  233.   protected:
  234.     FW_CPattern**        fOldPatterns;    // array of FW_CPattern
  235.     FW_CPattern            fNewPattern;
  236.     unsigned short        fCount;
  237.     FW_Boolean            fIsFill;
  238. };
  239.  
  240. //========================================================================================
  241. // CChangeRenderVerbCommand
  242. //========================================================================================
  243.  
  244. class CChangeRenderVerbCommand : public CChangeShapeCommand
  245. {
  246.   public:
  247.  
  248.     FW_DECLARE_AUTO(CChangeRenderVerbCommand)
  249.  
  250.     CChangeRenderVerbCommand(Environment* ev, 
  251.                             CDrawPart* part, 
  252.                             FW_CFrame* frame,
  253.                             CDrawSelection* selection,
  254.                             unsigned short newRenderVerb);
  255.  
  256.     virtual ~ CChangeRenderVerbCommand();
  257.  
  258.     // --- CChangeShapeCommand overrides
  259.   protected:
  260.     virtual void DoChange(Environment* ev);        // Override
  261.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  262.   public:
  263.     virtual void SaveUndoState(Environment* ev);    // Override
  264.  
  265.   private:
  266.     unsigned short    fNewRenderVerb;
  267.     unsigned short*    fOldRenderVerbs;    // array of unsigned short
  268. };
  269.  
  270. //========================================================================================
  271. // CChangePenSizeCommand
  272. //========================================================================================
  273.  
  274. class CChangePenSizeCommand : public CChangeShapeCommand
  275. {
  276.   public:
  277.  
  278.     FW_DECLARE_AUTO(CChangePenSizeCommand)
  279.  
  280.     CChangePenSizeCommand(Environment* ev, 
  281.                           CDrawPart* part, 
  282.                           FW_CFrame* frame,
  283.                           CDrawSelection* selection,
  284.                           FW_Fixed newPenSize);
  285.  
  286.     virtual ~ CChangePenSizeCommand();
  287.  
  288.     // --- CChangeShapeCommand overrides
  289.   protected:
  290.     virtual void DoChange(Environment* ev);        // Override
  291.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  292.   public:
  293.     virtual void SaveUndoState(Environment* ev);    // Override
  294.  
  295.   private:
  296.     FW_Fixed    fNewPenSize;
  297.     FW_Fixed*    fOldPenSizes;    // array of FW_Fixed
  298. };
  299.  
  300. #endif
  301.