streamline web documentation

This is the next step in reducing the amount of typing
in bookmaker, and presenting a web-base interface that
more closely matches the include documentation.

Moving towards making xxx_Reference solely contain
use documentation, and xxx_Overview (unpublished)
contain theory of operation documentation.

Fixed quite a few bugs along the way, and made
function and member documentation tighter.

TBR=caryclark@google.com
Docs-Preview: https://skia.org/?cl=160640
Change-Id: I763df4d59baa5dfd0177f0523294b5316434c4b0
Reviewed-on: https://skia-review.googlesource.com/c/160640
Reviewed-by: Cary Clark <caryclark@skia.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
Auto-Submit: Cary Clark <caryclark@skia.org>
diff --git a/tools/bookmaker/bookmaker.cpp b/tools/bookmaker/bookmaker.cpp
index 08577b9..a4968ef 100644
--- a/tools/bookmaker/bookmaker.cpp
+++ b/tools/bookmaker/bookmaker.cpp
@@ -34,6 +34,9 @@
 
 /* todos:
 
+if #Subtopic contains #SeeAlso or #Example generate horizontal rule at end
+constexpr populated with filter inside subtopic does not have definition body
+
 #List needs '# content ##', formatting
 rewrap text to fit in some number of columns
 #Literal is inflexible, making the entire #Code block link-less (see $Literal in SkImageInfo)
@@ -120,13 +123,14 @@
 , { "Experimental", MarkType::kExperimental, R_Y, E_N, M_CS | M_MDCM | M_E }
 , { "External",     MarkType::kExternal,     R_Y, E_N, 0 }
 , { "File",         MarkType::kFile,         R_Y, E_N, M(Topic) }
+, { "Filter",       MarkType::kFilter,       R_N, E_N, M(Subtopic) | M(Code) }
 , { "Formula",      MarkType::kFormula,      R_F, E_N, M(Column) | M(Description)
                                                      | M_E | M_ST | M_MDCM }
 , { "Function",     MarkType::kFunction,     R_O, E_N, M(Example) | M(NoExample) }
 , { "Height",       MarkType::kHeight,       R_N, E_N, M(Example) | M(NoExample) }
 , { "Illustration", MarkType::kIllustration, R_N, E_N, M_CSST | M_MD }
 , { "Image",        MarkType::kImage,        R_N, E_N, M(Example) | M(NoExample) }
-, { "In",           MarkType::kIn,           R_N, E_N, M_CSST | M_E | M(Method) | M(Typedef) }
+, { "In",           MarkType::kIn,           R_N, E_N, M_CSST | M_E | M(Method) | M(Typedef) | M(Code) }
 , { "Legend",       MarkType::kLegend,       R_Y, E_N, M(Table) }
 , { "Line",         MarkType::kLine,         R_N, E_N, M_CSST | M_E | M(Method) | M(Typedef) }
 , { "",             MarkType::kLink,         R_N, E_N, M(Anchor) }
@@ -143,7 +147,7 @@
 , { "",             MarkType::kPhraseParam,  R_Y, E_N, 0 }
 , { "",             MarkType::kPhraseRef,    R_N, E_N, 0 }
 , { "Platform",     MarkType::kPlatform,     R_N, E_N, M(Example) | M(NoExample) }
-, { "Populate",     MarkType::kPopulate,     R_N, E_N, M_CS | M(Code) }
+, { "Populate",     MarkType::kPopulate,     R_N, E_N, M(Code) }
 , { "Private",      MarkType::kPrivate,      R_N, E_N, M_CSST | M_MDCM | M_E }
 , { "Return",       MarkType::kReturn,       R_Y, E_N, M(Method) }
 , { "",             MarkType::kRow,          R_Y, E_N, M(Table) | M(List) }
@@ -562,6 +566,7 @@
         case MarkType::kDetails:
         case MarkType::kDuration:
         case MarkType::kExperimental:
+        case MarkType::kFilter:
         case MarkType::kHeight:
         case MarkType::kIllustration:
         case MarkType::kImage:
@@ -2312,6 +2317,7 @@
         case MarkType::kDuration:
         case MarkType::kExperimental:
         case MarkType::kFile:
+        case MarkType::kFilter:
         case MarkType::kHeight:
         case MarkType::kIllustration:
         case MarkType::kImage:
@@ -2767,7 +2773,7 @@
                 ParserCommon::OneFile::kYes)) {
             return -1;
         }
-        includeParser.writeCodeBlock(bmhParser);
+        includeParser.writeCodeBlock();
         MdOut mdOut(bmhParser, includeParser);
         mdOut.fDebugOut = FLAGS_stdout;
         mdOut.fValidate = FLAGS_validate;