bookmaker refresh

Add support for more operator overloads.
Add SkSurface, SkPoint, SkIPoint, SkIPoint16 docs.
(SkImage doc skeleton added, but not really started.)
Force recompile all examples.

Docs-Preview: https://skia.org/?cl=67726
Bug: skia:6898
Change-Id: If9e2d23f79d5db64146dd22588f5cac970614b8a
Reviewed-on: https://skia-review.googlesource.com/67726
Commit-Queue: Cary Clark <caryclark@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
diff --git a/docs/SkIPoint_Reference.bmh b/docs/SkIPoint_Reference.bmh
new file mode 100644
index 0000000..178a14f
--- /dev/null
+++ b/docs/SkIPoint_Reference.bmh
@@ -0,0 +1,452 @@
+#Topic IPoint
+#Alias IPoints
+#Alias IPoint_Reference
+
+#Struct SkIPoint
+
+SkIPoint holds two 32 bit integer coordinates
+
+#Topic Overview
+
+#Subtopic Subtopics
+#ToDo manually add subtopics ##
+#Table
+#Legend
+# topics # description ##
+#Legend ##
+#Table ##
+##
+
+#Subtopic Operators
+#Table
+#Legend
+# description                                               # function                             ##
+#Legend ##
+# SkIPoint operator-()_const                                # Reverses sign of IPoint.             ##
+# SkIPoint operator+(const SkIPoint& a, const SkIVector& b) # Returns IPoint offset by IVector.    ##
+# SkIVector operator-(const SkIPoint& a, const SkIPoint& b) # Returns IVector between IPoints.     ##
+# bool operator!=(const SkIPoint& a, const SkIPoint& b)     # Returns true if IPoints are unequal. ##
+# bool operator==(const SkIPoint& a, const SkIPoint& b)     # Returns true if IPoints are equal.   ##
+# void operator+=(const SkIVector& v)                       # Adds IVector to IPoint.              ##
+# void operator-=(const SkIVector& v)                       # Subtracts IVector from IPoint.       ##
+#Table ##
+#Subtopic ##
+
+#Subtopic Member_Functions
+#Table
+#Legend
+# description  # function ##
+#Legend ##
+# Make         # Constructs from integer inputs.          ##
+# equals()     # Returns true if members are equal.       ##
+# isZero       # Returns true if both members equal zero. ##
+# set()        # Sets to integer input.                   ##
+# x()          # Returns fX.                              ##
+# y()          # Returns fY.                              ##
+#Table ##
+#Subtopic ##
+
+#Topic ##
+
+#Member int32_t  fX
+x-axis value used by IPoint.
+##
+
+#Member int32_t  fY
+y-axis value used by IPoint.
+##
+
+# ------------------------------------------------------------------------------
+
+#Method static constexpr SkIPoint Make(int32_t x, int32_t y)
+
+Sets fX to x, fY to y.
+
+#Param x  integer x-axis value of constructed IPoint ##
+#Param y  integer y-axis value of constructed IPoint ##
+
+#Return IPoint (x, y) ##
+
+#Example
+SkIPoint pt1 = {45, 66};
+SkIPoint pt2 = SkIPoint::Make(45, 66);
+SkDebugf("pt1 %c= pt2\n", pt1 == pt2 ? '=' : '!');
+#StdOut
+pt1 == pt2
+##
+##
+
+#SeeAlso set() SkPoint::iset() SkPoint::Make SkIPoint16::Make
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method int32_t x() const
+
+Returns x-axis value of IPoint.
+
+#Return fX ##
+
+#Example
+SkIPoint pt1 = {45, 66};
+SkDebugf("pt1.fX %c= pt1.x()\n", pt1.fX == pt1.x() ? '=' : '!');
+#StdOut
+pt1.fX == pt1.x()
+##
+##
+
+#SeeAlso y() SkPoint::x() SkIPoint16::x()
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method int32_t y() const
+
+Returns y-axis value of IPoint.
+
+#Return fY ##
+
+#Example
+SkIPoint pt1 = {45, 66};
+SkDebugf("pt1.fY %c= pt1.y()\n", pt1.fY == pt1.y() ? '=' : '!');
+#StdOut
+pt1.fY == pt1.y()
+##
+##
+
+#SeeAlso x() SkPoint::y() SkIPoint16::y()
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method bool isZero() const
+
+Returns true if fX and fY are both zero.
+
+#Return true if fX is zero and fY is zero ##
+
+#Example
+SkIPoint pt = { 0, -0};

+SkDebugf("pt.isZero() == %s\n", pt.isZero() ? "true" : "false");
+#StdOut
+pt.isZero() == true

