XamlCanvas.h

00001 //
00002 //  Copyright (c) 1996-2006 by Autodesk, Inc.
00003 //
00004 //  By using this code, you are agreeing to the terms and conditions of
00005 //  the License Agreement included in the documentation for this code.
00006 //
00007 //  AUTODESK MAKES NO WARRANTIES, EXPRESS OR IMPLIED, AS TO THE CORRECTNESS
00008 //  OF THIS CODE OR ANY DERIVATIVE WORKS WHICH INCORPORATE IT. AUTODESK
00009 //  PROVIDES THE CODE ON AN "AS-IS" BASIS AND EXPLICITLY DISCLAIMS ANY
00010 //  LIABILITY, INCLUDING CONSEQUENTIAL AND INCIDENTAL DAMAGES FOR ERRORS,
00011 //  OMISSIONS, AND OTHER PROBLEMS IN THE CODE.
00012 //
00013 //  Use, duplication, or disclosure by the U.S. Government is subject to
00014 //  restrictions set forth in FAR 52.227-19 (Commercial Computer Software
00015 //  Restricted Rights) and DFAR 252.227-7013(c)(1)(ii) (Rights in Technical
00016 //  Data and Computer Software), as applicable.
00017 //
00018 #if !defined XAML_CANVAS
00019 #define XAML_CANVAS
00020 
00021 #include "XAML/XamlDrawable.h"
00022 #include "XAML/XamlAttribute.h"
00023 #include "XAML/XamlDrawableAttributes.h"
00024 
00025 
00026 // <Canvas Opacity="0.5" RenderTransform="0.75,0,0,0.75,25,46">
00027 // <!-- contents -->
00028 // </Canvas>
00029 
00030 class XamlCanvas : public XamlDrawable
00031                  , public XamlDrawableAttributes::CanvasAttributeConsumer
00032                  , public XamlDrawableAttributes::Name::Provider
00033                  , public XamlDrawableAttributes::RenderTransform::Provider
00034                  , public XamlDrawableAttributes::Clip::Provider
00035                  , public XamlDrawableAttributes::Opacity::Provider
00036                  , public XamlDrawableAttributes::OpacityMask::Provider
00037                  , public XamlDrawableAttributes::NavigateUri::Provider
00038                  , public XamlDrawableAttributes::Resources::Provider
00039 {
00040 public:
00041     class AttributeParser : public XamlDrawableAttributes::CanvasAttributeProvider
00042                           , public XamlDrawableAttributes::Name::Provider
00043                           , public XamlDrawableAttributes::RenderTransform::Provider
00044                           , public XamlDrawableAttributes::Clip::Provider
00045                           , public XamlDrawableAttributes::Opacity::Provider
00046                           , public XamlDrawableAttributes::OpacityMask::Provider
00047                           , public XamlDrawableAttributes::NavigateUri::Provider
00048                           , public XamlDrawableAttributes::Resources::Provider
00049     {
00050     public:
00051         AttributeParser( XamlXML::tAttributeMap& rMap );
00052         WT_Result provideCanvasAttributes(  XamlDrawableAttributes::CanvasAttributeConsumer* p, WT_XAML_File& r) const;
00053 
00054     protected:
00055         WT_Result provideName(              XamlDrawableAttributes::Name*& rp );
00056         WT_Result provideRenderTransform(   XamlDrawableAttributes::RenderTransform*& rp );
00057         WT_Result provideClip(              XamlDrawableAttributes::Clip*& rp );
00058         WT_Result provideOpacity(           XamlDrawableAttributes::Opacity*& rp );
00059         WT_Result provideOpacityMask(       XamlDrawableAttributes::OpacityMask*& rp );
00060         WT_Result provideNavigateUri(       XamlDrawableAttributes::NavigateUri*& rp );
00061         WT_Result provideResources(         XamlDrawableAttributes::Resources*& rp );
00062         
00063     private:
00064         AttributeParser& operator=( const AttributeParser& ) { return *this; }
00065         XamlXML::tAttributeMap& _rMap;
00066         WT_XAML_File * _pFile;
00067     };
00068 
00069 public:
00070 
00071     //
00072     // \param bNested Indicates that serializing this canvas should not close a previous canvas
00073     //
00074     XamlCanvas( bool bNesting=true );
00075     virtual ~XamlCanvas();
00076 
00077     virtual WTX_ID xobject_id() const { return Canvas_ID; }
00078 
00079     virtual WT_Result serialize(WT_File &) const;
00080     virtual WT_Result dump(WT_File &) const;
00081 
00082 public:
00083     const XamlDrawableAttributes::Name&             name()          { return _oName; }
00084     const XamlDrawableAttributes::RenderTransform&  renderTransform()   { return _oRenderTransform; }
00085     const XamlDrawableAttributes::Clip&             clip()          { return _oClip; }
00086     const XamlDrawableAttributes::Opacity&          opacity()       { return _oOpacity; }
00087     const XamlDrawableAttributes::OpacityMask&      opacityMask()   { return _oOpacityMask; }
00088     const XamlDrawableAttributes::NavigateUri&      navigateUri()   { return _oNavigateUri; }
00089     const XamlDrawableAttributes::Resources&        resources()     { return _oResources; }
00090 
00091 protected :
00092 
00093     virtual WT_Result consumeName(              XamlDrawableAttributes::Name::Provider *);
00094     virtual WT_Result consumeRenderTransform(   XamlDrawableAttributes::RenderTransform::Provider *);
00095     virtual WT_Result consumeClip(              XamlDrawableAttributes::Clip::Provider *);
00096     virtual WT_Result consumeOpacity(           XamlDrawableAttributes::Opacity::Provider *);
00097     virtual WT_Result consumeOpacityMask(       XamlDrawableAttributes::OpacityMask::Provider *);
00098     virtual WT_Result consumeNavigateUri(       XamlDrawableAttributes::NavigateUri::Provider *);
00099     virtual WT_Result consumeResources(         XamlDrawableAttributes::Resources::Provider *);
00100 
00101     virtual WT_Result provideName(              XamlDrawableAttributes::Name*& rp );
00102     virtual WT_Result provideRenderTransform(   XamlDrawableAttributes::RenderTransform*& rp );
00103     virtual WT_Result provideClip(              XamlDrawableAttributes::Clip*& rp );
00104     virtual WT_Result provideOpacity(           XamlDrawableAttributes::Opacity*& rp );
00105     virtual WT_Result provideOpacityMask(       XamlDrawableAttributes::OpacityMask*& rp );
00106     virtual WT_Result provideNavigateUri(       XamlDrawableAttributes::NavigateUri*& rp );
00107     virtual WT_Result provideResources(         XamlDrawableAttributes::Resources*& rp );
00108 
00109 protected :
00110 
00111     XamlDrawableAttributes::Name                _oName;
00112     XamlDrawableAttributes::RenderTransform     _oRenderTransform;
00113     XamlDrawableAttributes::Clip                _oClip;
00114     XamlDrawableAttributes::Opacity             _oOpacity;
00115     XamlDrawableAttributes::OpacityMask         _oOpacityMask;
00116     XamlDrawableAttributes::NavigateUri         _oNavigateUri;
00117     XamlDrawableAttributes::Resources           _oResources;
00118     bool                                        _bNesting;
00119 };
00120 
00121 #endif //XAML_CANVAS

Generated on Tue Jan 6 22:40:05 2009 for Autodesk DWF Toolkit by  doxygen 1.4.5