1 ////////////////////////////////////////////////////////////////////////////// 2 // Name: CSSStyleDeclaration.h 3 // Author: Alex Thuering 4 // Copyright: (c) 2005 Alex Thuering 5 // Licence: wxWindows licence 6 // Notes: generated by genCSS.py 7 ////////////////////////////////////////////////////////////////////////////// 8 9 #ifndef WX_CSS_STYLE_DECLARATION_H 10 #define WX_CSS_STYLE_DECLARATION_H 11 12 13 #include "CSSValue.h" 14 #include "SVGPaint.h" 15 #include "SVGAnimatedType.h" 16 #include <wx/hashmap.h> 17 18 enum wxCSS_PROPERTY 19 { 20 wxCSS_PROPERTY_UNKNOWN, 21 wxCSS_PROPERTY_ALIGNMENT_BASELINE, 22 wxCSS_PROPERTY_BASELINE_SHIFT, 23 wxCSS_PROPERTY_CLIP, 24 wxCSS_PROPERTY_CLIP_PATH, 25 wxCSS_PROPERTY_CLIP_RULE, 26 wxCSS_PROPERTY_COLOR, 27 wxCSS_PROPERTY_COLOR_INTERPOLATION, 28 wxCSS_PROPERTY_COLOR_INTERPOLATION_FILTERS, 29 wxCSS_PROPERTY_COLOR_PROFILE, 30 wxCSS_PROPERTY_COLOR_RENDERING, 31 wxCSS_PROPERTY_CURSOR, 32 wxCSS_PROPERTY_DIRECTION, 33 wxCSS_PROPERTY_DISPLAY, 34 wxCSS_PROPERTY_DOMINANT_BASELINE, 35 wxCSS_PROPERTY_ENABLE_BACKGROUND, 36 wxCSS_PROPERTY_FILL, 37 wxCSS_PROPERTY_FILL_OPACITY, 38 wxCSS_PROPERTY_FILL_RULE, 39 wxCSS_PROPERTY_FILTER, 40 wxCSS_PROPERTY_FLOOD_COLOR, 41 wxCSS_PROPERTY_FLOOD_OPACITY, 42 wxCSS_PROPERTY_FONT_FAMILY, 43 wxCSS_PROPERTY_FONT_SIZE, 44 wxCSS_PROPERTY_FONT_SIZE_ADJUST, 45 wxCSS_PROPERTY_FONT_STRETCH, 46 wxCSS_PROPERTY_FONT_STYLE, 47 wxCSS_PROPERTY_FONT_VARIANT, 48 wxCSS_PROPERTY_FONT_WEIGHT, 49 wxCSS_PROPERTY_GLYPH_ORIENTATION_HORIZONTAL, 50 wxCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL, 51 wxCSS_PROPERTY_IMAGE_RENDERING, 52 wxCSS_PROPERTY_KERNING, 53 wxCSS_PROPERTY_LETTER_SPACING, 54 wxCSS_PROPERTY_LIGHTING_COLOR, 55 wxCSS_PROPERTY_MARKER_END, 56 wxCSS_PROPERTY_MARKER_MID, 57 wxCSS_PROPERTY_MARKER_START, 58 wxCSS_PROPERTY_MASK, 59 wxCSS_PROPERTY_OPACITY, 60 wxCSS_PROPERTY_OVERFLOW, 61 wxCSS_PROPERTY_POINTER_EVENTS, 62 wxCSS_PROPERTY_SHAPE_RENDERING, 63 wxCSS_PROPERTY_STOP_COLOR, 64 wxCSS_PROPERTY_STOP_OPACITY, 65 wxCSS_PROPERTY_STROKE, 66 wxCSS_PROPERTY_STROKE_DASHARRAY, 67 wxCSS_PROPERTY_STROKE_DASHOFFSET, 68 wxCSS_PROPERTY_STROKE_LINECAP, 69 wxCSS_PROPERTY_STROKE_LINEJOIN, 70 wxCSS_PROPERTY_STROKE_MITERLIMIT, 71 wxCSS_PROPERTY_STROKE_OPACITY, 72 wxCSS_PROPERTY_STROKE_WIDTH, 73 wxCSS_PROPERTY_TEXT_ANCHOR, 74 wxCSS_PROPERTY_TEXT_DECORATION, 75 wxCSS_PROPERTY_TEXT_RENDERING, 76 wxCSS_PROPERTY_UNICODE_BIDI, 77 wxCSS_PROPERTY_VISIBILITY, 78 wxCSS_PROPERTY_WORD_SPACING, 79 wxCSS_PROPERTY_WRITING_MODE 80 }; 81 82 WX_DECLARE_HASH_MAP(wxCSS_PROPERTY, wxCSSValue*, wxIntegerHash, wxIntegerEqual, wxHashMapCSSValue); 83 84 typedef wxString wxCSSStyler; 85 86 class wxCSSStyleDeclaration: public wxHashMapCSSValue 87 { 88 public: wxCSSStyleDeclaration()89 wxCSSStyleDeclaration() {} wxCSSStyleDeclaration(const wxCSSStyleDeclaration & src)90 wxCSSStyleDeclaration(const wxCSSStyleDeclaration& src) 91 : wxHashMapCSSValue(src.size()) 92 { Add(src); } 93 ~wxCSSStyleDeclaration(); 94 wxCSSStyleDeclaration& operator=(const wxCSSStyleDeclaration& src); 95 void Add(const wxCSSStyleDeclaration& style); 96 97 public: 98 wxString GetCSSText() const; 99 void SetCSSText(const wxString& text); 100 GetPropertyValue(const wxString & propertyName)101 inline wxString GetPropertyValue(const wxString& propertyName) const 102 { return GetPropertyValue(GetPropertyId(propertyName)); } 103 GetPropertyCSSValue(const wxString & propertyName)104 inline const wxCSSValue& GetPropertyCSSValue(const wxString& propertyName) const 105 { return GetPropertyCSSValue(GetPropertyId(propertyName)); } 106 SetProperty(const wxString & propertyName,const wxString & value)107 void SetProperty(const wxString& propertyName, const wxString& value) 108 { SetProperty(GetPropertyId(propertyName), value); } 109 SetProperty(const wxString & propertyName,const wxSVGAnimatedType & value)110 void SetProperty(const wxString& propertyName, const wxSVGAnimatedType& value) 111 { SetProperty(GetPropertyId(propertyName), value); } 112 HasProperty(const wxString & propertyName)113 inline bool HasProperty(const wxString& propertyName) const 114 { return HasProperty(GetPropertyId(propertyName)); } 115 RemoveProperty(const wxString & propertyName)116 inline wxString RemoveProperty(const wxString& propertyName) 117 { return RemoveProperty(GetPropertyId(propertyName)); } 118 119 public: GetPropertyValue(wxCSS_PROPERTY propertyId)120 inline wxString GetPropertyValue(wxCSS_PROPERTY propertyId) const 121 { const_iterator it = find(propertyId); if (it != end()) return it->second->GetCSSText(); return wxT(""); } 122 GetPropertyCSSValue(wxCSS_PROPERTY propertyId)123 inline const wxCSSValue& GetPropertyCSSValue(wxCSS_PROPERTY propertyId) const 124 { const_iterator it = find(propertyId); if (it != end()) return *it->second; return *s_emptyCSSValue; } 125 126 void SetProperty(wxCSS_PROPERTY propertyId, const wxString& value); 127 void SetProperty(wxCSS_PROPERTY propertyId, const wxSVGAnimatedType& value); HasProperty(wxCSS_PROPERTY propertyId)128 inline bool HasProperty(wxCSS_PROPERTY propertyId) const { return find(propertyId) != end(); } RemoveProperty(wxCSS_PROPERTY propertyId)129 inline wxString RemoveProperty(wxCSS_PROPERTY propertyId) { erase(propertyId); return wxT(""); } 130 131 static wxCSS_PROPERTY GetPropertyId(const wxString& propertyName); 132 static wxString GetPropertyName(wxCSS_PROPERTY propertyId); 133 134 public: GetAlignmentBaseline()135 inline wxCSS_VALUE GetAlignmentBaseline() const 136 { 137 const_iterator it = find(wxCSS_PROPERTY_ALIGNMENT_BASELINE); 138 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_AUTO; 139 } HasAlignmentBaseline()140 inline bool HasAlignmentBaseline() const { return HasProperty(wxCSS_PROPERTY_ALIGNMENT_BASELINE); } SetAlignmentBaseline(wxCSS_VALUE value)141 inline void SetAlignmentBaseline(wxCSS_VALUE value) 142 { 143 iterator it = find(wxCSS_PROPERTY_ALIGNMENT_BASELINE); 144 if (it != end()) 145 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 146 else 147 (*this)[wxCSS_PROPERTY_ALIGNMENT_BASELINE] = new wxCSSPrimitiveValue(value); 148 } 149 150 GetBaselineShift()151 inline const wxCSSPrimitiveValue& GetBaselineShift() const 152 { 153 const_iterator it = find(wxCSS_PROPERTY_BASELINE_SHIFT); 154 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 155 } HasBaselineShift()156 inline bool HasBaselineShift() const { return HasProperty(wxCSS_PROPERTY_BASELINE_SHIFT); } SetBaselineShift(const wxCSSPrimitiveValue & value)157 inline void SetBaselineShift(const wxCSSPrimitiveValue& value) 158 { 159 iterator it = find(wxCSS_PROPERTY_BASELINE_SHIFT); 160 if (it != end()) 161 { 162 delete it->second; 163 it->second = new wxCSSPrimitiveValue(value); 164 } 165 else 166 (*this)[wxCSS_PROPERTY_BASELINE_SHIFT] = new wxCSSPrimitiveValue(value); 167 } 168 169 GetClip()170 inline const wxCSSPrimitiveValue& GetClip() const 171 { 172 const_iterator it = find(wxCSS_PROPERTY_CLIP); 173 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 174 } HasClip()175 inline bool HasClip() const { return HasProperty(wxCSS_PROPERTY_CLIP); } SetClip(const wxCSSPrimitiveValue & value)176 inline void SetClip(const wxCSSPrimitiveValue& value) 177 { 178 iterator it = find(wxCSS_PROPERTY_CLIP); 179 if (it != end()) 180 { 181 delete it->second; 182 it->second = new wxCSSPrimitiveValue(value); 183 } 184 else 185 (*this)[wxCSS_PROPERTY_CLIP] = new wxCSSPrimitiveValue(value); 186 } 187 188 GetClipPath()189 inline const wxCSSPrimitiveValue& GetClipPath() const 190 { 191 const_iterator it = find(wxCSS_PROPERTY_CLIP_PATH); 192 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 193 } HasClipPath()194 inline bool HasClipPath() const { return HasProperty(wxCSS_PROPERTY_CLIP_PATH); } SetClipPath(const wxCSSPrimitiveValue & value)195 inline void SetClipPath(const wxCSSPrimitiveValue& value) 196 { 197 iterator it = find(wxCSS_PROPERTY_CLIP_PATH); 198 if (it != end()) 199 { 200 delete it->second; 201 it->second = new wxCSSPrimitiveValue(value); 202 } 203 else 204 (*this)[wxCSS_PROPERTY_CLIP_PATH] = new wxCSSPrimitiveValue(value); 205 } 206 207 GetClipRule()208 inline wxCSS_VALUE GetClipRule() const 209 { 210 const_iterator it = find(wxCSS_PROPERTY_CLIP_RULE); 211 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_NONZERO; 212 } HasClipRule()213 inline bool HasClipRule() const { return HasProperty(wxCSS_PROPERTY_CLIP_RULE); } SetClipRule(wxCSS_VALUE value)214 inline void SetClipRule(wxCSS_VALUE value) 215 { 216 iterator it = find(wxCSS_PROPERTY_CLIP_RULE); 217 if (it != end()) 218 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 219 else 220 (*this)[wxCSS_PROPERTY_CLIP_RULE] = new wxCSSPrimitiveValue(value); 221 } 222 223 GetColor()224 inline wxRGBColor GetColor() const 225 { 226 const_iterator it = find(wxCSS_PROPERTY_COLOR); 227 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetRGBColorValue() : wxRGBColor(); 228 } HasColor()229 inline bool HasColor() const { return HasProperty(wxCSS_PROPERTY_COLOR); } SetColor(const wxRGBColor & value)230 inline void SetColor(const wxRGBColor& value) 231 { 232 iterator it = find(wxCSS_PROPERTY_COLOR); 233 if (it != end()) 234 ((wxCSSPrimitiveValue*)it->second)->SetRGBColorValue(value); 235 else 236 (*this)[wxCSS_PROPERTY_COLOR] = new wxCSSPrimitiveValue(value); 237 } 238 239 GetColorInterpolation()240 inline wxCSS_VALUE GetColorInterpolation() const 241 { 242 const_iterator it = find(wxCSS_PROPERTY_COLOR_INTERPOLATION); 243 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_SRGB; 244 } HasColorInterpolation()245 inline bool HasColorInterpolation() const { return HasProperty(wxCSS_PROPERTY_COLOR_INTERPOLATION); } SetColorInterpolation(wxCSS_VALUE value)246 inline void SetColorInterpolation(wxCSS_VALUE value) 247 { 248 iterator it = find(wxCSS_PROPERTY_COLOR_INTERPOLATION); 249 if (it != end()) 250 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 251 else 252 (*this)[wxCSS_PROPERTY_COLOR_INTERPOLATION] = new wxCSSPrimitiveValue(value); 253 } 254 255 GetColorInterpolationFilters()256 inline wxCSS_VALUE GetColorInterpolationFilters() const 257 { 258 const_iterator it = find(wxCSS_PROPERTY_COLOR_INTERPOLATION_FILTERS); 259 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_LINEARRGB; 260 } HasColorInterpolationFilters()261 inline bool HasColorInterpolationFilters() const { return HasProperty(wxCSS_PROPERTY_COLOR_INTERPOLATION_FILTERS); } SetColorInterpolationFilters(wxCSS_VALUE value)262 inline void SetColorInterpolationFilters(wxCSS_VALUE value) 263 { 264 iterator it = find(wxCSS_PROPERTY_COLOR_INTERPOLATION_FILTERS); 265 if (it != end()) 266 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 267 else 268 (*this)[wxCSS_PROPERTY_COLOR_INTERPOLATION_FILTERS] = new wxCSSPrimitiveValue(value); 269 } 270 271 GetColorProfile()272 inline const wxCSSPrimitiveValue& GetColorProfile() const 273 { 274 const_iterator it = find(wxCSS_PROPERTY_COLOR_PROFILE); 275 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 276 } HasColorProfile()277 inline bool HasColorProfile() const { return HasProperty(wxCSS_PROPERTY_COLOR_PROFILE); } SetColorProfile(const wxCSSPrimitiveValue & value)278 inline void SetColorProfile(const wxCSSPrimitiveValue& value) 279 { 280 iterator it = find(wxCSS_PROPERTY_COLOR_PROFILE); 281 if (it != end()) 282 { 283 delete it->second; 284 it->second = new wxCSSPrimitiveValue(value); 285 } 286 else 287 (*this)[wxCSS_PROPERTY_COLOR_PROFILE] = new wxCSSPrimitiveValue(value); 288 } 289 290 GetColorRendering()291 inline wxCSS_VALUE GetColorRendering() const 292 { 293 const_iterator it = find(wxCSS_PROPERTY_COLOR_RENDERING); 294 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_AUTO; 295 } HasColorRendering()296 inline bool HasColorRendering() const { return HasProperty(wxCSS_PROPERTY_COLOR_RENDERING); } SetColorRendering(wxCSS_VALUE value)297 inline void SetColorRendering(wxCSS_VALUE value) 298 { 299 iterator it = find(wxCSS_PROPERTY_COLOR_RENDERING); 300 if (it != end()) 301 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 302 else 303 (*this)[wxCSS_PROPERTY_COLOR_RENDERING] = new wxCSSPrimitiveValue(value); 304 } 305 306 GetCursor()307 inline const wxCSSPrimitiveValue& GetCursor() const 308 { 309 const_iterator it = find(wxCSS_PROPERTY_CURSOR); 310 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 311 } HasCursor()312 inline bool HasCursor() const { return HasProperty(wxCSS_PROPERTY_CURSOR); } SetCursor(const wxCSSPrimitiveValue & value)313 inline void SetCursor(const wxCSSPrimitiveValue& value) 314 { 315 iterator it = find(wxCSS_PROPERTY_CURSOR); 316 if (it != end()) 317 { 318 delete it->second; 319 it->second = new wxCSSPrimitiveValue(value); 320 } 321 else 322 (*this)[wxCSS_PROPERTY_CURSOR] = new wxCSSPrimitiveValue(value); 323 } 324 325 GetDirection()326 inline wxCSS_VALUE GetDirection() const 327 { 328 const_iterator it = find(wxCSS_PROPERTY_DIRECTION); 329 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_LTR; 330 } HasDirection()331 inline bool HasDirection() const { return HasProperty(wxCSS_PROPERTY_DIRECTION); } SetDirection(wxCSS_VALUE value)332 inline void SetDirection(wxCSS_VALUE value) 333 { 334 iterator it = find(wxCSS_PROPERTY_DIRECTION); 335 if (it != end()) 336 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 337 else 338 (*this)[wxCSS_PROPERTY_DIRECTION] = new wxCSSPrimitiveValue(value); 339 } 340 341 GetDisplay()342 inline wxCSS_VALUE GetDisplay() const 343 { 344 const_iterator it = find(wxCSS_PROPERTY_DISPLAY); 345 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_INLINE; 346 } HasDisplay()347 inline bool HasDisplay() const { return HasProperty(wxCSS_PROPERTY_DISPLAY); } SetDisplay(wxCSS_VALUE value)348 inline void SetDisplay(wxCSS_VALUE value) 349 { 350 iterator it = find(wxCSS_PROPERTY_DISPLAY); 351 if (it != end()) 352 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 353 else 354 (*this)[wxCSS_PROPERTY_DISPLAY] = new wxCSSPrimitiveValue(value); 355 } 356 357 GetDominantBaseline()358 inline wxCSS_VALUE GetDominantBaseline() const 359 { 360 const_iterator it = find(wxCSS_PROPERTY_DOMINANT_BASELINE); 361 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_AUTO; 362 } HasDominantBaseline()363 inline bool HasDominantBaseline() const { return HasProperty(wxCSS_PROPERTY_DOMINANT_BASELINE); } SetDominantBaseline(wxCSS_VALUE value)364 inline void SetDominantBaseline(wxCSS_VALUE value) 365 { 366 iterator it = find(wxCSS_PROPERTY_DOMINANT_BASELINE); 367 if (it != end()) 368 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 369 else 370 (*this)[wxCSS_PROPERTY_DOMINANT_BASELINE] = new wxCSSPrimitiveValue(value); 371 } 372 373 GetEnableBackground()374 inline wxCSS_VALUE GetEnableBackground() const 375 { 376 const_iterator it = find(wxCSS_PROPERTY_ENABLE_BACKGROUND); 377 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_ACCUMULATE; 378 } HasEnableBackground()379 inline bool HasEnableBackground() const { return HasProperty(wxCSS_PROPERTY_ENABLE_BACKGROUND); } SetEnableBackground(wxCSS_VALUE value)380 inline void SetEnableBackground(wxCSS_VALUE value) 381 { 382 iterator it = find(wxCSS_PROPERTY_ENABLE_BACKGROUND); 383 if (it != end()) 384 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 385 else 386 (*this)[wxCSS_PROPERTY_ENABLE_BACKGROUND] = new wxCSSPrimitiveValue(value); 387 } 388 389 GetFill()390 inline const wxSVGPaint& GetFill() const 391 { 392 const_iterator it = find(wxCSS_PROPERTY_FILL); 393 return it != end() ? ((wxSVGPaint&)*it->second) : *s_blackSVGPaint; 394 } HasFill()395 inline bool HasFill() const { return HasProperty(wxCSS_PROPERTY_FILL); } SetFill(const wxSVGPaint & value)396 inline void SetFill(const wxSVGPaint& value) 397 { 398 iterator it = find(wxCSS_PROPERTY_FILL); 399 if (it != end()) 400 { 401 delete it->second; 402 it->second = new wxSVGPaint(value); 403 } 404 else 405 (*this)[wxCSS_PROPERTY_FILL] = new wxSVGPaint(value); 406 } 407 408 GetFillOpacity()409 inline double GetFillOpacity() const 410 { 411 const_iterator it = find(wxCSS_PROPERTY_FILL_OPACITY); 412 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 1; 413 } HasFillOpacity()414 inline bool HasFillOpacity() const { return HasProperty(wxCSS_PROPERTY_FILL_OPACITY); } SetFillOpacity(double value)415 inline void SetFillOpacity(double value) 416 { 417 iterator it = find(wxCSS_PROPERTY_FILL_OPACITY); 418 if (it != end()) 419 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 420 else 421 (*this)[wxCSS_PROPERTY_FILL_OPACITY] = new wxCSSPrimitiveValue(value); 422 } 423 424 GetFillRule()425 inline wxCSS_VALUE GetFillRule() const 426 { 427 const_iterator it = find(wxCSS_PROPERTY_FILL_RULE); 428 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_NONZERO; 429 } HasFillRule()430 inline bool HasFillRule() const { return HasProperty(wxCSS_PROPERTY_FILL_RULE); } SetFillRule(wxCSS_VALUE value)431 inline void SetFillRule(wxCSS_VALUE value) 432 { 433 iterator it = find(wxCSS_PROPERTY_FILL_RULE); 434 if (it != end()) 435 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 436 else 437 (*this)[wxCSS_PROPERTY_FILL_RULE] = new wxCSSPrimitiveValue(value); 438 } 439 440 GetFilter()441 inline const wxCSSPrimitiveValue& GetFilter() const 442 { 443 const_iterator it = find(wxCSS_PROPERTY_FILTER); 444 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 445 } HasFilter()446 inline bool HasFilter() const { return HasProperty(wxCSS_PROPERTY_FILTER); } SetFilter(const wxCSSPrimitiveValue & value)447 inline void SetFilter(const wxCSSPrimitiveValue& value) 448 { 449 iterator it = find(wxCSS_PROPERTY_FILTER); 450 if (it != end()) 451 { 452 delete it->second; 453 it->second = new wxCSSPrimitiveValue(value); 454 } 455 else 456 (*this)[wxCSS_PROPERTY_FILTER] = new wxCSSPrimitiveValue(value); 457 } 458 459 GetFloodColor()460 inline const wxSVGColor& GetFloodColor() const 461 { 462 const_iterator it = find(wxCSS_PROPERTY_FLOOD_COLOR); 463 return it != end() ? ((wxSVGColor&)*it->second) : *s_emptySVGColor; 464 } HasFloodColor()465 inline bool HasFloodColor() const { return HasProperty(wxCSS_PROPERTY_FLOOD_COLOR); } SetFloodColor(const wxSVGColor & value)466 inline void SetFloodColor(const wxSVGColor& value) 467 { 468 iterator it = find(wxCSS_PROPERTY_FLOOD_COLOR); 469 if (it != end()) 470 { 471 delete it->second; 472 it->second = new wxSVGColor(value); 473 } 474 else 475 (*this)[wxCSS_PROPERTY_FLOOD_COLOR] = new wxSVGColor(value); 476 } 477 478 GetFloodOpacity()479 inline double GetFloodOpacity() const 480 { 481 const_iterator it = find(wxCSS_PROPERTY_FLOOD_OPACITY); 482 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 1; 483 } HasFloodOpacity()484 inline bool HasFloodOpacity() const { return HasProperty(wxCSS_PROPERTY_FLOOD_OPACITY); } SetFloodOpacity(double value)485 inline void SetFloodOpacity(double value) 486 { 487 iterator it = find(wxCSS_PROPERTY_FLOOD_OPACITY); 488 if (it != end()) 489 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 490 else 491 (*this)[wxCSS_PROPERTY_FLOOD_OPACITY] = new wxCSSPrimitiveValue(value); 492 } 493 494 GetFontFamily()495 inline wxString GetFontFamily() const 496 { 497 const_iterator it = find(wxCSS_PROPERTY_FONT_FAMILY); 498 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetStringValue() : wxT(""); 499 } HasFontFamily()500 inline bool HasFontFamily() const { return HasProperty(wxCSS_PROPERTY_FONT_FAMILY); } SetFontFamily(const wxString & value)501 inline void SetFontFamily(const wxString& value) 502 { 503 iterator it = find(wxCSS_PROPERTY_FONT_FAMILY); 504 if (it != end()) 505 ((wxCSSPrimitiveValue*)it->second)->SetStringValue(wxCSS_STRING, value); 506 else 507 (*this)[wxCSS_PROPERTY_FONT_FAMILY] = new wxCSSPrimitiveValue(value); 508 } 509 510 GetFontSize()511 inline double GetFontSize() const 512 { 513 const_iterator it = find(wxCSS_PROPERTY_FONT_SIZE); 514 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 20; 515 } HasFontSize()516 inline bool HasFontSize() const { return HasProperty(wxCSS_PROPERTY_FONT_SIZE); } SetFontSize(double value)517 inline void SetFontSize(double value) 518 { 519 iterator it = find(wxCSS_PROPERTY_FONT_SIZE); 520 if (it != end()) 521 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 522 else 523 (*this)[wxCSS_PROPERTY_FONT_SIZE] = new wxCSSPrimitiveValue(value); 524 } 525 526 GetFontSizeAdjust()527 inline const wxCSSPrimitiveValue& GetFontSizeAdjust() const 528 { 529 const_iterator it = find(wxCSS_PROPERTY_FONT_SIZE_ADJUST); 530 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 531 } HasFontSizeAdjust()532 inline bool HasFontSizeAdjust() const { return HasProperty(wxCSS_PROPERTY_FONT_SIZE_ADJUST); } SetFontSizeAdjust(const wxCSSPrimitiveValue & value)533 inline void SetFontSizeAdjust(const wxCSSPrimitiveValue& value) 534 { 535 iterator it = find(wxCSS_PROPERTY_FONT_SIZE_ADJUST); 536 if (it != end()) 537 { 538 delete it->second; 539 it->second = new wxCSSPrimitiveValue(value); 540 } 541 else 542 (*this)[wxCSS_PROPERTY_FONT_SIZE_ADJUST] = new wxCSSPrimitiveValue(value); 543 } 544 545 GetFontStretch()546 inline wxCSS_VALUE GetFontStretch() const 547 { 548 const_iterator it = find(wxCSS_PROPERTY_FONT_STRETCH); 549 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_NORMAL; 550 } HasFontStretch()551 inline bool HasFontStretch() const { return HasProperty(wxCSS_PROPERTY_FONT_STRETCH); } SetFontStretch(wxCSS_VALUE value)552 inline void SetFontStretch(wxCSS_VALUE value) 553 { 554 iterator it = find(wxCSS_PROPERTY_FONT_STRETCH); 555 if (it != end()) 556 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 557 else 558 (*this)[wxCSS_PROPERTY_FONT_STRETCH] = new wxCSSPrimitiveValue(value); 559 } 560 561 GetFontStyle()562 inline wxCSS_VALUE GetFontStyle() const 563 { 564 const_iterator it = find(wxCSS_PROPERTY_FONT_STYLE); 565 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_NORMAL; 566 } HasFontStyle()567 inline bool HasFontStyle() const { return HasProperty(wxCSS_PROPERTY_FONT_STYLE); } SetFontStyle(wxCSS_VALUE value)568 inline void SetFontStyle(wxCSS_VALUE value) 569 { 570 iterator it = find(wxCSS_PROPERTY_FONT_STYLE); 571 if (it != end()) 572 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 573 else 574 (*this)[wxCSS_PROPERTY_FONT_STYLE] = new wxCSSPrimitiveValue(value); 575 } 576 577 GetFontVariant()578 inline wxCSS_VALUE GetFontVariant() const 579 { 580 const_iterator it = find(wxCSS_PROPERTY_FONT_VARIANT); 581 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_NORMAL; 582 } HasFontVariant()583 inline bool HasFontVariant() const { return HasProperty(wxCSS_PROPERTY_FONT_VARIANT); } SetFontVariant(wxCSS_VALUE value)584 inline void SetFontVariant(wxCSS_VALUE value) 585 { 586 iterator it = find(wxCSS_PROPERTY_FONT_VARIANT); 587 if (it != end()) 588 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 589 else 590 (*this)[wxCSS_PROPERTY_FONT_VARIANT] = new wxCSSPrimitiveValue(value); 591 } 592 593 GetFontWeight()594 inline wxCSS_VALUE GetFontWeight() const 595 { 596 const_iterator it = find(wxCSS_PROPERTY_FONT_WEIGHT); 597 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_NORMAL; 598 } HasFontWeight()599 inline bool HasFontWeight() const { return HasProperty(wxCSS_PROPERTY_FONT_WEIGHT); } SetFontWeight(wxCSS_VALUE value)600 inline void SetFontWeight(wxCSS_VALUE value) 601 { 602 iterator it = find(wxCSS_PROPERTY_FONT_WEIGHT); 603 if (it != end()) 604 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 605 else 606 (*this)[wxCSS_PROPERTY_FONT_WEIGHT] = new wxCSSPrimitiveValue(value); 607 } 608 609 GetGlyphOrientationHorizontal()610 inline double GetGlyphOrientationHorizontal() const 611 { 612 const_iterator it = find(wxCSS_PROPERTY_GLYPH_ORIENTATION_HORIZONTAL); 613 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 0; 614 } HasGlyphOrientationHorizontal()615 inline bool HasGlyphOrientationHorizontal() const { return HasProperty(wxCSS_PROPERTY_GLYPH_ORIENTATION_HORIZONTAL); } SetGlyphOrientationHorizontal(double value)616 inline void SetGlyphOrientationHorizontal(double value) 617 { 618 iterator it = find(wxCSS_PROPERTY_GLYPH_ORIENTATION_HORIZONTAL); 619 if (it != end()) 620 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 621 else 622 (*this)[wxCSS_PROPERTY_GLYPH_ORIENTATION_HORIZONTAL] = new wxCSSPrimitiveValue(value); 623 } 624 625 GetGlyphOrientationVertical()626 inline const wxCSSPrimitiveValue& GetGlyphOrientationVertical() const 627 { 628 const_iterator it = find(wxCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL); 629 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 630 } HasGlyphOrientationVertical()631 inline bool HasGlyphOrientationVertical() const { return HasProperty(wxCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL); } SetGlyphOrientationVertical(const wxCSSPrimitiveValue & value)632 inline void SetGlyphOrientationVertical(const wxCSSPrimitiveValue& value) 633 { 634 iterator it = find(wxCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL); 635 if (it != end()) 636 { 637 delete it->second; 638 it->second = new wxCSSPrimitiveValue(value); 639 } 640 else 641 (*this)[wxCSS_PROPERTY_GLYPH_ORIENTATION_VERTICAL] = new wxCSSPrimitiveValue(value); 642 } 643 644 GetImageRendering()645 inline wxCSS_VALUE GetImageRendering() const 646 { 647 const_iterator it = find(wxCSS_PROPERTY_IMAGE_RENDERING); 648 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_AUTO; 649 } HasImageRendering()650 inline bool HasImageRendering() const { return HasProperty(wxCSS_PROPERTY_IMAGE_RENDERING); } SetImageRendering(wxCSS_VALUE value)651 inline void SetImageRendering(wxCSS_VALUE value) 652 { 653 iterator it = find(wxCSS_PROPERTY_IMAGE_RENDERING); 654 if (it != end()) 655 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 656 else 657 (*this)[wxCSS_PROPERTY_IMAGE_RENDERING] = new wxCSSPrimitiveValue(value); 658 } 659 660 GetKerning()661 inline const wxCSSPrimitiveValue& GetKerning() const 662 { 663 const_iterator it = find(wxCSS_PROPERTY_KERNING); 664 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 665 } HasKerning()666 inline bool HasKerning() const { return HasProperty(wxCSS_PROPERTY_KERNING); } SetKerning(const wxCSSPrimitiveValue & value)667 inline void SetKerning(const wxCSSPrimitiveValue& value) 668 { 669 iterator it = find(wxCSS_PROPERTY_KERNING); 670 if (it != end()) 671 { 672 delete it->second; 673 it->second = new wxCSSPrimitiveValue(value); 674 } 675 else 676 (*this)[wxCSS_PROPERTY_KERNING] = new wxCSSPrimitiveValue(value); 677 } 678 679 GetLetterSpacing()680 inline const wxCSSPrimitiveValue& GetLetterSpacing() const 681 { 682 const_iterator it = find(wxCSS_PROPERTY_LETTER_SPACING); 683 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 684 } HasLetterSpacing()685 inline bool HasLetterSpacing() const { return HasProperty(wxCSS_PROPERTY_LETTER_SPACING); } SetLetterSpacing(const wxCSSPrimitiveValue & value)686 inline void SetLetterSpacing(const wxCSSPrimitiveValue& value) 687 { 688 iterator it = find(wxCSS_PROPERTY_LETTER_SPACING); 689 if (it != end()) 690 { 691 delete it->second; 692 it->second = new wxCSSPrimitiveValue(value); 693 } 694 else 695 (*this)[wxCSS_PROPERTY_LETTER_SPACING] = new wxCSSPrimitiveValue(value); 696 } 697 698 GetLightingColor()699 inline const wxSVGColor& GetLightingColor() const 700 { 701 const_iterator it = find(wxCSS_PROPERTY_LIGHTING_COLOR); 702 return it != end() ? ((wxSVGColor&)*it->second) : *s_emptySVGColor; 703 } HasLightingColor()704 inline bool HasLightingColor() const { return HasProperty(wxCSS_PROPERTY_LIGHTING_COLOR); } SetLightingColor(const wxSVGColor & value)705 inline void SetLightingColor(const wxSVGColor& value) 706 { 707 iterator it = find(wxCSS_PROPERTY_LIGHTING_COLOR); 708 if (it != end()) 709 { 710 delete it->second; 711 it->second = new wxSVGColor(value); 712 } 713 else 714 (*this)[wxCSS_PROPERTY_LIGHTING_COLOR] = new wxSVGColor(value); 715 } 716 717 GetMarkerEnd()718 inline const wxCSSPrimitiveValue& GetMarkerEnd() const 719 { 720 const_iterator it = find(wxCSS_PROPERTY_MARKER_END); 721 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 722 } HasMarkerEnd()723 inline bool HasMarkerEnd() const { return HasProperty(wxCSS_PROPERTY_MARKER_END); } SetMarkerEnd(const wxCSSPrimitiveValue & value)724 inline void SetMarkerEnd(const wxCSSPrimitiveValue& value) 725 { 726 iterator it = find(wxCSS_PROPERTY_MARKER_END); 727 if (it != end()) 728 { 729 delete it->second; 730 it->second = new wxCSSPrimitiveValue(value); 731 } 732 else 733 (*this)[wxCSS_PROPERTY_MARKER_END] = new wxCSSPrimitiveValue(value); 734 } 735 736 GetMarkerMid()737 inline const wxCSSPrimitiveValue& GetMarkerMid() const 738 { 739 const_iterator it = find(wxCSS_PROPERTY_MARKER_MID); 740 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 741 } HasMarkerMid()742 inline bool HasMarkerMid() const { return HasProperty(wxCSS_PROPERTY_MARKER_MID); } SetMarkerMid(const wxCSSPrimitiveValue & value)743 inline void SetMarkerMid(const wxCSSPrimitiveValue& value) 744 { 745 iterator it = find(wxCSS_PROPERTY_MARKER_MID); 746 if (it != end()) 747 { 748 delete it->second; 749 it->second = new wxCSSPrimitiveValue(value); 750 } 751 else 752 (*this)[wxCSS_PROPERTY_MARKER_MID] = new wxCSSPrimitiveValue(value); 753 } 754 755 GetMarkerStart()756 inline const wxCSSPrimitiveValue& GetMarkerStart() const 757 { 758 const_iterator it = find(wxCSS_PROPERTY_MARKER_START); 759 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 760 } HasMarkerStart()761 inline bool HasMarkerStart() const { return HasProperty(wxCSS_PROPERTY_MARKER_START); } SetMarkerStart(const wxCSSPrimitiveValue & value)762 inline void SetMarkerStart(const wxCSSPrimitiveValue& value) 763 { 764 iterator it = find(wxCSS_PROPERTY_MARKER_START); 765 if (it != end()) 766 { 767 delete it->second; 768 it->second = new wxCSSPrimitiveValue(value); 769 } 770 else 771 (*this)[wxCSS_PROPERTY_MARKER_START] = new wxCSSPrimitiveValue(value); 772 } 773 774 GetMask()775 inline const wxCSSPrimitiveValue& GetMask() const 776 { 777 const_iterator it = find(wxCSS_PROPERTY_MASK); 778 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 779 } HasMask()780 inline bool HasMask() const { return HasProperty(wxCSS_PROPERTY_MASK); } SetMask(const wxCSSPrimitiveValue & value)781 inline void SetMask(const wxCSSPrimitiveValue& value) 782 { 783 iterator it = find(wxCSS_PROPERTY_MASK); 784 if (it != end()) 785 { 786 delete it->second; 787 it->second = new wxCSSPrimitiveValue(value); 788 } 789 else 790 (*this)[wxCSS_PROPERTY_MASK] = new wxCSSPrimitiveValue(value); 791 } 792 793 GetOpacity()794 inline double GetOpacity() const 795 { 796 const_iterator it = find(wxCSS_PROPERTY_OPACITY); 797 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 1; 798 } HasOpacity()799 inline bool HasOpacity() const { return HasProperty(wxCSS_PROPERTY_OPACITY); } SetOpacity(double value)800 inline void SetOpacity(double value) 801 { 802 iterator it = find(wxCSS_PROPERTY_OPACITY); 803 if (it != end()) 804 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 805 else 806 (*this)[wxCSS_PROPERTY_OPACITY] = new wxCSSPrimitiveValue(value); 807 } 808 809 GetOverflow()810 inline wxCSS_VALUE GetOverflow() const 811 { 812 const_iterator it = find(wxCSS_PROPERTY_OVERFLOW); 813 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_AUTO; 814 } HasOverflow()815 inline bool HasOverflow() const { return HasProperty(wxCSS_PROPERTY_OVERFLOW); } SetOverflow(wxCSS_VALUE value)816 inline void SetOverflow(wxCSS_VALUE value) 817 { 818 iterator it = find(wxCSS_PROPERTY_OVERFLOW); 819 if (it != end()) 820 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 821 else 822 (*this)[wxCSS_PROPERTY_OVERFLOW] = new wxCSSPrimitiveValue(value); 823 } 824 825 GetPointerEvents()826 inline wxCSS_VALUE GetPointerEvents() const 827 { 828 const_iterator it = find(wxCSS_PROPERTY_POINTER_EVENTS); 829 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_VISIBLEPAINTED; 830 } HasPointerEvents()831 inline bool HasPointerEvents() const { return HasProperty(wxCSS_PROPERTY_POINTER_EVENTS); } SetPointerEvents(wxCSS_VALUE value)832 inline void SetPointerEvents(wxCSS_VALUE value) 833 { 834 iterator it = find(wxCSS_PROPERTY_POINTER_EVENTS); 835 if (it != end()) 836 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 837 else 838 (*this)[wxCSS_PROPERTY_POINTER_EVENTS] = new wxCSSPrimitiveValue(value); 839 } 840 841 GetShapeRendering()842 inline wxCSS_VALUE GetShapeRendering() const 843 { 844 const_iterator it = find(wxCSS_PROPERTY_SHAPE_RENDERING); 845 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_AUTO; 846 } HasShapeRendering()847 inline bool HasShapeRendering() const { return HasProperty(wxCSS_PROPERTY_SHAPE_RENDERING); } SetShapeRendering(wxCSS_VALUE value)848 inline void SetShapeRendering(wxCSS_VALUE value) 849 { 850 iterator it = find(wxCSS_PROPERTY_SHAPE_RENDERING); 851 if (it != end()) 852 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 853 else 854 (*this)[wxCSS_PROPERTY_SHAPE_RENDERING] = new wxCSSPrimitiveValue(value); 855 } 856 857 GetStopColor()858 inline const wxSVGColor& GetStopColor() const 859 { 860 const_iterator it = find(wxCSS_PROPERTY_STOP_COLOR); 861 return it != end() ? ((wxSVGColor&)*it->second) : *s_emptySVGColor; 862 } HasStopColor()863 inline bool HasStopColor() const { return HasProperty(wxCSS_PROPERTY_STOP_COLOR); } SetStopColor(const wxSVGColor & value)864 inline void SetStopColor(const wxSVGColor& value) 865 { 866 iterator it = find(wxCSS_PROPERTY_STOP_COLOR); 867 if (it != end()) 868 { 869 delete it->second; 870 it->second = new wxSVGColor(value); 871 } 872 else 873 (*this)[wxCSS_PROPERTY_STOP_COLOR] = new wxSVGColor(value); 874 } 875 876 GetStopOpacity()877 inline double GetStopOpacity() const 878 { 879 const_iterator it = find(wxCSS_PROPERTY_STOP_OPACITY); 880 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 1; 881 } HasStopOpacity()882 inline bool HasStopOpacity() const { return HasProperty(wxCSS_PROPERTY_STOP_OPACITY); } SetStopOpacity(double value)883 inline void SetStopOpacity(double value) 884 { 885 iterator it = find(wxCSS_PROPERTY_STOP_OPACITY); 886 if (it != end()) 887 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 888 else 889 (*this)[wxCSS_PROPERTY_STOP_OPACITY] = new wxCSSPrimitiveValue(value); 890 } 891 892 GetStroke()893 inline const wxSVGPaint& GetStroke() const 894 { 895 const_iterator it = find(wxCSS_PROPERTY_STROKE); 896 return it != end() ? ((wxSVGPaint&)*it->second) : *s_emptySVGPaint; 897 } HasStroke()898 inline bool HasStroke() const { return HasProperty(wxCSS_PROPERTY_STROKE); } SetStroke(const wxSVGPaint & value)899 inline void SetStroke(const wxSVGPaint& value) 900 { 901 iterator it = find(wxCSS_PROPERTY_STROKE); 902 if (it != end()) 903 { 904 delete it->second; 905 it->second = new wxSVGPaint(value); 906 } 907 else 908 (*this)[wxCSS_PROPERTY_STROKE] = new wxSVGPaint(value); 909 } 910 911 GetStrokeDasharray()912 inline const wxCSSValueList& GetStrokeDasharray() const 913 { 914 const_iterator it = find(wxCSS_PROPERTY_STROKE_DASHARRAY); 915 return it != end() ? ((wxCSSValueList&)*it->second) : *s_emptyValueList; 916 } HasStrokeDasharray()917 inline bool HasStrokeDasharray() const { return HasProperty(wxCSS_PROPERTY_STROKE_DASHARRAY); } SetStrokeDasharray(const wxCSSValueList & value)918 inline void SetStrokeDasharray(const wxCSSValueList& value) 919 { 920 iterator it = find(wxCSS_PROPERTY_STROKE_DASHARRAY); 921 if (it != end()) 922 { 923 delete it->second; 924 it->second = new wxCSSValueList(value); 925 } 926 else 927 (*this)[wxCSS_PROPERTY_STROKE_DASHARRAY] = new wxCSSValueList(value); 928 } 929 930 GetStrokeDashoffset()931 inline double GetStrokeDashoffset() const 932 { 933 const_iterator it = find(wxCSS_PROPERTY_STROKE_DASHOFFSET); 934 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 0; 935 } HasStrokeDashoffset()936 inline bool HasStrokeDashoffset() const { return HasProperty(wxCSS_PROPERTY_STROKE_DASHOFFSET); } SetStrokeDashoffset(double value)937 inline void SetStrokeDashoffset(double value) 938 { 939 iterator it = find(wxCSS_PROPERTY_STROKE_DASHOFFSET); 940 if (it != end()) 941 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 942 else 943 (*this)[wxCSS_PROPERTY_STROKE_DASHOFFSET] = new wxCSSPrimitiveValue(value); 944 } 945 946 GetStrokeLinecap()947 inline wxCSS_VALUE GetStrokeLinecap() const 948 { 949 const_iterator it = find(wxCSS_PROPERTY_STROKE_LINECAP); 950 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_BUTT; 951 } HasStrokeLinecap()952 inline bool HasStrokeLinecap() const { return HasProperty(wxCSS_PROPERTY_STROKE_LINECAP); } SetStrokeLinecap(wxCSS_VALUE value)953 inline void SetStrokeLinecap(wxCSS_VALUE value) 954 { 955 iterator it = find(wxCSS_PROPERTY_STROKE_LINECAP); 956 if (it != end()) 957 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 958 else 959 (*this)[wxCSS_PROPERTY_STROKE_LINECAP] = new wxCSSPrimitiveValue(value); 960 } 961 962 GetStrokeLinejoin()963 inline wxCSS_VALUE GetStrokeLinejoin() const 964 { 965 const_iterator it = find(wxCSS_PROPERTY_STROKE_LINEJOIN); 966 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_MITER; 967 } HasStrokeLinejoin()968 inline bool HasStrokeLinejoin() const { return HasProperty(wxCSS_PROPERTY_STROKE_LINEJOIN); } SetStrokeLinejoin(wxCSS_VALUE value)969 inline void SetStrokeLinejoin(wxCSS_VALUE value) 970 { 971 iterator it = find(wxCSS_PROPERTY_STROKE_LINEJOIN); 972 if (it != end()) 973 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 974 else 975 (*this)[wxCSS_PROPERTY_STROKE_LINEJOIN] = new wxCSSPrimitiveValue(value); 976 } 977 978 GetStrokeMiterlimit()979 inline double GetStrokeMiterlimit() const 980 { 981 const_iterator it = find(wxCSS_PROPERTY_STROKE_MITERLIMIT); 982 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 4; 983 } HasStrokeMiterlimit()984 inline bool HasStrokeMiterlimit() const { return HasProperty(wxCSS_PROPERTY_STROKE_MITERLIMIT); } SetStrokeMiterlimit(double value)985 inline void SetStrokeMiterlimit(double value) 986 { 987 iterator it = find(wxCSS_PROPERTY_STROKE_MITERLIMIT); 988 if (it != end()) 989 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 990 else 991 (*this)[wxCSS_PROPERTY_STROKE_MITERLIMIT] = new wxCSSPrimitiveValue(value); 992 } 993 994 GetStrokeOpacity()995 inline double GetStrokeOpacity() const 996 { 997 const_iterator it = find(wxCSS_PROPERTY_STROKE_OPACITY); 998 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 1; 999 } HasStrokeOpacity()1000 inline bool HasStrokeOpacity() const { return HasProperty(wxCSS_PROPERTY_STROKE_OPACITY); } SetStrokeOpacity(double value)1001 inline void SetStrokeOpacity(double value) 1002 { 1003 iterator it = find(wxCSS_PROPERTY_STROKE_OPACITY); 1004 if (it != end()) 1005 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 1006 else 1007 (*this)[wxCSS_PROPERTY_STROKE_OPACITY] = new wxCSSPrimitiveValue(value); 1008 } 1009 1010 GetStrokeWidth()1011 inline double GetStrokeWidth() const 1012 { 1013 const_iterator it = find(wxCSS_PROPERTY_STROKE_WIDTH); 1014 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetFloatValue() : 1; 1015 } HasStrokeWidth()1016 inline bool HasStrokeWidth() const { return HasProperty(wxCSS_PROPERTY_STROKE_WIDTH); } SetStrokeWidth(double value)1017 inline void SetStrokeWidth(double value) 1018 { 1019 iterator it = find(wxCSS_PROPERTY_STROKE_WIDTH); 1020 if (it != end()) 1021 ((wxCSSPrimitiveValue*)it->second)->SetFloatValue(wxCSS_NUMBER, value); 1022 else 1023 (*this)[wxCSS_PROPERTY_STROKE_WIDTH] = new wxCSSPrimitiveValue(value); 1024 } 1025 1026 GetTextAnchor()1027 inline wxCSS_VALUE GetTextAnchor() const 1028 { 1029 const_iterator it = find(wxCSS_PROPERTY_TEXT_ANCHOR); 1030 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_START; 1031 } HasTextAnchor()1032 inline bool HasTextAnchor() const { return HasProperty(wxCSS_PROPERTY_TEXT_ANCHOR); } SetTextAnchor(wxCSS_VALUE value)1033 inline void SetTextAnchor(wxCSS_VALUE value) 1034 { 1035 iterator it = find(wxCSS_PROPERTY_TEXT_ANCHOR); 1036 if (it != end()) 1037 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 1038 else 1039 (*this)[wxCSS_PROPERTY_TEXT_ANCHOR] = new wxCSSPrimitiveValue(value); 1040 } 1041 1042 GetTextDecoration()1043 inline wxCSS_VALUE GetTextDecoration() const 1044 { 1045 const_iterator it = find(wxCSS_PROPERTY_TEXT_DECORATION); 1046 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_NONE; 1047 } HasTextDecoration()1048 inline bool HasTextDecoration() const { return HasProperty(wxCSS_PROPERTY_TEXT_DECORATION); } SetTextDecoration(wxCSS_VALUE value)1049 inline void SetTextDecoration(wxCSS_VALUE value) 1050 { 1051 iterator it = find(wxCSS_PROPERTY_TEXT_DECORATION); 1052 if (it != end()) 1053 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 1054 else 1055 (*this)[wxCSS_PROPERTY_TEXT_DECORATION] = new wxCSSPrimitiveValue(value); 1056 } 1057 1058 GetTextRendering()1059 inline wxCSS_VALUE GetTextRendering() const 1060 { 1061 const_iterator it = find(wxCSS_PROPERTY_TEXT_RENDERING); 1062 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_AUTO; 1063 } HasTextRendering()1064 inline bool HasTextRendering() const { return HasProperty(wxCSS_PROPERTY_TEXT_RENDERING); } SetTextRendering(wxCSS_VALUE value)1065 inline void SetTextRendering(wxCSS_VALUE value) 1066 { 1067 iterator it = find(wxCSS_PROPERTY_TEXT_RENDERING); 1068 if (it != end()) 1069 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 1070 else 1071 (*this)[wxCSS_PROPERTY_TEXT_RENDERING] = new wxCSSPrimitiveValue(value); 1072 } 1073 1074 GetUnicodeBidi()1075 inline wxCSS_VALUE GetUnicodeBidi() const 1076 { 1077 const_iterator it = find(wxCSS_PROPERTY_UNICODE_BIDI); 1078 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_NORMAL; 1079 } HasUnicodeBidi()1080 inline bool HasUnicodeBidi() const { return HasProperty(wxCSS_PROPERTY_UNICODE_BIDI); } SetUnicodeBidi(wxCSS_VALUE value)1081 inline void SetUnicodeBidi(wxCSS_VALUE value) 1082 { 1083 iterator it = find(wxCSS_PROPERTY_UNICODE_BIDI); 1084 if (it != end()) 1085 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 1086 else 1087 (*this)[wxCSS_PROPERTY_UNICODE_BIDI] = new wxCSSPrimitiveValue(value); 1088 } 1089 1090 GetVisibility()1091 inline wxCSS_VALUE GetVisibility() const 1092 { 1093 const_iterator it = find(wxCSS_PROPERTY_VISIBILITY); 1094 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_VISIBLE; 1095 } HasVisibility()1096 inline bool HasVisibility() const { return HasProperty(wxCSS_PROPERTY_VISIBILITY); } SetVisibility(wxCSS_VALUE value)1097 inline void SetVisibility(wxCSS_VALUE value) 1098 { 1099 iterator it = find(wxCSS_PROPERTY_VISIBILITY); 1100 if (it != end()) 1101 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 1102 else 1103 (*this)[wxCSS_PROPERTY_VISIBILITY] = new wxCSSPrimitiveValue(value); 1104 } 1105 1106 GetWordSpacing()1107 inline const wxCSSPrimitiveValue& GetWordSpacing() const 1108 { 1109 const_iterator it = find(wxCSS_PROPERTY_WORD_SPACING); 1110 return it != end() ? ((wxCSSPrimitiveValue&)*it->second) : *s_emptyCSSValue; 1111 } HasWordSpacing()1112 inline bool HasWordSpacing() const { return HasProperty(wxCSS_PROPERTY_WORD_SPACING); } SetWordSpacing(const wxCSSPrimitiveValue & value)1113 inline void SetWordSpacing(const wxCSSPrimitiveValue& value) 1114 { 1115 iterator it = find(wxCSS_PROPERTY_WORD_SPACING); 1116 if (it != end()) 1117 { 1118 delete it->second; 1119 it->second = new wxCSSPrimitiveValue(value); 1120 } 1121 else 1122 (*this)[wxCSS_PROPERTY_WORD_SPACING] = new wxCSSPrimitiveValue(value); 1123 } 1124 1125 GetWritingMode()1126 inline wxCSS_VALUE GetWritingMode() const 1127 { 1128 const_iterator it = find(wxCSS_PROPERTY_WRITING_MODE); 1129 return it != end() ? ((wxCSSPrimitiveValue&)*it->second).GetIdentValue() : wxCSS_VALUE_LR_TB; 1130 } HasWritingMode()1131 inline bool HasWritingMode() const { return HasProperty(wxCSS_PROPERTY_WRITING_MODE); } SetWritingMode(wxCSS_VALUE value)1132 inline void SetWritingMode(wxCSS_VALUE value) 1133 { 1134 iterator it = find(wxCSS_PROPERTY_WRITING_MODE); 1135 if (it != end()) 1136 ((wxCSSPrimitiveValue*)it->second)->SetIdentValue(value); 1137 else 1138 (*this)[wxCSS_PROPERTY_WRITING_MODE] = new wxCSSPrimitiveValue(value); 1139 } 1140 1141 1142 protected: 1143 static wxCSSPrimitiveValue* s_emptyCSSValue; 1144 static wxSVGColor* s_emptySVGColor; 1145 static wxSVGPaint* s_emptySVGPaint; 1146 static wxSVGPaint* s_blackSVGPaint; 1147 static wxCSSValueList* s_emptyValueList; 1148 1149 public: 1150 static double ParseNumber(const wxString& value); 1151 static wxRGBColor ParseColor(const wxString& value); 1152 static void ParseSVGPaint(wxSVGPaint& paint, const wxString& value); 1153 }; 1154 1155 /* this class copy only references of css values */ 1156 class wxCSSStyleRef: public wxCSSStyleDeclaration 1157 { 1158 public: wxCSSStyleRef()1159 wxCSSStyleRef() {} wxCSSStyleRef(const wxCSSStyleDeclaration & src)1160 wxCSSStyleRef(const wxCSSStyleDeclaration& src) { Add(src); } 1161 ~wxCSSStyleRef(); 1162 void Add(const wxCSSStyleDeclaration& style); 1163 }; 1164 1165 1166 #endif // WX_CSS_STYLE_DECLARATION_H 1167