00001 // 00002 // Copyright (c) 2000 by Tech Soft 3D, LLC. 00003 // The information contained herein is confidential and proprietary to 00004 // Tech Soft 3D, LLC., and considered a trade secret as defined under 00005 // civil and criminal statutes. Tech Soft 3D shall pursue its civil 00006 // and criminal remedies in the event of unauthorized use or misappropriation 00007 // of its trade secrets. Use of this information by anyone other than 00008 // authorized employees of Tech Soft 3D, LLC. is granted only under a 00009 // written non-disclosure agreement, expressly prescribing the scope and 00010 // manner of such use. 00011 // 00012 // $Id$ 00013 // 00014 00015 #ifndef HOPCODE_HANDLER 00016 #define HOPCODE_HANDLER 00017 00018 #ifndef HBINFILETK_TOOLKIT 00019 #include "HStreamFileToolkit.h" 00020 #endif 00021 00022 00024 00026 00036 class HBINFILETK_API HTK_Open_Segment : public TK_Open_Segment { 00037 public: 00038 TK_Status Execute (BStreamFileToolkit & tk) alter; 00039 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter 00040 { return TK_Open_Segment::Interpret(tk, key, variant); } 00041 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter; 00042 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00043 }; 00044 00045 00047 00057 class HBINFILETK_API HTK_Close_Segment : public TK_Close_Segment { 00058 public: 00059 TK_Status Execute (BStreamFileToolkit & tk) alter; 00060 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00061 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00062 { return TK_Close_Segment::Interpret(tk, key, special); } 00063 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00064 }; 00065 00067 class HBINFILETK_API HTK_Reopen_Segment : public TK_Reopen_Segment { 00068 public: 00069 TK_Status Execute (BStreamFileToolkit & tk) alter; 00070 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00071 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00072 { return TK_Reopen_Segment::Interpret(tk, key, special); } 00073 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00074 }; 00075 00077 00087 class HBINFILETK_API HTK_Referenced_Segment : public TK_Referenced_Segment { 00088 protected: 00089 int mh_stage; 00090 HC_KEY m_root; 00092 public: 00094 HTK_Referenced_Segment (char opcode) : TK_Referenced_Segment (opcode), mh_stage (0) {} 00095 00096 TK_Status Write (BStreamFileToolkit & tk) alter; // 00097 TK_Status Execute (BStreamFileToolkit & tk) alter; 00098 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00099 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00100 { return TK_Referenced_Segment::Interpret(tk, key, special); } 00101 void Reset () alter; 00102 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00103 00106 void SetRoot (HC_KEY root) alter { m_root = root; } 00107 00109 HC_KEY GetRoot () const { return m_root; } 00110 }; 00111 00113 00123 class HBINFILETK_API HTK_Reference : public TK_Reference { 00124 protected: 00125 int mh_stage; 00126 ID_Key mh_owner; 00128 public: 00130 HTK_Reference () : TK_Reference (), mh_stage (0), mh_owner (-1) {} 00131 00132 TK_Status Write (BStreamFileToolkit & tk) alter; // 00133 TK_Status Execute (BStreamFileToolkit & tk) alter; 00134 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00135 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00136 { return TK_Reference::Interpret(tk, key, special); } 00137 bool NeedsContext (BStreamFileToolkit & tk) const; 00138 void Reset () alter; 00139 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00140 00141 bool Direct() const { return m_referee == 0; } 00142 }; 00143 00145 00155 class HBINFILETK_API HTK_Instance : public TK_Instance { 00156 public: 00158 HTK_Instance (int from_index=0, int from_variant=0, int to_index=0, int to_variant=0, 00159 int options=0, float const * xform=0); 00160 00161 TK_Status Execute (BStreamFileToolkit & tk) alter; 00162 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant) alter; 00163 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00164 { return TK_Instance::Interpret(tk, key, special); } 00165 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00166 }; 00167 00168 00170 class HBINFILETK_API HTK_Delete_Object : public TK_Delete_Object { 00171 public: 00172 TK_Status Execute (BStreamFileToolkit & tk) alter; 00173 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00174 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00175 { return TK_Delete_Object::Interpret(tk, key, special); } 00176 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00177 }; 00178 00181 00189 class HBINFILETK_API HTK_LOD : public TK_LOD { 00190 public: 00191 TK_Status Execute (BStreamFileToolkit & tk) alter; 00192 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00193 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00194 { return TK_LOD::Interpret(tk, key, special); } 00195 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00196 }; 00197 00198 00201 00211 class HBINFILETK_API HTK_Renumber : public TK_Renumber { 00212 public: 00214 HTK_Renumber (unsigned char opcode, HC_KEY key = 0) : TK_Renumber (opcode, key) {} 00215 00216 TK_Status Execute (BStreamFileToolkit & tk) alter; 00217 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00218 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00219 { return TK_Renumber::Interpret(tk, key, special); } 00220 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00221 }; 00222 00224 00226 00236 class HBINFILETK_API HTK_Color : public TK_Color { 00237 friend class HTK_Color_Composite; 00238 public: 00240 HTK_Color (int mask=0, int channels=0) 00241 : TK_Color () { m_mask = mask; m_channels = (short)channels; } 00242 00243 TK_Status Execute (BStreamFileToolkit & tk) alter; 00244 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00245 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00246 { return TK_Color::Interpret(tk, key, special); } 00247 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00248 00249 }; 00250 00252 00262 class HBINFILETK_API HTK_Color_RGB : public TK_Color_RGB { 00263 public: 00265 HTK_Color_RGB (int mask=0, float const * rgb=0) 00266 : TK_Color_RGB () { 00267 m_mask = mask; 00268 if (rgb != 0) { 00269 m_rgb[0] = rgb[0]; m_rgb[1] = rgb[1]; m_rgb[2] = rgb[2]; 00270 } 00271 } 00272 00273 TK_Status Execute (BStreamFileToolkit & tk) alter; 00274 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00275 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00276 { return TK_Color_RGB::Interpret(tk, key, special); } 00277 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00278 }; 00279 00281 00291 class HBINFILETK_API HTK_Color_By_Value : public TK_Color_By_Value { 00292 public: 00293 TK_Status Execute (BStreamFileToolkit & tk) alter; 00294 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00295 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00296 { return TK_Color_By_Value::Interpret(tk, key, special); } 00297 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00298 }; 00299 00301 00311 class HBINFILETK_API HTK_Color_By_Index : public TK_Color_By_Index { 00312 public: 00314 HTK_Color_By_Index (unsigned char opcode, int mask=0, int index=0) 00315 : TK_Color_By_Index (opcode) { m_mask = mask; m_index = index; } 00316 00317 TK_Status Execute (BStreamFileToolkit & tk) alter; 00318 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00319 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00320 { return TK_Color_By_Index::Interpret(tk, key, special); } 00321 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00322 }; 00323 00324 00326 00336 class HBINFILETK_API HTK_Color_By_FIndex : public TK_Color_By_FIndex { 00337 public: 00339 HTK_Color_By_FIndex (int mask=0, float index=0.0f) 00340 : TK_Color_By_FIndex () { m_mask = mask; m_index = index; } 00341 00342 TK_Status Execute (BStreamFileToolkit & tk) alter; 00343 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00344 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00345 { return TK_Color_By_FIndex::Interpret(tk, key, special); } 00346 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00347 }; 00348 00352 class HBINFILETK_API HTK_Color_Composite : public BBaseOpcodeHandler { 00353 protected: 00354 BBaseOpcodeHandler * m_parts[16]; 00355 00356 public: 00357 HTK_Color_Composite (); 00358 ~HTK_Color_Composite (); 00359 00360 TK_Status Read (BStreamFileToolkit & tk) alter; 00361 TK_Status Write (BStreamFileToolkit & tk) alter; 00362 TK_Status Execute (BStreamFileToolkit & tk) alter; 00363 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00364 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00365 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 00366 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00367 }; 00368 00369 00372 00382 class HBINFILETK_API HTK_Color_Map : public TK_Color_Map { 00383 public: 00384 TK_Status Execute (BStreamFileToolkit & tk) alter; 00385 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00386 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00387 { return TK_Color_Map::Interpret(tk, key, special); } 00388 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00389 }; 00390 00393 00403 class HBINFILETK_API HTK_Callback : public TK_Callback { 00404 public: 00405 TK_Status Execute (BStreamFileToolkit & tk) alter; 00406 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00407 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00408 { return TK_Callback::Interpret(tk, key, special); } 00409 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00410 }; 00411 00413 00415 00425 class HBINFILETK_API HTK_Rendering_Options : public TK_Rendering_Options { 00426 public: 00427 TK_Status Execute (BStreamFileToolkit & tk) alter; 00428 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00429 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00430 { return TK_Rendering_Options::Interpret(tk, key, special); } 00431 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00432 }; 00433 00436 00446 class HBINFILETK_API HTK_Heuristics : public TK_Heuristics { 00447 public: 00448 TK_Status Execute (BStreamFileToolkit & tk) alter; 00449 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00450 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00451 { return TK_Heuristics::Interpret(tk, key, special); } 00452 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00453 }; 00454 00457 00467 class HBINFILETK_API HTK_Geometry_Options : public TK_Geometry_Options { 00468 public: 00469 TK_Status Execute (BStreamFileToolkit & tk) alter; 00470 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00471 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00472 { return TK_Geometry_Options::Interpret(tk, key, special); } 00473 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00474 }; 00475 00478 00488 class HBINFILETK_API HTK_Visibility : public TK_Visibility { 00489 public: 00490 TK_Status Execute (BStreamFileToolkit & tk) alter; 00491 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00492 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00493 { return TK_Visibility::Interpret(tk, key, special); } 00494 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00495 }; 00496 00499 00509 class HBINFILETK_API HTK_Selectability : public TK_Selectability { 00510 public: 00511 TK_Status Execute (BStreamFileToolkit & tk) alter; 00512 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00513 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00514 { return TK_Selectability::Interpret(tk, key, special); } 00515 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00516 }; 00517 00519 00529 class HBINFILETK_API HTK_Matrix : public TK_Matrix { 00530 public: 00532 HTK_Matrix (unsigned char opcode) : TK_Matrix (opcode) {} 00533 00534 TK_Status Execute (BStreamFileToolkit & tk) alter; 00535 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00536 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00537 { return TK_Matrix::Interpret(tk, key, special); } 00538 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00539 }; 00540 00542 00547 class HBINFILETK_API HTK_Enumerated : public TK_Enumerated { 00548 public: 00550 HTK_Enumerated (unsigned char opcode) : TK_Enumerated (opcode) {} 00551 00552 TK_Status Execute (BStreamFileToolkit & tk) alter; 00553 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key=-1, int variant=0) alter; 00554 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00555 { return TK_Enumerated::Interpret(tk, key, special); } 00556 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00557 }; 00558 00560 class HBINFILETK_API HTK_Size : public TK_Size { 00561 public: 00563 HTK_Size (unsigned char opcode) : TK_Size (opcode) {} 00564 00565 TK_Status Execute (BStreamFileToolkit & tk) alter; 00566 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00567 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00568 { return TK_Size::Interpret(tk, key, special); } 00569 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00570 }; 00571 00573 00577 class HBINFILETK_API HTK_Linear_Pattern : public TK_Linear_Pattern { 00578 public: 00580 HTK_Linear_Pattern (unsigned char opcode) : TK_Linear_Pattern (opcode) {} 00581 00582 TK_Status Execute (BStreamFileToolkit & tk) alter; 00583 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key=-1, int variant=0) alter; 00584 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00585 { return TK_Linear_Pattern::Interpret(tk, key, special); } 00586 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00587 }; 00588 00590 00593 class HBINFILETK_API HTK_Named : public TK_Named { 00594 public: 00596 HTK_Named (unsigned char opcode) : TK_Named (opcode) {} 00597 00598 TK_Status Execute (BStreamFileToolkit & tk) alter; 00599 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key=-1, int variant=0) alter; 00600 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00601 { return TK_Named::Interpret(tk, key, special); } 00602 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00603 }; 00604 00605 00607 class HBINFILETK_API HTK_Streaming : public TK_Streaming { 00608 public: 00609 TK_Status Execute (BStreamFileToolkit & tk) alter; 00610 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00611 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00612 { return TK_Streaming::Interpret(tk, key, special); } 00613 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00614 }; 00615 00618 00628 class HBINFILETK_API HTK_Conditions : public TK_Conditions { 00629 public: 00630 TK_Status Execute (BStreamFileToolkit & tk) alter; 00631 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00632 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00633 { return TK_Conditions::Interpret(tk, key, special); } 00634 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00635 }; 00636 00639 00649 class HBINFILETK_API HTK_Conditional_Action : public TK_Conditional_Action { 00650 friend class HTK_Conditional_Actions; 00651 public: 00652 TK_Status Execute (BStreamFileToolkit & tk) alter; 00653 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00654 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00655 { return TK_Conditional_Action::Interpret(tk, key, special); } 00656 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00657 }; 00658 00662 class HBINFILETK_API HTK_Conditional_Actions : public BBaseOpcodeHandler { 00663 protected: 00664 BBaseOpcodeHandler * m_parts[16]; 00665 00666 public: 00667 HTK_Conditional_Actions (); 00668 ~HTK_Conditional_Actions (); 00669 00670 TK_Status Read (BStreamFileToolkit & tk) alter; 00671 TK_Status Write (BStreamFileToolkit & tk) alter; 00672 TK_Status Execute (BStreamFileToolkit & tk) alter; 00673 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00674 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00675 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 00676 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00677 }; 00678 00681 00691 class HBINFILETK_API HTK_User_Options : public TK_User_Options { 00692 public: 00693 TK_Status Execute (BStreamFileToolkit & tk) alter; 00694 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00695 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00696 { return TK_User_Options::Interpret(tk, key, special); } 00697 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00698 }; 00699 00702 00712 class HBINFILETK_API HTK_Unicode_Options : public TK_Unicode_Options { 00713 public: 00714 TK_Status Execute (BStreamFileToolkit & tk) alter; 00715 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00716 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00717 { return TK_Unicode_Options::Interpret(tk, key, special); } 00718 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00719 }; 00720 00722 00732 class HBINFILETK_API HTK_User_Index : public TK_User_Index { 00733 public: 00734 TK_Status Execute (BStreamFileToolkit & tk) alter; 00735 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00736 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00737 { return TK_User_Index::Interpret(tk, key, special); } 00738 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00739 }; 00740 00742 00752 class HBINFILETK_API HTK_User_Index_Data : public TK_User_Index_Data { 00753 public: 00754 TK_Status Execute (BStreamFileToolkit & tk) alter; 00755 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00756 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00757 { return TK_User_Index_Data::Interpret(tk, key, special); } 00758 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00759 }; 00760 00762 00772 class HBINFILETK_API HTK_User_Value : public TK_User_Value { 00773 public: 00774 TK_Status Execute (BStreamFileToolkit & tk) alter; 00775 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00776 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00777 { return TK_User_Value::Interpret(tk, key, special); } 00778 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00779 }; 00780 00782 00792 class HBINFILETK_API2 HTK_Camera : public TK_Camera { 00793 public: 00795 HTK_Camera (unsigned char opcode = TKE_Camera) : TK_Camera (opcode) {} 00796 00797 TK_Status Execute (BStreamFileToolkit & tk) alter; 00798 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00799 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00800 { return TK_Camera::Interpret(tk, key, special); } 00801 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00802 }; 00803 00804 00806 00816 class HBINFILETK_API HTK_Window : public TK_Window { 00817 public: 00818 TK_Status Execute (BStreamFileToolkit & tk) alter; 00819 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00820 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00821 { return TK_Window::Interpret(tk, key, special); } 00822 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00823 }; 00824 00825 00827 00838 class HBINFILETK_API HTK_Clip_Region : public TK_Clip_Region { 00839 public: 00840 TK_Status Execute (BStreamFileToolkit & tk) alter; 00841 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00842 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00843 { return TK_Clip_Region::Interpret(tk, key, special); } 00844 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00845 }; 00846 00847 00849 00859 class HBINFILETK_API HTK_Clip_Rectangle : public TK_Clip_Rectangle { 00860 public: 00861 TK_Status Execute (BStreamFileToolkit & tk) alter; 00862 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00863 }; 00864 00865 00867 00877 class HBINFILETK_API HTK_Text_Font : public TK_Text_Font { 00878 public: 00879 TK_Status Execute (BStreamFileToolkit & tk) alter; 00880 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00881 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00882 { return TK_Text_Font::Interpret(tk, key, special); } 00883 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00884 }; 00885 00887 00889 00903 class HBINFILETK_API2 HTK_Bounding : public TK_Bounding { 00904 public: 00906 HTK_Bounding (unsigned char opcode) 00907 : TK_Bounding (opcode) {} 00909 HTK_Bounding (unsigned char opcode, float * min, float * max) 00910 : TK_Bounding (opcode, min, max) {} 00912 HTK_Bounding (unsigned char opcode, float * center, float radius) 00913 : TK_Bounding (opcode, center, radius) {} 00914 00915 TK_Status Execute (BStreamFileToolkit & tk) alter; 00916 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00917 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00918 { return TK_Bounding::Interpret(tk, key, special); } 00919 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00920 }; 00921 00924 00934 class HBINFILETK_API HTK_Point : public TK_Point { 00935 public: 00937 HTK_Point (unsigned char opcode) : TK_Point (opcode) {} 00938 00939 TK_Status Execute (BStreamFileToolkit & tk) alter; 00940 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00941 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00942 { return TK_Point::Interpret(tk, key, special); } 00943 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00944 }; 00945 00946 00948 00958 class HBINFILETK_API HTK_Line : public TK_Line { 00959 public: 00961 HTK_Line (unsigned char opcode = TKE_Line) : TK_Line (opcode) {} 00962 00963 TK_Status Execute (BStreamFileToolkit & tk) alter; 00964 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00965 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00966 { return TK_Line::Interpret(tk, key, special); } 00967 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00968 }; 00969 00971 00981 class HBINFILETK_API HTK_Polypoint : public TK_Polypoint { 00982 public: 00984 HTK_Polypoint (unsigned char opcode) : TK_Polypoint (opcode) {} 00985 00986 TK_Status Execute (BStreamFileToolkit & tk) alter; 00987 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 00988 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 00989 { return TK_Polypoint::Interpret(tk, key, special); } 00990 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 00991 }; 00992 00994 01004 class HBINFILETK_API HTK_NURBS_Curve : public TK_NURBS_Curve { 01005 public: 01006 01007 TK_Status Execute (BStreamFileToolkit & tk) alter; 01008 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01009 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01010 { return TK_NURBS_Curve::Interpret(tk, key, special); } 01011 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01012 }; 01013 01015 01025 class HBINFILETK_API HTK_NURBS_Surface : public TK_NURBS_Surface { 01026 protected: 01027 01029 TK_Status interpret_trim (BStreamFileToolkit & tk, int) alter; 01031 TK_Status execute_trim (BStreamFileToolkit & tk, HT_NURBS_Trim *) alter; 01032 01033 public: 01034 01035 TK_Status Execute (BStreamFileToolkit & tk) alter; 01036 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01037 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01038 { return TK_NURBS_Surface::Interpret(tk, key, special); } 01039 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01040 }; 01041 01043 01053 class HBINFILETK_API HTK_Area_Light : public TK_Area_Light { 01054 public: 01055 01056 TK_Status Execute (BStreamFileToolkit & tk) alter; 01057 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01058 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01059 { return TK_Area_Light::Interpret(tk, key, special); } 01060 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01061 }; 01062 01064 01074 class HBINFILETK_API HTK_Spot_Light : public TK_Spot_Light { 01075 public: 01076 TK_Status Execute (BStreamFileToolkit & tk) alter; 01077 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01078 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01079 { return TK_Spot_Light::Interpret(tk, key, special); } 01080 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01081 }; 01082 01084 01094 class HBINFILETK_API HTK_Cutting_Plane : public TK_Cutting_Plane { 01095 public: 01096 TK_Status Execute (BStreamFileToolkit & tk) alter; 01097 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01098 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01099 { return TK_Cutting_Plane::Interpret(tk, key, special); } 01100 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01101 }; 01102 01104 01114 class HBINFILETK_API HTK_Circle : public TK_Circle { 01115 public: 01117 HTK_Circle (unsigned char opcode) : TK_Circle (opcode) {} 01118 01119 TK_Status Execute (BStreamFileToolkit & tk) alter; 01120 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01121 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01122 { return TK_Circle::Interpret(tk, key, special); } 01123 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01124 }; 01125 01127 01137 class HBINFILETK_API HTK_Ellipse : public TK_Ellipse { 01138 public: 01140 HTK_Ellipse (unsigned char opcode) : TK_Ellipse (opcode) {} 01141 01142 TK_Status Execute (BStreamFileToolkit & tk) alter; 01143 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01144 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01145 { return TK_Ellipse::Interpret(tk, key, special); } 01146 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01147 }; 01148 01150 01160 class HBINFILETK_API HTK_Sphere : public TK_Sphere { 01161 public: 01163 HTK_Sphere () : TK_Sphere () {} 01164 01165 TK_Status Execute (BStreamFileToolkit & tk) alter; 01166 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01167 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01168 { return TK_Sphere::Interpret(tk, key, special); } 01169 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01170 }; 01171 01173 01183 class HBINFILETK_API HTK_Cylinder : public TK_Cylinder { 01184 public: 01186 HTK_Cylinder () : TK_Cylinder () {} 01187 01188 TK_Status Execute (BStreamFileToolkit & tk) alter; 01189 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01190 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01191 { return TK_Cylinder::Interpret(tk, key, special); } 01192 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01193 }; 01194 01196 01206 class HBINFILETK_API HTK_PolyCylinder : public TK_PolyCylinder { 01207 public: 01209 HTK_PolyCylinder () : TK_PolyCylinder () {} 01210 01211 TK_Status Execute (BStreamFileToolkit & tk) alter; 01212 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01213 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01214 { return TK_PolyCylinder::Interpret(tk, key, special); } 01215 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01216 }; 01217 01219 01229 class HBINFILETK_API HTK_Grid : public TK_Grid { 01230 public: 01231 TK_Status Execute (BStreamFileToolkit & tk) alter; 01232 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01233 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01234 { return TK_Grid::Interpret(tk, key, special); } 01235 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01236 }; 01237 01240 01250 class HBINFILETK_API HTK_Text : public TK_Text { 01251 public: 01253 HTK_Text (unsigned char opcode) : TK_Text (opcode) {} 01254 01255 TK_Status Execute (BStreamFileToolkit & tk) alter; 01256 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01257 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01258 { return TK_Text::Interpret(tk, key, special); } 01259 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01260 }; 01261 01264 01274 class HBINFILETK_API HTK_Font : public TK_Font { 01275 public: 01276 TK_Status Execute (BStreamFileToolkit & tk) alter; 01277 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter 01278 { return TK_Font::Interpret(tk, key, variant); } 01279 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter; 01280 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01281 }; 01282 01283 01286 01296 class HBINFILETK_API2 HTK_Image : public TK_Image { 01297 public: 01298 HTK_Image () { 01299 m_jpeg_native = true; 01300 } 01301 01302 TK_Status Execute (BStreamFileToolkit & tk) alter; 01303 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01304 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01305 { return TK_Image::Interpret(tk, key, special); } 01306 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01307 }; 01308 01309 01312 01322 class HBINFILETK_API2 HTK_Texture : public TK_Texture { 01323 protected: 01324 int mh_stage; 01325 BBaseOpcodeHandler * m_referee; 01326 HC_KEY m_key; 01327 01328 public: 01329 HTK_Texture () : mh_stage (0), m_referee (0) {} 01330 ~HTK_Texture (); 01331 01332 TK_Status Write (BStreamFileToolkit & tk) alter; // 01333 TK_Status Execute (BStreamFileToolkit & tk) alter; 01334 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter 01335 { return TK_Texture::Interpret(tk, key, variant); } 01336 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter; 01337 void Reset () alter; 01338 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01339 }; 01340 01342 class HBINFILETK_API2 HTK_Texture_Definitions : public BBaseOpcodeHandler { 01343 protected: 01344 BBaseOpcodeHandler ** m_parts; 01345 int m_num_parts; 01346 bool m_is_shader; 01347 01348 public: 01349 HTK_Texture_Definitions (bool shader = false); 01350 ~HTK_Texture_Definitions (); 01351 01352 TK_Status Read (BStreamFileToolkit & tk) alter; 01353 TK_Status Write (BStreamFileToolkit & tk) alter; 01354 TK_Status Execute (BStreamFileToolkit & tk) alter; 01355 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01356 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01357 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01358 01359 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01360 }; 01361 01364 01374 class HBINFILETK_API2 HTK_Glyph_Definition : public TK_Glyph_Definition { 01375 public: 01376 TK_Status Execute (BStreamFileToolkit & tk) alter; 01377 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter 01378 { return TK_Glyph_Definition::Interpret(tk, key, variant); } 01379 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter; 01380 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01381 }; 01382 01385 class HBINFILETK_API2 HTK_Glyph_Definitions : public BBaseOpcodeHandler { 01386 protected: 01387 BBaseOpcodeHandler ** m_parts; 01388 int m_num_parts; 01389 public: 01390 HTK_Glyph_Definitions (); 01391 ~HTK_Glyph_Definitions (); 01392 01393 TK_Status Read (BStreamFileToolkit & tk) alter; 01394 TK_Status Write (BStreamFileToolkit & tk) alter; 01395 TK_Status Execute (BStreamFileToolkit & tk) alter; 01396 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01397 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01398 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01399 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01400 }; 01401 01404 01414 class HBINFILETK_API2 HTK_Named_Style_Def : public TK_Named_Style_Def { 01415 protected: 01416 HC_KEY m_key; 01417 int mh_stage; 01418 HC_KEY m_root; 01419 public: 01421 HTK_Named_Style_Def () : TK_Named_Style_Def (), mh_stage (0) {} 01422 01423 TK_Status Write (BStreamFileToolkit & tk) alter; // 01424 TK_Status Execute (BStreamFileToolkit & tk) alter; 01425 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter 01426 { return TK_Named_Style_Def::Interpret(tk, key, variant); } 01427 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter; 01428 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01429 01430 void SetRoot (HC_KEY root) alter { m_root = root; } 01431 HC_KEY GetRoot () const { return m_root; } 01432 01433 void Reset () alter; 01434 }; 01435 01438 class HBINFILETK_API2 HTK_Named_Style_Defs : public BBaseOpcodeHandler { 01439 protected: 01440 BBaseOpcodeHandler ** m_parts; 01441 int m_num_parts; 01442 HC_KEY m_root; 01443 public: 01444 HTK_Named_Style_Defs (); 01445 ~HTK_Named_Style_Defs (); 01446 01447 TK_Status Read (BStreamFileToolkit & tk) alter; 01448 TK_Status Write (BStreamFileToolkit & tk) alter; 01449 TK_Status Execute (BStreamFileToolkit & tk) alter; 01450 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01451 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01452 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01453 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01454 01455 void SetRoot (HC_KEY root) alter { m_root = root; } 01456 HC_KEY GetRoot () const { return m_root; } 01457 }; 01458 01459 01462 01472 class HBINFILETK_API2 HTK_Line_Style : public TK_Line_Style { 01473 public: 01474 TK_Status Execute (BStreamFileToolkit & tk) alter; 01475 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter 01476 { return TK_Line_Style::Interpret(tk, key, variant); } 01477 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter; 01478 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01479 }; 01480 01483 class HBINFILETK_API2 HTK_Line_Styles : public BBaseOpcodeHandler { 01484 protected: 01485 BBaseOpcodeHandler ** m_parts; 01486 int m_num_parts; 01487 public: 01488 HTK_Line_Styles (); 01489 ~HTK_Line_Styles (); 01490 01491 TK_Status Read (BStreamFileToolkit & tk) alter; 01492 TK_Status Write (BStreamFileToolkit & tk) alter; 01493 TK_Status Execute (BStreamFileToolkit & tk) alter; 01494 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, int variant=0) alter; 01495 TK_Status Interpret (BStreamFileToolkit & tk, ID_Key key, char const * special) alter 01496 { return BBaseOpcodeHandler::Interpret(tk, key, special); } 01497 TK_Status Clone (BStreamFileToolkit & tk, BBaseOpcodeHandler **handler) const; 01498 }; 01499 01500 #endif //HOPCODE_HANDLER 01501