+##
+##
+
+#SeeAlso SkPoint::isZero
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method void set(int32_t x, int32_t y)
+
+Sets fX to x and fY to y.
+
+#Param x  new value for fX ##
+#Param y  new value for fY ##
+
+#Example
+SkIPoint pt1, pt2 = { SK_MinS32, SK_MaxS32 };
+pt1.set(SK_MinS32, SK_MaxS32);
+SkDebugf("pt1 %c= pt2\n", pt1 == pt2 ? '=' : '!');
+#StdOut
+pt1 == pt2
+##
+##
+
+#SeeAlso Make SkIPoint16::set
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method SkIPoint operator-()_const
+
+Returns IPoint changing the signs of fX and fY.
+
+#Return IPoint as (-fX, -fY) ##
+
+#Example
+SkIPoint test[] = { {0, -0}, {-1, -2},

+                   { SK_MaxS32, SK_MinS32 },

+                   { SK_NaN32, -SK_NaN32 } };

+for (const SkIPoint& pt : test) {

+    SkIPoint negPt = -pt;

+    SkDebugf("pt: %d, %d  negate: %d, %d\n", pt.fX, pt.fY, negPt.fX, negPt.fY);

+}
+#StdOut
+pt: 0, 0  negate: 0, 0

+pt: -1, -2  negate: 1, 2

+pt: 2147483647, -2147483647  negate: -2147483647, 2147483647

+pt: -2147483648, -2147483648  negate: -2147483648, -2147483648
+##
+##
+
+#SeeAlso operator-(const SkIPoint& a, const SkIPoint& b) operator-=(const SkIVector& v) SkPoint::operator-()_const
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method void operator+=(const SkIVector& v)
+
+Offsets IPoint by IVector v. Sets IPoint to
+#Formula
+(fX + v.fX, fY + v.fY)
+##
+.
+
+#Param v  IVector to add ##
+
+#Example
+#Height 64
+    auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void {

+        for (size_t i = 0; i < count - 1; ++i) {

+            SkPoint p0, p1;

+            p0.iset(pts[i]);

+            p1.iset(pts[i + 1]);

+            canvas->drawLine(p0, p1, paint);

+        }

+    };

+    SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } };

+    SkPaint paint;

+    paint.setAntiAlias(true);

+    paint.setStyle(SkPaint::kStroke_Style);

+    canvas->scale(30, 15);

+    draw_lines(points, SK_ARRAY_COUNT(points), paint);

+    points[1] += {1, 1};

+    points[2] += {-1, -1};

+    paint.setColor(SK_ColorRED);

+    draw_lines(points, SK_ARRAY_COUNT(points), paint);

+##
+
+#SeeAlso operator+(const SkIPoint& a, const SkIVector& b) SkPoint::operator+=(const SkVector& v)
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method void operator-=(const SkIVector& v)
+
+Subtracts IVector v from IPoint. Sets IPoint to:
+#Formula
+(fX - v.fX, fY - v.fY)
+##
+.
+
+#Param v  IVector to subtract ##
+
+#Example
+#Height 64
+    auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void {

+        for (size_t i = 0; i < count - 1; ++i) {

+            SkPoint p0, p1;

+            p0.iset(pts[i]);

+            p1.iset(pts[i + 1]);

+            canvas->drawLine(p0, p1, paint);

+        }

+    };

+    SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } };

+    SkPaint paint;

+    paint.setAntiAlias(true);

+    paint.setStyle(SkPaint::kStroke_Style);

+    canvas->scale(30, 15);

+    draw_lines(points, SK_ARRAY_COUNT(points), paint);

+    points[1] -= {1, 1};

+    points[2] -= {-1, -1};

+    paint.setColor(SK_ColorRED);

+    draw_lines(points, SK_ARRAY_COUNT(points), paint);

+##
+
+#SeeAlso operator-(const SkIPoint& a, const SkIPoint& b) SkPoint::operator-=(const SkVector& v)
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method bool equals(int32_t x, int32_t y) const
+
+Returns true if IPoint is equivalent to IPoint constructed from (x, y).
+
+#Param x  value compared with fX ##
+#Param y  value compared with fY ##
+
+#Return true if IPoint equals (x, y) ##
+
+#Example
+SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} };

+for (const SkIPoint& pt : test) {

+    SkDebugf("pt: %d, %d  %c= pt\n", pt.fX, pt.fY, pt.equals(pt.fX, pt.fY) ? '=' : '!');

+}
+#StdOut
+pt: 0, 0  == pt

+pt: -1, -2  == pt

+pt: 2147483647, -1  == pt

+pt: -2147483648, -1  == pt
+##
+##
+
+#SeeAlso operator==(const SkIPoint& a, const SkIPoint& b)
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method bool operator==(const SkIPoint& a, const SkIPoint& b)
+
+Returns true if a is equivalent to b.
+
+#Param a  IPoint to compare ##
+#Param b  IPoint to compare ##
+
+#Return true if a.fX == b.fX and a.fY == b.fY ##
+
+#Example
+SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} };

