XamlDrawableAttributes.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 #ifndef XAML_PATH_ATTRIBUTES
00019 #define XAML_PATH_ATTRIBUTES
00020 
00021 #include "XAML/XamlPathGeometry.h"
00022 #include "XAML/XamlBrushes.h"
00023 #include "dwfcore/Owner.h"
00024 #include "dwfcore/String.h"
00025 #include "whiptk/matrix.h"
00026 
00027 namespace XamlDrawableAttributes
00028 {
00029     static const char* const kpzEmpty_String = 0;
00030 
00032     class BrushRef: public DWFOwner
00033     {
00034     public:
00035         BrushRef();
00036         BrushRef( const XamlBrush::Brush* p);
00037         const BrushRef& operator=( const XamlBrush::Brush* );
00038         const BrushRef& operator=( const BrushRef& );
00039         bool operator==(const BrushRef& s) const;
00040         bool operator==(const XamlBrush::Brush* p) const;
00041         virtual ~BrushRef() throw();
00042 
00043         virtual void notifyOwnableDeletion( DWFOwnable& rOwnable ) throw( DWFException );
00044 
00045     public:
00046         operator const XamlBrush::Brush*() const { return _pBrush; }
00047         const XamlBrush::Brush* operator->() const { return _pBrush; }
00048 
00049     private:
00050         XamlBrush::Brush* _pBrush;
00051     };
00052 
00054     class IndexArrayRef
00055     {
00056     public:
00057         IndexArrayRef();
00058         IndexArrayRef( int* pnArray, size_t nCount ) throw(DWFException);
00059         const IndexArrayRef& operator=( const IndexArrayRef& ) throw(DWFException);
00060         const IndexArrayRef& operator=( vector<int> ) throw(DWFException);
00061         bool operator==(const IndexArrayRef& s) const;
00062         virtual ~IndexArrayRef();
00063 
00064     public:
00065         operator const int*() const { return _pnArray; }
00066         const int operator[]( unsigned int nIndex ) const throw(DWFException);
00067         const size_t count() const { return _nCount; }
00068 
00069     private:
00070         size_t _nCount;
00071                 int* _pnArray;
00072     };
00073 
00075     class MatrixRef
00076     {
00077     public:
00078         MatrixRef();
00079         MatrixRef( const MatrixRef& r);
00080         const MatrixRef& operator=( const WT_Matrix2D& r );
00081         const MatrixRef& operator=( const WT_Matrix& r );  //converts to 3x3
00082         const MatrixRef& operator=( const MatrixRef& r );
00083         const MatrixRef& operator=( const char* p );
00084         bool operator==(const MatrixRef& r) const;
00085         bool operator==(const WT_Matrix2D& r) const;
00086         bool operator!=(const WT_Matrix2D& r) const;
00087         virtual ~MatrixRef();
00088 
00089     public:
00090         operator const WT_Matrix2D&() const { return _oMatrix; }
00091         operator const wchar_t*() const { return _szMatrixString; }
00092         operator const DWFString&() const { return _szMatrixString; }
00093 
00094     private:
00095         WT_Matrix2D _oMatrix;
00096         DWFString _szMatrixString;
00097     };
00098 
00100     class StringRef
00101     {
00102     public:
00103         StringRef();
00104         StringRef( const wchar_t* p);
00105         StringRef( const char* p);
00106         const StringRef& operator=( const wchar_t* );
00107         const StringRef& operator=( const char* );
00108         bool operator==(const StringRef& s) const;
00109         bool operator==(const wchar_t* p) const;
00110         virtual ~StringRef();
00111 
00112     public:
00113         operator const wchar_t*() const { return _szString; }
00114         operator const DWFString&() const { return _szString; }
00115 
00116     private:
00117         DWFString _szString;
00118     };
00119 
00121     class Data : public XamlAttribute<Data>
00122     {
00123     public:
00124         Data() : _oGeometry() {}
00125         Data(const Data& s);
00126         Data& operator=(const Data& s);
00127         bool operator==(const Data& s) const;
00128         virtual ~Data(void) {}
00129 
00130         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00131         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00132         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00133         virtual bool validAsAttribute( void ) const;
00134 
00135     public:
00136         virtual const XamlPathGeometry& geometry() const { return _oGeometry; }
00137         virtual XamlPathGeometry& geometry() { return _oGeometry; }
00138 
00139     private:
00140         XamlPathGeometry _oGeometry;
00141 
00142         //
00143         // optimizations :
00144         // since 50% of the time is usually spent into re-allocating
00145         // string buffers while serializing a Path.Data, let's track
00146         // buffer sizes and reuse buffers as appropriate.
00147         //
00148         static size_t _nBufferSize;
00149 
00150     public:
00151         class Provider
00152         {
00153         public:
00154             virtual WT_Result provideData( Data *& ) = 0;
00155         };
00156         class Consumer
00157         {
00158         public:
00159             virtual WT_Result consumeData( Provider* p ) = 0;
00160         };
00161         
00162     };
00163 
00165     class Name : public XamlAttribute<Name>
00166     {
00167     public:
00168         Name() {}
00169         Name( const Name& r);
00170         Name& operator=( const Name& r);
00171         bool operator==(const Name& s) const;
00172         
00173         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00174         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00175         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00176         virtual bool validAsAttribute( void ) const;
00177 
00178     public:
00179         virtual const StringRef& name() const { return _oString; }
00180         virtual StringRef& name() { return _oString; }
00181 
00182     private:
00183         StringRef _oString;
00184 
00185     public:
00186         class Provider
00187         {
00188         public:
00189             virtual WT_Result provideName( Name *& ) = 0;
00190         };
00191         class Consumer
00192         {
00193         public:
00194             virtual WT_Result consumeName( Provider* p ) = 0;
00195         };
00196         
00197     };
00198 
00200     class Fill : public XamlAttribute<Fill>
00201     {
00202     public:
00203         Fill();
00204         Fill( const Fill& r);
00205         Fill& operator=( const Fill& r);
00206         bool operator==(const Fill& s) const;
00207         virtual ~Fill();
00208 
00209         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00210         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00211         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00212         virtual bool validAsAttribute( void ) const;
00213 
00214     public:
00215         virtual const BrushRef& brush() const { return _oBrush; }
00216         virtual BrushRef& brush() { return _oBrush; }
00217 
00218     private:
00219         BrushRef _oBrush;
00220 
00221     public:
00222         class Provider
00223         {
00224         public:
00225             virtual WT_Result provideFill( Fill *& ) = 0;
00226         };
00227         class Consumer
00228         {
00229         public:
00230             virtual WT_Result consumeFill( Provider* p ) = 0;
00231         };
00232 
00233     };
00234 
00236     class RenderTransform : public XamlAttribute<RenderTransform>
00237     {
00238     public:
00239         RenderTransform() {}
00240         RenderTransform( const RenderTransform& r);
00241         RenderTransform& operator=( const RenderTransform& r);
00242         bool operator==(const RenderTransform& s) const;
00243         
00244         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00245         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00246         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00247         virtual bool validAsAttribute( void ) const;
00248 
00249     public:
00250         virtual const MatrixRef& matrix() const { return _oMatrix; }
00251         virtual MatrixRef& matrix() { return _oMatrix; }
00252 
00253     private:
00254         MatrixRef _oMatrix;
00255 
00256     public:
00257         class Provider
00258         {
00259         public:
00260             virtual WT_Result provideRenderTransform( RenderTransform *& ) = 0;
00261         };
00262         class Consumer
00263         {
00264         public:
00265             virtual WT_Result consumeRenderTransform( Provider* p ) = 0;
00266         };
00267     };
00268 
00270     class Clip : public XamlAttribute<Clip>
00271     {
00272     public:
00273         Clip() : _oGeometry() {}
00274         Clip( const Clip& r);
00275         Clip& operator=( const Clip& r);
00276         bool operator==(const Clip& s) const;
00277 
00278         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00279         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00280         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00281         virtual bool validAsAttribute( void ) const;
00282 
00283     public:
00284         virtual const XamlPathGeometry& geometry() const { return _oGeometry; }
00285         virtual XamlPathGeometry& geometry() { return _oGeometry; }
00286 
00287     private:
00288         XamlPathGeometry _oGeometry;
00289 
00290     public:
00291         class Provider
00292         {
00293         public:
00294             virtual WT_Result provideClip( Clip *& ) = 0;
00295         };
00296         class Consumer
00297         {
00298         public:
00299             virtual WT_Result consumeClip( Provider* p ) = 0;
00300         };
00301     };
00302 
00304     class Opacity : public XamlAttribute<Opacity>
00305     {
00306     public:
00307         Opacity();
00308         Opacity( const Opacity& r);
00309         Opacity& operator=( const Opacity& r);
00310         bool operator==(const Opacity& s) const;
00311 
00312         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00313         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00314         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00315         virtual bool validAsAttribute( void ) const;
00316 
00317     public:
00318         virtual const float& value() const { return _fValue; }
00319         virtual float& value() { return _fValue; }
00320 
00321     private:
00322         float _fValue;
00323 
00324     public:
00325         class Provider
00326         {
00327         public:
00328             virtual WT_Result provideOpacity( Opacity *& ) = 0;
00329         };
00330         class Consumer
00331         {
00332         public:
00333             virtual WT_Result consumeOpacity( Provider* p ) = 0;
00334         };
00335     };
00336  
00338     class OpacityMask : public XamlAttribute<OpacityMask>
00339     {
00340     public:
00341         OpacityMask();
00342         OpacityMask( const OpacityMask& r);
00343         OpacityMask& operator=( const OpacityMask& r);
00344         bool operator==(const OpacityMask& s) const;
00345         ~OpacityMask();
00346 
00347         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00348         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00349         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00350         virtual bool validAsAttribute( void ) const;
00351         
00352     public:
00353         virtual const BrushRef& brush() const { return _oBrush; }
00354         virtual BrushRef& brush() { return _oBrush; }
00355 
00356     private:
00357         BrushRef _oBrush;
00358 
00359     public:
00360         class Provider
00361         {
00362         public:
00363             virtual WT_Result provideOpacityMask( OpacityMask *& ) = 0;
00364         };
00365         class Consumer
00366         {
00367         public:
00368             virtual WT_Result consumeOpacityMask( Provider* p ) = 0;
00369         };
00370     };
00371     
00373     class Stroke : public XamlAttribute<Stroke>
00374     {
00375     public:
00376         Stroke();
00377         Stroke( const Stroke& r);
00378         Stroke& operator=( const Stroke& r);
00379         bool operator==(const Stroke& s) const;
00380         ~Stroke();
00381 
00382         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00383         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00384         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00385         virtual bool validAsAttribute( void ) const;
00386 
00387     public:
00388         virtual const BrushRef& brush() const { return _oBrush; }
00389         virtual BrushRef& brush() { return _oBrush; }
00390 
00391     private:
00392         BrushRef _oBrush;
00393 
00394 
00395     public:
00396         class Provider
00397         {
00398         public:
00399             virtual WT_Result provideStroke( Stroke *& ) = 0;
00400         };
00401         class Consumer
00402         {
00403         public:
00404             virtual WT_Result consumeStroke( Provider* p ) = 0;
00405         };
00406     };
00407     
00409     class StrokeDashArray : public XamlAttribute<StrokeDashArray>
00410     {
00411     public:
00412         StrokeDashArray() : _vfDashGap() {}
00413         StrokeDashArray( const StrokeDashArray& r);
00414         StrokeDashArray& operator=( const StrokeDashArray& r);
00415         bool operator==(const StrokeDashArray& s) const;
00416 
00417         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00418         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00419         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00420         virtual bool validAsAttribute( void ) const;
00421 
00422     public:
00423         typedef pair< float,float > tDashGapPair;
00424         typedef vector< tDashGapPair > tDashGapVector;
00425 
00426     public:
00427         virtual const tDashGapVector& dashGap() const { return _vfDashGap; }
00428         virtual tDashGapVector& dashGap() { return _vfDashGap; }
00429 
00430     private:
00431         tDashGapVector _vfDashGap;
00432 
00433     public:
00434         class Provider
00435         {
00436         public:
00437             virtual WT_Result provideStrokeDashArray( StrokeDashArray *& ) = 0;
00438         };
00439         class Consumer
00440         {
00441         public:
00442             virtual WT_Result consumeStrokeDashArray( Provider* p ) = 0;
00443         };
00444     };
00445     
00447     class StrokeDashCap : public XamlAttribute<StrokeDashCap>
00448     {
00449     public:
00450         StrokeDashCap();
00451         StrokeDashCap( const StrokeDashCap& r);
00452         StrokeDashCap& operator=( const StrokeDashCap& r);
00453         bool operator==(const StrokeDashCap& s) const;
00454 
00455         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00456         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00457         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00458         virtual bool validAsAttribute( void ) const;
00459 
00460     public:
00461         typedef enum eCapStyle
00462         {
00463             Flat,
00464             Square,
00465             Round,
00466             Triangle
00467         };
00468 
00469     public:
00470         const eCapStyle& style() const { return _eCapStyle; }
00471         eCapStyle& style() { return _eCapStyle; }
00472 
00473     private: 
00474         eCapStyle _eCapStyle;
00475 
00476     public:
00477         class Provider
00478         {
00479         public:
00480             virtual WT_Result provideStrokeDashCap( StrokeDashCap *& ) = 0;
00481         };
00482         class Consumer
00483         {
00484         public:
00485             virtual WT_Result consumeStrokeDashCap( Provider* p ) = 0;
00486         };
00487     };
00488  
00490     class StrokeDashOffset : public XamlAttribute<StrokeDashOffset>
00491     {
00492     public:
00493         StrokeDashOffset();
00494         StrokeDashOffset( const StrokeDashOffset& r);
00495         StrokeDashOffset& operator=( const StrokeDashOffset& r);
00496         bool operator==(const StrokeDashOffset& s) const;
00497 
00498         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00499         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00500         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00501         virtual bool validAsAttribute( void ) const;
00502 
00503     public:
00504         const float& value() const { return _fValue; }
00505         float& value() { return _fValue; }
00506 
00507     private:
00508         float _fValue;
00509 
00510     public:
00511         class Provider
00512         {
00513         public:
00514             virtual WT_Result provideStrokeDashOffset( StrokeDashOffset *& ) = 0;
00515         };
00516         class Consumer
00517         {
00518         public:
00519             virtual WT_Result consumeStrokeDashOffset( Provider* p ) = 0;
00520         };
00521     };
00522  
00524     class StrokeEndLineCap : public XamlAttribute<StrokeEndLineCap>
00525     {
00526     public:
00527         StrokeEndLineCap();
00528         StrokeEndLineCap( const StrokeEndLineCap& r);
00529         StrokeEndLineCap& operator=( const StrokeEndLineCap& r);
00530         bool operator==(const StrokeEndLineCap& s) const;
00531 
00532         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00533         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00534         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00535         virtual bool validAsAttribute( void ) const;
00536 
00537     public:
00538         typedef enum eCapStyle
00539         {
00540             Flat,
00541             Square,
00542             Round,
00543             Triangle
00544         };
00545 
00546     public:
00547         const eCapStyle& style() const { return _eCapStyle; }
00548         eCapStyle& style() { return _eCapStyle; }
00549 
00550     private: 
00551         eCapStyle _eCapStyle;
00552 
00553     public:
00554         class Provider
00555         {
00556         public:
00557             virtual WT_Result provideStrokeEndLineCap( StrokeEndLineCap *& ) = 0;
00558         };
00559         class Consumer
00560         {
00561         public:
00562             virtual WT_Result consumeStrokeEndLineCap( Provider* p ) = 0;
00563         };
00564     };
00565 
00567     class StrokeStartLineCap : public XamlAttribute<StrokeStartLineCap>
00568     {
00569     public:
00570         StrokeStartLineCap();
00571         StrokeStartLineCap( const StrokeStartLineCap& r);
00572         StrokeStartLineCap& operator=( const StrokeStartLineCap& r);
00573         bool operator==(const StrokeStartLineCap& s) const;
00574 
00575         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00576         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00577         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00578         virtual bool validAsAttribute( void ) const;
00579 
00580     public:
00581         typedef enum eCapStyle
00582         {
00583             Flat,
00584             Square,
00585             Round,
00586             Triangle
00587         };
00588 
00589     public:
00590         const eCapStyle& style() const { return _eCapStyle; }
00591         eCapStyle& style() { return _eCapStyle; }
00592 
00593     private: 
00594         eCapStyle _eCapStyle;
00595 
00596     public:
00597         class Provider
00598         {
00599         public:
00600             virtual WT_Result provideStrokeStartLineCap( StrokeStartLineCap *& ) = 0;
00601         };
00602         class Consumer
00603         {
00604         public:
00605             virtual WT_Result consumeStrokeStartLineCap( Provider* p ) = 0;
00606         };
00607     };
00608 
00610     class StrokeLineJoin : public XamlAttribute<StrokeLineJoin>
00611     {
00612     public:
00613         StrokeLineJoin();
00614         StrokeLineJoin( const StrokeLineJoin& r);
00615         StrokeLineJoin& operator=( const StrokeLineJoin& r);
00616         bool operator==(const StrokeLineJoin& s) const;
00617 
00618         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00619         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00620         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00621         virtual bool validAsAttribute( void ) const;
00622 
00623     public:
00624         typedef enum eJoinStyle
00625         {
00626             None,
00627             Miter,
00628             Bevel,
00629             Round
00630         };
00631 
00632     public:
00633         const eJoinStyle& style() const { return _eJoinStyle; }
00634         eJoinStyle& style() { return _eJoinStyle; }
00635 
00636     private: 
00637         eJoinStyle _eJoinStyle;
00638 
00639     public:
00640         class Provider
00641         {
00642         public:
00643             virtual WT_Result provideStrokeLineJoin( StrokeLineJoin *& ) = 0;
00644         };
00645         class Consumer
00646         {
00647         public:
00648             virtual WT_Result consumeStrokeLineJoin( Provider* p ) = 0;
00649         };
00650     };
00651 
00653     class StrokeMiterLimit : public XamlAttribute<StrokeMiterLimit>
00654     {
00655     public:
00656         StrokeMiterLimit();
00657         StrokeMiterLimit( const StrokeMiterLimit& r);
00658         StrokeMiterLimit& operator=( const StrokeMiterLimit& r);
00659         bool operator==(const StrokeMiterLimit& s) const;
00660 
00661         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00662         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00663         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00664         virtual bool validAsAttribute( void ) const;
00665 
00666     public:
00667         const float& value() const { return _fValue; }
00668         float& value() { return _fValue; }
00669 
00670     private:
00671         float _fValue;
00672 
00673     public:
00674         class Provider
00675         {
00676         public:
00677             virtual WT_Result provideStrokeMiterLimit( StrokeMiterLimit *& ) = 0;
00678         };
00679         class Consumer
00680         {
00681         public:
00682             virtual WT_Result consumeStrokeMiterLimit( Provider* p ) = 0;
00683         };
00684     };
00685  
00687     class StrokeThickness : public XamlAttribute<StrokeThickness>
00688     {
00689     public:
00690         StrokeThickness();
00691         StrokeThickness( const StrokeThickness& r);
00692         StrokeThickness& operator=( const StrokeThickness& r);
00693         bool operator==(const StrokeThickness& s) const;
00694 
00695         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00696         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00697         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00698         virtual bool validAsAttribute( void ) const;
00699 
00700     public:
00701         const unsigned int& weight() const { return _nWeight; }
00702         unsigned int& weight() { return _nWeight; }
00703 
00704     private:
00705         unsigned int _nWeight;
00706 
00707     public:
00708         class Provider
00709         {
00710         public:
00711             virtual WT_Result provideStrokeThickness( StrokeThickness *& ) = 0;
00712         };
00713         class Consumer
00714         {
00715         public:
00716             virtual WT_Result consumeStrokeThickness( Provider* p ) = 0;
00717         };
00718     };
00719      
00721     class NavigateUri : public XamlAttribute<NavigateUri>
00722     {
00723     public:
00724         NavigateUri() {}
00725         NavigateUri( const NavigateUri& r);
00726         NavigateUri& operator=( const NavigateUri& r);
00727         bool operator==(const NavigateUri& s) const;
00728 
00729         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00730         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00731         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00732         virtual bool validAsAttribute( void ) const;
00733 
00734     public:
00735         virtual const StringRef& uri() const { return _oString; }
00736         virtual StringRef& uri() { return _oString; }
00737 
00738     private:
00739         StringRef _oString;
00740 
00741     public:
00742         class Provider
00743         {
00744         public:
00745             virtual WT_Result provideNavigateUri( NavigateUri *& ) = 0;
00746         };
00747         class Consumer
00748         {
00749         public:
00750             virtual WT_Result consumeNavigateUri( Provider* p ) = 0;
00751         };
00752     };
00753 
00755     class BidiLevel : public XamlAttribute<BidiLevel>
00756     {
00757     public:
00758         BidiLevel() : _nLevel(0) {}
00759         BidiLevel( const BidiLevel& r);
00760         BidiLevel& operator=( const BidiLevel& r);
00761         bool operator==(const BidiLevel& s) const;
00762 
00763         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00764         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00765         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00766         virtual bool validAsAttribute( void ) const;
00767 
00768     public:
00769         virtual const short& level() const { return _nLevel; }
00770         virtual short& level() { return _nLevel; }
00771 
00772     private:
00773         short _nLevel;
00774 
00775     public:
00776         class Provider
00777         {
00778         public:
00779             virtual WT_Result provideBidiLevel( BidiLevel *& ) = 0;
00780         };
00781         class Consumer
00782         {
00783         public:
00784             virtual WT_Result consumeBidiLevel( Provider* p ) = 0;
00785         };
00786     };
00787 
00789     class CaretStops : public XamlAttribute<CaretStops>
00790     {
00791     public:
00792         CaretStops() : _oStops() {}
00793         CaretStops( const CaretStops& r);
00794         CaretStops& operator=( const CaretStops& r);
00795         bool operator==(const CaretStops& r) const;
00796 
00797         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00798         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00799         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00800         virtual bool validAsAttribute( void ) const;
00801 
00802     public:
00803         virtual const IndexArrayRef& stops() const { return _oStops; }
00804         virtual IndexArrayRef& stops() { return _oStops; }
00805 
00806     private:
00807         IndexArrayRef _oStops;
00808 
00809     public:
00810         class Provider
00811         {
00812         public:
00813             virtual WT_Result provideCaretStops( CaretStops *& ) = 0;
00814         };
00815         class Consumer
00816         {
00817         public:
00818             virtual WT_Result consumeCaretStops( Provider* p ) = 0;
00819         };
00820     };
00821 
00823     class DeviceFontName : public XamlAttribute<DeviceFontName>
00824     {
00825     public:
00826         DeviceFontName() {}
00827         DeviceFontName( const DeviceFontName& r);
00828         DeviceFontName& operator=( const DeviceFontName& r);
00829         bool operator==(const DeviceFontName& r) const;
00830 
00831         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00832         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00833         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00834         virtual bool validAsAttribute( void ) const;
00835 
00836     public:
00837         virtual const StringRef& name() const { return _oString; }
00838         virtual StringRef& name() { return _oString; }
00839 
00840     private:
00841         StringRef _oString;
00842 
00843     public:
00844         class Provider
00845         {
00846         public:
00847             virtual WT_Result provideDeviceFontName( DeviceFontName *& ) = 0;
00848         };
00849         class Consumer
00850         {
00851         public:
00852             virtual WT_Result consumeDeviceFontName( Provider* p ) = 0;
00853         };
00854     };
00855 
00857     class FontRenderingEmSize : public XamlAttribute<FontRenderingEmSize>
00858     {
00859     public:
00860         FontRenderingEmSize();
00861         FontRenderingEmSize( const FontRenderingEmSize& r);
00862         FontRenderingEmSize& operator=( const FontRenderingEmSize& r);
00863         bool operator==(const FontRenderingEmSize& s) const;
00864 
00865         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00866         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00867         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00868         virtual bool validAsAttribute( void ) const;
00869 
00870     public:
00871         const float& value() const { return _fValue; }
00872         float& value() { return _fValue; }
00873 
00874     private:
00875         float _fValue;
00876 
00877     public:
00878         class Provider
00879         {
00880         public:
00881             virtual WT_Result provideFontRenderingEmSize( FontRenderingEmSize *& ) = 0;
00882         };
00883         class Consumer
00884         {
00885         public:
00886             virtual WT_Result consumeFontRenderingEmSize( Provider* p ) = 0;
00887         };
00888     };
00889 
00891     class FontUri : public XamlAttribute<FontUri>
00892     {
00893     public:
00894         FontUri() {}
00895         FontUri( const FontUri& r);
00896         FontUri& operator=( const FontUri& r);
00897         bool operator==(const FontUri& s) const;
00898 
00899         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00900         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00901         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00902         virtual bool validAsAttribute( void ) const;
00903 
00904     public:
00905         virtual const StringRef& uri() const { return _oString; }
00906         virtual StringRef& uri() { return _oString; }
00907 
00908     private:
00909         StringRef _oString;
00910 
00911     public:
00912         class Provider
00913         {
00914         public:
00915             virtual WT_Result provideFontUri( FontUri *& ) = 0;
00916         };
00917         class Consumer
00918         {
00919         public:
00920             virtual WT_Result consumeFontUri( Provider* p ) = 0;
00921         };
00922     };
00923 
00925     class OriginX : public XamlAttribute<OriginX>
00926     {
00927     public:
00928         OriginX();
00929         OriginX( const OriginX& r);
00930         OriginX& operator=( const OriginX& r);
00931         bool operator==(const OriginX& s) const;
00932 
00933         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00934         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00935         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00936         virtual bool validAsAttribute( void ) const;
00937 
00938     public:
00939         const float& value() const { return _fValue; }
00940         float& value() { return _fValue; }
00941 
00942     private:
00943         float _fValue;
00944 
00945     public:
00946         class Provider
00947         {
00948         public:
00949             virtual WT_Result provideOriginX( OriginX *& ) = 0;
00950         };
00951         class Consumer
00952         {
00953         public:
00954             virtual WT_Result consumeOriginX( Provider* p ) = 0;
00955         };
00956     };
00957 
00959     class OriginY : public XamlAttribute<OriginY>
00960     {
00961     public:
00962         OriginY();
00963         OriginY( const OriginY& r);
00964         OriginY& operator=( const OriginY& r);
00965         bool operator==(const OriginY& s) const;
00966 
00967         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
00968         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00969         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
00970         virtual bool validAsAttribute( void ) const;
00971 
00972     public:
00973         const float& value() const { return _fValue; }
00974         float& value() { return _fValue; }
00975 
00976     private:
00977         float _fValue;
00978 
00979     public:
00980         class Provider
00981         {
00982         public:
00983             virtual WT_Result provideOriginY( OriginY *& ) = 0;
00984         };
00985         class Consumer
00986         {
00987         public:
00988             virtual WT_Result consumeOriginY( Provider* p ) = 0;
00989         };
00990     };
00991  
00993     class IsSideways : public XamlAttribute<IsSideways>
00994     {
00995     public:
00996         IsSideways();
00997         IsSideways( const IsSideways& r);
00998         IsSideways& operator=( const IsSideways& r);
00999         bool operator==(const IsSideways& s) const;
01000 
01001         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
01002         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01003         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01004         virtual bool validAsAttribute( void ) const;
01005 
01006     public:
01007         const bool& value() const { return _bValue; }
01008         bool& value() { return _bValue; }
01009 
01010     private:
01011         bool _bValue;
01012 
01013     public:
01014         class Provider
01015         {
01016         public:
01017             virtual WT_Result provideIsSideways( IsSideways *& ) = 0;
01018         };
01019         class Consumer
01020         {
01021         public:
01022             virtual WT_Result consumeIsSideways( Provider* p ) = 0;
01023         };
01024     };
01025 
01027     class Indices : public XamlAttribute<Indices>
01028     {
01029     public:
01030         Indices() {}
01031         Indices( const Indices& r);
01032         Indices& operator=( const Indices& r);
01033         bool operator==(const Indices& s) const;
01034         
01035         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
01036         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01037         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01038         virtual bool validAsAttribute( void ) const;
01039 
01040     public:
01041         virtual const StringRef& string() const { return _oString; }
01042         virtual StringRef& string() { return _oString; }
01043 
01044     private:
01045         StringRef _oString;
01046 
01047     public:
01048         class Provider
01049         {
01050         public:
01051             virtual WT_Result provideIndices( Indices *& ) = 0;
01052         };
01053         class Consumer
01054         {
01055         public:
01056             virtual WT_Result consumeIndices( Provider* p ) = 0;
01057         };
01058         
01059     };
01060 
01062     class Resources : public XamlAttribute<Resources>
01063     {
01064     public:
01065         Resources() {}
01066         Resources( const Resources& r);
01067         Resources& operator=( const Resources& r);
01068         bool operator==(const Resources& s) const;
01069         
01070         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
01071         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01072         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01073         virtual bool validAsAttribute( void ) const;
01074 
01075     public:
01076         virtual const StringRef& sourceRef() const { return _oString; }
01077         virtual StringRef& sourceRef() { return _oString; }
01078 
01079     private:
01080         StringRef _oString;
01081 
01082     public:
01083         class Provider
01084         {
01085         public:
01086             virtual WT_Result provideResources( Resources *& ) = 0;
01087         };
01088         class Consumer
01089         {
01090         public:
01091             virtual WT_Result consumeResources( Provider* p ) = 0;
01092         };
01093         
01094     };
01095 
01097     class UnicodeString : public XamlAttribute<UnicodeString>
01098     {
01099     public:
01100         UnicodeString() {}
01101         UnicodeString( const UnicodeString& r);
01102         UnicodeString& operator=( const UnicodeString& r);
01103         bool operator==(const UnicodeString& s) const;
01104         
01105         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
01106         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01107         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01108         virtual bool validAsAttribute( void ) const;
01109 
01110     public:
01111         virtual const StringRef& string() const { return _oString; }
01112         virtual StringRef& string() { return _oString; }
01113 
01114     private:
01115         StringRef _oString;
01116 
01117     public:
01118         class Provider
01119         {
01120         public:
01121             virtual WT_Result provideUnicodeString( UnicodeString *& ) = 0;
01122         };
01123         class Consumer
01124         {
01125         public:
01126             virtual WT_Result consumeUnicodeString( Provider* p ) = 0;
01127         };
01128     };
01129 
01131     //StyleSimulations
01132     class StyleSimulations : public XamlAttribute<StyleSimulations>
01133     {
01134     public:
01135         StyleSimulations();
01136         StyleSimulations( const StyleSimulations& r);
01137         StyleSimulations& operator=( const StyleSimulations& r);
01138         bool operator==(const StyleSimulations& s) const;
01139 
01140         virtual WT_Result materializeAttribute( WT_XAML_File &, const char* );
01141         virtual WT_Result serializeAttribute( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01142         virtual WT_Result serializeElement( WT_XAML_File &, DWFCore::DWFXMLSerializer * ) const;
01143         virtual bool validAsAttribute( void ) const;
01144 
01145     public:
01146         typedef enum eSimulationStyle
01147         {
01148             None,
01149             Italic,
01150             Bold,
01151             BoldItalic
01152         };
01153 
01154     public:
01155         const eSimulationStyle& style() const { return _eSimulationStyle; }
01156         eSimulationStyle& style() { return _eSimulationStyle; }
01157 
01158     private: 
01159         eSimulationStyle _eSimulationStyle;
01160 
01161     public:
01162         class Provider
01163         {
01164         public:
01165             virtual WT_Result provideStyleSimulations( StyleSimulations *& ) = 0;
01166         };
01167         class Consumer
01168         {
01169         public:
01170             virtual WT_Result consumeStyleSimulations( Provider* p ) = 0;
01171         };
01172     };
01173 
01175     class CanvasAttributeConsumer :
01176                  public XamlDrawableAttributes::Name::Consumer
01177                , public XamlDrawableAttributes::RenderTransform::Consumer
01178                , public XamlDrawableAttributes::Clip::Consumer
01179                , public XamlDrawableAttributes::Opacity::Consumer
01180                , public XamlDrawableAttributes::OpacityMask::Consumer
01181                            , public XamlDrawableAttributes::NavigateUri::Consumer
01182                            , public XamlDrawableAttributes::Resources::Consumer
01183     {
01184     };
01185 
01186     class PathAttributeConsumer : 
01187                  public XamlDrawableAttributes::Data::Consumer
01188                , public XamlDrawableAttributes::Name::Consumer
01189                , public XamlDrawableAttributes::Fill::Consumer
01190                , public XamlDrawableAttributes::RenderTransform::Consumer
01191                , public XamlDrawableAttributes::Clip::Consumer
01192                , public XamlDrawableAttributes::Opacity::Consumer
01193                , public XamlDrawableAttributes::OpacityMask::Consumer
01194                , public XamlDrawableAttributes::Stroke::Consumer
01195                , public XamlDrawableAttributes::StrokeDashArray::Consumer
01196                , public XamlDrawableAttributes::StrokeDashCap::Consumer
01197                , public XamlDrawableAttributes::StrokeDashOffset::Consumer
01198                , public XamlDrawableAttributes::StrokeEndLineCap::Consumer
01199                , public XamlDrawableAttributes::StrokeStartLineCap::Consumer
01200                , public XamlDrawableAttributes::StrokeLineJoin::Consumer
01201                , public XamlDrawableAttributes::StrokeMiterLimit::Consumer
01202                , public XamlDrawableAttributes::StrokeThickness::Consumer
01203                , public XamlDrawableAttributes::NavigateUri::Consumer
01204     {
01205     };
01206 
01207     class GlyphsAttributeConsumer :
01208                   public XamlDrawableAttributes::BidiLevel::Consumer
01209                 , public XamlDrawableAttributes::CaretStops::Consumer
01210                 , public XamlDrawableAttributes::DeviceFontName::Consumer
01211                 , public XamlDrawableAttributes::Fill::Consumer
01212                 , public XamlDrawableAttributes::FontRenderingEmSize::Consumer
01213                 , public XamlDrawableAttributes::FontUri::Consumer
01214                 , public XamlDrawableAttributes::OriginX::Consumer
01215                 , public XamlDrawableAttributes::OriginY::Consumer
01216                 , public XamlDrawableAttributes::IsSideways::Consumer
01217                 , public XamlDrawableAttributes::Indices::Consumer
01218                 , public XamlDrawableAttributes::UnicodeString::Consumer
01219                 , public XamlDrawableAttributes::StyleSimulations::Consumer
01220                 , public XamlDrawableAttributes::RenderTransform::Consumer
01221                 , public XamlDrawableAttributes::Clip::Consumer
01222                 , public XamlDrawableAttributes::Opacity::Consumer
01223                 , public XamlDrawableAttributes::OpacityMask::Consumer
01224                 , public XamlDrawableAttributes::Name::Consumer
01225                 , public XamlDrawableAttributes::NavigateUri::Consumer
01226     {
01227     };
01228 
01230     class FillProvider : public Fill::Provider 
01231     {
01232     public:
01233         FillProvider( XamlBrush::Brush* pBrush) 
01234             : _pBrush( pBrush )
01235         { }
01236 
01237         WT_Result provideFill( XamlDrawableAttributes::Fill *& rpFill )
01238         {
01239             if (rpFill == NULL)
01240             {
01241                 rpFill = DWFCORE_ALLOC_OBJECT( XamlDrawableAttributes::Fill() );
01242                 if (rpFill == NULL)
01243                 {
01244                     return WT_Result::Out_Of_Memory_Error;
01245                 }
01246             }
01247 
01248             if (_pBrush == NULL)
01249             {
01250                 return WT_Result::Toolkit_Usage_Error;
01251             }
01252 
01253             rpFill->brush() = _pBrush;
01254             return WT_Result::Success;
01255         }
01256 
01257     private:
01258         XamlBrush::Brush* _pBrush;
01259     };
01260 
01262     class ResourcesProvider : public Resources::Provider 
01263     {
01264     public:
01265         ResourcesProvider( const char* pSourceRef ) 
01266             : _oString( pSourceRef )
01267         { }
01268 
01269         WT_Result provideResources( XamlDrawableAttributes::Resources *& rpResources )
01270         {
01271             if (rpResources == NULL)
01272             {
01273                 rpResources = DWFCORE_ALLOC_OBJECT( XamlDrawableAttributes::Resources() );
01274                 if (rpResources == NULL)
01275                 {
01276                     return WT_Result::Out_Of_Memory_Error;
01277                 }
01278             }
01279 
01280             rpResources->sourceRef() = _oString;
01281             return WT_Result::Success;
01282         }
01283         virtual ~ResourcesProvider()
01284         {}
01285 
01286     private:
01287         StringRef _oString;
01288     };
01289 
01291     class StrokeProvider : public Stroke::Provider 
01292     {
01293     public:
01294         StrokeProvider( XamlBrush::Brush * pBrush) 
01295             : _pBrush( pBrush )
01296         { }
01297 
01298         WT_Result provideStroke( XamlDrawableAttributes::Stroke *& rpStroke )
01299         {
01300             if (rpStroke == NULL)
01301             {
01302                 rpStroke = DWFCORE_ALLOC_OBJECT( XamlDrawableAttributes::Stroke() );
01303                 if (rpStroke == NULL)
01304                 {
01305                     return WT_Result::Out_Of_Memory_Error;
01306                 }
01307             }
01308 
01309             if (_pBrush == NULL)
01310             {
01311                 return WT_Result::Toolkit_Usage_Error;
01312             }
01313 
01314             rpStroke->brush() = _pBrush;
01315             return WT_Result::Success;
01316         }
01317 
01318     private:
01319         XamlBrush::Brush* _pBrush;
01320     };
01321 
01323     class RenderTransformProvider : public RenderTransform::Provider 
01324     {
01325     public:
01326         RenderTransformProvider( const WT_Matrix2D& rMatrix ) 
01327         { _oMatrix = rMatrix; }
01328 
01329                 virtual ~RenderTransformProvider(void) {}
01330 
01331         WT_Result provideRenderTransform( XamlDrawableAttributes::RenderTransform *& rpRenderTransform )
01332         {
01333             if (rpRenderTransform == NULL)
01334             {
01335                 rpRenderTransform = DWFCORE_ALLOC_OBJECT( XamlDrawableAttributes::RenderTransform() );
01336                 if (rpRenderTransform == NULL)
01337                 {
01338                     return WT_Result::Out_Of_Memory_Error;
01339                 }
01340             }
01341 
01342             rpRenderTransform->matrix() = _oMatrix;
01343             return WT_Result::Success;
01344         }
01345 
01346     private:
01347         MatrixRef _oMatrix;
01348     };
01349 
01351     class CanvasAttributeProvider
01352     {
01353     public:
01354         virtual WT_Result provideCanvasAttributes( XamlDrawableAttributes::CanvasAttributeConsumer* p, WT_XAML_File& r) const = 0;
01355     };
01356     
01357     class PathAttributeProvider
01358     {
01359     public:
01360         virtual WT_Result providePathAttributes( XamlDrawableAttributes::PathAttributeConsumer* p, WT_XAML_File& r) const = 0;
01361     };
01362 
01363     class GlyphsAttributeProvider
01364     {
01365     public:
01366         virtual WT_Result provideGlyphsAttributes( XamlDrawableAttributes::GlyphsAttributeConsumer* p, WT_XAML_File& r) const = 0;
01367     };
01368     
01369 }
01370 
01371 #endif

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