XamlPath.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_PATH
00019 #define XAML_PATH
00020 
00021 #include "XAML/XamlDrawable.h"
00022 #include "XAML/XamlAttribute.h"
00023 #include "XAML/XamlDrawableAttributes.h"
00024 #include "XAML/XamlXML.h"
00025 
00026 // absolute paths:
00027 // <Path Data="F1 M 136.16,978.08 L 136.8,978.08 136.8,978.72 136.16,978.72 z" Fill="#ff999999" />
00028 
00029 // <Path Data="M 144,120.8 L 719.36,120.8 719.36,910.4 144,910.4 z">
00030 //      <Path.Fill>
00031 //          <ImageBrush ImageSource="/Documents/1/Resources/Images/10.PNG" Viewbox="0,0,799.099,1096.56" TileMode="None" ViewboxUnits="Absolute" ViewportUnits="Absolute" Viewport="144,120.8,575.36,789.6" />
00032 //      </Path.Fill>
00033 // </Path>
00034 
00035 // relative paths:
00036 
00037 class XamlGraphicsObject;
00038 
00039 class XamlPath : public XamlDrawable
00040                , public XamlDrawableAttributes::PathAttributeConsumer
00041                , public XamlDrawableAttributes::Data::Provider
00042                , public XamlDrawableAttributes::Name::Provider
00043                , public XamlDrawableAttributes::Fill::Provider
00044                , public XamlDrawableAttributes::RenderTransform::Provider
00045                , public XamlDrawableAttributes::Clip::Provider
00046                , public XamlDrawableAttributes::Opacity::Provider
00047                , public XamlDrawableAttributes::OpacityMask::Provider
00048                , public XamlDrawableAttributes::Stroke::Provider
00049                , public XamlDrawableAttributes::StrokeDashArray::Provider
00050                , public XamlDrawableAttributes::StrokeDashCap::Provider
00051                , public XamlDrawableAttributes::StrokeDashOffset::Provider
00052                , public XamlDrawableAttributes::StrokeEndLineCap::Provider
00053                , public XamlDrawableAttributes::StrokeStartLineCap::Provider
00054                , public XamlDrawableAttributes::StrokeLineJoin::Provider
00055                , public XamlDrawableAttributes::StrokeMiterLimit::Provider
00056                , public XamlDrawableAttributes::StrokeThickness::Provider
00057                , public XamlDrawableAttributes::NavigateUri::Provider
00058 {
00059 public:
00060 
00061     class AttributeParser : public XamlDrawableAttributes::PathAttributeProvider
00062                           , public XamlDrawableAttributes::Data::Provider
00063                           , public XamlDrawableAttributes::Name::Provider
00064                           , public XamlDrawableAttributes::Fill::Provider
00065                           , public XamlDrawableAttributes::RenderTransform::Provider
00066                           , public XamlDrawableAttributes::Clip::Provider
00067                           , public XamlDrawableAttributes::Opacity::Provider
00068                           , public XamlDrawableAttributes::OpacityMask::Provider
00069                           , public XamlDrawableAttributes::Stroke::Provider
00070                           , public XamlDrawableAttributes::StrokeDashArray::Provider
00071                           , public XamlDrawableAttributes::StrokeDashCap::Provider
00072                           , public XamlDrawableAttributes::StrokeDashOffset::Provider
00073                           , public XamlDrawableAttributes::StrokeEndLineCap::Provider
00074                           , public XamlDrawableAttributes::StrokeStartLineCap::Provider
00075                           , public XamlDrawableAttributes::StrokeLineJoin::Provider
00076                           , public XamlDrawableAttributes::StrokeMiterLimit::Provider
00077                           , public XamlDrawableAttributes::StrokeThickness::Provider
00078                           , public XamlDrawableAttributes::NavigateUri::Provider
00079     {
00080     public:
00081         AttributeParser( XamlXML::tAttributeMap& rMap );
00082         WT_Result providePathAttributes(    XamlDrawableAttributes::PathAttributeConsumer* p, WT_XAML_File& r) const;
00083 
00084     protected:
00085         WT_Result provideData(              XamlDrawableAttributes::Data*& rp );
00086         WT_Result provideName(              XamlDrawableAttributes::Name*& rp );
00087         WT_Result provideFill(              XamlDrawableAttributes::Fill*& rp );
00088         WT_Result provideRenderTransform(   XamlDrawableAttributes::RenderTransform*& rp );
00089         WT_Result provideClip(              XamlDrawableAttributes::Clip*& rp );
00090         WT_Result provideOpacity(           XamlDrawableAttributes::Opacity*& rp );
00091         WT_Result provideOpacityMask(       XamlDrawableAttributes::OpacityMask*& rp );
00092         WT_Result provideStroke(            XamlDrawableAttributes::Stroke*& rp );
00093         WT_Result provideStrokeDashArray(   XamlDrawableAttributes::StrokeDashArray*& rp );
00094         WT_Result provideStrokeDashCap(     XamlDrawableAttributes::StrokeDashCap*& rp );
00095         WT_Result provideStrokeDashOffset(  XamlDrawableAttributes::StrokeDashOffset*& rp );
00096         WT_Result provideStrokeEndLineCap(  XamlDrawableAttributes::StrokeEndLineCap*& rp );
00097         WT_Result provideStrokeStartLineCap(XamlDrawableAttributes::StrokeStartLineCap*& rp );
00098         WT_Result provideStrokeLineJoin(    XamlDrawableAttributes::StrokeLineJoin*& rp );
00099         WT_Result provideStrokeMiterLimit(  XamlDrawableAttributes::StrokeMiterLimit*& rp );
00100         WT_Result provideStrokeThickness(   XamlDrawableAttributes::StrokeThickness*& rp );
00101         WT_Result provideNavigateUri(       XamlDrawableAttributes::NavigateUri*& rp );
00102         
00103     private:
00104         AttributeParser& operator=( const AttributeParser& ) { return *this; }
00105         XamlXML::tAttributeMap& _rMap;
00106         WT_XAML_File * _pFile;
00107     };
00108                 
00109 public:
00110     XamlPath();
00111     XamlPath(const XamlPath& s);
00112     virtual ~XamlPath(void);
00113     
00114     XamlPath& operator=(const XamlPath& s);
00115 
00116     virtual WTX_ID     xobject_id() const { return Path_ID; }
00117 
00118     void addDrawable(XamlGraphicsObject* pXamlDrawable);
00119 
00120     virtual WT_Result   serialize(WT_File & file) const;
00121     virtual WT_Result   delay(WT_File & file) const;
00122     virtual WT_Result   dump(WT_File & file) const;
00123     virtual bool  merge(XamlPath const & new_one);
00124 
00125     //Path.Data
00126     //     Fill                  (fill, fill pattern, hatch pattern, color)
00127     //     RenderTransform       (viewport)
00128     //     Clip                  (viewport) 
00129     //     Opacity               (visibility, pen pattern)
00130     //     OpacityMask           (pen pattern)
00131     //     Stroke                (color / color map)
00132     //     StrokeDashArray       (dash pattern, line pattern)
00133     //     StrokeDashCap         (line style)
00134     //     StrokeDashOffset      (line style)
00135     //     StrokeEndLineCap      (line style)
00136     //     StrokeStartLineCap    (line style)
00137     //     StrokeLineJoin        (line style)
00138     //     StrokeMiterLimit      (line style)
00139     //     StrokeThickness       (line weight)
00140     //     FixedPage.NavigateUri (URL)
00141 
00142 public:
00143     const XamlDrawableAttributes::Data&                 data()                  { return _oData; }
00144     const XamlDrawableAttributes::Name&                 name()                  { return _oName; }
00145     const XamlDrawableAttributes::Fill&                 fill()                  { return _oFill; }
00146     const XamlDrawableAttributes::RenderTransform&      renderTransform()       { return _oRenderTransform; }
00147     const XamlDrawableAttributes::Clip&                 clip()                  { return _oClip; }
00148     const XamlDrawableAttributes::Opacity&              opacity()               { return _oOpacity; }
00149     const XamlDrawableAttributes::OpacityMask&          opacityMask()           { return _oOpacityMask; }
00150     const XamlDrawableAttributes::Stroke&               stroke()                { return _oStroke; }
00151     const XamlDrawableAttributes::StrokeDashArray&      strokeDashArray()       { return _oStrokeDashArray; }
00152     const XamlDrawableAttributes::StrokeDashCap&        strokeDashCap()         { return _oStrokeDashCap; }
00153     const XamlDrawableAttributes::StrokeDashOffset&     strokeDashOffset()      { return _oStrokeDashOffset; }
00154     const XamlDrawableAttributes::StrokeEndLineCap&     strokeEndLineCap()      { return _oStrokeEndLineCap; }
00155     const XamlDrawableAttributes::StrokeStartLineCap&   strokeStartLineCap()    { return _oStrokeStartLineCap; }
00156     const XamlDrawableAttributes::StrokeLineJoin&       strokeLineJoin()        { return _oStrokeLineJoin; }
00157     const XamlDrawableAttributes::StrokeMiterLimit&     strokeMiterLimit()      { return _oStrokeMiterLimit; }
00158     const XamlDrawableAttributes::StrokeThickness&      strokeThickness()       { return _oStrokeThickness; }
00159     const XamlDrawableAttributes::NavigateUri&          navigateUri()           { return _oNavigateUri; }
00160 
00161 protected:
00162 
00163     virtual WT_Result consumeData(              XamlDrawableAttributes::Data::Provider *p );
00164     virtual WT_Result consumeName(              XamlDrawableAttributes::Name::Provider *p );
00165     virtual WT_Result consumeFill(              XamlDrawableAttributes::Fill::Provider *p );
00166     virtual WT_Result consumeRenderTransform(   XamlDrawableAttributes::RenderTransform::Provider *p );
00167     virtual WT_Result consumeClip(              XamlDrawableAttributes::Clip::Provider *p );
00168     virtual WT_Result consumeOpacity(           XamlDrawableAttributes::Opacity::Provider *p );
00169     virtual WT_Result consumeOpacityMask(       XamlDrawableAttributes::OpacityMask::Provider *p );
00170     virtual WT_Result consumeStroke(            XamlDrawableAttributes::Stroke::Provider *p );
00171     virtual WT_Result consumeStrokeDashArray(   XamlDrawableAttributes::StrokeDashArray::Provider *p );
00172     virtual WT_Result consumeStrokeDashCap(     XamlDrawableAttributes::StrokeDashCap::Provider *p );
00173     virtual WT_Result consumeStrokeDashOffset(  XamlDrawableAttributes::StrokeDashOffset::Provider *p );
00174     virtual WT_Result consumeStrokeEndLineCap(  XamlDrawableAttributes::StrokeEndLineCap::Provider *p );
00175     virtual WT_Result consumeStrokeStartLineCap( XamlDrawableAttributes::StrokeStartLineCap::Provider *p );
00176     virtual WT_Result consumeStrokeLineJoin(    XamlDrawableAttributes::StrokeLineJoin::Provider *p );
00177     virtual WT_Result consumeStrokeMiterLimit(  XamlDrawableAttributes::StrokeMiterLimit::Provider *p );
00178     virtual WT_Result consumeStrokeThickness(   XamlDrawableAttributes::StrokeThickness::Provider *p );
00179     virtual WT_Result consumeNavigateUri(       XamlDrawableAttributes::NavigateUri::Provider *p );
00180 
00181     virtual WT_Result provideData(              XamlDrawableAttributes::Data*& rp );
00182     virtual WT_Result provideName(              XamlDrawableAttributes::Name*& rp );
00183     virtual WT_Result provideFill(              XamlDrawableAttributes::Fill*& rp );
00184     virtual WT_Result provideRenderTransform(   XamlDrawableAttributes::RenderTransform*& rp );
00185     virtual WT_Result provideClip(              XamlDrawableAttributes::Clip*& rp );
00186     virtual WT_Result provideOpacity(           XamlDrawableAttributes::Opacity*& rp );
00187     virtual WT_Result provideOpacityMask(       XamlDrawableAttributes::OpacityMask*& rp );
00188     virtual WT_Result provideStroke(            XamlDrawableAttributes::Stroke*& rp );
00189     virtual WT_Result provideStrokeDashArray(   XamlDrawableAttributes::StrokeDashArray*& rp );
00190     virtual WT_Result provideStrokeDashCap(     XamlDrawableAttributes::StrokeDashCap*& rp );
00191     virtual WT_Result provideStrokeDashOffset(  XamlDrawableAttributes::StrokeDashOffset*& rp );
00192     virtual WT_Result provideStrokeEndLineCap(  XamlDrawableAttributes::StrokeEndLineCap*& rp );
00193     virtual WT_Result provideStrokeStartLineCap(XamlDrawableAttributes::StrokeStartLineCap*& rp );
00194     virtual WT_Result provideStrokeLineJoin(    XamlDrawableAttributes::StrokeLineJoin*& rp );
00195     virtual WT_Result provideStrokeMiterLimit(  XamlDrawableAttributes::StrokeMiterLimit*& rp );
00196     virtual WT_Result provideStrokeThickness(   XamlDrawableAttributes::StrokeThickness*& rp );
00197     virtual WT_Result provideNavigateUri(       XamlDrawableAttributes::NavigateUri*& rp );
00198 
00199 protected:
00200         
00201         XamlDrawableAttributes::Data                _oData;
00202         XamlDrawableAttributes::Name                _oName;
00203     XamlDrawableAttributes::Fill                _oFill;
00204     XamlDrawableAttributes::RenderTransform     _oRenderTransform;
00205     XamlDrawableAttributes::Clip                _oClip;
00206     XamlDrawableAttributes::Opacity             _oOpacity;
00207     XamlDrawableAttributes::OpacityMask         _oOpacityMask;
00208     XamlDrawableAttributes::Stroke              _oStroke;
00209     XamlDrawableAttributes::StrokeDashArray     _oStrokeDashArray;
00210     XamlDrawableAttributes::StrokeDashCap       _oStrokeDashCap;
00211     XamlDrawableAttributes::StrokeDashOffset    _oStrokeDashOffset;
00212     XamlDrawableAttributes::StrokeEndLineCap    _oStrokeEndLineCap;
00213     XamlDrawableAttributes::StrokeStartLineCap  _oStrokeStartLineCap;
00214     XamlDrawableAttributes::StrokeLineJoin      _oStrokeLineJoin;
00215     XamlDrawableAttributes::StrokeMiterLimit    _oStrokeMiterLimit;
00216     XamlDrawableAttributes::StrokeThickness     _oStrokeThickness;
00217     XamlDrawableAttributes::NavigateUri         _oNavigateUri;
00218 };
00219 
00220 
00221 #endif //XAML_PATH

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