+for (const SkIPoint& pt : test) {

+    SkDebugf("pt: %d, %d  %c= pt\n", pt.fX, pt.fY, pt == pt ? '=' : '!');

+}
+#StdOut
+pt: 0, 0  == pt

+pt: -1, -2  == pt

+pt: 2147483647, -1  == pt

+pt: -2147483648, -1  == pt
+##
+##
+
+#SeeAlso equals() operator!=(const SkIPoint& a, const SkIPoint& b)
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method bool operator!=(const SkIPoint& a, const SkIPoint& b)
+
+Returns true if a is not equivalent to b.
+
+#Param a  IPoint to compare ##
+#Param b  IPoint to compare ##
+
+#Return true if a.fX != b.fX or a.fY != b.fY ##
+
+#Example
+SkIPoint test[] = { {0, -0}, {-1, -2}, {SK_MaxS32, -1}, {SK_NaN32, -1} };

+for (const SkIPoint& pt : test) {

+    SkDebugf("pt: %d, %d  %c= pt\n", pt.fX, pt.fY, pt != pt ? '!' : '=');

+}
+#StdOut
+pt: 0, 0  == pt

+pt: -1, -2  == pt

+pt: 2147483647, -1  == pt

+pt: -2147483648, -1  == pt
+##
+##
+
+#SeeAlso operator==(const SkIPoint& a, const SkIPoint& b) equals()
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method SkIVector operator-(const SkIPoint& a, const SkIPoint& b)
+
+Returns IVector from b to a; computed as
+#Formula
+(a.fX - b.fX, a.fY - b.fY)
+##
+.
+
+Can also be used to subtract IVector from IVector, returning IVector.
+
+#Param a  IPoint or IVector to subtract from ##
+#Param b  IVector to subtract ##
+
+#Return IVector from b to a ##
+
+#Example
+#Height 64
+    auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void {

+        for (size_t i = 0; i < count - 1; ++i) {

+            SkPoint p0, p1;

+            p0.iset(pts[i]);

+            p1.iset(pts[i + 1]);

+            canvas->drawLine(p0, p1, paint);

+        }

+    };

+    SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } };

+    SkPaint paint;

+    paint.setAntiAlias(true);

+    paint.setStyle(SkPaint::kStroke_Style);

+    canvas->scale(30, 15);

+    draw_lines(points, SK_ARRAY_COUNT(points), paint);

+    points[1] += points[0] - points[3];

+    points[2] -= points[1] - points[0];

+    paint.setColor(SK_ColorRED);

+    draw_lines(points, SK_ARRAY_COUNT(points), paint);

+##
+
+#SeeAlso operator-=(const SkIVector& v)
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method SkIPoint operator+(const SkIPoint& a, const SkIVector& b)
+
+Returns IPoint resulting from IPoint a offset by IVector b, computed as:
+#Formula
+(a.fX + b.fX, a.fY + b.fY)
+##
+.
+
+Can also be used to offset IPoint b by IVector a, returning IPoint.
+Can also be used to add IVector to IVector, returning IVector.
+
+#Param a  IPoint or IVector to add to ##
+#Param b  IPoint or IVector to add ##
+
+#Return IPoint equal to a offset by b ##
+
+#Example
+#Height 128
+    auto draw_lines = [=](const SkIPoint pts[], size_t count, SkPaint& paint) -> void {

+        for (size_t i = 0; i < count - 1; ++i) {

+            SkPoint p0, p1;

+            p0.iset(pts[i]);

+            p1.iset(pts[i + 1]);

+            canvas->drawLine(p0, p1, paint);

+        }

+    };

+    SkIPoint points[] = { { 3, 1 }, { 4, 2 }, { 5, 1 }, { 7, 3 } };

+    SkPaint paint;

+    paint.setAntiAlias(true);

+    paint.setStyle(SkPaint::kStroke_Style);

+    canvas->scale(30, 15);

+    draw_lines(points, SK_ARRAY_COUNT(points), paint);

+    SkIPoint mod = {4, 1};

+    for (auto& point : points) {

+        point = point + mod;

+        mod.fX -= 1;

+        mod.fY += 1;

+    }

+    paint.setColor(SK_ColorRED);

+    draw_lines(points, SK_ARRAY_COUNT(points), paint);

+##
+
+#SeeAlso operator+=(const SkIVector& v)
+
+#Method ##
+
+#Struct SkIPoint ##
+
+#Topic IPoint ##
+
+#Topic IVector
+    #Alias IVectors
+    #Typedef SkIPoint SkIVector
+    #Typedef ##
+##