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 00855 class HBINFILETK_API HTK_Complex_Clip_Region : public TK_Complex_Clip_Region { 00856 public: 00857 TK_Status Execute (BStreamFileToolkit & tk); 00858 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00859 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00860 { return TK_Complex_Clip_Region::Interpret(tk, key, special); } 00861 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00862 }; 00863 00864 00866 00876 class HBINFILETK_API HTK_Clip_Rectangle : public TK_Clip_Rectangle { 00877 public: 00878 TK_Status Execute (BStreamFileToolkit & tk); 00879 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00880 }; 00881 00882 00884 00894 class HBINFILETK_API HTK_Text_Font : public TK_Text_Font { 00895 public: 00896 TK_Status Execute (BStreamFileToolkit & tk); 00897 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00898 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00899 { return TK_Text_Font::Interpret(tk, key, special); } 00900 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00901 }; 00902 00904 00906 00920 class HBINFILETK_API2 HTK_Bounding : public TK_Bounding { 00921 public: 00923 HTK_Bounding (unsigned char opcode) 00924 : TK_Bounding (opcode) {} 00926 HTK_Bounding (unsigned char opcode, float * min, float * max) 00927 : TK_Bounding (opcode, min, max) {} 00929 HTK_Bounding (unsigned char opcode, float * center, float radius) 00930 : TK_Bounding (opcode, center, radius) {} 00931 00932 TK_Status Execute (BStreamFileToolkit & tk); 00933 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00934 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00935 { return TK_Bounding::Interpret(tk, key, special); } 00936 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00937 }; 00938 00941 00951 class HBINFILETK_API HTK_Point : public TK_Point { 00952 public: 00954 HTK_Point (unsigned char opcode) : TK_Point (opcode) {} 00955 00956 TK_Status Execute (BStreamFileToolkit & tk); 00957 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00958 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00959 { return TK_Point::Interpret(tk, key, special); } 00960 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00961 }; 00962 00963 00965 00975 class HBINFILETK_API HTK_Line : public TK_Line { 00976 public: 00978 HTK_Line (unsigned char opcode = TKE_Line) : TK_Line (opcode) {} 00979 00980 TK_Status Execute (BStreamFileToolkit & tk); 00981 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 00982 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 00983 { return TK_Line::Interpret(tk, key, special); } 00984 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00985 }; 00986 00988 00998 class HBINFILETK_API HTK_Polypoint : public TK_Polypoint { 00999 public: 01001 HTK_Polypoint (unsigned char opcode) : TK_Polypoint (opcode) {} 01002 01003 TK_Status Execute (BStreamFileToolkit & tk); 01004 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01005 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01006 { return TK_Polypoint::Interpret(tk, key, special); } 01007 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01008 }; 01009 01011 01021 class HBINFILETK_API HTK_NURBS_Curve : public TK_NURBS_Curve { 01022 public: 01023 01024 TK_Status Execute (BStreamFileToolkit & tk); 01025 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01026 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01027 { return TK_NURBS_Curve::Interpret(tk, key, special); } 01028 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01029 }; 01030 01032 01042 class HBINFILETK_API HTK_NURBS_Surface : public TK_NURBS_Surface { 01043 protected: 01044 01046 TK_Status interpret_trim (BStreamFileToolkit & tk, int); 01048 TK_Status execute_trim (BStreamFileToolkit & tk, HT_NURBS_Trim *); 01049 01050 public: 01051 01052 TK_Status Execute (BStreamFileToolkit & tk); 01053 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01054 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01055 { return TK_NURBS_Surface::Interpret(tk, key, special); } 01056 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01057 }; 01058 01060 01070 class HBINFILETK_API HTK_Area_Light : public TK_Area_Light { 01071 public: 01072 01073 TK_Status Execute (BStreamFileToolkit & tk); 01074 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01075 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01076 { return TK_Area_Light::Interpret(tk, key, special); } 01077 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01078 }; 01079 01081 01091 class HBINFILETK_API HTK_Spot_Light : public TK_Spot_Light { 01092 public: 01093 TK_Status Execute (BStreamFileToolkit & tk); 01094 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01095 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01096 { return TK_Spot_Light::Interpret(tk, key, special); } 01097 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01098 }; 01099 01101 01111 class HBINFILETK_API HTK_Cutting_Plane : public TK_Cutting_Plane { 01112 public: 01113 TK_Status Execute (BStreamFileToolkit & tk); 01114 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01115 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01116 { return TK_Cutting_Plane::Interpret(tk, key, special); } 01117 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01118 }; 01119 01121 01131 class HBINFILETK_API HTK_Circle : public TK_Circle { 01132 public: 01134 HTK_Circle (unsigned char opcode) : TK_Circle (opcode) {} 01135 01136 TK_Status Execute (BStreamFileToolkit & tk); 01137 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01138 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01139 { return TK_Circle::Interpret(tk, key, special); } 01140 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01141 }; 01142 01144 01154 class HBINFILETK_API HTK_Ellipse : public TK_Ellipse { 01155 public: 01157 HTK_Ellipse (unsigned char opcode) : TK_Ellipse (opcode) {} 01158 01159 TK_Status Execute (BStreamFileToolkit & tk); 01160 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01161 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01162 { return TK_Ellipse::Interpret(tk, key, special); } 01163 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01164 }; 01165 01167 01177 class HBINFILETK_API HTK_Sphere : public TK_Sphere { 01178 public: 01180 HTK_Sphere () : TK_Sphere () {} 01181 01182 TK_Status Execute (BStreamFileToolkit & tk); 01183 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01184 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01185 { return TK_Sphere::Interpret(tk, key, special); } 01186 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01187 }; 01188 01190 01200 class HBINFILETK_API HTK_Cylinder : public TK_Cylinder { 01201 public: 01203 HTK_Cylinder () : TK_Cylinder () {} 01204 01205 TK_Status Execute (BStreamFileToolkit & tk); 01206 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01207 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01208 { return TK_Cylinder::Interpret(tk, key, special); } 01209 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01210 }; 01211 01213 01223 class HBINFILETK_API HTK_PolyCylinder : public TK_PolyCylinder { 01224 public: 01226 HTK_PolyCylinder () : TK_PolyCylinder () {} 01227 01228 TK_Status Execute (BStreamFileToolkit & tk); 01229 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01230 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01231 { return TK_PolyCylinder::Interpret(tk, key, special); } 01232 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01233 }; 01234 01236 01246 class HBINFILETK_API HTK_Grid : public TK_Grid { 01247 public: 01248 TK_Status Execute (BStreamFileToolkit & tk); 01249 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01250 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01251 { return TK_Grid::Interpret(tk, key, special); } 01252 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01253 }; 01254 01257 01267 class HBINFILETK_API HTK_Text : public TK_Text { 01268 public: 01270 HTK_Text (unsigned char opcode) : TK_Text (opcode) {} 01271 01272 TK_Status Execute (BStreamFileToolkit & tk); 01273 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01274 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01275 { return TK_Text::Interpret(tk, key, special); } 01276 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01277 }; 01278 01281 01291 class HBINFILETK_API HTK_Font : public TK_Font { 01292 public: 01293 TK_Status Execute (BStreamFileToolkit & tk); 01294 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01295 { return TK_Font::Interpret(tk, key, variant); } 01296 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01297 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01298 }; 01299 01300 01303 01313 class HBINFILETK_API2 HTK_Image : public TK_Image { 01314 public: 01315 HTK_Image () { 01316 m_jpeg_native = true; 01317 } 01318 01319 TK_Status Execute (BStreamFileToolkit & tk); 01320 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01321 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01322 { return TK_Image::Interpret(tk, key, special); } 01323 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01324 }; 01325 01326 01329 01339 class HBINFILETK_API2 HTK_Texture : public TK_Texture { 01340 protected: 01341 int mh_stage; 01342 BBaseOpcodeHandler * m_referee; 01343 HC_KEY m_key; 01344 01345 public: 01346 HTK_Texture () : mh_stage (0), m_referee (0) {} 01347 ~HTK_Texture (); 01348 01349 TK_Status Write (BStreamFileToolkit & tk); // 01350 TK_Status Execute (BStreamFileToolkit & tk); 01351 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01352 { return TK_Texture::Interpret(tk, key, variant); } 01353 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01354 void Reset (); 01355 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01356 }; 01357 01359 class HBINFILETK_API2 HTK_Texture_Definitions : public BBaseOpcodeHandler { 01360 protected: 01361 BBaseOpcodeHandler ** m_parts; 01362 int m_num_parts; 01363 bool m_is_shader; 01364 01365 public: 01366 HTK_Texture_Definitions (bool shader = false); 01367 ~HTK_Texture_Definitions (); 01368 01369 TK_Status Read (BStreamFileToolkit & tk); 01370 TK_Status Write (BStreamFileToolkit & tk); 01371 TK_Status Execute (BStreamFileToolkit & tk); 01372 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01373 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01374 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01375 01376 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01377 }; 01378 01381 01391 class HBINFILETK_API2 HTK_Glyph_Definition : public TK_Glyph_Definition { 01392 public: 01393 TK_Status Execute (BStreamFileToolkit & tk); 01394 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01395 { return TK_Glyph_Definition::Interpret(tk, key, variant); } 01396 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01397 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01398 }; 01399 01402 class HBINFILETK_API2 HTK_Glyph_Definitions : public BBaseOpcodeHandler { 01403 protected: 01404 BBaseOpcodeHandler ** m_parts; 01405 int m_num_parts; 01406 public: 01407 HTK_Glyph_Definitions (); 01408 ~HTK_Glyph_Definitions (); 01409 01410 TK_Status Read (BStreamFileToolkit & tk); 01411 TK_Status Write (BStreamFileToolkit & tk); 01412 TK_Status Execute (BStreamFileToolkit & tk); 01413 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01414 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01415 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01416 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01417 }; 01418 01421 01431 class HBINFILETK_API2 HTK_Named_Style_Def : public TK_Named_Style_Def { 01432 protected: 01433 HC_KEY m_key; 01434 int mh_stage; 01435 HC_KEY m_root; 01436 public: 01438 HTK_Named_Style_Def () : TK_Named_Style_Def (), mh_stage (0) {} 01439 01440 TK_Status Write (BStreamFileToolkit & tk); // 01441 TK_Status Execute (BStreamFileToolkit & tk); 01442 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01443 { return TK_Named_Style_Def::Interpret(tk, key, variant); } 01444 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01445 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01446 01447 void SetRoot (HC_KEY root) { m_root = root; } 01448 HC_KEY GetRoot () const { return m_root; } 01449 01450 void Reset (); 01451 }; 01452 01455 class HBINFILETK_API2 HTK_Named_Style_Defs : public BBaseOpcodeHandler { 01456 protected: 01457 BBaseOpcodeHandler ** m_parts; 01458 int m_num_parts; 01459 HC_KEY m_root; 01460 public: 01461 HTK_Named_Style_Defs (); 01462 ~HTK_Named_Style_Defs (); 01463 01464 TK_Status Read (BStreamFileToolkit & tk); 01465 TK_Status Write (BStreamFileToolkit & tk); 01466 TK_Status Execute (BStreamFileToolkit & tk); 01467 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01468 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01469 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01470 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01471 01472 void SetRoot (HC_KEY root) { m_root = root; } 01473 HC_KEY GetRoot () const { return m_root; } 01474 }; 01475 01476 01479 01489 class HBINFILETK_API2 HTK_Line_Style : public TK_Line_Style { 01490 public: 01491 TK_Status Execute (BStreamFileToolkit & tk); 01492 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) 01493 { return TK_Line_Style::Interpret(tk, key, variant); } 01494 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special); 01495 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01496 }; 01497 01500 class HBINFILETK_API2 HTK_Line_Styles : public BBaseOpcodeHandler { 01501 protected: 01502 BBaseOpcodeHandler ** m_parts; 01503 int m_num_parts; 01504 public: 01505 HTK_Line_Styles (); 01506 ~HTK_Line_Styles (); 01507 01508 TK_Status Read (BStreamFileToolkit & tk); 01509 TK_Status Write (BStreamFileToolkit & tk); 01510 TK_Status Execute (BStreamFileToolkit & tk); 01511 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0); 01512 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) 01513 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01514 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01515 }; 01516 01517 #endif //HOPCODE_HANDLER 01518