document SkColor.h

SkColor.h uses #define liberally, and has many global symbols,
two things bookmaker hasn't seen in other includes.

Revised .h -> .bmh converter to work with SkColor.h as well
as updating how .bmh indices are built.

Generated SkColor_Reference.bmh for globals, and
SkColor4f_Reference.bmh for class.

Other than the existing comments, this doesn't update the
documentation or add new examples.

Docs-Preview: https://skia.org/?cl=118985
TBR=caryclark@google.com
Bug: skia:6898
Change-Id: I5978257ee0e51319823efbe8dfc467a08c99ffe0
Reviewed-on: https://skia-review.googlesource.com/118985
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Cary Clark <caryclark@skia.org>
diff --git a/docs/SkColor_Reference.bmh b/docs/SkColor_Reference.bmh
new file mode 100644
index 0000000..7d174e7
--- /dev/null
+++ b/docs/SkColor_Reference.bmh
@@ -0,0 +1,735 @@
+#Topic Color
+#Alias Color_Reference
+
+#Subtopic Overview
+    #Subtopic Subtopic
+        #Populate
+    ##
+##
+
+#Subtopic Define
+#Populate
+##
+
+#Subtopic Function
+#Populate
+##
+
+#Subtopic Typedef
+#Populate
+##
+
+    #Subtopic Alpha
+        #Alias Alpha
+    #Subtopic ##
+
+    #Subtopic RGB
+    #Substitute RGB
+        #Subtopic Red
+            #Alias Red
+        #Subtopic ##
+        #Subtopic Blue
+            #Alias Blue
+        #Subtopic ##
+        #Subtopic Green
+            #Alias Green
+        #Subtopic ##
+    #Subtopic ##
+
+    #Subtopic ARGB
+    #Substitute ARGB
+    #Subtopic ##
+
+    #Subtopic RBG
+    #Substitute RBG
+    #Subtopic ##
+
+    #Subtopic RGB-565
+    #Substitute RGB-565
+    #Alias Color_RGB-565 # quit changing - to _ !
+    #Subtopic ##
+
+    #Subtopic Gray
+    ##
+
+# ------------------------------------------------------------------------------
+
+#Typedef uint8_t SkAlpha
+
+Types and macros for colors
+8-bit type for an alpha value. 0xFF is 100% opaque, 0x00 is 100% transparent.
+
+#Typedef ##
+
+# ------------------------------------------------------------------------------
+
+#Typedef uint32_t SkColor
+
+32 bit ARGB color value, not premultiplied. The color components are always in
+a known order. This is different from SkPMColor, which has its bytes in a configuration
+dependent order, to match the format of kBGRA_8888_SkColorType bitmaps. SkColor
+is the type used to specify colors in SkPaint and in gradients.
+
+#Typedef ##
+
+# ------------------------------------------------------------------------------
+
+#Method static constexpr inline SkColor SkColorSetARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b)
+#In Function
+#Line # incomplete ##
+
+Return a SkColor value from 8 bit component values
+
+#Param a  incomplete ##
+#Param r  incomplete ##
+#Param g  incomplete ##
+#Param b  incomplete ##
+
+#Return incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Define SkColorSetARGBInline
+
+#Code
+###$
+    #define SkColorSetARGBInline SkColorSetARGB
+$$$#
+##
+
+Legacy aliases.
+
+#NoExample
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SkColorSetARGBMacro
+
+#Code
+###$
+    #define SkColorSetARGBMacro  SkColorSetARGB
+$$$#
+##
+
+#NoExample
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SkColorSetRGB
+#Line # incomplete ##
+
+#Code
+###$
+    #define SkColorSetRGB(r, g, b)  SkColorSetARGB(0xFF, r, g, b)
+$$$#
+##
+
+Return a SkColor value from 8 bit component values, with an implied value
+of 0xFF for alpha (fully opaque)
+
+#Param r incomplete ##
+#Param g incomplete ##
+#Param b incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SkColorGetA
+#Line # incomplete ##
+
+#Code
+###$
+    #define SkColorGetA(color)      (((color) >> 24) & 0xFF)
+$$$#
+##
+
+return the alpha byte from a SkColor value
+
+#Param color incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SkColorGetR
+#Line # incomplete ##
+
+#Code
+###$
+    #define SkColorGetR(color)      (((color) >> 16) & 0xFF)
+$$$#
+##
+
+return the red byte from a SkColor value
+
+#Param color incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SkColorGetG
+#Line # incomplete ##
+
+#Code
+###$
+    #define SkColorGetG(color)      (((color) >>  8) & 0xFF)
+$$$#
+##
+
+return the green byte from a SkColor value
+
+#Param color incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SkColorGetB
+#Line # incomplete ##
+
+#Code
+###$
+    #define SkColorGetB(color)      (((color) >>  0) & 0xFF)
+$$$#
+##
+
+return the blue byte from a SkColor value
+
+#Param color incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Method static constexpr inline SkColor SkColorSetA(SkColor c, U8CPU a)
+#In Function
+#Line # incomplete ##
+
+#Param c  incomplete ##
+#Param a  incomplete ##
+
+#Return incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_AlphaTRANSPARENT
+
+#Code
+###$
+    #define SK_AlphaTRANSPARENT static_cast<SkAlpha>(0x00)
+$$$#
+##
+
+common colors
+transparent SkAlpha value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_AlphaOPAQUE
+
+#Code
+###$
+    #define SK_AlphaOPAQUE      static_cast<SkAlpha>(0xFF)
+$$$#
+##
+
+opaque SkAlpha value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorTRANSPARENT
+
+#Code
+###$
+    #define SK_ColorTRANSPARENT static_cast<SkColor>(0x00000000)
+$$$#
+##
+
+transparent SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorBLACK
+
+#Code
+###$
+    #define SK_ColorBLACK       static_cast<SkColor>(0xFF000000)
+$$$#
+##
+
+black SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorDKGRAY
+
+#Code
+###$
+    #define SK_ColorDKGRAY      static_cast<SkColor>(0xFF444444)
+$$$#
+##
+
+dark gray SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorGRAY
+
+#Code
+###$
+    #define SK_ColorGRAY        static_cast<SkColor>(0xFF888888)
+$$$#
+##
+
+gray SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorLTGRAY
+
+#Code
+###$
+    #define SK_ColorLTGRAY      static_cast<SkColor>(0xFFCCCCCC)
+$$$#
+##
+
+light gray SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorWHITE
+
+#Code
+###$
+    #define SK_ColorWHITE       static_cast<SkColor>(0xFFFFFFFF)
+$$$#
+##
+
+white SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorRED
+
+#Code
+###$
+    #define SK_ColorRED         static_cast<SkColor>(0xFFFF0000)
+$$$#
+##
+
+red SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorGREEN
+
+#Code
+###$
+    #define SK_ColorGREEN       static_cast<SkColor>(0xFF00FF00)
+$$$#
+##
+
+green SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorBLUE
+
+#Code
+###$
+    #define SK_ColorBLUE        static_cast<SkColor>(0xFF0000FF)
+$$$#
+##
+
+blue SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorYELLOW
+
+#Code
+###$
+    #define SK_ColorYELLOW      static_cast<SkColor>(0xFFFFFF00)
+$$$#
+##
+
+yellow SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorCYAN
+
+#Code
+###$
+    #define SK_ColorCYAN        static_cast<SkColor>(0xFF00FFFF)
+$$$#
+##
+
+cyan SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Define SK_ColorMAGENTA
+
+#Code
+###$
+    #define SK_ColorMAGENTA     static_cast<SkColor>(0xFFFF00FF)
+$$$#
+##
+
+magenta SkColor value
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Define ##
+
+# ------------------------------------------------------------------------------
+
+#Subtopic HSV
+
+#Subtopic Hue
+Hue represents an angle, in degrees, on a color wheel. Hue has a positive value
+modulo 360, where zero degrees is red.
+##
+
+#Subtopic Saturation
+##
+
+#Subtopic Value
+##
+
+#Method SK_API void SkRGBToHSV(U8CPU red, U8CPU green, U8CPU blue, SkScalar hsv[3])
+#In Function
+#Line # incomplete ##
+
+Convert RGB components to HSV.
+hsv[0] is Hue [0 .. 360)
+hsv[1] is Saturation [0...1]
+hsv[2] is Value [0...1]
+
+#Param red  red component value [0..255]
+##
+#Param green  green component value [0..255]
+##
+#Param blue  blue component value [0..255]
+##
+#Param hsv  3 element array which holds the resulting HSV components.
+##
+
+#Return incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method static inline void SkColorToHSV(SkColor color, SkScalar hsv[3])
+#In Function
+#Line # incomplete ##
+
+Convert the argb color to its HSV components.
+hsv[0] represents Hue, and is assigned a value from zero to less than 360.
+hsv[1] is Saturation [0...1]
+hsv[2] is Value [0...1]
+
+#Param color  the argb color to convert. Note: the alpha component is ignored.
+##
+#Param hsv  3 element array which holds the resulting HSV components.
+##
+
+#Return incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method SK_API SkColor SkHSVToColor(U8CPU alpha, const SkScalar hsv[3])
+#In Function
+#Line # incomplete ##
+
+Convert HSV components to an ARGB color. The alpha component is passed through unchanged.
+hsv[0] represents Hue, an angle from zero to less than 360.
+hsv[1] represents Saturation, and varies from zero to one.
+hsv[2] represents Value, and varies from zero to one.
+
+If hsv values are out of range, they are pinned.
+
+#Param alpha  the alpha component of the returned argb color.
+##
+#Param hsv  3 element array which holds the input HSV components.
+##
+
+#Return  the resulting argb color
+##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method static inline SkColor SkHSVToColor(const SkScalar hsv[3])
+#In Function
+#Line # incomplete ##
+
+Convert HSV components to an ARGB color. The alpha component set to 0xFF.
+hsv[0] represents Hue, an angle from zero to less than 360.
+hsv[1] represents Saturation, and varies from zero to one.
+hsv[2] represents Value, and varies from zero to one.
+
+If hsv values are out of range, they are pinned.
+
+#Param hsv  3 element array which holds the input HSV components.
+##
+
+#Return  the resulting argb color
+##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Method ##
+
+#Subtopic HSV ##
+
+# ------------------------------------------------------------------------------
+
+#Typedef uint32_t SkPMColor
+
+32 bit ARGB color value, premultiplied. The byte order for this value is
+configuration dependent, matching the format of kBGRA_8888_SkColorType bitmaps.
+This is different from SkColor, which is nonpremultiplied, and is always in the
+same byte order.
+
+#Typedef ##
+
+# ------------------------------------------------------------------------------
+
+#Method SK_API SkPMColor SkPreMultiplyARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b)
+#In Function
+#Line # incomplete ##
+
+Return a SkPMColor value from unpremultiplied 8 bit component values
+
+#Param a  incomplete ##
+#Param r  incomplete ##
+#Param g  incomplete ##
+#Param b  incomplete ##
+
+#Return incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Method ##
+
+# ------------------------------------------------------------------------------
+
+#Method SK_API SkPMColor SkPreMultiplyColor(SkColor c)
+#In Function
+#Line # incomplete ##
+
+Return a SkPMColor value from a SkColor value. This is done by multiplying the color
+components by the color's alpha, and by arranging the bytes in a configuration
+dependent order, to match the format of kBGRA_8888_SkColorType bitmaps.
+
+#Param c  incomplete ##
+
+#Return incomplete ##
+
+#Example
+// incomplete
+##
+
+#SeeAlso incomplete
+
+#Method ##
+
+#Topic Color ##