Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

HOpcodeHandler.h
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