Revert "remove toString"

This reverts commit 5191880cbf3ee4d122b0d11b4945fbab0784fda7.

Reason for revert: broke flutter

Original change's description:
> remove toString
> 
> toString may have been used by obsolete debugger only
> find out if that is so
> 
> R=​brianosman@google.com,bsalomon@google.com
> 
> Docs-Preview: https://skia.org/?cl=119894
> Bug:830651
> Change-Id: I737f19b7d3fbc869bea2f443fa3b5ed7c1393ffd
> Reviewed-on: https://skia-review.googlesource.com/119894
> Commit-Queue: Cary Clark <caryclark@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

TBR=bsalomon@google.com,brianosman@google.com,caryclark@google.com,caryclark@skia.org

Change-Id: I9f81de6c3615ee0608bcea9081b77239b4b8816c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 830651
Reviewed-on: https://skia-review.googlesource.com/129340
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
diff --git a/docs/SkBitmap_Reference.bmh b/docs/SkBitmap_Reference.bmh
index 353e3a1..967b9d1 100644
--- a/docs/SkBitmap_Reference.bmh
+++ b/docs/SkBitmap_Reference.bmh
@@ -3438,6 +3438,38 @@
 
 # ------------------------------------------------------------------------------
 
+#Method void toString(SkString* str) const;
+#In Utility
+#Line # converts Bitmap to machine readable form ##
+
+Creates string representation of Bitmap. The representation is read by
+internal debugging tools.
+
+#Param str  storage for string representation ##
+
+#Example
+    SkBitmap bitmap;
+    int width = 6;
+    int height = 11;
+    bitmap.allocPixels(SkImageInfo::MakeN32Premul(width, height));
+    SkString string;
+    bitmap.toString(&string);
+    SkString match;
+    match.printf("(%d, %d)", width, height);
+    int start = string.find(match.c_str());
+    if (start >= 0) {
+        SkString whStr(&string.c_str()[start], match.size());
+        SkDebugf("bitmap dimensions %s\n", whStr.c_str());
+    }
+    #StdOut
+    bitmap dimensions (6, 11)
+    ##
+##
+
+#SeeAlso SkPaint::toString
+
+##
+
 #Class SkBitmap ##
 
 #Topic Bitmap ##
diff --git a/docs/SkImage_Reference.bmh b/docs/SkImage_Reference.bmh
index 40146e8..4f2549b 100644
--- a/docs/SkImage_Reference.bmh
+++ b/docs/SkImage_Reference.bmh
@@ -1749,6 +1749,39 @@
 #Line # rarely called management functions ##
 ##
 
+#Method const char* toString(SkString* string) const
+#In Utility
+#Line # converts Image to machine readable form ##
+Appends Image description to string, including unique ID, width, height, and
+whether the image is opaque.
+
+#Param string  storage for description; existing content is preserved ##
+
+#Return string appended with Image description ##
+
+#Example
+#Image 4
+    struct {
+        const char* name;
+        sk_sp<SkImage> image;
+    } tests[] = { { "image", image }, { "bitmap", SkImage::MakeFromBitmap(source) },
+          { "texture", SkImage::MakeFromTexture(canvas->getGrContext(), backEndTexture,
+                            kTopLeft_GrSurfaceOrigin, kN32_SkColorType, kOpaque_SkAlphaType,
+                            nullptr) } };
+    SkString string;
+    SkPaint paint;
+    for (const auto& test : tests ) {
+        string.printf("%s: ", test.name);
+        test.image ? (void) test.image->toString(&string) : string.append("no image");
+        canvas->drawString(string, 10, 20, paint);
+        canvas->translate(0, 20);
+    }
+##
+
+#SeeAlso SkPaint::toString
+
+#Method ##
+
 # ------------------------------------------------------------------------------
 
 #Method sk_sp<SkImage> makeSubset(const SkIRect& subset) const
