home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / flash078.zip / flashsource-r0_7_8.zip / FMorph.h < prev    next >
C/C++ Source or Header  |  2001-08-02  |  4KB  |  142 lines

  1. #ifndef FLASH_MORPH_H_FILE
  2. #define FLASH_MORPH_H_FILE
  3. #include "FShape.h"
  4. #include <vector>
  5.  
  6. class FlashMorphGradientRecord 
  7. {
  8. public:
  9.     FlashMorphGradientRecord(unsigned char _r1, FlashRGB _c1, unsigned char _r2, FlashRGB _c2) : r1(_r1), c1(_c1), r2(_r2), c2(_c2) {}
  10.     void Write(std::ostream &out);
  11. private:
  12.     unsigned char r1;
  13.     FlashRGB c1;
  14.     unsigned char r2;
  15.     FlashRGB c2;
  16. };
  17.  
  18. class FlashMorphGradient
  19. {
  20. public:
  21.     FlashMorphGradient() {}
  22.     
  23.     void AddRecord(const FlashMorphGradientRecord &r) { records.push_back(r); }
  24.     void Write(std::ostream &out);
  25. private:
  26.     std::vector<FlashMorphGradientRecord> records;
  27. };
  28.  
  29. class FlashMorphFillStyle
  30. {
  31. public:
  32.         FlashMorphFillStyle() {}
  33.         virtual ~FlashMorphFillStyle() {}
  34.     virtual void Write(std::ostream &out) = 0;
  35. };
  36.  
  37. class FlashMorphFillStyleSolid : public FlashMorphFillStyle
  38. {
  39. public:
  40.     FlashMorphFillStyleSolid(FlashRGB &_c1, FlashRGB &_c2) : c1(_c1), c2(_c2) {}
  41.         virtual ~FlashMorphFillStyleSolid() {}
  42.     virtual void Write(std::ostream &out);
  43. private:
  44.     FlashRGB c1;
  45.     FlashRGB c2;
  46. };
  47.  
  48. class FlashMorphFillStyleLinear : public FlashMorphFillStyle
  49. {
  50. public:
  51.     FlashMorphFillStyleLinear(FlashMatrix &_fm1, FlashMatrix &_fm2, FlashMorphGradient& _fmg) : fm1(_fm1), fm2(_fm2), fmg(_fmg) {}
  52.         virtual ~FlashMorphFillStyleLinear() {}
  53.     virtual void Write(std::ostream &out);
  54. private:    
  55.     FlashMatrix fm1;
  56.     FlashMatrix fm2;
  57.     FlashMorphGradient fmg;
  58.  
  59. };
  60. class FlashMorphFillStyleRadial : public FlashMorphFillStyle
  61. {
  62. public:
  63.     FlashMorphFillStyleRadial(FlashMatrix &_fm1, FlashMatrix &_fm2, FlashMorphGradient& _fmg) : fm1(_fm1), fm2(_fm2), fmg(_fmg) {}
  64.         virtual ~FlashMorphFillStyleRadial() {}
  65.     virtual void Write(std::ostream &out);
  66. private:    
  67.     FlashMatrix fm1;
  68.     FlashMatrix fm2;
  69.     FlashMorphGradient fmg;
  70. };
  71. class FlashMorphFillStyleBitmap : public FlashMorphFillStyle
  72. {
  73. public:
  74.     FlashMorphFillStyleBitmap(UWORD _bitmapID, FlashMatrix &_mstart, FlashMatrix &_mend, bool _tiled=false) :
  75.       bitmapID(_bitmapID), mstart(_mstart), mend(_mend), tiled(_tiled) {}
  76.         virtual ~FlashMorphFillStyleBitmap() {}
  77.     virtual void Write(std::ostream &out);
  78. private:
  79.     UWORD bitmapID;
  80.     FlashMatrix mstart;
  81.     FlashMatrix mend;
  82.     bool tiled;
  83.  
  84. };
  85.  
  86. class FlashMorphFillStyles
  87. {
  88. public:
  89.         FlashMorphFillStyles() {}
  90.         size_t AddFillStyle(FlashMorphFillStyle* s) { fillStyles.push_back(s); return fillStyles.size();}
  91.         void Write(std::ostream &out);
  92. private:
  93.         std::vector<FlashMorphFillStyle*> fillStyles;
  94. };
  95.  
  96. class FlashMorphLineStyle
  97. {
  98. public:
  99.     FlashMorphLineStyle(UWORD _w1, FlashRGB _c1, UWORD _w2, FlashRGB _c2) : w1(_w1), c1(_c1), w2(_w2), c2(_c2) {}
  100.     void Write(std::ostream &out);
  101. private:
  102.     UWORD w1;
  103.     FlashRGB c1;
  104.     UWORD w2;
  105.     FlashRGB c2;
  106.  
  107. };
  108.  
  109. class FlashMorphLineStyles
  110. {
  111. public:
  112.         FlashMorphLineStyles() {}
  113.         size_t AddFillStyle(FlashMorphLineStyle &s) { lineStyles.push_back(s); return lineStyles.size();}
  114.         void Write(std::ostream &out);
  115. private:
  116.         std::vector<FlashMorphLineStyle> lineStyles;
  117. };
  118.  
  119. class FlashTagDefineMorphShape : public FlashTag, public FlashIDEnabled
  120. {
  121. DEFINE_RW_INTERFACE
  122. public:    
  123.     FlashTagDefineMorphShape(FlashShape &_s1, FlashShape &_s2) : s1(_s1), s2(_s2) {}
  124.     
  125.     void SetMorphFillStyles(FlashMorphFillStyles &s) { fs1=s; }
  126.     void SetMorphLineStyles(FlashMorphLineStyles &s) { fs2=s; }
  127.  
  128.     friend std::ostream &operator<< (std::ostream &out, FlashTagDefineMorphShape &data);
  129.     friend std::istream &operator>> (std::istream &in,  FlashTagDefineMorphShape &data);
  130.  
  131. private:
  132.     FlashShape s1;
  133.     FlashShape s2;
  134.  
  135.     FlashMorphFillStyles fs1;
  136.     FlashMorphLineStyles fs2;
  137.  
  138.  
  139. };
  140.  
  141. #endif
  142.