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 
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