OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 | |
9 #include "SkDrawCommand.h" | 8 #include "SkDrawCommand.h" |
10 | 9 |
11 #include "SkBlurMaskFilter.h" | 10 #include "SkBlurMaskFilter.h" |
12 #include "SkColorFilter.h" | 11 #include "SkColorFilter.h" |
13 #include "SkDashPathEffect.h" | 12 #include "SkDashPathEffect.h" |
14 #include "SkImageFilter.h" | 13 #include "SkImageFilter.h" |
15 #include "SkJsonWriteBuffer.h" | 14 #include "SkJsonWriteBuffer.h" |
16 #include "SkMaskFilter.h" | 15 #include "SkMaskFilter.h" |
17 #include "SkObjectParser.h" | 16 #include "SkObjectParser.h" |
18 #include "SkPaintDefaults.h" | 17 #include "SkPaintDefaults.h" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 #define SKDEBUGCANVAS_ATTRIBUTE_RUNS "runs" | 84 #define SKDEBUGCANVAS_ATTRIBUTE_RUNS "runs" |
86 #define SKDEBUGCANVAS_ATTRIBUTE_POSITIONS "positions" | 85 #define SKDEBUGCANVAS_ATTRIBUTE_POSITIONS "positions" |
87 #define SKDEBUGCANVAS_ATTRIBUTE_GLYPHS "glyphs" | 86 #define SKDEBUGCANVAS_ATTRIBUTE_GLYPHS "glyphs" |
88 #define SKDEBUGCANVAS_ATTRIBUTE_FONT "font" | 87 #define SKDEBUGCANVAS_ATTRIBUTE_FONT "font" |
89 #define SKDEBUGCANVAS_ATTRIBUTE_TYPEFACE "typeface" | 88 #define SKDEBUGCANVAS_ATTRIBUTE_TYPEFACE "typeface" |
90 #define SKDEBUGCANVAS_ATTRIBUTE_CUBICS "cubics" | 89 #define SKDEBUGCANVAS_ATTRIBUTE_CUBICS "cubics" |
91 #define SKDEBUGCANVAS_ATTRIBUTE_COLORS "colors" | 90 #define SKDEBUGCANVAS_ATTRIBUTE_COLORS "colors" |
92 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTURECOORDS "textureCoords" | 91 #define SKDEBUGCANVAS_ATTRIBUTE_TEXTURECOORDS "textureCoords" |
93 #define SKDEBUGCANVAS_ATTRIBUTE_FILTERQUALITY "filterQuality" | 92 #define SKDEBUGCANVAS_ATTRIBUTE_FILTERQUALITY "filterQuality" |
94 | 93 |
| 94 #define SKDEBUGCANVAS_ATTRIBUTE_SHORTDESC "short-desc" |
| 95 |
95 #define SKDEBUGCANVAS_VERB_MOVE "move" | 96 #define SKDEBUGCANVAS_VERB_MOVE "move" |
96 #define SKDEBUGCANVAS_VERB_LINE "line" | 97 #define SKDEBUGCANVAS_VERB_LINE "line" |
97 #define SKDEBUGCANVAS_VERB_QUAD "quad" | 98 #define SKDEBUGCANVAS_VERB_QUAD "quad" |
98 #define SKDEBUGCANVAS_VERB_CUBIC "cubic" | 99 #define SKDEBUGCANVAS_VERB_CUBIC "cubic" |
99 #define SKDEBUGCANVAS_VERB_CONIC "conic" | 100 #define SKDEBUGCANVAS_VERB_CONIC "conic" |
100 #define SKDEBUGCANVAS_VERB_CLOSE "close" | 101 #define SKDEBUGCANVAS_VERB_CLOSE "close" |
101 | 102 |
102 #define SKDEBUGCANVAS_STYLE_FILL "fill" | 103 #define SKDEBUGCANVAS_STYLE_FILL "fill" |
103 #define SKDEBUGCANVAS_STYLE_STROKE "stroke" | 104 #define SKDEBUGCANVAS_STYLE_STROKE "stroke" |
104 #define SKDEBUGCANVAS_STYLE_STROKEANDFILL "strokeAndFill" | 105 #define SKDEBUGCANVAS_STYLE_STROKEANDFILL "strokeAndFill" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 #define SKDEBUGCANVAS_ALPHATYPE_PREMUL "premul" | 152 #define SKDEBUGCANVAS_ALPHATYPE_PREMUL "premul" |
152 #define SKDEBUGCANVAS_ALPHATYPE_UNPREMUL "unpremul" | 153 #define SKDEBUGCANVAS_ALPHATYPE_UNPREMUL "unpremul" |
153 | 154 |
154 #define SKDEBUGCANVAS_FILTERQUALITY_NONE "none" | 155 #define SKDEBUGCANVAS_FILTERQUALITY_NONE "none" |
155 #define SKDEBUGCANVAS_FILTERQUALITY_LOW "low" | 156 #define SKDEBUGCANVAS_FILTERQUALITY_LOW "low" |
156 #define SKDEBUGCANVAS_FILTERQUALITY_MEDIUM "medium" | 157 #define SKDEBUGCANVAS_FILTERQUALITY_MEDIUM "medium" |
157 #define SKDEBUGCANVAS_FILTERQUALITY_HIGH "high" | 158 #define SKDEBUGCANVAS_FILTERQUALITY_HIGH "high" |
158 | 159 |
159 typedef SkDrawCommand* (*FROM_JSON)(Json::Value&, UrlDataManager&); | 160 typedef SkDrawCommand* (*FROM_JSON)(Json::Value&, UrlDataManager&); |
160 | 161 |
| 162 static SkString* str_append(SkString* str, const SkRect& r) { |
| 163 str->appendf(" [%g %g %g %g]", r.left(), r.top(), r.right(), r.bottom()); |
| 164 return str; |
| 165 } |
| 166 |
161 // TODO(chudy): Refactor into non subclass model. | 167 // TODO(chudy): Refactor into non subclass model. |
162 | 168 |
163 SkDrawCommand::SkDrawCommand(OpType type) | 169 SkDrawCommand::SkDrawCommand(OpType type) |
164 : fOpType(type) | 170 : fOpType(type) |
165 , fVisible(true) { | 171 , fVisible(true) { |
166 } | 172 } |
167 | 173 |
168 SkDrawCommand::~SkDrawCommand() { | 174 SkDrawCommand::~SkDrawCommand() { |
169 fInfo.deleteAll(); | 175 fInfo.deleteAll(); |
170 } | 176 } |
(...skipping 1465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1636 | 1642 |
1637 void SkClipRectCommand::execute(SkCanvas* canvas) const { | 1643 void SkClipRectCommand::execute(SkCanvas* canvas) const { |
1638 canvas->clipRect(fRect, fOp, fDoAA); | 1644 canvas->clipRect(fRect, fOp, fDoAA); |
1639 } | 1645 } |
1640 | 1646 |
1641 Json::Value SkClipRectCommand::toJSON(UrlDataManager& urlDataManager) const { | 1647 Json::Value SkClipRectCommand::toJSON(UrlDataManager& urlDataManager) const { |
1642 Json::Value result = INHERITED::toJSON(urlDataManager); | 1648 Json::Value result = INHERITED::toJSON(urlDataManager); |
1643 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonRect(fRect); | 1649 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonRect(fRect); |
1644 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); | 1650 result[SKDEBUGCANVAS_ATTRIBUTE_REGIONOP] = make_json_regionop(fOp); |
1645 result[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS] = Json::Value(fDoAA); | 1651 result[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS] = Json::Value(fDoAA); |
| 1652 |
| 1653 SkString desc; |
| 1654 result[SKDEBUGCANVAS_ATTRIBUTE_SHORTDESC] = Json::Value(str_append(&desc, fR
ect)->c_str()); |
| 1655 |
1646 return result; | 1656 return result; |
1647 } | 1657 } |
1648 | 1658 |
1649 SkClipRectCommand* SkClipRectCommand::fromJSON(Json::Value& command, | 1659 SkClipRectCommand* SkClipRectCommand::fromJSON(Json::Value& command, |
1650 UrlDataManager& urlDataManager) { | 1660 UrlDataManager& urlDataManager) { |
1651 SkRect rect; | 1661 SkRect rect; |
1652 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rect); | 1662 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rect); |
1653 return new SkClipRectCommand(rect, get_json_regionop(command[SKDEBUGCANVAS_A
TTRIBUTE_REGIONOP]), | 1663 return new SkClipRectCommand(rect, get_json_regionop(command[SKDEBUGCANVAS_A
TTRIBUTE_REGIONOP]), |
1654 command[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS].asBo
ol()); | 1664 command[SKDEBUGCANVAS_ATTRIBUTE_ANTIALIAS].asBo
ol()); |
1655 } | 1665 } |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1739 } | 1749 } |
1740 | 1750 |
1741 Json::Value SkDrawAnnotationCommand::toJSON(UrlDataManager& urlDataManager) cons
t { | 1751 Json::Value SkDrawAnnotationCommand::toJSON(UrlDataManager& urlDataManager) cons
t { |
1742 Json::Value result = INHERITED::toJSON(urlDataManager); | 1752 Json::Value result = INHERITED::toJSON(urlDataManager); |
1743 | 1753 |
1744 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonRect(fRect); | 1754 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonRect(fRect); |
1745 result["key"] = Json::Value(fKey.c_str()); | 1755 result["key"] = Json::Value(fKey.c_str()); |
1746 if (fValue.get()) { | 1756 if (fValue.get()) { |
1747 // TODO: dump out the "value" | 1757 // TODO: dump out the "value" |
1748 } | 1758 } |
| 1759 |
| 1760 SkString desc; |
| 1761 str_append(&desc, fRect)->appendf(" %s", fKey.c_str()); |
| 1762 result[SKDEBUGCANVAS_ATTRIBUTE_SHORTDESC] = Json::Value(desc.c_str()); |
| 1763 |
1749 return result; | 1764 return result; |
1750 } | 1765 } |
1751 | 1766 |
1752 SkDrawAnnotationCommand* SkDrawAnnotationCommand::fromJSON(Json::Value& command, | 1767 SkDrawAnnotationCommand* SkDrawAnnotationCommand::fromJSON(Json::Value& command, |
1753 UrlDataManager& urlDa
taManager) { | 1768 UrlDataManager& urlDa
taManager) { |
1754 SkRect rect; | 1769 SkRect rect; |
1755 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rect); | 1770 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rect); |
1756 sk_sp<SkData> data(nullptr); // TODO: extract "value" from the Json | 1771 sk_sp<SkData> data(nullptr); // TODO: extract "value" from the Json |
1757 return new SkDrawAnnotationCommand(rect, command["key"].asCString(), data); | 1772 return new SkDrawAnnotationCommand(rect, command["key"].asCString(), data); |
1758 } | 1773 } |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1943 result[SKDEBUGCANVAS_ATTRIBUTE_SRC] = MakeJsonRect(fSrc); | 1958 result[SKDEBUGCANVAS_ATTRIBUTE_SRC] = MakeJsonRect(fSrc); |
1944 } | 1959 } |
1945 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = MakeJsonRect(fDst); | 1960 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = MakeJsonRect(fDst); |
1946 if (fPaintPtr != nullptr) { | 1961 if (fPaintPtr != nullptr) { |
1947 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(*fPaintPtr, ur
lDataManager); | 1962 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(*fPaintPtr, ur
lDataManager); |
1948 } | 1963 } |
1949 if (fConstraint == SkCanvas::kStrict_SrcRectConstraint) { | 1964 if (fConstraint == SkCanvas::kStrict_SrcRectConstraint) { |
1950 result[SKDEBUGCANVAS_ATTRIBUTE_STRICT] = Json::Value(true); | 1965 result[SKDEBUGCANVAS_ATTRIBUTE_STRICT] = Json::Value(true); |
1951 } | 1966 } |
1952 } | 1967 } |
| 1968 |
| 1969 SkString desc; |
| 1970 result[SKDEBUGCANVAS_ATTRIBUTE_SHORTDESC] = Json::Value(str_append(&desc, fD
st)->c_str()); |
| 1971 |
1953 return result; | 1972 return result; |
1954 } | 1973 } |
1955 | 1974 |
1956 SkDrawBitmapRectCommand* SkDrawBitmapRectCommand::fromJSON(Json::Value& command, | 1975 SkDrawBitmapRectCommand* SkDrawBitmapRectCommand::fromJSON(Json::Value& command, |
1957 UrlDataManager& urlDa
taManager) { | 1976 UrlDataManager& urlDa
taManager) { |
1958 SkBitmap* bitmap = load_bitmap(command[SKDEBUGCANVAS_ATTRIBUTE_BITMAP], urlD
ataManager); | 1977 SkBitmap* bitmap = load_bitmap(command[SKDEBUGCANVAS_ATTRIBUTE_BITMAP], urlD
ataManager); |
1959 if (bitmap == nullptr) { | 1978 if (bitmap == nullptr) { |
1960 return nullptr; | 1979 return nullptr; |
1961 } | 1980 } |
1962 SkRect dst; | 1981 SkRect dst; |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2110 result[SKDEBUGCANVAS_ATTRIBUTE_SRC] = MakeJsonRect(*fSrc.get()); | 2129 result[SKDEBUGCANVAS_ATTRIBUTE_SRC] = MakeJsonRect(*fSrc.get()); |
2111 } | 2130 } |
2112 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = MakeJsonRect(fDst); | 2131 result[SKDEBUGCANVAS_ATTRIBUTE_DST] = MakeJsonRect(fDst); |
2113 if (fPaint.isValid()) { | 2132 if (fPaint.isValid()) { |
2114 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(*fPaint.get(),
urlDataManager); | 2133 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(*fPaint.get(),
urlDataManager); |
2115 } | 2134 } |
2116 if (fConstraint == SkCanvas::kStrict_SrcRectConstraint) { | 2135 if (fConstraint == SkCanvas::kStrict_SrcRectConstraint) { |
2117 result[SKDEBUGCANVAS_ATTRIBUTE_STRICT] = Json::Value(true); | 2136 result[SKDEBUGCANVAS_ATTRIBUTE_STRICT] = Json::Value(true); |
2118 } | 2137 } |
2119 } | 2138 } |
| 2139 |
| 2140 SkString desc; |
| 2141 result[SKDEBUGCANVAS_ATTRIBUTE_SHORTDESC] = Json::Value(str_append(&desc, fD
st)->c_str()); |
| 2142 |
2120 return result; | 2143 return result; |
2121 } | 2144 } |
2122 | 2145 |
2123 SkDrawImageRectCommand* SkDrawImageRectCommand::fromJSON(Json::Value& command, | 2146 SkDrawImageRectCommand* SkDrawImageRectCommand::fromJSON(Json::Value& command, |
2124 UrlDataManager& urlData
Manager) { | 2147 UrlDataManager& urlData
Manager) { |
2125 sk_sp<SkImage> image = load_image(command[SKDEBUGCANVAS_ATTRIBUTE_IMAGE], ur
lDataManager); | 2148 sk_sp<SkImage> image = load_image(command[SKDEBUGCANVAS_ATTRIBUTE_IMAGE], ur
lDataManager); |
2126 if (image == nullptr) { | 2149 if (image == nullptr) { |
2127 return nullptr; | 2150 return nullptr; |
2128 } | 2151 } |
2129 SkRect dst; | 2152 SkRect dst; |
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2784 } | 2807 } |
2785 | 2808 |
2786 void SkDrawRectCommand::execute(SkCanvas* canvas) const { | 2809 void SkDrawRectCommand::execute(SkCanvas* canvas) const { |
2787 canvas->drawRect(fRect, fPaint); | 2810 canvas->drawRect(fRect, fPaint); |
2788 } | 2811 } |
2789 | 2812 |
2790 Json::Value SkDrawRectCommand::toJSON(UrlDataManager& urlDataManager) const { | 2813 Json::Value SkDrawRectCommand::toJSON(UrlDataManager& urlDataManager) const { |
2791 Json::Value result = INHERITED::toJSON(urlDataManager); | 2814 Json::Value result = INHERITED::toJSON(urlDataManager); |
2792 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonRect(fRect); | 2815 result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonRect(fRect); |
2793 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(fPaint, urlDataManager
); | 2816 result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(fPaint, urlDataManager
); |
| 2817 |
| 2818 SkString desc; |
| 2819 result[SKDEBUGCANVAS_ATTRIBUTE_SHORTDESC] = Json::Value(str_append(&desc, fR
ect)->c_str()); |
| 2820 |
2794 return result; | 2821 return result; |
2795 } | 2822 } |
2796 | 2823 |
2797 SkDrawRectCommand* SkDrawRectCommand::fromJSON(Json::Value& command, | 2824 SkDrawRectCommand* SkDrawRectCommand::fromJSON(Json::Value& command, |
2798 UrlDataManager& urlDataManager) { | 2825 UrlDataManager& urlDataManager) { |
2799 SkRect coords; | 2826 SkRect coords; |
2800 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords); | 2827 extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords); |
2801 SkPaint paint; | 2828 SkPaint paint; |
2802 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); | 2829 extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &
paint); |
2803 return new SkDrawRectCommand(coords, paint); | 2830 return new SkDrawRectCommand(coords, paint); |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3179 result[SKDEBUGCANVAS_ATTRIBUTE_MATRIX] = MakeJsonMatrix(fMatrix); | 3206 result[SKDEBUGCANVAS_ATTRIBUTE_MATRIX] = MakeJsonMatrix(fMatrix); |
3180 return result; | 3207 return result; |
3181 } | 3208 } |
3182 | 3209 |
3183 SkSetMatrixCommand* SkSetMatrixCommand::fromJSON(Json::Value& command, | 3210 SkSetMatrixCommand* SkSetMatrixCommand::fromJSON(Json::Value& command, |
3184 UrlDataManager& urlDataManager)
{ | 3211 UrlDataManager& urlDataManager)
{ |
3185 SkMatrix matrix; | 3212 SkMatrix matrix; |
3186 extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); | 3213 extract_json_matrix(command[SKDEBUGCANVAS_ATTRIBUTE_MATRIX], &matrix); |
3187 return new SkSetMatrixCommand(matrix); | 3214 return new SkSetMatrixCommand(matrix); |
3188 } | 3215 } |
OLD | NEW |