00001 // Copyright (c) 1998-2014 by Tech Soft 3D, Inc. 00002 // 00003 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., 00004 // and considered a trade secret as defined under civil and criminal statutes. 00005 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of 00006 // unauthorized use or misappropriation of its trade secrets. Use of this information 00007 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under 00008 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use. 00009 00010 #ifndef HOPCODE_HANDLER 00011 #define HOPCODE_HANDLER 00012 00013 #ifndef HBINFILETK_TOOLKIT 00014 #include "HStreamFileToolkit.h" 00015 #endif 00016 00017 00019 00021 00031 class HBINFILETK_API HTK_Open_Segment : public TK_Open_Segment { 00032 public: 00033 TK_Status Execute (BStreamFileToolkit & tk); 00034 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 00035 { return TK_Open_Segment::Interpret(tk, key, variant); } 00036 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 00037 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00038 }; 00039 00040 00042 00052 class HBINFILETK_API HTK_Close_Segment : public TK_Close_Segment { 00053 public: 00054 TK_Status Execute (BStreamFileToolkit & tk); 00055 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00056 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00057 { return TK_Close_Segment::Interpret(tk, key, special); } 00058 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00059 }; 00060 00062 class HBINFILETK_API HTK_Reopen_Segment : public TK_Reopen_Segment { 00063 public: 00064 TK_Status Execute (BStreamFileToolkit & tk); 00065 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00066 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00067 { return TK_Reopen_Segment::Interpret(tk, key, special); } 00068 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00069 }; 00070 00072 00082 class HBINFILETK_API HTK_Referenced_Segment : public TK_Referenced_Segment { 00083 protected: 00084 int mh_stage; 00085 HC_KEY m_root; 00087 public: 00089 HTK_Referenced_Segment (char opcode) : TK_Referenced_Segment (opcode), mh_stage (0) {} 00090 00091 TK_Status Write (BStreamFileToolkit & tk); // 00092 TK_Status Execute (BStreamFileToolkit & tk); 00093 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00094 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00095 { return TK_Referenced_Segment::Interpret(tk, key, special); } 00096 void Reset (); 00097 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00098 00101 void SetRoot (HC_KEY root) { m_root = root; } 00102 00104 HC_KEY GetRoot () const { return m_root; } 00105 }; 00106 00108 00118 class HBINFILETK_API HTK_Reference : public TK_Reference { 00119 protected: 00120 int mh_stage; 00121 ID_Key mh_owner; 00123 public: 00125 HTK_Reference () : TK_Reference (), mh_stage (0), mh_owner (-1) {} 00126 00127 TK_Status Write (BStreamFileToolkit & tk); // 00128 TK_Status Execute (BStreamFileToolkit & tk); 00129 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00130 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00131 { return TK_Reference::Interpret(tk, key, special); } 00132 bool NeedsContext (BStreamFileToolkit & tk) const; 00133 void Reset (); 00134 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00135 00136 bool Direct() const { return m_referee == 0; } 00137 }; 00138 00140 00150 class HBINFILETK_API HTK_Instance : public TK_Instance { 00151 public: 00153 HTK_Instance (int from_index=0, int from_variant=0, int to_index=0, int to_variant=0, 00154 int options=0, float const * xform=0); 00155 00156 TK_Status Execute (BStreamFileToolkit & tk); 00157 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant); 00158 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00159 { return TK_Instance::Interpret(tk, key, special); } 00160 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00161 }; 00162 00163 00165 class HBINFILETK_API HTK_Delete_Object : public TK_Delete_Object { 00166 public: 00167 TK_Status Execute (BStreamFileToolkit & tk); 00168 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00169 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00170 { return TK_Delete_Object::Interpret(tk, key, special); } 00171 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00172 }; 00173 00176 00184 class HBINFILETK_API HTK_LOD : public TK_LOD { 00185 public: 00186 TK_Status Execute (BStreamFileToolkit & tk); 00187 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00188 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00189 { return TK_LOD::Interpret(tk, key, special); } 00190 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00191 }; 00192 00193 00196 00206 class HBINFILETK_API HTK_Renumber : public TK_Renumber { 00207 public: 00209 HTK_Renumber (unsigned char opcode, HC_KEY key = 0) : TK_Renumber (opcode, key) {} 00210 00211 TK_Status Execute (BStreamFileToolkit & tk); 00212 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00213 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00214 { return TK_Renumber::Interpret(tk, key, special); } 00215 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00216 }; 00217 00219 00221 00231 class HBINFILETK_API HTK_Color : public TK_Color { 00232 friend class HTK_Color_Composite; 00233 public: 00235 HTK_Color (int mask=0, int channels=0) 00236 : TK_Color () { m_mask = mask; m_channels = (short)channels; } 00237 00238 TK_Status Execute (BStreamFileToolkit & tk); 00239 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00240 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00241 { return TK_Color::Interpret(tk, key, special); } 00242 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00243 00244 }; 00245 00247 00257 class HBINFILETK_API HTK_Color_RGB : public TK_Color_RGB { 00258 public: 00260 HTK_Color_RGB (int mask=0, float const * rgb=0) 00261 : TK_Color_RGB () { 00262 m_mask = mask; 00263 if (rgb != 0) { 00264 m_rgb[0] = rgb[0]; m_rgb[1] = rgb[1]; m_rgb[2] = rgb[2]; 00265 } 00266 } 00267 00268 TK_Status Execute (BStreamFileToolkit & tk); 00269 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00270 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00271 { return TK_Color_RGB::Interpret(tk, key, special); } 00272 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00273 }; 00274 00276 00286 class HBINFILETK_API HTK_Color_By_Value : public TK_Color_By_Value { 00287 public: 00288 TK_Status Execute (BStreamFileToolkit & tk); 00289 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00290 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00291 { return TK_Color_By_Value::Interpret(tk, key, special); } 00292 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00293 }; 00294 00296 00306 class HBINFILETK_API HTK_Color_By_Index : public TK_Color_By_Index { 00307 public: 00309 HTK_Color_By_Index (unsigned char opcode, int mask=0, int index=0) 00310 : TK_Color_By_Index (opcode) { m_mask = mask; m_index = index; } 00311 00312 TK_Status Execute (BStreamFileToolkit & tk); 00313 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00314 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00315 { return TK_Color_By_Index::Interpret(tk, key, special); } 00316 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00317 }; 00318 00319 00321 00331 class HBINFILETK_API HTK_Color_By_FIndex : public TK_Color_By_FIndex { 00332 public: 00334 HTK_Color_By_FIndex (int mask=0, float index=0.0f) 00335 : TK_Color_By_FIndex () { m_mask = mask; m_index = index; } 00336 00337 TK_Status Execute (BStreamFileToolkit & tk); 00338 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00339 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00340 { return TK_Color_By_FIndex::Interpret(tk, key, special); } 00341 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00342 }; 00343 00347 class HBINFILETK_API HTK_Color_Composite : public BBaseOpcodeHandler { 00348 protected: 00349 BBaseOpcodeHandler * m_parts[16]; 00350 00351 public: 00352 HTK_Color_Composite (); 00353 ~HTK_Color_Composite (); 00354 00355 TK_Status Read (BStreamFileToolkit & tk); 00356 TK_Status Write (BStreamFileToolkit & tk); 00357 TK_Status Execute (BStreamFileToolkit & tk); 00358 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00359 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00360 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 00361 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00362 }; 00363 00364 00367 00377 class HBINFILETK_API HTK_Color_Map : public TK_Color_Map { 00378 public: 00379 TK_Status Execute (BStreamFileToolkit & tk); 00380 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00381 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00382 { return TK_Color_Map::Interpret(tk, key, special); } 00383 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00384 }; 00385 00388 00398 class HBINFILETK_API HTK_Callback : public TK_Callback { 00399 public: 00400 TK_Status Execute (BStreamFileToolkit & tk); 00401 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00402 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00403 { return TK_Callback::Interpret(tk, key, special); } 00404 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00405 }; 00406 00408 00410 00420 class HBINFILETK_API HTK_Rendering_Options : public TK_Rendering_Options { 00421 public: 00422 TK_Status Execute (BStreamFileToolkit & tk); 00423 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00424 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00425 { return TK_Rendering_Options::Interpret(tk, key, special); } 00426 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00427 }; 00428 00431 00441 class HBINFILETK_API HTK_Heuristics : public TK_Heuristics { 00442 public: 00443 TK_Status Execute (BStreamFileToolkit & tk); 00444 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00445 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00446 { return TK_Heuristics::Interpret(tk, key, special); } 00447 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00448 }; 00449 00452 00462 class HBINFILETK_API HTK_Geometry_Options : public TK_Geometry_Options { 00463 public: 00464 TK_Status Execute (BStreamFileToolkit & tk); 00465 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00466 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00467 { return TK_Geometry_Options::Interpret(tk, key, special); } 00468 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00469 }; 00470 00473 00483 class HBINFILETK_API HTK_Visibility : public TK_Visibility { 00484 public: 00485 TK_Status Execute (BStreamFileToolkit & tk); 00486 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00487 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00488 { return TK_Visibility::Interpret(tk, key, special); } 00489 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00490 }; 00491 00494 00504 class HBINFILETK_API HTK_Selectability : public TK_Selectability { 00505 public: 00506 TK_Status Execute (BStreamFileToolkit & tk); 00507 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00508 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00509 { return TK_Selectability::Interpret(tk, key, special); } 00510 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00511 }; 00512 00514 00524 class HBINFILETK_API HTK_Matrix : public TK_Matrix { 00525 public: 00527 HTK_Matrix (unsigned char opcode) : TK_Matrix (opcode) {} 00528 00529 TK_Status Execute (BStreamFileToolkit & tk); 00530 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00531 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00532 { return TK_Matrix::Interpret(tk, key, special); } 00533 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00534 }; 00535 00537 00542 class HBINFILETK_API HTK_Enumerated : public TK_Enumerated { 00543 public: 00545 HTK_Enumerated (unsigned char opcode) : TK_Enumerated (opcode) {} 00546 00547 TK_Status Execute (BStreamFileToolkit & tk); 00548 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key=-1, int variant=0); 00549 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00550 { return TK_Enumerated::Interpret(tk, key, special); } 00551 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00552 }; 00553 00555 class HBINFILETK_API HTK_Size : public TK_Size { 00556 public: 00558 HTK_Size (unsigned char opcode) : TK_Size (opcode) {} 00559 00560 TK_Status Execute (BStreamFileToolkit & tk); 00561 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00562 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00563 { return TK_Size::Interpret(tk, key, special); } 00564 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00565 }; 00566 00568 00572 class HBINFILETK_API HTK_Linear_Pattern : public TK_Linear_Pattern { 00573 public: 00575 HTK_Linear_Pattern (unsigned char opcode) : TK_Linear_Pattern (opcode) {} 00576 00577 TK_Status Execute (BStreamFileToolkit & tk); 00578 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key=-1, int variant=0); 00579 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00580 { return TK_Linear_Pattern::Interpret(tk, key, special); } 00581 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00582 }; 00583 00585 00588 class HBINFILETK_API HTK_Named : public TK_Named { 00589 public: 00591 HTK_Named (unsigned char opcode) : TK_Named (opcode) {} 00592 00593 TK_Status Execute (BStreamFileToolkit & tk); 00594 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key=-1, int variant=0); 00595 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00596 { return TK_Named::Interpret(tk, key, special); } 00597 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00598 }; 00599 00600 00602 class HBINFILETK_API HTK_Streaming : public TK_Streaming { 00603 public: 00604 TK_Status Execute (BStreamFileToolkit & tk); 00605 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00606 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00607 { return TK_Streaming::Interpret(tk, key, special); } 00608 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00609 }; 00610 00613 00623 class HBINFILETK_API HTK_Conditions : public TK_Conditions { 00624 public: 00625 TK_Status Execute (BStreamFileToolkit & tk); 00626 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00627 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00628 { return TK_Conditions::Interpret(tk, key, special); } 00629 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00630 }; 00631 00634 00644 class HBINFILETK_API HTK_Conditional_Action : public TK_Conditional_Action { 00645 friend class HTK_Conditional_Actions; 00646 public: 00647 TK_Status Execute (BStreamFileToolkit & tk); 00648 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00649 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00650 { return TK_Conditional_Action::Interpret(tk, key, special); } 00651 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00652 }; 00653 00657 class HBINFILETK_API HTK_Conditional_Actions : public BBaseOpcodeHandler { 00658 protected: 00659 BBaseOpcodeHandler * m_parts[16]; 00660 00661 public: 00662 HTK_Conditional_Actions (); 00663 ~HTK_Conditional_Actions (); 00664 00665 TK_Status Read (BStreamFileToolkit & tk); 00666 TK_Status Write (BStreamFileToolkit & tk); 00667 TK_Status Execute (BStreamFileToolkit & tk); 00668 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00669 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00670 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 00671 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00672 }; 00673 00676 00686 class HBINFILETK_API HTK_User_Options : public TK_User_Options { 00687 public: 00688 TK_Status Execute (BStreamFileToolkit & tk); 00689 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00690 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00691 { return TK_User_Options::Interpret(tk, key, special); } 00692 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00693 }; 00694 00697 00707 class HBINFILETK_API HTK_Unicode_Options : public TK_Unicode_Options { 00708 public: 00709 TK_Status Execute (BStreamFileToolkit & tk); 00710 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00711 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00712 { return TK_Unicode_Options::Interpret(tk, key, special); } 00713 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00714 }; 00715 00717 00727 class HBINFILETK_API HTK_User_Index : public TK_User_Index { 00728 public: 00729 TK_Status Execute (BStreamFileToolkit & tk); 00730 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00731 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00732 { return TK_User_Index::Interpret(tk, key, special); } 00733 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00734 }; 00735 00737 00747 class HBINFILETK_API HTK_User_Index_Data : public TK_User_Index_Data { 00748 public: 00749 TK_Status Execute (BStreamFileToolkit & tk); 00750 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00751 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00752 { return TK_User_Index_Data::Interpret(tk, key, special); } 00753 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00754 }; 00755 00757 00767 class HBINFILETK_API HTK_User_Value : public TK_User_Value { 00768 public: 00769 TK_Status Execute (BStreamFileToolkit & tk); 00770 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00771 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00772 { return TK_User_Value::Interpret(tk, key, special); } 00773 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00774 }; 00775 00777 00787 class HBINFILETK_API2 HTK_Camera : public TK_Camera { 00788 public: 00790 HTK_Camera (unsigned char opcode = TKE_Camera) : TK_Camera (opcode) {} 00791 00792 TK_Status Execute (BStreamFileToolkit & tk); 00793 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00794 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00795 { return TK_Camera::Interpret(tk, key, special); } 00796 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00797 }; 00798 00799 00801 00811 class HBINFILETK_API HTK_Window : public TK_Window { 00812 public: 00813 TK_Status Execute (BStreamFileToolkit & tk); 00814 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00815 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00816 { return TK_Window::Interpret(tk, key, special); } 00817 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00818 }; 00819 00820 00822 00833 class HBINFILETK_API HTK_Clip_Region : public TK_Clip_Region { 00834 public: 00835 TK_Status Execute (BStreamFileToolkit & tk); 00836 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00837 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00838 { return TK_Clip_Region::Interpret(tk, key, special); } 00839 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00840 }; 00841 00842 00844 00854 class HBINFILETK_API HTK_Clip_Rectangle : public TK_Clip_Rectangle { 00855 public: 00856 TK_Status Execute (BStreamFileToolkit & tk); 00857 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00858 }; 00859 00860 00862 00872 class HBINFILETK_API HTK_Text_Font : public TK_Text_Font { 00873 public: 00874 TK_Status Execute (BStreamFileToolkit & tk); 00875 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00876 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00877 { return TK_Text_Font::Interpret(tk, key, special); } 00878 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00879 }; 00880 00882 00884 00898 class HBINFILETK_API2 HTK_Bounding : public TK_Bounding { 00899 public: 00901 HTK_Bounding (unsigned char opcode) 00902 : TK_Bounding (opcode) {} 00904 HTK_Bounding (unsigned char opcode, float * min, float * max) 00905 : TK_Bounding (opcode, min, max) {} 00907 HTK_Bounding (unsigned char opcode, float * center, float radius) 00908 : TK_Bounding (opcode, center, radius) {} 00909 00910 TK_Status Execute (BStreamFileToolkit & tk); 00911 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00912 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00913 { return TK_Bounding::Interpret(tk, key, special); } 00914 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00915 }; 00916 00919 00929 class HBINFILETK_API HTK_Point : public TK_Point { 00930 public: 00932 HTK_Point (unsigned char opcode) : TK_Point (opcode) {} 00933 00934 TK_Status Execute (BStreamFileToolkit & tk); 00935 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00936 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00937 { return TK_Point::Interpret(tk, key, special); } 00938 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00939 }; 00940 00941 00943 00953 class HBINFILETK_API HTK_Line : public TK_Line { 00954 public: 00956 HTK_Line (unsigned char opcode = TKE_Line) : TK_Line (opcode) {} 00957 00958 TK_Status Execute (BStreamFileToolkit & tk); 00959 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00960 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00961 { return TK_Line::Interpret(tk, key, special); } 00962 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00963 }; 00964 00966 00976 class HBINFILETK_API HTK_Polypoint : public TK_Polypoint { 00977 public: 00979 HTK_Polypoint (unsigned char opcode) : TK_Polypoint (opcode) {} 00980 00981 TK_Status Execute (BStreamFileToolkit & tk); 00982 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00983 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00984 { return TK_Polypoint::Interpret(tk, key, special); } 00985 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00986 }; 00987 00989 00999 class HBINFILETK_API HTK_NURBS_Curve : public TK_NURBS_Curve { 01000 public: 01001 01002 TK_Status Execute (BStreamFileToolkit & tk); 01003 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01004 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01005 { return TK_NURBS_Curve::Interpret(tk, key, special); } 01006 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01007 }; 01008 01010 01020 class HBINFILETK_API HTK_NURBS_Surface : public TK_NURBS_Surface { 01021 protected: 01022 01024 TK_Status interpret_trim (BStreamFileToolkit & tk, int); 01026 TK_Status execute_trim (BStreamFileToolkit & tk, HT_NURBS_Trim *); 01027 01028 public: 01029 01030 TK_Status Execute (BStreamFileToolkit & tk); 01031 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01032 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01033 { return TK_NURBS_Surface::Interpret(tk, key, special); } 01034 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01035 }; 01036 01038 01048 class HBINFILETK_API HTK_Area_Light : public TK_Area_Light { 01049 public: 01050 01051 TK_Status Execute (BStreamFileToolkit & tk); 01052 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01053 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01054 { return TK_Area_Light::Interpret(tk, key, special); } 01055 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01056 }; 01057 01059 01069 class HBINFILETK_API HTK_Spot_Light : public TK_Spot_Light { 01070 public: 01071 TK_Status Execute (BStreamFileToolkit & tk); 01072 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01073 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01074 { return TK_Spot_Light::Interpret(tk, key, special); } 01075 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01076 }; 01077 01079 01089 class HBINFILETK_API HTK_Cutting_Plane : public TK_Cutting_Plane { 01090 public: 01091 TK_Status Execute (BStreamFileToolkit & tk); 01092 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01093 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01094 { return TK_Cutting_Plane::Interpret(tk, key, special); } 01095 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01096 }; 01097 01099 01109 class HBINFILETK_API HTK_Circle : public TK_Circle { 01110 public: 01112 HTK_Circle (unsigned char opcode) : TK_Circle (opcode) {} 01113 01114 TK_Status Execute (BStreamFileToolkit & tk); 01115 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01116 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01117 { return TK_Circle::Interpret(tk, key, special); } 01118 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01119 }; 01120 01122 01132 class HBINFILETK_API HTK_Ellipse : public TK_Ellipse { 01133 public: 01135 HTK_Ellipse (unsigned char opcode) : TK_Ellipse (opcode) {} 01136 01137 TK_Status Execute (BStreamFileToolkit & tk); 01138 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01139 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01140 { return TK_Ellipse::Interpret(tk, key, special); } 01141 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01142 }; 01143 01145 01155 class HBINFILETK_API HTK_Sphere : public TK_Sphere { 01156 public: 01158 HTK_Sphere () : TK_Sphere () {} 01159 01160 TK_Status Execute (BStreamFileToolkit & tk); 01161 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01162 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01163 { return TK_Sphere::Interpret(tk, key, special); } 01164 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01165 }; 01166 01168 01178 class HBINFILETK_API HTK_Cylinder : public TK_Cylinder { 01179 public: 01181 HTK_Cylinder () : TK_Cylinder () {} 01182 01183 TK_Status Execute (BStreamFileToolkit & tk); 01184 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01185 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01186 { return TK_Cylinder::Interpret(tk, key, special); } 01187 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01188 }; 01189 01191 01201 class HBINFILETK_API HTK_PolyCylinder : public TK_PolyCylinder { 01202 public: 01204 HTK_PolyCylinder () : TK_PolyCylinder () {} 01205 01206 TK_Status Execute (BStreamFileToolkit & tk); 01207 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01208 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01209 { return TK_PolyCylinder::Interpret(tk, key, special); } 01210 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01211 }; 01212 01214 01224 class HBINFILETK_API HTK_Grid : public TK_Grid { 01225 public: 01226 TK_Status Execute (BStreamFileToolkit & tk); 01227 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01228 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01229 { return TK_Grid::Interpret(tk, key, special); } 01230 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01231 }; 01232 01235 01245 class HBINFILETK_API HTK_Text : public TK_Text { 01246 public: 01248 HTK_Text (unsigned char opcode) : TK_Text (opcode) {} 01249 01250 TK_Status Execute (BStreamFileToolkit & tk); 01251 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01252 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01253 { return TK_Text::Interpret(tk, key, special); } 01254 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01255 }; 01256 01259 01269 class HBINFILETK_API HTK_Font : public TK_Font { 01270 public: 01271 TK_Status Execute (BStreamFileToolkit & tk); 01272 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01273 { return TK_Font::Interpret(tk, key, variant); } 01274 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01275 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01276 }; 01277 01278 01281 01291 class HBINFILETK_API2 HTK_Image : public TK_Image { 01292 public: 01293 HTK_Image () { 01294 m_jpeg_native = true; 01295 } 01296 01297 TK_Status Execute (BStreamFileToolkit & tk); 01298 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01299 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01300 { return TK_Image::Interpret(tk, key, special); } 01301 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01302 }; 01303 01304 01307 01317 class HBINFILETK_API2 HTK_Texture : public TK_Texture { 01318 protected: 01319 int mh_stage; 01320 BBaseOpcodeHandler * m_referee; 01321 HC_KEY m_key; 01322 01323 public: 01324 HTK_Texture () : mh_stage (0), m_referee (0) {} 01325 ~HTK_Texture (); 01326 01327 TK_Status Write (BStreamFileToolkit & tk); // 01328 TK_Status Execute (BStreamFileToolkit & tk); 01329 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01330 { return TK_Texture::Interpret(tk, key, variant); } 01331 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01332 void Reset (); 01333 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01334 }; 01335 01337 class HBINFILETK_API2 HTK_Texture_Definitions : public BBaseOpcodeHandler { 01338 protected: 01339 BBaseOpcodeHandler ** m_parts; 01340 int m_num_parts; 01341 bool m_is_shader; 01342 01343 public: 01344 HTK_Texture_Definitions (bool shader = false); 01345 ~HTK_Texture_Definitions (); 01346 01347 TK_Status Read (BStreamFileToolkit & tk); 01348 TK_Status Write (BStreamFileToolkit & tk); 01349 TK_Status Execute (BStreamFileToolkit & tk); 01350 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01351 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01352 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01353 01354 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01355 }; 01356 01359 01369 class HBINFILETK_API2 HTK_Glyph_Definition : public TK_Glyph_Definition { 01370 public: 01371 TK_Status Execute (BStreamFileToolkit & tk); 01372 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01373 { return TK_Glyph_Definition::Interpret(tk, key, variant); } 01374 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01375 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01376 }; 01377 01380 class HBINFILETK_API2 HTK_Glyph_Definitions : public BBaseOpcodeHandler { 01381 protected: 01382 BBaseOpcodeHandler ** m_parts; 01383 int m_num_parts; 01384 public: 01385 HTK_Glyph_Definitions (); 01386 ~HTK_Glyph_Definitions (); 01387 01388 TK_Status Read (BStreamFileToolkit & tk); 01389 TK_Status Write (BStreamFileToolkit & tk); 01390 TK_Status Execute (BStreamFileToolkit & tk); 01391 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01392 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01393 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01394 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01395 }; 01396 01399 01409 class HBINFILETK_API2 HTK_Named_Style_Def : public TK_Named_Style_Def { 01410 protected: 01411 HC_KEY m_key; 01412 int mh_stage; 01413 HC_KEY m_root; 01414 public: 01416 HTK_Named_Style_Def () : TK_Named_Style_Def (), mh_stage (0) {} 01417 01418 TK_Status Write (BStreamFileToolkit & tk); // 01419 TK_Status Execute (BStreamFileToolkit & tk); 01420 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01421 { return TK_Named_Style_Def::Interpret(tk, key, variant); } 01422 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01423 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01424 01425 void SetRoot (HC_KEY root) { m_root = root; } 01426 HC_KEY GetRoot () const { return m_root; } 01427 01428 void Reset (); 01429 }; 01430 01433 class HBINFILETK_API2 HTK_Named_Style_Defs : public BBaseOpcodeHandler { 01434 protected: 01435 BBaseOpcodeHandler ** m_parts; 01436 int m_num_parts; 01437 HC_KEY m_root; 01438 public: 01439 HTK_Named_Style_Defs (); 01440 ~HTK_Named_Style_Defs (); 01441 01442 TK_Status Read (BStreamFileToolkit & tk); 01443 TK_Status Write (BStreamFileToolkit & tk); 01444 TK_Status Execute (BStreamFileToolkit & tk); 01445 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01446 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01447 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01448 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01449 01450 void SetRoot (HC_KEY root) { m_root = root; } 01451 HC_KEY GetRoot () const { return m_root; } 01452 }; 01453 01454 01457 01467 class HBINFILETK_API2 HTK_Line_Style : public TK_Line_Style { 01468 public: 01469 TK_Status Execute (BStreamFileToolkit & tk); 01470 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01471 { return TK_Line_Style::Interpret(tk, key, variant); } 01472 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01473 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01474 }; 01475 01478 class HBINFILETK_API2 HTK_Line_Styles : public BBaseOpcodeHandler { 01479 protected: 01480 BBaseOpcodeHandler ** m_parts; 01481 int m_num_parts; 01482 public: 01483 HTK_Line_Styles (); 01484 ~HTK_Line_Styles (); 01485 01486 TK_Status Read (BStreamFileToolkit & tk); 01487 TK_Status Write (BStreamFileToolkit & tk); 01488 TK_Status Execute (BStreamFileToolkit & tk); 01489 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01490 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01491 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01492 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01493 }; 01494 01495 #endif //HOPCODE_HANDLER 01496