Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

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