OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
3 * Copyright (C) 2015 Google Inc. All rights reserved. | 3 * Copyright (C) 2015 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 visitor->trace(m_secondX); | 589 visitor->trace(m_secondX); |
590 visitor->trace(m_secondY); | 590 visitor->trace(m_secondY); |
591 visitor->trace(m_stops); | 591 visitor->trace(m_stops); |
592 CSSImageGeneratorValue::traceAfterDispatch(visitor); | 592 CSSImageGeneratorValue::traceAfterDispatch(visitor); |
593 } | 593 } |
594 | 594 |
595 String CSSLinearGradientValue::customCSSText() const | 595 String CSSLinearGradientValue::customCSSText() const |
596 { | 596 { |
597 StringBuilder result; | 597 StringBuilder result; |
598 if (m_gradientType == CSSDeprecatedLinearGradient) { | 598 if (m_gradientType == CSSDeprecatedLinearGradient) { |
599 result.append("-webkit-gradient(linear, "); | 599 result.appendLiteral("-webkit-gradient(linear, "); |
600 result.append(m_firstX->cssText()); | 600 result.append(m_firstX->cssText()); |
601 result.append(' '); | 601 result.append(' '); |
602 result.append(m_firstY->cssText()); | 602 result.append(m_firstY->cssText()); |
603 result.append(", "); | 603 result.appendLiteral(", "); |
604 result.append(m_secondX->cssText()); | 604 result.append(m_secondX->cssText()); |
605 result.append(' '); | 605 result.append(' '); |
606 result.append(m_secondY->cssText()); | 606 result.append(m_secondY->cssText()); |
607 appendCSSTextForDeprecatedColorStops(result); | 607 appendCSSTextForDeprecatedColorStops(result); |
608 } else if (m_gradientType == CSSPrefixedLinearGradient) { | 608 } else if (m_gradientType == CSSPrefixedLinearGradient) { |
609 if (m_repeating) | 609 if (m_repeating) |
610 result.append("-webkit-repeating-linear-gradient("); | 610 result.appendLiteral("-webkit-repeating-linear-gradient("); |
611 else | 611 else |
612 result.append("-webkit-linear-gradient("); | 612 result.appendLiteral("-webkit-linear-gradient("); |
613 | 613 |
614 if (m_angle) | 614 if (m_angle) |
615 result.append(m_angle->cssText()); | 615 result.append(m_angle->cssText()); |
616 else { | 616 else { |
617 if (m_firstX && m_firstY) { | 617 if (m_firstX && m_firstY) { |
618 result.append(m_firstX->cssText()); | 618 result.append(m_firstX->cssText()); |
619 result.append(' '); | 619 result.append(' '); |
620 result.append(m_firstY->cssText()); | 620 result.append(m_firstY->cssText()); |
621 } else if (m_firstX || m_firstY) { | 621 } else if (m_firstX || m_firstY) { |
622 if (m_firstX) | 622 if (m_firstX) |
623 result.append(m_firstX->cssText()); | 623 result.append(m_firstX->cssText()); |
624 | 624 |
625 if (m_firstY) | 625 if (m_firstY) |
626 result.append(m_firstY->cssText()); | 626 result.append(m_firstY->cssText()); |
627 } | 627 } |
628 } | 628 } |
629 | 629 |
630 for (unsigned i = 0; i < m_stops.size(); i++) { | 630 for (unsigned i = 0; i < m_stops.size(); i++) { |
631 const CSSGradientColorStop& stop = m_stops[i]; | 631 const CSSGradientColorStop& stop = m_stops[i]; |
632 result.append(", "); | 632 result.appendLiteral(", "); |
633 result.append(stop.m_color->cssText()); | 633 result.append(stop.m_color->cssText()); |
634 if (stop.m_position) { | 634 if (stop.m_position) { |
635 result.append(' '); | 635 result.append(' '); |
636 result.append(stop.m_position->cssText()); | 636 result.append(stop.m_position->cssText()); |
637 } | 637 } |
638 } | 638 } |
639 } else { | 639 } else { |
640 if (m_repeating) | 640 if (m_repeating) |
641 result.append("repeating-linear-gradient("); | 641 result.appendLiteral("repeating-linear-gradient("); |
642 else | 642 else |
643 result.append("linear-gradient("); | 643 result.appendLiteral("linear-gradient("); |
644 | 644 |
645 bool wroteSomething = false; | 645 bool wroteSomething = false; |
646 | 646 |
647 if (m_angle && m_angle->computeDegrees() != 180) { | 647 if (m_angle && m_angle->computeDegrees() != 180) { |
648 result.append(m_angle->cssText()); | 648 result.append(m_angle->cssText()); |
649 wroteSomething = true; | 649 wroteSomething = true; |
650 } else if ((m_firstX || m_firstY) && !(!m_firstX && m_firstY && m_firstY
->isPrimitiveValue() && toCSSPrimitiveValue(m_firstY.get())->getValueID() == CSS
ValueBottom)) { | 650 } else if ((m_firstX || m_firstY) && !(!m_firstX && m_firstY && m_firstY
->isPrimitiveValue() && toCSSPrimitiveValue(m_firstY.get())->getValueID() == CSS
ValueBottom)) { |
651 result.append("to "); | 651 result.appendLiteral("to "); |
652 if (m_firstX && m_firstY) { | 652 if (m_firstX && m_firstY) { |
653 result.append(m_firstX->cssText()); | 653 result.append(m_firstX->cssText()); |
654 result.append(' '); | 654 result.append(' '); |
655 result.append(m_firstY->cssText()); | 655 result.append(m_firstY->cssText()); |
656 } else if (m_firstX) | 656 } else if (m_firstX) |
657 result.append(m_firstX->cssText()); | 657 result.append(m_firstX->cssText()); |
658 else | 658 else |
659 result.append(m_firstY->cssText()); | 659 result.append(m_firstY->cssText()); |
660 wroteSomething = true; | 660 wroteSomething = true; |
661 } | 661 } |
662 | 662 |
663 if (wroteSomething) | 663 if (wroteSomething) |
664 result.append(", "); | 664 result.appendLiteral(", "); |
665 | 665 |
666 for (unsigned i = 0; i < m_stops.size(); i++) { | 666 for (unsigned i = 0; i < m_stops.size(); i++) { |
667 const CSSGradientColorStop& stop = m_stops[i]; | 667 const CSSGradientColorStop& stop = m_stops[i]; |
668 if (i) | 668 if (i) |
669 result.append(", "); | 669 result.appendLiteral(", "); |
670 if (stop.m_color) | 670 if (stop.m_color) |
671 result.append(stop.m_color->cssText()); | 671 result.append(stop.m_color->cssText()); |
672 if (stop.m_color && stop.m_position) | 672 if (stop.m_color && stop.m_position) |
673 result.append(' '); | 673 result.append(' '); |
674 if (stop.m_position) | 674 if (stop.m_position) |
675 result.append(stop.m_position->cssText()); | 675 result.append(stop.m_position->cssText()); |
676 } | 676 } |
677 | 677 |
678 } | 678 } |
679 | 679 |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
851 DEFINE_TRACE_AFTER_DISPATCH(CSSLinearGradientValue) | 851 DEFINE_TRACE_AFTER_DISPATCH(CSSLinearGradientValue) |
852 { | 852 { |
853 visitor->trace(m_angle); | 853 visitor->trace(m_angle); |
854 CSSGradientValue::traceAfterDispatch(visitor); | 854 CSSGradientValue::traceAfterDispatch(visitor); |
855 } | 855 } |
856 | 856 |
857 inline void CSSGradientValue::appendCSSTextForDeprecatedColorStops(StringBuilder
& result) const | 857 inline void CSSGradientValue::appendCSSTextForDeprecatedColorStops(StringBuilder
& result) const |
858 { | 858 { |
859 for (unsigned i = 0; i < m_stops.size(); i++) { | 859 for (unsigned i = 0; i < m_stops.size(); i++) { |
860 const CSSGradientColorStop& stop = m_stops[i]; | 860 const CSSGradientColorStop& stop = m_stops[i]; |
861 result.append(", "); | 861 result.appendLiteral(", "); |
862 if (stop.m_position->getDoubleValue() == 0) { | 862 if (stop.m_position->getDoubleValue() == 0) { |
863 result.append("from("); | 863 result.appendLiteral("from("); |
864 result.append(stop.m_color->cssText()); | 864 result.append(stop.m_color->cssText()); |
865 result.append(')'); | 865 result.append(')'); |
866 } else if (stop.m_position->getDoubleValue() == 1) { | 866 } else if (stop.m_position->getDoubleValue() == 1) { |
867 result.append("to("); | 867 result.appendLiteral("to("); |
868 result.append(stop.m_color->cssText()); | 868 result.append(stop.m_color->cssText()); |
869 result.append(')'); | 869 result.append(')'); |
870 } else { | 870 } else { |
871 result.append("color-stop("); | 871 result.appendLiteral("color-stop("); |
872 result.appendNumber(stop.m_position->getDoubleValue()); | 872 result.appendNumber(stop.m_position->getDoubleValue()); |
873 result.append(", "); | 873 result.appendLiteral(", "); |
874 result.append(stop.m_color->cssText()); | 874 result.append(stop.m_color->cssText()); |
875 result.append(')'); | 875 result.append(')'); |
876 } | 876 } |
877 } | 877 } |
878 } | 878 } |
879 | 879 |
880 String CSSRadialGradientValue::customCSSText() const | 880 String CSSRadialGradientValue::customCSSText() const |
881 { | 881 { |
882 StringBuilder result; | 882 StringBuilder result; |
883 | 883 |
884 if (m_gradientType == CSSDeprecatedRadialGradient) { | 884 if (m_gradientType == CSSDeprecatedRadialGradient) { |
885 result.append("-webkit-gradient(radial, "); | 885 result.appendLiteral("-webkit-gradient(radial, "); |
886 result.append(m_firstX->cssText()); | 886 result.append(m_firstX->cssText()); |
887 result.append(' '); | 887 result.append(' '); |
888 result.append(m_firstY->cssText()); | 888 result.append(m_firstY->cssText()); |
889 result.append(", "); | 889 result.appendLiteral(", "); |
890 result.append(m_firstRadius->cssText()); | 890 result.append(m_firstRadius->cssText()); |
891 result.append(", "); | 891 result.appendLiteral(", "); |
892 result.append(m_secondX->cssText()); | 892 result.append(m_secondX->cssText()); |
893 result.append(' '); | 893 result.append(' '); |
894 result.append(m_secondY->cssText()); | 894 result.append(m_secondY->cssText()); |
895 result.append(", "); | 895 result.appendLiteral(", "); |
896 result.append(m_secondRadius->cssText()); | 896 result.append(m_secondRadius->cssText()); |
897 appendCSSTextForDeprecatedColorStops(result); | 897 appendCSSTextForDeprecatedColorStops(result); |
898 } else if (m_gradientType == CSSPrefixedRadialGradient) { | 898 } else if (m_gradientType == CSSPrefixedRadialGradient) { |
899 if (m_repeating) | 899 if (m_repeating) |
900 result.append("-webkit-repeating-radial-gradient("); | 900 result.appendLiteral("-webkit-repeating-radial-gradient("); |
901 else | 901 else |
902 result.append("-webkit-radial-gradient("); | 902 result.appendLiteral("-webkit-radial-gradient("); |
903 | 903 |
904 if (m_firstX && m_firstY) { | 904 if (m_firstX && m_firstY) { |
905 result.append(m_firstX->cssText()); | 905 result.append(m_firstX->cssText()); |
906 result.append(' '); | 906 result.append(' '); |
907 result.append(m_firstY->cssText()); | 907 result.append(m_firstY->cssText()); |
908 } else if (m_firstX) | 908 } else if (m_firstX) |
909 result.append(m_firstX->cssText()); | 909 result.append(m_firstX->cssText()); |
910 else if (m_firstY) | 910 else if (m_firstY) |
911 result.append(m_firstY->cssText()); | 911 result.append(m_firstY->cssText()); |
912 else | 912 else |
913 result.append("center"); | 913 result.appendLiteral("center"); |
914 | 914 |
915 if (m_shape || m_sizingBehavior) { | 915 if (m_shape || m_sizingBehavior) { |
916 result.append(", "); | 916 result.appendLiteral(", "); |
917 if (m_shape) { | 917 if (m_shape) { |
918 result.append(m_shape->cssText()); | 918 result.append(m_shape->cssText()); |
919 result.append(' '); | 919 result.append(' '); |
920 } else { | 920 } else |
921 result.append("ellipse "); | 921 result.appendLiteral("ellipse "); |
922 } | |
923 | 922 |
924 if (m_sizingBehavior) | 923 if (m_sizingBehavior) |
925 result.append(m_sizingBehavior->cssText()); | 924 result.append(m_sizingBehavior->cssText()); |
926 else | 925 else |
927 result.append("cover"); | 926 result.appendLiteral("cover"); |
928 | 927 |
929 } else if (m_endHorizontalSize && m_endVerticalSize) { | 928 } else if (m_endHorizontalSize && m_endVerticalSize) { |
930 result.append(", "); | 929 result.appendLiteral(", "); |
931 result.append(m_endHorizontalSize->cssText()); | 930 result.append(m_endHorizontalSize->cssText()); |
932 result.append(' '); | 931 result.append(' '); |
933 result.append(m_endVerticalSize->cssText()); | 932 result.append(m_endVerticalSize->cssText()); |
934 } | 933 } |
935 | 934 |
936 for (unsigned i = 0; i < m_stops.size(); i++) { | 935 for (unsigned i = 0; i < m_stops.size(); i++) { |
937 const CSSGradientColorStop& stop = m_stops[i]; | 936 const CSSGradientColorStop& stop = m_stops[i]; |
938 result.append(", "); | 937 result.appendLiteral(", "); |
939 result.append(stop.m_color->cssText()); | 938 result.append(stop.m_color->cssText()); |
940 if (stop.m_position) { | 939 if (stop.m_position) { |
941 result.append(' '); | 940 result.append(' '); |
942 result.append(stop.m_position->cssText()); | 941 result.append(stop.m_position->cssText()); |
943 } | 942 } |
944 } | 943 } |
945 } else { | 944 } else { |
946 if (m_repeating) | 945 if (m_repeating) |
947 result.append("repeating-radial-gradient("); | 946 result.appendLiteral("repeating-radial-gradient("); |
948 else | 947 else |
949 result.append("radial-gradient("); | 948 result.appendLiteral("radial-gradient("); |
950 | 949 |
951 bool wroteSomething = false; | 950 bool wroteSomething = false; |
952 | 951 |
953 // The only ambiguous case that needs an explicit shape to be provided | 952 // The only ambiguous case that needs an explicit shape to be provided |
954 // is when a sizing keyword is used (or all sizing is omitted). | 953 // is when a sizing keyword is used (or all sizing is omitted). |
955 if (m_shape && m_shape->getValueID() != CSSValueEllipse && (m_sizingBeha
vior || (!m_sizingBehavior && !m_endHorizontalSize))) { | 954 if (m_shape && m_shape->getValueID() != CSSValueEllipse && (m_sizingBeha
vior || (!m_sizingBehavior && !m_endHorizontalSize))) { |
956 result.append("circle"); | 955 result.appendLiteral("circle"); |
957 wroteSomething = true; | 956 wroteSomething = true; |
958 } | 957 } |
959 | 958 |
960 if (m_sizingBehavior && m_sizingBehavior->getValueID() != CSSValueFarthe
stCorner) { | 959 if (m_sizingBehavior && m_sizingBehavior->getValueID() != CSSValueFarthe
stCorner) { |
961 if (wroteSomething) | 960 if (wroteSomething) |
962 result.append(' '); | 961 result.append(' '); |
963 result.append(m_sizingBehavior->cssText()); | 962 result.append(m_sizingBehavior->cssText()); |
964 wroteSomething = true; | 963 wroteSomething = true; |
965 } else if (m_endHorizontalSize) { | 964 } else if (m_endHorizontalSize) { |
966 if (wroteSomething) | 965 if (wroteSomething) |
967 result.append(' '); | 966 result.append(' '); |
968 result.append(m_endHorizontalSize->cssText()); | 967 result.append(m_endHorizontalSize->cssText()); |
969 if (m_endVerticalSize) { | 968 if (m_endVerticalSize) { |
970 result.append(' '); | 969 result.append(' '); |
971 result.append(m_endVerticalSize->cssText()); | 970 result.append(m_endVerticalSize->cssText()); |
972 } | 971 } |
973 wroteSomething = true; | 972 wroteSomething = true; |
974 } | 973 } |
975 | 974 |
976 if (m_firstX || m_firstY) { | 975 if (m_firstX || m_firstY) { |
977 if (wroteSomething) | 976 if (wroteSomething) |
978 result.append(' '); | 977 result.append(' '); |
979 result.append("at "); | 978 result.appendLiteral("at "); |
980 if (m_firstX && m_firstY) { | 979 if (m_firstX && m_firstY) { |
981 result.append(m_firstX->cssText()); | 980 result.append(m_firstX->cssText()); |
982 result.append(' '); | 981 result.append(' '); |
983 result.append(m_firstY->cssText()); | 982 result.append(m_firstY->cssText()); |
984 } else if (m_firstX) | 983 } else if (m_firstX) |
985 result.append(m_firstX->cssText()); | 984 result.append(m_firstX->cssText()); |
986 else | 985 else |
987 result.append(m_firstY->cssText()); | 986 result.append(m_firstY->cssText()); |
988 wroteSomething = true; | 987 wroteSomething = true; |
989 } | 988 } |
990 | 989 |
991 if (wroteSomething) | 990 if (wroteSomething) |
992 result.append(", "); | 991 result.appendLiteral(", "); |
993 | 992 |
994 for (unsigned i = 0; i < m_stops.size(); i++) { | 993 for (unsigned i = 0; i < m_stops.size(); i++) { |
995 const CSSGradientColorStop& stop = m_stops[i]; | 994 const CSSGradientColorStop& stop = m_stops[i]; |
996 if (i) | 995 if (i) |
997 result.append(", "); | 996 result.appendLiteral(", "); |
998 if (stop.m_color) | 997 if (stop.m_color) |
999 result.append(stop.m_color->cssText()); | 998 result.append(stop.m_color->cssText()); |
1000 if (stop.m_color && stop.m_position) | 999 if (stop.m_color && stop.m_position) |
1001 result.append(' '); | 1000 result.append(' '); |
1002 if (stop.m_position) | 1001 if (stop.m_position) |
1003 result.append(stop.m_position->cssText()); | 1002 result.append(stop.m_position->cssText()); |
1004 } | 1003 } |
1005 | 1004 |
1006 } | 1005 } |
1007 | 1006 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1217 visitor->trace(m_firstRadius); | 1216 visitor->trace(m_firstRadius); |
1218 visitor->trace(m_secondRadius); | 1217 visitor->trace(m_secondRadius); |
1219 visitor->trace(m_shape); | 1218 visitor->trace(m_shape); |
1220 visitor->trace(m_sizingBehavior); | 1219 visitor->trace(m_sizingBehavior); |
1221 visitor->trace(m_endHorizontalSize); | 1220 visitor->trace(m_endHorizontalSize); |
1222 visitor->trace(m_endVerticalSize); | 1221 visitor->trace(m_endVerticalSize); |
1223 CSSGradientValue::traceAfterDispatch(visitor); | 1222 CSSGradientValue::traceAfterDispatch(visitor); |
1224 } | 1223 } |
1225 | 1224 |
1226 } // namespace blink | 1225 } // namespace blink |
OLD | NEW |