diff --git a/docs/SkMatrix_Reference.bmh b/docs/SkMatrix_Reference.bmh
index f48148e..e76accd 100644
--- a/docs/SkMatrix_Reference.bmh
+++ b/docs/SkMatrix_Reference.bmh
@@ -4103,7 +4103,40 @@
 ##
 ##
 
-#SeeAlso SkPath::dump
+#SeeAlso toString
+
+##
+
+# ------------------------------------------------------------------------------
+
+#Method void toString(SkString* str) const
+#In Utility
+#Line # converts Matrix to machine readable form ##
+Creates string representation of Matrix. Floating point values
+are written with limited precision; it may not be possible to reconstruct
+original Matrix from output.
+
+#Param str  storage for string representation of Matrix ##
+
+#Example
+    SkMatrix matrix;
+    matrix.setRotate(45);
+    SkString mStr, neStr;
+    matrix.toString(&mStr);
+    SkMatrix nearlyEqual;
+    nearlyEqual.setAll(0.7071f, -0.7071f, 0,   0.7071f, 0.7071f, 0,   0, 0, 1);
+    nearlyEqual.toString(&neStr);
+    SkDebugf("mStr  %s\n", mStr.c_str());
+    SkDebugf("neStr %s\n", neStr.c_str());
+    SkDebugf("matrix %c= nearlyEqual\n", matrix == nearlyEqual ? '=' : '!');
+#StdOut
+mStr  [  0.7071  -0.7071   0.0000][  0.7071   0.7071   0.0000][  0.0000   0.0000   1.0000]
+neStr [  0.7071  -0.7071   0.0000][  0.7071   0.7071   0.0000][  0.0000   0.0000   1.0000]
+matrix != nearlyEqual
+##
+##
+
+#SeeAlso dump
 
 ##
 
diff --git a/docs/SkPaint_Reference.bmh b/docs/SkPaint_Reference.bmh
index 9ae562f..0571354 100644
--- a/docs/SkPaint_Reference.bmh
+++ b/docs/SkPaint_Reference.bmh
@@ -5106,6 +5106,36 @@
 #Line # rarely called management functions ##
 ##
 
+#Method void toString(SkString* str) const
+#In Utility
+#Line # converts Paint to machine readable form ##
+
+Creates string representation of Paint. The representation is read by
+internal debugging tools.
+
+#Param str  storage for string representation of Paint ##
+
+#Example
+    SkPaint paint;
+    SkString str;
+    paint.toString(&str);
+    const char textSize[] = "TextSize:";
+    const int trailerSize = strlen("</dd><dt>");
+    int textSizeLoc = str.find(textSize) + strlen(textSize) + trailerSize;
+    const char* sizeStart = &str.c_str()[textSizeLoc];
+    int textSizeEnd = SkStrFind(sizeStart, "</dd>");
+    SkDebugf("text size = %.*s\n", textSizeEnd, sizeStart);
+
+    #StdOut
+    text size = 12
+    ##
+
+##
+
+#SeeAlso SkPathEffect::toString SkMaskFilter::toString SkColorFilter::toString SkImageFilter::toString
+
+##
+
 # ------------------------------------------------------------------------------
 
 #Class SkPaint ##
diff --git a/docs/undocumented.bmh b/docs/undocumented.bmh
index 78a6624..be0c1b5 100644
--- a/docs/undocumented.bmh
+++ b/docs/undocumented.bmh
@@ -95,6 +95,8 @@
 
 #Topic Color_Filter
 #Class SkColorFilter
+#Method void toString(SkString* str) const
+##
 #Class ##
 ##
 
@@ -287,6 +289,8 @@
 
 #Topic Image_Filter
 #Class SkImageFilter
+#Method void toString(SkString* str) const
+##
 #Class ##
 #Topic ##
 
@@ -325,6 +329,8 @@
 
 #Topic Mask_Filter
 #Class SkMaskFilter
+#Method void toString(SkString* str) const
+##
 #Class ##
 #Topic ##
 
@@ -434,6 +440,8 @@
 
 #Topic Path_Effect
     #Class SkPathEffect
+    #Method void toString(SkString* str) const
+    ##
     #Class ##
 #Topic ##