00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __COMBINEDTEXT_H__
00020 #define __COMBINEDTEXT_H__
00021
00022 #include <vrs/container/dictionary.h>
00023 #include <vrs/container/array.h>
00024 #include <vrs/shape.h>
00025
00026 #include <vrs/text/vrs_textprerequisites.h>
00027 #include <vrs/text/basetext.h>
00028 #include <vrs/text/fontdefinition.h>
00029
00031 namespace VRS
00032 {
00033 namespace TEXT
00034 {
00035 typedef Dictionary< int, SO<AbstractText> > TextLayerMap;
00036 typedef NonPersistentArray< SO<AbstractText> > TextArray;
00037 typedef Iterator< SO<AbstractText> > TextIter;
00038
00043 class VRS_CORE_API CombinedText : public AbstractText
00044 {
00045 public:
00047 CombinedText( unsigned int estimatedElements = 0 );
00049 virtual ~CombinedText();
00050
00051
00052
00067 static SO<CombinedText> createOutlinedText( const Color& normalcol, const Color& outlinecol,
00068 const std::string& text, SO<FontDefinition> fdNormal, float outlineSize );
00085 static SO<CombinedText> createSoftOutlinedText( const Color& normalcol, const Color& outlinecol,
00086 const std::string& text, SO<FontDefinition> fdNormal, float outlineSize, float softSize );
00101 static SO<CombinedText> createShadowedText( const Color& normalcol, const Color& shadowcol,
00102 const std::string& text, SO<FontDefinition> fdNormal, const Vector& shadowOffset );
00103 #ifdef VRS_HAS_WSTRING // Has Unicode support
00104
00118 static SO<CombinedText> createOutlinedText( const Color& normalcol, const Color& outlinecol,
00119 const std::wstring& text, SO<FontDefinition> fdNormal, float outlineSize );
00136 static SO<CombinedText> createSoftOutlinedText( const Color& normalcol, const Color& outlinecol,
00137 const std::wstring& text, SO<FontDefinition> fdNormal, float outlineSize, float softSize );
00152 static SO<CombinedText> createShadowedText( const Color& normalcol, const Color& shadowcol,
00153 const std::wstring& text, SO<FontDefinition> fdNormal, const Vector& shadowOffset );
00154 #endif
00155
00157 enum TextHint {
00159 EMPTY,
00161 SPECIAL,
00163 SHADOWED,
00165 OUTLINED_SOFT,
00167 OUTLINED_HARD
00168 };
00169 VRS_SERIALIZABLE_CLASS_ENUM(TextHint);
00170
00175 virtual TextHint getTextHint() const;
00176
00177
00178
00179
00186 virtual void addText( SO<AbstractText> at, int layer );
00193 virtual void removeText( SO<AbstractText> at);
00194
00195
00196
00197
00198 #ifdef VRS_HAS_WSTRING // Has Unicode support
00199
00200 virtual const std::wstring& getText() const;
00202 virtual void setText(const std::wstring& str);
00203 #else // Has no Unicode support
00204
00205 virtual const std::string& getText() const;
00206 #endif
00208 virtual void setText(const std::string& str);
00209
00210
00211
00212
00214 virtual SO<FontDefinition> getFontDefinition( ) const;
00216 virtual void setFontDefinition( SO<FontDefinition> );
00217
00218
00219
00223 virtual AbstractText::HorizontalAlignment getHorizontalAlignment() const;
00227 virtual void setHorizontalAlignment(AbstractText::HorizontalAlignment tva);
00231 virtual AbstractText::VerticalAlignment getVerticalAlignment() const;
00235 virtual void setVerticalAlignment(AbstractText::VerticalAlignment tva);
00239 virtual AbstractText::HorizontalDirection getHorizontalDirection() const;
00243 virtual void setHorizontalDirection(AbstractText::HorizontalDirection thd);
00247 virtual AbstractText::VerticalDirection getVerticalDirection() const;
00251 virtual void setVerticalDirection(AbstractText::VerticalDirection thd);
00255 virtual AbstractText::Direction getDirection() const;
00259 virtual void setDirection(AbstractText::Direction td);
00260
00272 virtual void setAlignmentBounds( float rightBorder, float bottomBorder );
00276 virtual void setRightAlignmentBound(float rightBorder);
00280 virtual void setBottomAlignmentBound(float bottomBorder);
00284 virtual float getRightAlignmentBound() const;
00288 virtual float getBottomAlignmentBound() const;
00289
00290
00291
00292
00296 virtual float getLineSpacing() const;
00300 virtual void setLineSpacing(float LineSpacing);
00301
00302
00303
00304
00306 virtual void setColor( const Color& color, bool use = true );
00308 virtual Color getColor() const;
00310 virtual bool useColor() const;
00311
00312
00313
00314
00316 virtual Matrix getMatrix() const;
00318 virtual void setMatrix( const Matrix& m );
00319
00320
00321
00322
00324 virtual Bounds boundingBox() const;
00326 virtual Bounds getLocalBounds() const;
00327
00331 const SO<TextIter> _getTexts() const;
00332
00333 VRS_TYPEINFO(CombinedText, Shape);
00334 VRS_SERIALIZABLE(CombinedText);
00335 private:
00337 SO<AbstractText> getFirstText() const;
00338
00340 TextHint m_TextHint;
00342 SO<TextLayerMap> m_LayerMap;
00344 mutable SO<TextArray> m_TextArray;
00345 };
00346 }
00347 }
00348
00349 #endif