Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 2 Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
| 3 Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 3 Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
| 4 2004, 2005, 2007, 2010 Rob Buis <buis@kde.org> | 4 2004, 2005, 2007, 2010 Rob Buis <buis@kde.org> |
| 5 Copyright (C) 2005, 2006 Apple Computer, Inc. | 5 Copyright (C) 2005, 2006 Apple Computer, Inc. |
| 6 | 6 |
| 7 This library is free software; you can redistribute it and/or | 7 This library is free software; you can redistribute it and/or |
| 8 modify it under the terms of the GNU Library General Public | 8 modify it under the terms of the GNU Library General Public |
| 9 License as published by the Free Software Foundation; either | 9 License as published by the Free Software Foundation; either |
| 10 version 2 of the License, or (at your option) any later version. | 10 version 2 of the License, or (at your option) any later version. |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 214 else if (id == CSSValueCurrentcolor) | 214 else if (id == CSSValueCurrentcolor) |
| 215 parsedValue = SVGColor::createCurrentColor(); | 215 parsedValue = SVGColor::createCurrentColor(); |
| 216 else // TODO : svgcolor (iccColor) | 216 else // TODO : svgcolor (iccColor) |
| 217 parsedValue = parseSVGColor(); | 217 parsedValue = parseSVGColor(); |
| 218 | 218 |
| 219 if (parsedValue) | 219 if (parsedValue) |
| 220 m_valueList->next(); | 220 m_valueList->next(); |
| 221 | 221 |
| 222 break; | 222 break; |
| 223 | 223 |
| 224 case CSSPropertyPaintOrder: | |
|
pdr.
2013/05/03 17:58:29
When adding a property, you need to add an entry t
Erik Dahlström (inactive)
2013/06/03 15:58:24
is that really useful? it's a new feature, and Use
| |
| 225 if (m_valueList->size() == 1 && id == CSSValueNormal) | |
| 226 valid_primitive = true; | |
| 227 else if (parsedValue = parsePaintOrder()) | |
|
pdr.
2013/05/03 17:58:29
You'll need to use extra parenthesis here to make
| |
| 228 m_valueList->next(); | |
| 229 break; | |
| 230 | |
| 224 case CSSPropertyVectorEffect: // none | non-scaling-stroke | inherit | 231 case CSSPropertyVectorEffect: // none | non-scaling-stroke | inherit |
| 225 if (id == CSSValueNone || id == CSSValueNonScalingStroke) | 232 if (id == CSSValueNone || id == CSSValueNonScalingStroke) |
| 226 valid_primitive = true; | 233 valid_primitive = true; |
| 227 break; | 234 break; |
| 228 | 235 |
| 229 case CSSPropertyWritingMode: | 236 case CSSPropertyWritingMode: |
| 230 // lr-tb | rl_tb | tb-rl | lr | rl | tb | inherit | 237 // lr-tb | rl_tb | tb-rl | lr | rl | tb | inherit |
| 231 if (id == CSSValueLrTb || id == CSSValueRlTb || id == CSSValueTbRl || id == CSSValueLr || id == CSSValueRl || id == CSSValueTb) | 238 if (id == CSSValueLrTb || id == CSSValueRlTb || id == CSSValueTbRl || id == CSSValueLr || id == CSSValueRl || id == CSSValueTb) |
| 232 valid_primitive = true; | 239 valid_primitive = true; |
| 233 break; | 240 break; |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 358 } | 365 } |
| 359 | 366 |
| 360 PassRefPtr<CSSValue> CSSParser::parseSVGColor() | 367 PassRefPtr<CSSValue> CSSParser::parseSVGColor() |
| 361 { | 368 { |
| 362 RGBA32 c = Color::transparent; | 369 RGBA32 c = Color::transparent; |
| 363 if (!parseColorFromValue(m_valueList->current(), c)) | 370 if (!parseColorFromValue(m_valueList->current(), c)) |
| 364 return 0; | 371 return 0; |
| 365 return SVGColor::createFromColor(Color(c)); | 372 return SVGColor::createFromColor(Color(c)); |
| 366 } | 373 } |
| 367 | 374 |
| 375 // normal | [ fill || stroke || markers ] | |
| 376 PassRefPtr<CSSValue> CSSParser::parsePaintOrder() | |
| 377 { | |
| 378 if (m_valueList->size() > 3) | |
| 379 return 0; | |
| 380 | |
| 381 CSSParserValue* value = m_valueList->current(); | |
| 382 if (!value) | |
| 383 return 0; | |
| 384 | |
| 385 RefPtr<CSSValueList> parsedValues = CSSValueList::createSpaceSeparated(); | |
| 386 | |
| 387 PaintOrderState paint_order = NORMAL; | |
| 388 bool valid = true; | |
| 389 | |
| 390 for ( ; valid && value; value = m_valueList->next()) | |
|
pdr.
2013/05/03 17:58:29
Style nit (here, and elsewhere): paintOrder instea
| |
| 391 { | |
| 392 valid = parsePaintOrderParameter(parsedValues.get(), value, paint_order) ; | |
| 393 if (valid) | |
| 394 parsedValues->append(CSSPrimitiveValue::createIdentifier(value->id)) ; | |
| 395 } | |
| 396 | |
| 397 return valid ? parsedValues : 0; | |
| 398 } | |
| 399 | |
| 400 bool CSSParser::parsePaintOrderParameter(CSSValueList* parsedValues, CSSParserVa lue* value, PaintOrderState& paint_order) | |
| 401 { | |
| 402 switch (paint_order) | |
| 403 { | |
| 404 case NORMAL: | |
| 405 switch (value->id) { | |
| 406 case CSSValueFill: | |
| 407 paint_order = FILL; | |
| 408 return true; | |
| 409 case CSSValueStroke: | |
| 410 paint_order = STROKE; | |
| 411 return true; | |
| 412 case CSSValueMarkers: | |
| 413 paint_order = MARKERS; | |
| 414 return true; | |
| 415 default: | |
| 416 return false; | |
| 417 } | |
| 418 case FILL: | |
| 419 switch (value->id) { | |
| 420 case CSSValueStroke: | |
| 421 paint_order = FILL_STROKE; | |
| 422 return true; | |
| 423 case CSSValueMarkers: | |
| 424 paint_order = FILL_MARKERS; | |
| 425 return true; | |
| 426 default: | |
| 427 return false; | |
| 428 } | |
| 429 case STROKE: | |
| 430 switch (value->id) { | |
| 431 case CSSValueFill: | |
| 432 paint_order = STROKE_FILL; | |
| 433 return true; | |
| 434 case CSSValueMarkers: | |
| 435 paint_order = STROKE_MARKERS; | |
| 436 return true; | |
| 437 default: | |
| 438 return false; | |
| 439 } | |
| 440 case MARKERS: | |
| 441 switch (value->id) { | |
| 442 case CSSValueFill: | |
| 443 paint_order = MARKERS_FILL; | |
| 444 return true; | |
| 445 case CSSValueStroke: | |
| 446 paint_order = MARKERS_STROKE; | |
| 447 return true; | |
| 448 default: | |
| 449 return false; | |
| 450 } | |
| 451 case FILL_STROKE: | |
| 452 switch (value->id) { | |
| 453 case CSSValueMarkers: | |
| 454 paint_order = NORMAL; | |
| 455 return true; | |
| 456 default: | |
| 457 return false; | |
| 458 } | |
| 459 case FILL_MARKERS: | |
| 460 switch (value->id) { | |
| 461 case CSSValueStroke: | |
| 462 paint_order = FILL_MARKERS_STROKE; | |
| 463 return true; | |
| 464 default: | |
| 465 return false; | |
| 466 } | |
| 467 case STROKE_MARKERS: | |
| 468 switch (value->id) { | |
| 469 case CSSValueFill: | |
| 470 paint_order = STROKE_MARKERS_FILL; | |
| 471 return true; | |
| 472 default: | |
| 473 return false; | |
| 474 } | |
| 475 case STROKE_FILL: | |
| 476 switch (value->id) { | |
| 477 case CSSValueMarkers: | |
| 478 paint_order = STROKE_FILL_MARKERS; | |
| 479 return true; | |
| 480 default: | |
| 481 return false; | |
| 482 } | |
| 483 case MARKERS_FILL: | |
| 484 switch (value->id) { | |
| 485 case CSSValueStroke: | |
| 486 paint_order = MARKERS_FILL_STROKE; | |
| 487 return true; | |
| 488 default: | |
| 489 return false; | |
| 490 } | |
| 491 case MARKERS_STROKE: | |
| 492 switch (value->id) { | |
| 493 case CSSValueFill: | |
| 494 paint_order = MARKERS_STROKE_FILL; | |
| 495 return true; | |
| 496 default: | |
| 497 return false; | |
| 498 } | |
| 499 default: | |
| 500 ASSERT_NOT_REACHED(); | |
| 501 return false; | |
| 502 } | |
| 503 } | |
| 504 | |
| 368 } | 505 } |
| 369 | 506 |
| 370 #endif // ENABLE(SVG) | 507 #endif // ENABLE(SVG) |
| OLD | NEW |